又到了一年金三銀四,回想到不少年前我剛參加工做時的面試經歷,那時都是呆呆地等着面試官問問題,被問到一些本身並不熟悉的問題時要不就是思考半天也切不中要點,要不就只能無奈地回答並不清楚了。其實無論是經驗不足的初級開發,仍是面臨更高要求的資深開發,在面試上都會有同樣的困擾:如何在掌握的知識有限的狀況下,完成好一場高質量的面試呢?程序員
本文最適合如下幾種狀況的同窗參考:面試
雖然文中主要之後端開發爲例介紹技術面試的準備方法,可是和其餘崗位的面試也有類似之處,其餘朋友也能夠做爲參考。數據庫
小黃去年剛從計算機專業畢業,可是感受對技術掌握得還不夠,就又報名參加了一個培訓班,年末剛從培訓班畢業,懷揣着精心準備的簡歷,想到杭州闖一闖。今天上午到了一家裝修還不錯的公司面試,感受這家公司窗明桌淨,辦公桌前都是Mac筆記本加雙屏顯示器,比昨天面的那家外包公司可好多了,心想必定要好好發揮抓住這個機會。後端
老王工做五六年了,今年剛從一家不小的公司出來,公司效益很差,年末裁人了,不幸老王在年前的最後一次裁人名單中中獎了。雖然短時間內也沒什麼太大的經濟問題,可是以前拿到offer的都是一些沒上軌道的小公司,跟以前待過的公司比總感受是明珠暗投不太甘心。此次面試的公司看上去還滿正規的,若是能進去,就算不漲薪,可是心理上落差老是小一點。post
小黃循序漸進地說完了本身準備的項目介紹,而後面試官就照着簡歷問了起來。「你熟悉MySQL數據庫?」,「對」,「唔...那你能說說MySQL經常使用的有哪幾種存儲引擎嗎?」,「啊?什麼是存儲引擎?」。小黃心想,昨天覆習了面試寶典裏的數據庫索引,老師說這個是要點,面試官怎麼不按常理出牌呢。「你簡歷上寫了使用過Kafka消息中間件?」,「嗯,對的」,「那你能說說Kafka的拉模型和其餘推模型消息中間件的區別嗎?」,「...」,「今天面試就到這裏,有後續的話HR在一週內會聯繫你的」。學習
老王在隔壁的會議室裏坐了下來,面試官讓老王先介紹一下本身最近比較有表明性的項目,老王大概說了說本身這兩年作的一個平臺的功能。面試官問:「在這個項目過程當中你有碰到什麼印象比較深的技術難點或者業務難點嗎?」,老王想了一想,感受一會兒有點想不起來。面試官繼續問:「剛纔你介紹的項目裏有說到XXX功能,那在YYY異常狀況下若是處理ZZZ問題呢?」。老王心想之前也沒考慮過這個,那我就直接現場推敲一下吧,「這裏要先這樣,對了,那裏要那樣,不對,這裏還有一種狀況」。十分鐘過去了,老王還在原地兜着圈子,並且絲毫沒有停下來的意思。面試官只能打斷老王換了一個問題:「那你能介紹一個你有過深刻了解的技術嗎?」,老王:「我好像這幾個都瞭解一點」。「那關係型數據庫中的彙集索引和非彙集索引有什麼區別呢?」,「好像這兩個的存儲方式有點不一樣,非彙集索引開銷會大一點」,「那麼爲何非彙集索引開銷會比較大呢?」,「這個問題好像要涉及操做系統之類的知識,有點太深了」。40分鐘後,老王也結束了面試。操作系統
爲何面試官總是會問一些莫名其妙的問題?我怎麼可能瞭解計算機方面的全部問題呢?爲何他問得這麼深,寫代碼的時候能有什麼用?設計
以前我在一次失敗的面試以後老是感受有點不舒服,我感受個人水平也是挺不錯的,爲何到了面試就總感受發揮不出,並且總是被「虐」呢?下面咱們一塊兒來想一想辦法。中間件
如何完成好一場高質量的面試?這是咱們在文章一開頭提出的問題。首先咱們要知道,咱們掌握的知識必定是有限的,無論學到了多少,仍然還會有不知道的知識。特別是對技術深度有要求的資深開發崗位,想要面面俱到幾乎是一個不可能的任務。可是爲何有些人就能很輕易地拿到offer呢?索引
首先,咱們分析一下一場面試的結構。
通常技術面試都會分爲四個部分:項目介紹/自我介紹、技術能力問答、綜合能力問答、反向提問環節。而其中前三個部分對面試的成敗影響最大。首先,面試通常都會以項目介紹/自我介紹來進行切入,其實技術面試的自我介紹主要也是介紹本身的項目經驗。而後會穿插着對技術能力和綜合能力的評估,通常這一步都會由以前的項目介紹引伸出來。
通常來講,面試官在每一個環節但願瞭解的主要是:
雖然看上去眼花繚亂的很是多,其實核心關注的就是幾點:技術好、好合做、主動性強。
對於大部分面試官來講,通常也不會作太多事前準備和細密的過後分析,大多都是靠一個大概的印象來作出判斷的。因此面試的一個訣竅就是:突出亮點。一旦面試中有讓人印象深入的亮點,其餘方面只要不是太差通常面試就十拿九穩了。
可是不少讀者應該和我之前同樣,以爲本身好像也沒什麼亮點啊,總感受沒什麼特別的可說。可是經過總結和準備,我相信每個人均可以有本身的亮點,並且是不少個亮點。
首先,咱們能夠經過總結來獲得一份優秀的項目介紹。關鍵點就在於不能光介紹項目完成的需求,由於這些對於面試官來講並無什麼價值,畢竟咱們面的是開發崗位不是產品崗位:)在項目介紹中,咱們應該明確描述咱們在項目中解決的問題,包括技術難題和業務難題。如何表述能夠參考一下如今流行的STAR法則,即在什麼狀況下(Situation),面臨一項什麼樣的任務(Task),採起了什麼樣的行動(Action),達到了怎樣的結果(Result)。這樣的表述能夠很好地展現本身的解決問題能力,充分顯示了本身在工做中的主動性。
而後,咱們還能夠經過準備來深挖幾個在工做中比較重要的技術點做爲「技術亮點」展現,這指的不是僅僅經過「面試寶典」來準備的膚淺的理論知識,而應該是能作到真正的言之有物、切中工做要點的實踐性的深刻知識點。這一步是本文全部面試準備技巧中惟一對技術水平有要求並且是要求很高的步驟,技術水平不夠的朋友可能發愁怎麼準備,技術水平比較高的朋友可能又會疑惑到底什麼是實踐性的深刻知識點。你們不用擔憂,我已經爲你們準備好了學習材料或者說是參考樣例。經過學習或參考工做經驗較豐富者的總結文章咱們能夠更容易地得到本身的技術亮點。
實踐性的深刻知識點的最大特色就是:工做中會使用且能夠層層深刻造成問題鏈條。關係型數據庫是後端開發離不開的技術,而數據庫索引又是程序中的SQL語句執行效率的關鍵,你們能夠經過我以前編寫的一系列數據庫索引相關的文章來了解一個實踐性的深刻知識點到底長什麼樣。後續我也會不斷更新更多淺顯易懂的高階技術,有興趣的朋友能夠持續關注一下。下面的文章主要以知識點講解爲主,須要具體的一系列相關面試題的朋友能夠在文後留言,若是人數比較多我會考慮另外寫一篇文章講解具體的面試題並連接到對應的知識點。
可是有了準備以後,咱們怎麼能防止面試官問出不少超出咱們準備範圍的「奇怪」的問題呢?這就須要咱們有效地引導和填充整個面試的過程。通常一場技術面試會在40分鐘到60分鐘,如何完成好一場技術面試的關鍵就在於如何用亮點來充滿這40到60分鐘。
通常一個技術亮點會包含一系列層層遞進的內容,因此能夠問出大概三到五個問題。若是發現面試官不知道應該如何追問,那麼你能夠簡短一些地把後續知識點一次性介紹完。通常這些問題都說完時間就過去了十到十五分鐘,而項目介紹和相關的問答會佔用大概10分鐘。若是咱們準備了兩個技術亮點,加上先後的一些非技術性問題和反向提問,那麼基本上一場面試就圓滿地結束了。
那麼如何讓面試官問出本身想問的問題呢?這就須要咱們準備好一個「劇本」了。
首先,面試的開場必定是項目介紹,能夠將咱們準備好的技術亮點與項目介紹中解決的技術難題結合起來,這樣面試官基本都會根據這個點繼續往下追問。
其次,咱們還能夠對簡歷內容進行特地的編排來誘導面試官主動提出咱們準備好的問題。例如在簡歷中把擅長的技術放在更靠上的位置突出顯示,而且增長更多的深刻解釋。這樣不只能夠引發面試官的注意,還能使簡歷顯得更有技術含量,更容易經過篩選。
最後,還能夠厚着臉皮主動提出本身對某一個領域比較瞭解,嘗試詢問面試官對這一部分有沒有興趣。
經過上述這三點,基本上80%以上的面試就可以順順利利地圓滿完成了。
在掌握了面試的技巧以後,咱們再來看看以前小黃和老王到底犯了什麼錯誤,咱們也能避免踩坑。
初級開發小黃的問題:
惜字如金,沒有充分回答問題;
等着面試官提問,沒有主動地引導。
資深開發老王的問題:
項目經歷沒有準備;
問題抓不住重點,從細節開始推敲,反反覆覆。