1. 程式人生 > >面試官告訴你如何準備Java初級和高階的技術面試

面試官告訴你如何準備Java初級和高階的技術面試

本人最近幾年一直在做java後端方面的技術面試官,而在最近兩週,又密集了面試了一些java初級和高階開發的候選人,在面試過程中,我自認為比較慎重,遇到問題回答不好的候選人,我總會再三從不同方面提問,只有當反覆確認能力不行才會下結論,相反,如果候選人給我的印象不錯,我也會從多個角度來衡量,以免招進會說但不會幹活的“大忽悠”。

其實倒也不是我故意要為難候選人,畢竟入職後就是同事,但面試官的職責使然,而且,如果資深的面試官一般也這樣。

寫到這裡,恐怕會嚇到一些想要面試的朋友,能力強和能力弱都會被多問,那怎麼辦?

這就是本文將要講到的主題:如何準備Java初級和高階的技術面試。

一. 換位思考下,如果你面試官,你會怎麼做

1. 只能通過簡歷和麵試來衡量,別無他法。如果某位大牛確認能力很行,但面試時無法充分地自證能力,那對不起了,過不了,現實就這樣。

2. 如果面試官由於能力不行,招進來一個大忽悠,那估計會被領導罵。而且再也不會被讓面試了,給領導的印象就不好了。所以不能評主觀印象,而是會有些客觀標準,具體而言,就是從多個方面問些題目,答好答壞就看候選人的。

其實一些題目都差不多,但不同能力的面試官問問題的切入點和漸程序度會不同,而且有經驗的面試官會挖掘候選人的優勢,並能從候選人的說辭中判斷候選人是真懂還是忽悠。 

二. 總體上說下準備面試的幾個方面點

記得之前考政治,某個大題10分,分5個點,每個點的標準答案不多,也就一兩句話。比較取巧的做法是,涵蓋點要全,每個點無需多說,但要說到點子上。相反,如果在某個點做得再多,其它點沒覆蓋到,只能拿這個點的分。

同理,在面試時,應當綜合準備 java Core,資料庫,框架,分散式等方面的題目。根據我面試的結果,我發現不少候選人走了彎路,他們或者乾脆不準備,準備時可能方法不到位,單準備一個方面。比如只准備了演算法題,在這方面回答很好,但其它方面就一無所知了。

所以說,沒有所謂的一定能成功的面試祕籍,但有可以幫助提升成功率的準備方法。

切記,面試前一定得準備,否則成功的可能性很低,準備時,得綜合看各方面的點。至於每個點要到什麼程度,後文會講到。 

三. 架構方面需要準備的點

初級開發而言,需要讓面試官感覺出如下的要點。

1. 熟悉SSM架構,至少在專案裡做過。

這個的說法是,介紹專案時,用一個業務流程來說spring mvc如何做的。

2. 知道Spring MVC中的細節,比如@Autowired的用法,如何把url對映到Controller上,ModelAndView物件返回的方式等。

3. 最好結合專案的用法,說下你是怎麼用AOP,攔截器的,比如說可以通過攔截器攔截非法請求,怎麼用 AOP輸出日誌等。

4. 關於ORM方面,不限用過哪種,但得知道一對一,一多多,多對多等的用法,以及cascade和inverse的用法。

5. 最好知道宣告式事務的做法。

如果你要應聘高階開發,那在上述基礎上,最好了解如下的知識點:

  • Spring Bean的週期
  • 最好能通過閱讀原始碼,說下IOC,AOP以及Spring MVC的工作流程
  • 最好能結合反射,說下IOC等的實現原理
  • Spring Boot和Spring Cloud的一些知識點

四. 資料庫方面需要準備的點

不少候選人會看很多SQL的技巧,比如select該怎麼寫,insert又該怎麼寫,但僅限於此,不會再準備其它的。

這樣就很吃虧,因為面試官會認為,哪怕是初級開發,SQL語句也該會寫,所以這塊不會多問,而會問如下方面的問題。

1. 索引怎麼建的,怎麼用的?比如我建好了一個索引,在where 語句裡寫 name like '123%'會不會走索引,怎麼情況下不該建索引,哪些語句不會走索引。

2. 除了索引之外,你有過哪些SQL優化方面的經驗,比如分庫分表,或通過執行計劃檢視SQL的優化點。這最好是能結合你做的專案實際來講。

這裡,我面試下來,大概有70%的候選人只知道基本SQL的寫法,所以哪怕你是隻有理論經驗,會說一些優化點,也是非常有利的。

這塊對於高階開發而言,更得了解優化方面的技能。      

五. Java Core方面需要準備的點

這塊是基礎,其實很多問的問題,候選人一定會在專案裡用到,但很少能說好說全。

這塊主要會從集合,多執行緒,異常處理流程以及JVM虛擬機器這些方面來問。

集合方面:

1. hashcode有沒有重寫過?在什麼場景下需要重寫。如果可以,結合hash表的演算法,說下hashmap的實現原理。

對於高階開發而言,最好通過ConcurrentHashMap來說明下併發方面的底層實現程式碼。

2. ArrayList,LinkedList的差別,比如一個基於陣列,一個基於連結串列,它們均是執行緒不安全的,ArrayList的擴容做法等。

對於高階而言,最好看下底層的程式碼。

3. Set如何實現防重的,比如TreeSet和HashSet等。

4. Collection的一些方法,比如比較方法,包裝成執行緒安全的方法等。

5. 可能有些面試官會問,如何通過ArrayList實現佇列或堆疊,這個可以準備下。

多執行緒方面,其實在專案裡不怎麼會用到,但會問如下的問題:

1. synchronized和可重入鎖的差別,然後可能會順便問下訊號量等防併發的機制。

2. 線上程裡該如何返回值,其實就是callable runnable 區別。

3. 一定得通過ThreadLocal或volatile關鍵字,來說明執行緒的記憶體模型。

4. 執行緒池方面,會用,瞭解些常用引數

執行緒方面,可能問得比較多的就是併發機制,如果是高階開發,可能會問得深些。

虛擬機器方面

1. 結構圖和流程可以大致說下。

2. 一定得了解針對堆的垃圾回收機制,具體而言,可以畫個圖,說下年輕代年老代等。

3. 說下垃圾回收的流程,然後針對性地說下如何在程式碼中優化記憶體效能。

4. 最好說下如果出現了OOM異常,該怎麼排查?如何看Dump檔案。

5. GC的一些概念,比如強弱軟引用,finalize方法等,這些可以準備下。 

六. 演算法,設計模式等,其實是虛的

這塊好準備,不過話說哪怕這些沒回答好,但能證明有相關技能的專案經驗,一般也會讓過。   

不過在這塊,不少候選人就本末倒置了,比如就準備演算法,設計模式,剛才提到的框架,資料庫和Java Core方面就不準備了。這樣很吃虧,就好比考政治只複習了一個點,其它一點也不準備。    

七. 我面試的感受&聽到哪類回答就能證明候選人比較資深

1. 大多數的候選人(大概7成)直接就來了,不做任何準備。要知道,面試和專案其實有些脫節,哪怕專案做得再好,不做準備照樣通不過,只要我確認過這類人確實無法達標,我拒掉他們沒任何心理負擔,誰讓他們不準備?

2. 還有些候選人態度很好,明顯準備過,但沒準備到位,比如像剛才所說,只准備了演算法,或者在Java Core方面,只看了集合方面的面試題。對於這些同學,哪怕是過了,我也會感到惋惜,畢竟如果面試好些的話,工資也能更高些,至於哪些過不了的,我敢說,如果他們準備過,估計就不是這個結果了。

其實我也知道,人無完人,哪怕我自己去面試,也不可能面面俱到,所以,我不會要求候選人什麼問題都能回答出,甚至大多答錯也沒關係,只要能證明自己的能力即可通過面試。

我也和不少面試官交流過,根據我們的經驗,如果候選人能說出如下的知識點,即能證明他在這個領域比較資深了,在這塊,我可能就不會過多地問問題了。  

架構方面

1. 能證明自己可以幹活(這不難),同時能結合底層程式碼說出IOC,AOP或Spring MVC的流程,只要能說出一個即可。或者能說出攔截器,Controller等的高階用法。

2. 能證明自己有Spring Boot或Spring Cloud的經驗,比如能說出些Spring Cloud元件的用法。

3. 如果能證明自己有分散式開發的經驗,那最好了,其實這不難證明,比如能說出服務的包是放在多臺機器上(大多數公司其實都這樣),而且能說出如何部署,如何通過nginx等做到負載均衡。

資料庫方面,其實講清楚一個問題即可:如何進行SQL調優,比如通過索引,看執行計劃即可,如果有其它的優化點,說清楚即可。

Java Core方面,這裡給出些訣竅:

1. 能結合ConcurrentHashMap的原始碼,說出final,volatile,transient的用法,以及在其中如何用Lock物件防止寫併發。

2. 結合一個專案實際,說下設計模式的實踐。

3. 多執行緒方面,能說出Lock或volatile等高階知識點的用法。

4. 這塊最取巧:說下GC的流程,以及如何通過日誌和Dump檔案排查OOM異常,如果再高階些的話,說下如何在程式碼中優化記憶體程式碼。    

訣竅點歸結成一個:能結合原始碼或專案實際,說出些比較資深的問題。    

八. 本文的側重點&後文預告

本文的側重點是:

  1. 面試一定得準備 (重要的話說三遍,這裡已經超過3遍了)
  2. 如何全面充分地準備。
  3. 有沒有關於面試技巧的一些視訊?有 在我的後端開發群裡:723392273 我會分享一些面試 包括架構技術方面的視訊,進群我將免費送給你

至於為什麼要免費送給你們?我得不停地總結我作為面試官的技巧,這樣我在面試中也能更高效更準確地招到合適的人才。

不過話說回來,這篇文章應該對大家多少有些幫助,因為不是每個面試官都肯洩漏面試內幕的。

在後篇博文裡,我將在之前博文的基礎上講述如何準備簡歷,從而提升簡歷通過初選的概率,之前我寫過類似的文章。

相關推薦

java面試總結(一)--如何準備Java初級高階技術面試

本文內容來自:https://mp.weixin.qq.com/s?__biz=MzAxNDMwMTMwMw==&mid=2247489769&idx=1&sn=1fccca65abcb7c7f7b8411cc1e79be6f&chksm=9b9439f1ace3b0

如何準備Java初級高階技術面試呢?

IT行業的崛起帶動了一大批的新興職業,Java資料開發就是其中之一,作為IT行業的剛需職位,企業對合格的Java開發人員求賢若渴, 在各大主流招聘平臺上, Java相關職位數量一直名列前茅,那麼我們如何準備Java初級和高階技術的面試呢? 一. 換位思考下,如果你面試官,你會怎麼做 1. 只

面試告訴如何準備Java初級高階技術面試

本人最近幾年一直在做java後端方面的技術面試官,而在最近兩週,又密集了面試了一些java初級和高階開發的候選人,在面試過程中,我自認為比較慎重,遇到問題回答不好的候選人,我總會再三從不同方面提問,只有當反覆確認能力不行才會下結論,相反,如果候選人給我的印象不錯,我也

引用面試文章 :如何準備Java初級高階技術面試

本人最近幾年一直在做java後端方面的技術面試官,而在最近兩週,又密集了面試了一些java初級和高階開發的候選人,在面試過程中,我自認為比較慎重,遇到問題回答不好的候選人,我總會再三從不同方面提問,只有當反覆確認能力不行才會下結論,相反,如果候選人給我的印象不錯,我也會從多個角度來衡量,以免招進會說但不會幹活

年底了,如何準備 Java 初級高階技術面試

作者:hsm_computer 來自:cnblogs.com/JavaArchitect/p/9032323.html 本人最近幾年一直在做java後端方面的技術面試官,而在最近兩週,又密集了面試了一些java初級和高階開發的候選人,在面試過程中,我自認為比較慎重,遇到問題回

如何準備 Java 初級高階技術面試

本人最近幾年一直在做java後端方面的技術面試官,而在最近兩週,又密集了面試了一些java初級和高階開發的候選人,在面試過程中,我自認為比較慎重,遇到問題回答不好的候選人,我總會再三從不同方面提問,只有當反覆確認能力不行才會下結論。   相反,如果候選人給我的印象不錯,我也會從多個

十年Java面試告訴如何介紹自己的專案經驗

雖時至年底,大多數小夥伴都知道,2018年是網際網路行業最不平凡的一年。各類平臺的倒閉、破產、清算,尤其是6、7月分全國大範圍P2P集中爆雷跑路,再加上貿易戰等,居多因素,裁員的、失業的大有人在,所以,雖近年底,找工作的夥伴應該還不在少數,所以,今天,給大家分享一些面試技巧文章。 假如去面試要問10個問

年底了,如何準備 Java 初級高級的技術面試

技術棧 用法 部署 方法 text size 文章 ext 情況下 朋友最近幾年一直在做java後端方面的技術面試官,而在最近兩周,又密集了面試了一些java初級和高級開發的候選人,在面試過程中,我自認為比較慎重,遇到問題回答不好的候選人,我總會再三從不同方面提問,只有當反

BAT面試告訴如何才能脫穎而出

每個程式設計師、或者說每個工作者都應該有自己的職業規劃,如果你不是富二代,不是官二代,也沒有職業規劃,希望你可以思考一下自己的將來。   程式設計師的三個階段 第一階段—三年 我認為三年對於程式設計師來說是第一個門檻,這個階段將會淘汰掉一批不適合寫程式碼的人。這一階段,我們走出校園,邁入社會

再也不用擔心面試HashCodeequals了

結論 如果兩個物件相等,則hashcode()必須相等。 如果兩個物件相等,a.equals(b)==b.equals(a)==true 如果兩個物件有相同的hashcode值,他們也不一定是相等的。但若兩個物件相等,則hashCode值一定相等。 因此若equals()被覆

阿里P8教如何準備Java高階技術面試

一、 換位思考下,如果你面試官,你會怎麼做 1. 只能通過簡歷和麵試來衡量,別無他法。如果某位大牛確認能力很行,但面試時無法充分地自證能力,那對不起了,過不了,現實就這樣。 2. 如果面試官由於能力不行,招進來一個大忽悠,那估計會被領導罵。而且再也不會被讓面試了,給領

【BAT面試題系列】面試了解樂觀鎖悲觀鎖嗎?

次數 catch val util overflow info 基本概念 因此 問題 前言 樂觀鎖和悲觀鎖問題,是出現頻率比較高的面試題。本文將由淺入深,逐步介紹它們的基本概念、實現方式(含實例)、適用場景,以及可能遇到的面試官追問,希望能夠幫助你打動面試官。 目錄

Java堆記憶體是執行緒共享的!面試確定嗎?

Java作為一種面向物件的,跨平臺語言,其物件、記憶體等一直是比較難的知識點,所以,即使是一個Java的初學者,也一定或多或少的對JVM有一些瞭解。可以說,關於JVM的相關知識,基本是每個Java開發者必學的知識點,也是面試的時候必考的知識點。 在JVM的記憶體結構中,比較常見的兩個區域就是堆記憶體和棧記憶

面試了,別再問我TCP的三次握手四次揮手

少點程式碼,多點頭髮 本文已經收錄至我的GitHub,歡迎大家踴躍star 和 issues。 https://github.com/midou-tech/articles 三次握手建立連結,四次揮手斷開連結。這個問題算非常經典的問題,也是面試官非常喜歡問的問題。 不誇張的說,龍叔在校招面試的時候每一家公

面試經歷過資料庫遷移麼?有哪些注意點難點?

前言 最近寫了很多資料庫相關的文章,大家基本上對資料庫也有了很多的瞭解,資料庫本身有所瞭解了,我們是不是應該回歸業務本身呢? 大家去了解過自己企業資料庫的部署方式麼?是怎麼部署的,又是部署在哪裡的?部署過程中可能會出現的問題有哪些? 是主從?還是雙主?有沒有分庫?大的表做了分表沒?等等...部署方式大概率也都

面試說說ReentrantLockSynchronized區別

大家好!又和大家見面了。為了避免面試尷尬,今天同比較通俗語言和大家聊下ReentrantLock和Synchronized區別!   使用方式 Synchronized可以修飾例項方法,靜態方法,程式碼塊。自動釋放鎖。 ReentrantLock一般需要try catch finally語句,在t

JAVA秒會技術之秒殺面試】秒殺Java面試——集合篇(一)

tails category tail java cat 秒殺 試題 面試官 java面試 【JAVA秒會技術之秒殺面試官】秒殺Java面試官——集合篇(一) 【JAVA秒會技術之秒殺面試官】JavaEE常見面試題(三) http://blog.csdn.net/qq296

用理論告訴 三極管MOS管的區別在哪

總結 pn結 存在 信號源 流控 講解 獲得 之間 噪聲 在電路設計當中假設我們想要對電流中止控制,那就少不了三極管的幫助。我們俗稱的三極管其全稱為半導體三極管,它的主要作用就是將微小的信號中止放大。MOS管與三極管有著許多相近的地方,這就使得一些新手不斷無法明白兩者之間的

阿裏架構師告訴最新Java架構師學習路線圖

線圖 技術 算法 不清楚 你會 經驗 語言 sha png 1、Java架構師是什麽?要想往Java架構師的方向發展首先要知道Java架構師是什麽?Java架構師是一個既需要掌控整體又需要洞悉局部瓶頸並依據具體的業務場景給出解決方案的團隊領導型人物。一個Java架構師得需要

面試到底安的什麼心?

       現在的招聘條件大多都要求“有工作經驗”。一般來說,有五年以上的工作經驗就算是經驗豐富了。可是,有一個有著8年工作經驗的網友卻在面試的時候被面試官diss經驗不足,到底是怎麼回事呢?