日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

掌握这 11 个方法论,搞定一场完美技术面试!

發(fā)布時間:2025/3/21 编程问答 13 豆豆
生活随笔 收集整理的這篇文章主要介紹了 掌握这 11 个方法论,搞定一场完美技术面试! 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

想要成為合格的Java程序員或工程師到底需要具備哪些專業(yè)技能,面試者在面試之前到底需要準(zhǔn)備哪些東西呢?

本文陳列的這些內(nèi)容既可以作為個人簡歷中的內(nèi)容,也可以作為面試的時候跟面試官聊的東西,你可以把這些內(nèi)容寫到你的簡歷中,當(dāng)然更需要的是你在面試的時候向面試官展示這些專業(yè)技能。

相信此文對正在尋覓Java程序員(Java工程師)職位的freshman以及希望成為中高級Java開發(fā)者的junior都會有所幫助。

?

專業(yè)技能


1.熟練的使用Java語言進(jìn)行面向?qū)ο蟪绦蛟O(shè)計(jì),有良好的編程習(xí)慣,熟悉常用的Java API,包括集合框架、多線程(并發(fā)編程)、I/O(NIO)、Socket、JDBC、XML、反射等。

2.熟悉基于JSP和Servlet的Java Web開發(fā),對Servlet和JSP的工作原理和生命周期有深入了解,熟練的使用JSTL和EL編寫無腳本動態(tài)頁面,有使用監(jiān)聽器、過濾器等Web組件以及MVC架構(gòu)模式進(jìn)行Java Web項(xiàng)目開發(fā)的經(jīng)驗(yàn)。

3.對Spring的IoC容器和AOP原理有深入了解,熟練的運(yùn)用Spring框架管理各種Web組件及其依賴關(guān)系,熟練的使用Spring進(jìn)行事務(wù)、日志、安全性等的管理,有使用Spring MVC作為表示層技術(shù)以及使用Spring提供的持久化支持進(jìn)行Web項(xiàng)目開發(fā)的經(jīng)驗(yàn),熟悉Spring對其他框架的整合。

4.熟練的使用Hibernate、MyBatis等ORM框架,熟悉Hibernate和MyBatis的核心API,對Hibernate的關(guān)聯(lián)映射、繼承映射、組件映射、緩存機(jī)制、事務(wù)管理以及性能調(diào)優(yōu)等有深入的理解。

5.熟練的使用HTML、CSS和JavaScript進(jìn)行Web前端開發(fā),熟悉jQuery和Bootstrap,對Ajax技術(shù)在Web項(xiàng)目中的應(yīng)用有深入理解,有使用前端MVC框架(AngularJS)和JavaScript模板引擎(HandleBars)進(jìn)行項(xiàng)目開發(fā)的經(jīng)驗(yàn)。

6.熟悉常用的關(guān)系型數(shù)據(jù)庫產(chǎn)品(MySQL、Oracle),熟練的使用SQL和PL/SQL進(jìn)行數(shù)據(jù)庫編程。

7.熟悉面向?qū)ο蟮脑O(shè)計(jì)原則,對GoF設(shè)計(jì)模式和企業(yè)應(yīng)用架構(gòu)模式有深入的了解和實(shí)際開發(fā)的相關(guān)經(jīng)驗(yàn),熟練的使用UML進(jìn)行面向?qū)ο蟮姆治龊驮O(shè)計(jì),有TDD(測試驅(qū)動開發(fā))和DDD(領(lǐng)域驅(qū)動設(shè)計(jì))的經(jīng)驗(yàn)。

8.熟悉Apache、NginX、Tomcat、WildFly、Weblogic等Web服務(wù)器和應(yīng)用服務(wù)器的使用,熟悉多種服務(wù)器整合、集群和負(fù)載均衡的配置。

9.熟練的使用產(chǎn)品原型工具Axure,熟練的使用設(shè)計(jì)建模工具PowerDesigner和Enterprise Architect,熟練的使用Java開發(fā)環(huán)境Eclipse和IntelliJ,熟練的使用前端開發(fā)環(huán)境WebStorm,熟練的使用軟件版本控制工具SVN和Git,熟練的使用項(xiàng)目構(gòu)建和管理工具M(jìn)aven和Gradle。點(diǎn)擊這里查看BATJ面試題總結(jié)。

?

說明:上面羅列的這些東西并不是每一項(xiàng)你都要爛熟于心,根據(jù)企業(yè)招聘的具體要求可以做相應(yīng)的有針對性的準(zhǔn)備。

我個人覺得前6項(xiàng)應(yīng)該是最低要求,是作為一個Java開發(fā)者必須要具備的專業(yè)技能。

?

項(xiàng)目介紹


我們應(yīng)該如何向面試官介紹項(xiàng)目?

本系統(tǒng)是X委托Y開發(fā)的用于Z的系統(tǒng),系統(tǒng)包括A、B、C、D等模塊。

系統(tǒng)使用了Java企業(yè)級開發(fā)的開源框架E以及前端技術(shù)F

表示層運(yùn)用了G架構(gòu),使用H作為視圖,I作為控制器并實(shí)現(xiàn)了REST風(fēng)格的請求;

業(yè)務(wù)邏輯層運(yùn)用了J模式,并通過K實(shí)現(xiàn)事務(wù)、日志和安全性等功能,通過L實(shí)現(xiàn)緩存服務(wù);

持久層使用了M封裝CRUD操作,底層使用N實(shí)現(xiàn)數(shù)據(jù)存取。整個項(xiàng)目采用了P開發(fā)模型。

?

說明:

上面的描述中,E通常指Spring(Java企業(yè)級開發(fā)的一站式選擇);

F最有可能是jQuery庫及其插件或者是Bootstrap框架,當(dāng)然如果要構(gòu)建單頁應(yīng)用(SPA)最佳的方案是前端MVC框架(如AngularJS)和JavaScript模板引擎(如HandleBars);

G顯然是MVC(模型-視圖-控制),最有可能的實(shí)現(xiàn)框架是Spring MVC,除此之外還有Struts 2、JSF以及Apache為JSF提供的MyFaces實(shí)現(xiàn),可以使用JSP作為MVC中的V,也可使用模板引擎(如Freemarker和Velocity)來生成視圖,還可以是各種文檔或報表(如Excel和PDF等),而Servlet和自定義的控制器是MVC中的C,當(dāng)然Spring MVC中提供了作為前端控制器的DispatcherServlet;

J通常是事務(wù)腳本,

K應(yīng)該是AOP(面向切面編程)技術(shù),

L目前廣泛使用的有memcached和Redis;

M的選擇方案很多,最有可能的是Hibernate和MyBatis,也可以兩種技術(shù)同時運(yùn)用,但通常是將增刪改交給Hibernate來處理,而復(fù)雜的查詢則由MyBatis完成,

此外TopLink、jOOQ也是優(yōu)秀的持久層解決方案;底層的數(shù)據(jù)存取傳統(tǒng)上是使用關(guān)系型數(shù)據(jù)庫,可以是MySQL、Oracle、SQLServer、DB2等,隨著大數(shù)據(jù)時代的來臨,也可以采用NoSQL(如MongoDB、MemBase、BigTable等)和其他大數(shù)據(jù)存取方案(如GFS、HDFS等);

項(xiàng)目的開發(fā)模型P可以是瀑布模型、快速原型模型、增量模型、螺旋模型、噴泉模型、RAD模型等。

?

項(xiàng)目開發(fā)流程


1.可行性分析?

可行性分析報告 / 項(xiàng)目開發(fā)計(jì)劃書

?

2.需求分析 >>> 需求規(guī)格說明書?

·?OOAD(用例圖、時序圖、活動圖)

·?界面原型:幫助理解需求、業(yè)務(wù)層設(shè)計(jì)時推導(dǎo)事務(wù)腳本

?

3.設(shè)計(jì) >>> 概要設(shè)計(jì)說明書/詳細(xì)設(shè)計(jì)說明書?

·?抽取業(yè)務(wù)實(shí)體(領(lǐng)域?qū)ο?#xff09;:類圖、E-R圖(概念設(shè)計(jì)階段)

·?分層架構(gòu):確定各層的技術(shù)實(shí)現(xiàn)方案(具體到使用的框架、數(shù)據(jù)庫服務(wù)器、應(yīng)用服務(wù)器等)。

?

業(yè)務(wù)層設(shè)計(jì):事務(wù)腳本模式(事務(wù):用戶發(fā)送一次請求就是一個事務(wù);

腳本:一個方法或一個函數(shù);事務(wù)腳本:把一次請求封裝為一個方法或一個函數(shù);

事務(wù)腳本模式:一個事務(wù)開始于腳本的打開,終止于腳本的關(guān)閉)。

業(yè)務(wù)層涉及的對象有三種類型:事務(wù)腳本類(封裝了業(yè)務(wù)的流程)、數(shù)據(jù)訪問對象(DAO,封裝了持久化操作)、數(shù)據(jù)傳輸對象(DTO,封裝了失血/貧血領(lǐng)域?qū)ο?#xff09;,三者之間的關(guān)系是事務(wù)腳本類組合(聚合)數(shù)據(jù)訪問對象,這二者都依賴了數(shù)據(jù)傳輸對象

·?正向工程(UML類圖生成Java代碼)和逆向工程(Java代碼生成UML類圖)

·?數(shù)據(jù)庫物理設(shè)計(jì)(ER圖轉(zhuǎn)換成表間關(guān)系圖、建庫和建表、使用工具插入測試數(shù)據(jù))

?

4.編碼

?

5.測試 >>> 測試報告 / 缺陷報告?

·?單元測試:對軟件中的最小可測試單元進(jìn)行檢查和驗(yàn)證,在Java中是對類中的方法進(jìn)行測試,可以使用JUnit工具來實(shí)施。

·?集成測試:集成測試也叫組裝測試或聯(lián)合測試。在單元測試的基礎(chǔ)上,將所有模塊按照設(shè)計(jì)要求組裝成為子系統(tǒng)進(jìn)行測試。

·?系統(tǒng)測試:將已經(jīng)確認(rèn)的軟件、硬件、外設(shè)、網(wǎng)絡(luò)等元素結(jié)合在一起,進(jìn)行信息系統(tǒng)的各種組裝測試和確認(rèn)測試,系統(tǒng)測試是針對整個產(chǎn)品系統(tǒng)進(jìn)行的測試,目的是驗(yàn)證系統(tǒng)是否滿足了需求規(guī)格的定義,找出與需求規(guī)格不符或與之矛盾的地方,從而提出更加完善的方案。

·?驗(yàn)收測試:在軟件產(chǎn)品完成了單元測試、集成測試和系統(tǒng)測試之后,產(chǎn)品發(fā)布之前所進(jìn)行的軟件測試活動。它是技術(shù)測試的最后一個階段,也稱為交付測試。驗(yàn)收測試的目的是確保軟件準(zhǔn)備就緒,并且可以讓最終用戶將其用于執(zhí)行軟件的既定功能和任務(wù)。

?

6.交付和維護(hù) >>> 用戶手冊 / 操作手冊

?

項(xiàng)目管理


·?版本控制:CVS/SVN/Git

·?自動構(gòu)建:Ant/Maven/Ivy/Gradle

·?持續(xù)集成:Hudson/Jenkins

?

系統(tǒng)結(jié)構(gòu)


·?負(fù)載均衡服務(wù)器:F5、A10

·?應(yīng)用服務(wù)器:

·?HTTP服務(wù)器:Apache、NginX(HTTP、反向代理、郵件代理服務(wù)器)

·?Servlet容器:Tomcat、Resin

·?EJB容器:WildFly(JBoss Application Server)、GlassFish、Weblogic、Websphere

·?數(shù)據(jù)庫服務(wù)器:MySQL、Oracle、DB2

?

第三方工具(插件)應(yīng)用


·?圖表工具:基于jQuery的圖表插件(如jQchart、Flot、Charted等)、Chart.js、Highcharts等。

·?報表工具:Pentaho Reporting、iReport、DynamicReports等。

·?文檔處理:POI、iText等。

·?工作流引擎:jBPM、OpenWFE、Snaker、activiti、flowable等。

·?作業(yè)調(diào)度:Quartz、JobServer、Oddjob等。

·?緩存服務(wù):EhCache、memcached、SwarmCache等。

·?消息隊(duì)列:Open-MQ、ZeroMQ、RabbitMQ、Kafka等。

·?安全框架:Shiro、PicketBox等。

·?搜索引擎:Lucene、Solr、ElasticSearch等。

·?Ajax框架:jQuery、ExtJS、DWR等。

·?UI插件:EasyUI、MiniUI等。

·?富文本框:UEditor、CKEditor等。

?

面試提問


·?項(xiàng)目是為哪個公司開發(fā)的?項(xiàng)目的投入是多少?

·?有多少人參與了項(xiàng)目開發(fā)?整個團(tuán)隊(duì)中,測試人員、開發(fā)人員、項(xiàng)目經(jīng)理比例是多少?

·?項(xiàng)目開發(fā)了多長時間?項(xiàng)目總的代碼量有多少?你的代碼量有多少?

·?項(xiàng)目采用了怎樣的開發(fā)模型或開發(fā)流程?項(xiàng)目的架構(gòu)是怎樣的?項(xiàng)目的技術(shù)選型是怎樣的?

·?你在項(xiàng)目中承擔(dān)了怎樣的職責(zé)?是否經(jīng)常開會或加班?項(xiàng)目完成后有哪些收獲或是經(jīng)驗(yàn)教訓(xùn)?

·?項(xiàng)目中最困難的部分是什么?如何解決團(tuán)隊(duì)開發(fā)時遇到的各種沖突?

?

說明:對于沒有實(shí)際項(xiàng)目經(jīng)驗(yàn)的,可以在前程無憂、智聯(lián)招聘、拉勾網(wǎng)等網(wǎng)站上搜索招聘Java程序員的公司,找到他們的官方網(wǎng)站了解他們做的項(xiàng)目,查看項(xiàng)目的詳細(xì)介紹,然后嘗試完成其中一部分功能,最好請教一下高人看看自己的設(shè)計(jì)和代碼是否恰當(dāng),這樣相當(dāng)于積累了一定的項(xiàng)目經(jīng)驗(yàn)。點(diǎn)擊這里查看BATJ面試題總結(jié)。

?

?

常見錯誤


1.只在計(jì)算機(jī)上練習(xí)

2.不做行為面試題演練

3.不做模擬面試訓(xùn)練

4.試圖死記硬背答案

5.不大聲說出你的解題思路

6.代碼不夠嚴(yán)謹(jǐn)

7.不寫測試代碼

8.輕言放棄

?

反問面試官的問題


1.?我注意到你們使用了X技術(shù),請問你們是如何解決Y問題的?

2.?為什么你們的產(chǎn)品使用了X技術(shù)而不是Y技術(shù)?據(jù)我所知,X技術(shù)雖然有A、B、C等好處,但也存在D和E問題,而Y技術(shù)可以解決D和E問題。

3.?我對您說的X技術(shù)不是太熟悉,但我感覺它是一個不錯的解決方案,您能多講講它的工作原理嗎?

4.?你們團(tuán)隊(duì)是如何進(jìn)行項(xiàng)目規(guī)劃的?一周會有幾次例會?每周的代碼量大概是多少?

5.?就X問題我能想到的解決方案目前就只有Y了,請問您會怎么解決這個問題?

?

S.A.R.法則


S.A.R法則是指先描述問題的場景,然后解釋你采取的行動,最后陳述結(jié)果。

?

算法題的五種解法


1.舉例法:通過舉例子發(fā)現(xiàn)其中的一般規(guī)則。

例子:圓內(nèi)接三角形是銳角三角形的概率是多少?這是搜狗的一個面試題,可以在圓上隨意畫三個點(diǎn)連接成三角形就可以知道答案了。

2.模式匹配法

例子:一個有序數(shù)組的元素經(jīng)過循環(huán)移動,元素的順序變成"3 4 5 6 1 2"。怎樣找到數(shù)組中最小的那個元素,假設(shè)數(shù)組中的元素各不相同。這個題目和折半查找看起來是那么相似,因此可以借鑒折半查找的算法,最小元素顯然出現(xiàn)在"mid > right"的轉(zhuǎn)折點(diǎn)。

3.簡化推廣法

說明:簡化問題規(guī)模和數(shù)據(jù)類型,然后再發(fā)現(xiàn)通用的解法。

4.簡單構(gòu)造法

例子:找出"abcde"的所有可能的排列組合。先考慮只有"a"的情況,再考慮"ab"的情況,以此類推。最終你可能會得到一個遞歸公式。這種方法往往會演變成遞歸法。

5.數(shù)據(jù)結(jié)構(gòu)頭腦風(fēng)暴法

例子:隨機(jī)生成一些數(shù)字,并找出其中位數(shù)。這種問題可以在頭腦中將你了解的數(shù)據(jù)結(jié)構(gòu)過一遍,看看哪種是最合適的數(shù)據(jù)結(jié)構(gòu)。上面的題目可以建立兩個堆,一個大根堆和一個小根堆,較小的元素放在大根堆,較大的元素放在小根堆,如果兩個堆不平衡,可以從其中一個堆取出元素放入另一個堆即可。最后中位數(shù)應(yīng)該是兩個堆的根之一。

?

錄取談判


1.?要理直氣壯的提出具體的待遇要求

2.?開出比預(yù)期稍高的價碼

3.?不要只盯著薪水(很多公司更愿意就薪水之外的條件做出讓步)

4.?使用最合適的方法(可以嘗試在電話或E-mail中談判待遇)

總結(jié)

以上是生活随笔為你收集整理的掌握这 11 个方法论,搞定一场完美技术面试!的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。