前言
金三銀四的跳槽黃金季,一向不愛挪窩的程序員也活躍起來,要說面試程序員煩,公司也煩,面試官也煩,但沒辦法,魚龍混雜的人太多,理論好寫不了代碼的程序員着實讓公司頭疼,因而面試的題目也越來越刁鑽!
不過凡事都有兩面性,面試也是激勵程序員多看面試題,掌握知識不是嗎?
本文將要講到的主題:如何準備Java高級的技術面試。
一. 換位思考下,如果你面試官,你會怎麼做
-
只能通過簡歷和麪試來衡量,別無他法。如果某位大牛確認能力很行,但面試時無法充分地自證能力,那對不起了,過不了,現實就這樣。
- 如果面試官由於能力不行,招進來一個大忽悠,那估計會被領導罵。而且再也不會被讓面試了,給領導的印象就不好了。所以不能評主觀印象,而是會有些客觀標準,具體而言,就是從多個方面問些題目,答好答壞就看候選人的。
二. 總體上說下準備面試的幾個方面點
在面試時,應當綜合準備 java Core,數據庫,框架,分佈式等方面的題目。我發現不少面試者走了彎路,他們或者乾脆不準備,準備時可能方法不到位,單準備一個方面。比如只准備了算法題,在這方面回答很好,但其它方面就一無所知了。
所以說,沒有所謂的一定能成功的面試祕籍,但有可以幫助提升成功率的準備方法。
切記,面試前一定得準備,否則成功的可能性很低,準備時,得綜合看各方面的點。至於每個點要到什麼程度,後文會講到。
三. 架構方面需要準備的點
-
熟悉SSM架構,至少在項目裏
-
Spring Bean的週期
-
最好能通過閱讀源代碼,說下IOC,AOP以及Spring MVC的工作流程
-
最好能結合反射,說下IOC等的實現原理
- Spring Boot和Spring Cloud的一些知識點
四. 數據庫方面需要準備的點
不少候選人會看很多SQL的技巧,比如select該怎麼寫,insert又該怎麼寫,但僅限於此,不會再準備其它的。
這樣就很吃虧,因爲面試官會認爲,哪怕是初級開發,SQL語句也該會寫,所以這塊不會多問,而會問如下方面的問題。
-
索引怎麼建的,怎麼用的?比如我建好了一個索引,在where 語句裏寫 name like '123%'會不會走索引,怎麼情況下不該建索引,哪些語句不會走索引。
- 除了索引之外,你有過哪些SQL優化方面的經驗,比如分庫分表,或通過執行計劃查看SQL的優化點。這最好是能結合你做的項目實際來講。
這裏,大概有70%的面試者只知道基本SQL的寫法,所以哪怕你是隻有理論經驗,會說一些優化點,也是非常有利的。
這塊對於高級開發而言,更得了解優化方面的技能。
五.集合方面:
-
Set如何實現防重的,比如TreeSet和HashSet等。
-
Collection的一些方法,比如比較方法,包裝成線程安全的方法等。
- 可能有些面試官會問,如何通過ArrayList實現隊列或堆棧,這個可以準備下。
六.多線程方面
其實在項目裏不怎麼會用到,但會問如下的問題:
-
synchronized和可重入鎖的差別,然後可能會順便問下信號量等防併發的機制。
-
在線程裏該如何返回值,其實就是callable runnable 區別。
-
一定得通過ThreadLocal或volatile關鍵字,來說明線程的內存模型。
-
線程池方面,會用,瞭解些常用參數
- 線程方面,可能問得比較多的就是併發機制,高級開發,會問得很深
七.架構方面
-
能證明自己可以幹活(這不難),同時能結合底層代碼說出IOC,AOP或Spring MVC的流程,只要能說出一個即可。或者能說出攔截器,Controller等的高級用法。
-
能證明自己有Spring Boot或Spring Cloud的經驗,比如能說出些Spring Cloud組件的用法。
- 如果能證明自己有分佈式開發的經驗,那最好了,其實這不難證明,比如能說出服務的包是放在多臺機器上(大多數公司其實都這樣),而且能說出如何部署,如何通過nginx等做到負載均衡。
小總結
本文的側重點是:
- 面試一定得準備 (重要的話說三遍,這裏已經超過3遍了)
- 如何全面充分地準備。
這麼耐心看到底部的你,肯定是愛好學習的人。
【文章彩蛋】
小編特地爲大家整理了一些Java相關的面試題,可以加小編的QQ羣:937053620,獲取!後期也會不斷更新添加新的面試題,希望可以幫助到大家。