所謂「面經」,就是面試經驗了,求職者把本身的面試經驗和教訓寫下來,供後來人參考。程序員
提及「面經」, 我不禁得想起新東方剛剛起步的時候出現的所謂「機經」,通過幾千年考試的中國人在考試這一起很是有天賦,即便是上機考試,那些聰明的同窗也能把題目背下來,考完之後整理成題庫, 中國人的雅思和GRE成績常常是高得使人咂舌。面試
電影《中國合夥人》算法
我記得我找工做的那時候,「面經」並很少,市面上流傳的都是微軟面試的那些經典題目,好比爲何下水道井蓋是圓的? 估計一下一個城市有多少加油站? 等等。編程
拜互聯網/移動互聯網所賜,如今針對程序員的面經實在是太多了,不只僅是面試經驗,還有不少面試題,尤爲是BAT的面試題。瀏覽器
聰明的程序員們會把這些面試題分門別類地整理,寫成文章,或者放到著名的同性交友網站GitHub去,作得好的還能得到很多小星星。服務器
更進一步,還有人創建專門的網站,出專門的書,教程序員們怎麼面試,怎麼應付HR。網站
存在即合理, 「面經」的出現充分說明這是個火熱的市場,有不少程序員在進入軟件開發這個領域,僅僅是求職這個細分領域就能夠熱鬧非凡。設計
我也看了一些面經,從中也查漏補缺學了很多知識,不過我更大的感覺就是,這些面試官問的問題怎麼都差很少啊!3d
好比對於Java有這麼幾個著名的問題:blog
Spring AOP是怎麼實現的?
類加載機制,雙親委派模型是怎麼回事?
HashMap的原理?
Java內存模型
volatile關鍵字的做用?
Java 的垃圾回收機制?
......
再好比基礎知識的著名問題:
從瀏覽器輸入URL到服務器返回結果,中間經歷了什麼?
TCP三次握手,滑動窗口
TCP和UDP的比較
實現個LRU算法。
......
我甚至想,能考察的技術點都被聰明的程序員們給挖掘完了,都端到了桌子上,悲催的面試官也想不到別的招數,只能從中選取了。
我也作過不少次面試官,其實也有這樣的苦惱,到底問什麼樣的技術問題呢?如何才能區分出哪些是更好的程序員呢?
有這麼幾種招數:
1. 對於每一個知識點往深處挖掘,看看面試者是否是「知其然而知其因此然」,若是隻是背會了面經的題目,不瞭解本質,最終仍是會露餡的。
2. 我記得原來IBM Db2部門經理在招聘時採用過這樣的辦法: 「咱們就找一個Db2相關的問題,對Db2,面試者接觸的很少,更不用說底層的技術了。 咱們請他和咱們一塊兒討論解決方案,若是他在思路上能一直跟着咱們,不掉隊,那就說明這人技術和思惟就不錯。」
這招其實挺厲害的,可以很好地考察一我的的總體能力。
3. 現場編程,在規定的時間內完成一個小題目,這對於大多數人來講壓力很大,可是這種考察方法時間過短,只能考察一小塊能力,何況這個小題目也頗有可能在面經題庫中。
4. 給一個相對大一點的題目,讓面試者線下完成,時間能夠拉長到幾天,而後看看面試者的設計能力,代碼能力。不用太擔憂做弊, 面試者做弊的話,在覆盤的時候仍是容易被發現的。
這些都是技術層面的東西,還有一大塊難於在面經中出現的就是軟技能。好比不少公司都看重的溝通和團隊協做。
拿溝通來講,若是面試者在回答問題的時候,不能把握提問者的意圖,不可以答到「點子」上,而是在外圍打轉,甚至跑偏,那確定要失分了。
因此,理解面試官的問題,自信而準確地表達很是重要,其實面試官最終要造成一個印象:這我的到底行不行。
也許你的技術能力差點,可是從你對問題的分析和清晰的表達,讓面試官以爲是個可塑之才,招了吧。
總結一下,「道高一尺,魔高一丈」,在技術層面,面試官羣體和麪試者羣體是個互相博弈的過程,雙方的層次都在不斷提高。 有時候,軟技能反而能成爲決定性因素。