怎樣回答技術面試題?
點選上方“程式設計師小灰”,選擇“置頂公眾號”
有趣有內涵的文章第一時間送達!
本文轉載自公眾號 Tomcat那些事兒
三、四月份,春回大地,萬物復甦(請自帶趙忠祥老師的BGM),又到了不少同學的跳槽時節。
最近一段時間團隊也在招人,這期間篩選了不少簡歷,面試了一些候選人。這裡談談我自己的對「怎樣回答面試題」的理解。
歡迎各位各位老司機,新司機一起留言交流,我們一起探討下,無論做為「面試官」,或者是「求職者」,怎樣回答面試題,能更好的去解答問題,達成自己求職的目標。
一、聽清題,勿搶答
面試,首先也是一個人與人交流溝通的過程。有些時候,面試官還沒說完問題,面試者就會打斷說「這個問題我知道...」。打斷不利於溝通,同時,這樣其實導致面試題沒聽清。比如面試題是「如何理解Java 的 JMM,...」後面還沒說的時候,面試者打斷說「你說的這個我會。。。,包括方法區,堆,棧 balabala」這就答的都跑偏了。
二、從全域性、到具體
如果問題是「 Spring 是什麼,怎樣理解的」。很多人就會直接回答「Ioc 和 Aop嘛」這樣說不能算錯,但我個人認為從一個更巨集觀的方式先入手,再具體介紹對於 Spring 你深入瞭解的一個或者多個方面,這樣感覺更好一些。
發展到今天,Spring 並不僅僅只有Ioc 和Aop,而是一個包含一系列功能的XX,像快速開發的Spring Boot, 像微服務支援的 Spring Cloud, 像支援認證和鑑權的 Spring Security, 支援各種抽象的Spring data 提供的 xxxTemplate,Testing, 以及現在使用眾多的 Spring MVC。當然 Denpendency Injection 和 AOP 依然是核心。
再比如回答如何理解Java的垃圾回收機制,比起直接回答 「將無用的物件清除出記憶體」這類概括,如果描述垃圾回收,什麼時候會發生垃圾回收,具體的回收方式,瞭解哪些回收演算法。出現OOM時如何調整,以及 JVM 的記憶體劃分等,我感覺效果會好很多。
三、不要驕傲自負,也不妄自菲薄
面試官在提問之後,有的候選人問題還沒聽完,一是搶答,二是不屑。心想為啥問這麼簡單的問題。其實面試大家都理解為一個不斷溝通,發現面試者長項的「交流」。比如有的面試者一聽「請寫一個單例模式」時,會略有不爽,彷彿才華被埋沒了,卻在「雙重鎖檢查」時,大意失手,忽略了CPU 指令重排序的影響。
還有的面試者,在面試官剛說出「接下來我們寫一個演算法題...」還沒說完時,會丟擲選項,「要不我寫個快排,二分查詢?balabala」,如果你是面試官,你會怎麼做?
也有一些面試者,在被問到簡歷中所寫專案時,「眼神黯淡」,說道「我們沒做什麼有技術含量的,和你們沒法比」,又或者在面試官說到專案中的某個實現時,會說「你們也用了啊」,然後有的不敢向下說,彷彿簡歷包裝過度,也有的則是感覺有更多的共同話題,開始探討實現,選型等等。所以大膽展現自己,至少有一次機會。
四、簡歷切勿太誇張,更不要全是產品描述
看過不少簡歷,有些整個簡歷裡的專案,全是業務和產品介紹,通篇沒提到幾個技術點,不講實現,不寫用了什麼技術,全是大段的文字描述。做為一個技術面試,沒有什麼技術性。
也有不少,簡歷裡寫著精通XX技術與YY框架,是ZZ專家。其實實際交流時,真的是隻限使用,都沒配置過。
一個「熟悉」的大部分時候會大於一個「精通」的水平。
五、廣度與深度
一般的面試,都會根據面試者的實際工作經驗時長,對應到該有的廣度與深度。但廣與深兩者間,我認為先深入一個領域,一個概念,再拓展開來,這樣效果更好。
而且面試過程中,如果每問到一個話題,都是平常,或者是簡單瞭解過,會給人一種淺嘗輒止的感覺。如果某個方面深入,在回答相應的問題時得心應手,甚至可以回答「你最擅長什麼?」時,可以更有底氣。比如聊 Java 的併發 。除了能描述 sync 之外,先按從全域性到具體,可以描述「記憶體模型」,以及Happens Before, Lock 與 sync 的區別。Lock 與 sync 分別對應的實現,以及JVM 的 monitor 指令, AQS ...
去年電話面試一個實習生,對於開發框架還在自學階段,問到一些未學習到的部分,會實話說「目前還沒學到」,甚至精確到說XX技術「今天就要學了」,有計劃,有學習能力。但其描述的這種學習方法,態度 以及對已經學習部分的掌握程度與理解,對應表現出來的水平,都讓人印象深刻。後來到公司實習時並沒使用框架,而是根據需求使用了新技術,果然也沒讓人失望。
六、積極主動
這個我自己理解是在回答問題時,可以將自己擅長的展示出來。比如簡歷裡有寫到「專案使用過 RPC」,那在回答專案中如何使用RPC的時候,可以描述一些 RPC框架的設計實現思路,例如「我大致瞭解過 Dubbo 是這樣設計的」,和 「Thrift 有這些區別」,當然,這個時候面試官可能會問,有了解過 grpc麼? 你會怎麼辦?
此外,在講述專案使用技術時,可以順便將自己為什麼這樣做,為了什麼選擇使用這個技術,這樣簡歷之外的豐富資訊,才會讓面試官更立體的瞭解,從而為「交流」開啟局面。
七、有證明更佳
如果能在簡歷裡附上一個長期活躍的開源專案,不斷輸出的Blog 等等,也是一個讓人更全面瞭解你程式碼風格,展現設計、思想的方式,學習方式的「平臺」。
不多說了,工頭喊我去搬磚了, ; )
有關面試的更多問題,歡迎加入小灰的知識星球 程式設計師內推圈,一起交流探討!