Java程序員總結(jié)出必看的初級~高級技術(shù)面試題

Java程序員總結(jié)出必看的初級~高級技術(shù)面試題

長沙牛耳教育      2022-04-14 02:35:01     1

Java程序員總結(jié)出必看的初級~高級技術(shù)面試題,  1換位思考下,如果你面試官,你會怎么做  1只能通過簡歷和面試來衡量,別無他法。如果某位大牛確認(rèn)能力很行,但面試時無法

課程價格 請咨詢

上課時段: 授課校區(qū):

詳細(xì)介紹



  1換位思考下,如果你面試官,你會怎么做


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


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

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


  2總體上說下準(zhǔn)備面試的幾個方面點


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


  同理,在面試時,應(yīng)當(dāng)綜合準(zhǔn)備javaCore,數(shù)據(jù)庫,框架,分布式等方面的題目。根據(jù)我面試的結(jié)果,我發(fā)現(xiàn)不少候選人走了彎路,他們或者干脆不準(zhǔn)備,準(zhǔn)備時可能方法不到位,單準(zhǔn)備一個方面。比如只準(zhǔn)備了算法題,在這方面回答很好,但其它方面就一無所知了。


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

  切記,面試前一定得準(zhǔn)備,否則成功的可能性很低,準(zhǔn)備時,得綜合看各方面的點。至于每個點要到什么程度,后文會講到。


  3架構(gòu)方面需要準(zhǔn)備的點


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


  1熟悉SSM架構(gòu),至少在項目里做過。


  這個的說法是,介紹項目時,用一個業(yè)務(wù)流程來說springmvc如何做的。


  2知道SpringMVC中的細(xì)節(jié),比如@Autowired的用法,如何把url映射到Controller上,ModelAndView對象返回的方式等。


  3最好結(jié)合項目的用法,說下你是怎么用AOP,攔截器的,比如說可以通過攔截器攔截非法請求,怎么用AOP輸出日志等。


  4關(guān)于ORM方面,不限用過哪種,但得知道一對一,一多多,多對多等的用法,以及cascade和inverse的用法。


  5最好知道聲明式事務(wù)的做法。


  如果你要應(yīng)聘高級開發(fā),那在上述基礎(chǔ)上,最好了解如下的知識點:


  1SpringBean的周期2最好能通過閱讀源代碼,說下IOC,AOP以及SpringMVC的工作流程3最好能結(jié)合反射,說下IOC等的實現(xiàn)原理。4SpringBoot和SpringCloud的一些知識點。


  4數(shù)據(jù)庫方面需要準(zhǔn)備的點


  不少候選人會看很多SQL的技巧,比如select該怎么寫,insert又該怎么寫,但僅限于此,不會再準(zhǔn)備其它的。


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


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


  2除了索引之外,你有過哪些SQL優(yōu)化方面的經(jīng)驗,比如分庫分表,或通過執(zhí)行計劃查看SQL的優(yōu)化點。這最好是能結(jié)合你做的項目實際來講。


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


  這塊對于高級開發(fā)而言,更得了解優(yōu)化方面的技能。


  5JavaCore方面需要準(zhǔn)備的點


  這塊是基礎(chǔ),其實很多問的問題,候選人一定會在項目里用到,但很少能說好說全。


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


  集合方面:


  1hashcode有沒有重寫過?在什么場景下需要重寫。如果可以,結(jié)合hash表的算法,說下hashmap的實現(xiàn)原理。


  對于高級開發(fā)而言,最好通過ConcurrentHashMap來說明下并發(fā)方面的底層實現(xiàn)代碼。


  2ArrayList,linkedList的差別,比如一個基于數(shù)組,一個基于鏈表,它們均是線程不安全的,ArrayList的擴容做法等。


  對于高級而言,最好看下底層的代碼。


  3Set如何實現(xiàn)防重的,比如TreeSet和HashSet等。


  4Collection的一些方法,比如比較方法,包裝成線程安全的方法等。


  5可能有些面試官會問,如何通過ArrayList實現(xiàn)隊列或堆棧,這個可以準(zhǔn)備下。


  多線程方面,其實在項目里不怎么會用到,但會問如下的問題:


  1synchronized和可重入鎖的差別,然后可能會順便問下信號量等防并發(fā)的機制。


  2在線程里該如何返回值,其實就是callablerunnable區(qū)別。


  3一定得通過ThreadLocal或volatile關(guān)鍵字,來說明線程的內(nèi)存模型。


  4線程池方面,會用,了解些常用參數(shù)


  線程方面,可能問得比較多的就是并發(fā)機制,如果是高級開發(fā),可能會問得深些。


  虛擬機方面


  1結(jié)構(gòu)圖和流程可以大致說下。


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


  3說下垃圾回收的流程,然后針對性地說下如何在代碼中優(yōu)化內(nèi)存性能。


  4最好說下如果出現(xiàn)了OOM異常,該怎么排查?如何看Dump文件。


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


  6算法,設(shè)計模式等,其實是虛的


  這塊好準(zhǔn)備,不過話說哪怕這些沒回答好,但能證明有相關(guān)技能的項目經(jīng)驗,一般也會讓過。


  不過在這塊,不少候選人就本末倒置了,比如就準(zhǔn)備算法,設(shè)計模式,剛才提到的框架,數(shù)據(jù)庫和JavaCore方面就不準(zhǔn)備了。這樣很吃虧,就好比考政治只復(fù)習(xí)了一個點,其它一點也不準(zhǔn)備。


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


  1大多數(shù)的候選人(大概7成)直接就來了,不做任何準(zhǔn)備。要知道,面試和項目其實有些脫節(jié),哪怕項目做得再好,不做準(zhǔn)備照樣通不過,只要我確認(rèn)過這類人確實無法達標(biāo),我拒掉他們沒任何心理負(fù)擔(dān),誰讓他們不準(zhǔn)備?


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


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


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


  架構(gòu)方面


  1能證明自己可以干活(這不難),同時能結(jié)合底層代碼說出IOC,AOP或SpringMVC的流程,只要能說出一個即可?;蛘吣苷f出攔截器,Controller等的高級用法。


  2能證明自己有SpringBoot或SpringCloud的經(jīng)驗,比如能說出些SpringCloud組件的用法。


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


  數(shù)據(jù)庫方面,其實講清楚一個問題即可:如何進行SQL調(diào)優(yōu),比如通過索引,看執(zhí)行計劃即可,如果有其它的優(yōu)化點,說清楚即可。


  JavaCore方面,這里給出些訣竅:


  1能結(jié)合ConcurrentHashMap的源代碼,說出final,volatile,transient的用法,以及在其中如何用Lock對象防止寫并發(fā)。


  2結(jié)合一個項目實際,說下設(shè)計模式的實踐。


  3多線程方面,能說出Lock或volatile等高級知識點的用法。


  4這塊最取巧:說下GC的流程,以及如何通過日志和Dump文件排查OOM異常,如果再高級些的話,說下如何在代碼中優(yōu)化內(nèi)存代碼。


  訣竅點歸結(jié)成一個:能結(jié)合源代碼或項目實際,說出些比較資深的問題。


  8本文的側(cè)重點&后文預(yù)告


  本文中的一些內(nèi)容在我的其它文章里出現(xiàn)過(不是文字上的復(fù)制粘貼,而是意思上的重構(gòu)),但如果大家讀下我的文章,就會發(fā)現(xiàn)其它的文章都有側(cè)重點,比如有的側(cè)重于數(shù)據(jù)庫方面面試技巧的準(zhǔn)備,有些介紹如何在簡歷中介紹項目。


  本文的側(cè)重點是:1面試一定得準(zhǔn)備(重要的話說三遍,這里已經(jīng)超過3遍了)2如何全面充分地準(zhǔn)備。


以上就是長沙牛耳教育java培訓(xùn)機構(gòu)小編分享的“Java程序員總結(jié)出必看的初級~高級技術(shù)面試題”的內(nèi)容,希望對大家有幫助,更多java面試題請繼續(xù)關(guān)注長沙牛耳教育java培訓(xùn)機構(gòu)官網(wǎng),每天會精彩內(nèi)容分享與你。


相關(guān)java面試題推薦


2019最新最全java面試題及答案:http://www.bjpowernode.com/tutorial_baseinterviewquestions/


Java常見面試題匯總:http://www.bjpowernode.com/javazixun/1007.html


2019最新java面試題含答案(基礎(chǔ)篇):http://www.bjpowernode.com/javazixun/1145.html


各大互聯(lián)網(wǎng)公司Java面試題匯總:http://www.bjpowernode.com/javazixun/1867.html


2019最新Java常見面試題(附帶答案):http://www.bjpowernode.com/javazixun/891.html


常被問到的Java面試題(帶全部答案):http://www.bjpowernode.com/javazixun/886.html


培訓(xùn)啦提醒您:交易時請核實對方資質(zhì),對于過大宣傳或承諾需謹(jǐn)慎!任何要求預(yù)付定金、匯款等方式均存在風(fēng)險,謹(jǐn)防上當(dāng)。