看了那麼多大廠面試題,其實考的無非是這 3 點能力

2019-12-26   指尖上的代碼

網上一些比較熱門的文章、博客往往都是「某某公司面試題匯總」、「某某公司面試題解析」,似乎程式設計師們對面試題總是抱有熱情。

小公司的面試題往往五花八門,而大廠的面試題更加具有代表性,那麼我們不妨來嘗試探討一下,大廠面試題到底考察面試者哪些方面的能力。

基礎知識

不管在哪,參加什麼面試,基礎知識都是面試官鍾愛的東西。基本功不紮實,對於一個研發人員而言,再好的能力也都是紙上談兵。

不同的崗位對基礎知識的細分也不一樣,比如對於Java工程師,你需要熟悉Java核心技術:反射、多線程、異常處理、集合類、IO流。作為一個程式設計師,你還需要掌握計算機網絡、作業系統、數據結構與算法等。

而作為一個後端工程師,你需要了解MySQL的工作原理、常用命令,了解Redis的常用數據結構、使用方式,了解Java網絡編程的基本概念,能夠解釋NIO和BIO、能夠了解JVM,了解GC等等。

基礎知識考察比較簡單,一般是面試的第一關,如果基礎知識都不能很好的回答,可能會給面試官留下負面印象。

知識深度

關於基礎知識,刷一些面試題,多看幾個總結,臨時抱佛腳可能還管點用,但是這些畢竟只是基礎,一旦涉及到深度的問題,可就不好使了。

知識深度,無非就是想知道你的「底」在哪,你對這方面究竟是了解到什麼程度。所以很多大廠面試都會追著一個點問,直到問到你不會的,面試官心裡就知道你的知識深度在哪裡了。

舉個例子來說,大家都知道JVM的GC,一般來說,常見的GC算法、垃圾回收器也都知道那麼幾個,但是要說到具體的回收過程,可能很多人的理解還是沒有到位。

我們可以這麼回答:首先對象先分配到年輕代,下次GC時,活著的對象進入老年代,實際上年輕代還分為Eden和Survivor區,Survivor區又分為From區和To區,From區和To區的對象在每次YGC時都會交換,在Survivor區存活下來的對象的年齡會+1,直到年齡達到進入老年代的閾值,此時Survivor區的對象進入老年代。

就算答案已經這麼冗長,其實還可以被拓展,被補充。面試是一個面試官考察你的機會,也是一個你展現自己能力的機會,所以,每次面試都要毫無保留,把你會的東西全部表現出來,結果往往會令人滿意。

相比於基礎知識,要提高你的知識深度更加需要時間和精力,這就不是一朝一夕的事情了,需要你不斷地去積累才行。

解決問題的能力

解決問題的能力,這個主題有點寬泛,但是卻真的是大廠最喜歡考察的東西。

一般來說,面試官都會給你拿出一道算法題,當然很可能是你沒有見過的,或者看著不一定能解答出來的,如果直接放棄,那也許就錯過了一次機會。

未必都要答出來,回答出你的大概思路,或者要往哪個方向去考慮,這都算「解題」過程,面試官也都會看在眼裡,如果大體思路是沒錯的,面試官心裡也會有自己的判斷。

除了算法題,智力題也是一種常見的面試題型,這些題目可能涉及機率論、博弈論,題目本身不會很難,你應該給出你的解題思路和思考過程,面試官一般也會引導你打開思路,這類題目也很能反映一個人解決問題的能力。

如果你能很清楚地介紹你所做的東西,並且能夠告訴面試官自己通過努力解決了項目中的一些難題,一定會讓面試官對你刮目相看,當然前提是你真的做過這些項目,克服過這些困難,簡歷造假就是搬起石頭砸自己的腳了。

總結

面試,不過是想通過一些考題在短時間內了解一個人的業務水平。所以很多時候的臨場發揮也尤為重要,因為面試官出的不一定都是你全部都會的,但是怎樣在不完全會的時候最大化的展示自己的能力,讓面試官看到潛力,就要看臨場的心態了。

要準備充分去面試,但也不用戰戰兢兢,放平心態對待,才更有可能拿到心儀的offer~