前言
看過很多公司的面試題,也參與過很多公司的面試,發現大廠的面試題更加具有代表性,雖然現在很多大廠的面試官也懶得自己出題了,不過經驗老到的他們還是更清楚如何高效率地考察面試者。
而小公司的面試題往往五花八門,有的更加貼近公司自身業務,希望面試者結合業務給出解決方案,有的乾脆直接從書本上找題目,考察一些死記硬背的概念,當然,有的初創公司逼格很高,則會搞一些高難度的面試題,角度刁鑽,常常讓面試者猝不及防。
既然大公司的面試題具有共性,那麼我們也不妨來嘗試探討一下,大廠面試題到底考察面試者哪些方面的能力。
1、基礎知識
基礎知識無疑是大廠面試官最喜歡考察的東西了。如果面試者的基礎都不紮實,那麼建立於基礎知識之上的實戰能力、業務能力都是空中樓閣。
說到基礎知識,首當其衝的就是崗位要求的能力了,比如對於Java工程師,你需要熟悉Java核心技術:反射、多執行緒、異常處理、集合類、IO流。
作為一個程式設計師,你還需要掌握計算機網路、作業系統、資料結構與演算法,甚至是計算機組成原理(一般很少考察)。
這些都是最基本的,除此之外,作為一個Java Web工程師,你需要熟悉Web框架,比如SpringMVC、SpringBoot,能說出它們的工作原理,特性、優缺點等等。
而作為一個後端工程師,你需要了解MySQL的工作原理、常用命令,瞭解Redis的常用資料結構、使用方式,瞭解Java網路程式設計的基本概念,能夠解釋NIO和BIO、能夠了解JVM,瞭解GC等等。
面試官考察這些基礎知識的方式很簡單,找一些相關的面試題一一進行提問,根據你的回答,基本上就可以瞭解你對這些知識點的掌握程度了。
2、知識深度
也許上面這些問題,你通過背一些面試題,看一些面經,就能掌握得八九不離十了,畢竟面試官提的很多問題也是在網上找到的,所以你可能會放鬆警惕,覺得這樣就足夠了。
其實不然,大廠面試官還有一個愛好,就是對於每個知識點,都喜歡深入往下問,問到沒有問題可以問,或者問到你不會為止,這樣提問的目的只有一個,就是試探你對這個知識點的理解深度,如果你無法提供足夠深刻的回答,結果往往就是失敗。
舉個例子來說,大家都知道JVM的GC,一般來說,常見的GC演算法、垃圾回收器也都知道那麼幾個,但是要說到具體的回收過程,可能很多人的理解還是沒有到位。
我們可以這麼回答:首先物件先分配到年輕代,下次GC時,活著的物件進入老年代,實際上年輕代還分為Eden和Survivor區,Survivor區又分為From區和To區,From區和To區的物件在每次YGC時都會交換,在Survivor區存活下來的物件的年齡會+1,直到年齡達到進入老年代的閾值,此時Survivor區的物件進入老年代。
就算答案已經這麼冗長,其實還可以被擴充,被補充。面試是一個面試官考察你的機會,也是一個你展現自己能力的機會,所以,每次面試都要毫無保留,把你會的東西全部表現出來,結果往往會令人滿意。
相比於基礎知識,要提高你的知識深度更加需要時間和精力,這就不是一朝一夕的事情了,需要你不斷地去積累,這方面的內容讀者朋友也可以參考我之前的文章。
我也收藏了一些BAJT的面試文件:https://shimo.im/docs/VqQR6tPrpR3C3tjq/
3、解決問題的能力
解決問題的能力,這個主題有點寬泛,但是卻真的是大廠最喜歡考察的東西。
比如面試官拿出一道你沒見過的演算法題,往往是很容易讓你產生畏難情緒的,如果你放棄思考直接回答不會,那你就輸了。
題目可能很難,但是面試官想看到的是你思考的過程,以及解決問題的能力,如果你可以介紹自己的思路,給出一些解決方案,就算題目真的不會寫,可能也會給面試官比較正面的影響。
當然,如果你有很多題都不會,那可能你解決問題的能力也就這樣了。
除了演算法題,智力題也是一種常見的面試題型,這些題目可能涉及概率論、博弈論,題目本身不會很難,你應該給出你的解題思路和思考過程,面試官一般也會引導你開啟思路,這類題目也很能反映一個人解決問題的能力。
如果你有專案經歷或者實習經歷,那麼面試官往往會問你在專案中負責什麼,遇到了哪些困難,又是如何解決的,其實也是為了考察你解決問題的能力。
如果你能很清楚地介紹你所做的東西,並且能夠告訴面試官自己通過努力解決了專案中的一些難題,一定會讓面試官對你刮目相看,當然,前提是你真的做過這些專案,克服過這些困難,簡歷造假就是搬起石頭砸自己的腳。
總結:
說了這麼多,其實大廠面試官只不過想要了解面試者的可塑造性,面試題、演算法題、壓力面試等,都只是一種手段。因為大廠需要的有可持續發展能力的人才,能夠為公司和部門長期發展提供更多的可能性。不需要救火隊長,也不需要混子。