如何準備Java高級的技術面試

前言

金三銀四的跳槽黃金季,一向不愛挪窩的程序員也活躍起來,要說面試程序員煩,公司也煩,面試官也煩,但沒辦法,魚龍混雜的人太多,理論好寫不了代碼的程序員着實讓公司頭疼,因而面試的題目也越來越刁鑽!

不過凡事都有兩面性,面試也是激勵程序員多看面試題,掌握知識不是嗎?

本文將要講到的主題:如何準備Java高級的技術面試。

如何準備Java高級的技術面試

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

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

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

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

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

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

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

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

  • 熟悉SSM架構,至少在項目裏

  • 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的寫法,所以哪怕你是隻有理論經驗,會說一些優化點,也是非常有利的。

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

五.集合方面:

  • 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,獲取!後期也會不斷更新添加新的面試題,希望可以幫助到大家。

如何準備Java高級的技術面試

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章