送你一份加薪跳槽不完全指南 | 極客時間

如何準備一份「工程師範兒」的簡歷?如何在面試中體現代碼能力?哪些是Face to Face 面試必考 Java 知識點?

如何準備一份「工程師範兒」的簡歷?

定製簡歷:每個崗位的具體要求都不同,因此大家不要用一個通用的簡歷去應付所有的崗位,最好是根據特定公司的特定崗位來定製簡歷,突出與目標崗位匹配的經驗和能力。大家去應聘一個開發或者測試工程師,和去應聘一個Team Leader或者技術經理的角色是完全不一樣的。比如,如果我要去應聘一個有管理性質的崗位,我就會在簡歷裏適當突出比如我曾經從0組建了一個10人的技術團隊,裏邊有多少資深Java開發工程師,多少數據庫工程師等等,這樣就會更有說服力。大家寫簡歷的第一個目標,就是讓簡歷在篩選階段生存下來。因爲往往一個崗位會收到大批簡歷,如果簡歷不能寫得很清晰,讓HR覺得很適合,很有可能在開始就被刷掉了,沒有機會去面試。

突出亮點:我見過很多簡歷都會寫自己既會Java,又會JavaScript,還會Python,一下寫十幾行。這個本身沒有錯,但最好能突出自己的核心技能,比如,“我有8年Java開發經驗,很擅長Java併發或者Java安全”。但要注意的是,我們在突出亮點的時候,也不要過分浮誇,因爲有時候當我們發現一個簡歷有太多“精通”、“深度掌握”這類詞,第一感覺是懷疑,而不是覺得這個人很牛,所以要適當的把握程度,事實是基礎。另外,項目經驗上,我建議按時間順序由近到遠排序,最好體現目標崗位的匹配度,突出自身項目的難度和價值,以及自己在項目中的作用。這樣就能進一步幫助面試官判斷候選人的能力和在團隊中的位置。

用事實和數據說話:對於工程師,定量比定性更重要,要讓面試官和HR體會到大家的經歷或亮點是可度量的事實。比如把“我非常善於快速學習”改成“我在兩個星期之內就學會了Clojure語言,做了一個撮合系統”,把“我大幅度提高了系統性能”改成“我在一個四核8G的配置上,把吞吐量從2000 QPS提高到8000 QPS,平均的請求是100K bytes等等”,會更具說服力。

公開成果很加分:比如是開源項目的貢獻者,有一個很有內容的博客,在Github上提供了很多被採納的PR,發表過哪些技術論文,在QCon或者ArchSummit上做過分享,或者寫過哪些著作等等。像這些公開可見的成果,遠比自己評價自己更有效果。

簡歷形式和篇幅:在形式上,最好參考一些優秀簡歷,借鑑它們的模版。要注意的是,中國人和外國人的習慣不一樣,如果是去應聘歐美公司,最好去Google上查英文簡歷模板,而不要把直接把中文簡歷翻譯成英文。簡歷篇幅最好控制在1~2頁,既不要顯得單薄,也不要顯得過於冗長,段落之間要條理清晰。

如何在面試中體現代碼能力?

大家在準備技術面試時,在代碼方面一定要事先做個熱身,至少讓自己對基礎知識的掌握處於一個良好的狀態。

另外,在面試編碼的時候,面試官會逐步深入,考察面試者是否對算法的理解達到了預期的深度,是否能夠很好的溝通,是否能夠理解面試官的主要目的,以及是否能夠把不清晰的東西通過探討逐漸清晰化。具體到代碼的編寫,至少要體現出良好的編碼的習慣,讓面試官覺得你是一個能夠思考全面,寫出高質量代碼的人。包括在命名和結構上,最好參考業界比較好的實踐,因爲這些小的地方,恰恰也是代碼質量的體現。

還有,很多時候面試者都需要在白板上編寫代碼。這一點,我發現很多人並不是很適應,例如Java開發者,絕大部分是用Eclipse或者IDEA這些IDE去進行開發,以至於有的面試者,甚至連 main函數的一些細節都不確定,這個是很可怕的。因此,大家要記住比如主要的API結構等等。

最後,關於刷題,我覺得仁者見仁,智者見智。我自己沒有刷過,但必須承認刷題網站是有效的,所以,我並不反對求職者去類似LeeCode這樣的刷題網站學習一下,當然,區分刷題高手是面試官的能力。

Face to Face 面試必考 Java 知識點

首先,大家要仔細閱讀招聘需求,因爲招聘需求往往就體現出了面試官對我們的期望和未來工作的主要範圍。比如,一個普通的Java後端工程師崗位,可能會寫明需要應聘者懂高併發、懂JVM基礎、熟悉Spring或者Netty這些開源框架,大家就可以有針對性的去做準備,因爲誰也不能保證自己還能清楚的記得一、兩年前做的項目用到的知識點。

關於Java面試核心知識點,大家可以參考我在極客時間推出的《Java核心技術36講》專欄,這個專欄的設計,就是針對的這方面的需求。極客時間團隊在內容和選題上充分參考了主流互聯網大廠在Java面試中的問題域,選取了其中的典型問題,一定會對大家有幫助。當然,也有讀者反饋專欄裏介紹的一些基礎知識似乎平常用不上,這確實是事實,但我把這些基礎知識列在裏面是有原因的,希望專欄不是僅僅應付面試,而是能夠有更多實際價值。同時,很多面試官,即使工作大多是做普通的數據庫增刪改查這些操作,也有可能從非常底層的角度去考察你,比如JVM底層或者是併發裏Synchronized是怎麼實現的。因此在專欄中,內容設計的目的都是爲了讓大家對Java語言的核心基礎特性可以非常的熟悉,掌握主要的知識點。比如,併發的容器和基礎的容器,最常見的ConcurrentHashMap或者HashMap,各種併發的基礎元素,Synchronized底層機制,或者ReentrantLock、線程池等等,都是Java面試中的長期熱點。還有JVM,它是一個很龐大的範圍,它分爲Runtime、GC、編譯器等模塊,包括所謂的Serviceability的一些特性,這每一個方面實際上都有可能被面試官刨根問底,雖然可能我們整個中國做JVM開發的團隊連一隻手都不到,但是不妨礙Java面試中會去考JVM,大家還是要在這些知識點上面深入瞭解。

另外,現在Java開發越來越廣泛的應用到各種開源框架,包括像微服務這種新的軟件架構形式,所以大家對主流的開源框架也要有充分的認識。比如,做普通業務開發時,Spring或Mybatis這類框架可能是業務開發的一個標配,那對Spring裏的一些機制,比如Bean的生命週期、AOP等基礎概念,就要有深入的認識。如果大家應聘的崗位是大數據,那對Hadoop、Spark這類開源框架就必須要有深入的理解。

關注熱點也非常重要,我們技術人也要時常擡頭看這個世界。比如曾經有段時間,面試就會被問哈希碰撞之類,就是因爲當時有些大廠發生了這種攻擊。再比如前兩年,非常多的人在面試中被問到類似搶購、秒殺這樣的場景等等。這兩年,微服務似乎變成了一個必考的題目,比如對用Dubbo還是用Spring Cloud,就需要有基礎性的理解,以免被問到的時候沒有準備。除了熱點,特定領域都有特定的專業知識,例如,深度學習、推薦算法等,只有準備充分才能保證大家在面試時的表現完美。

大廠面試實例分析

下面,我就以自身的經驗來介紹一下作爲面試官,我在面試中會考察哪些方面,有哪些側重點。不同的公司、不同團隊,面試風格會有區別。我們面試的目的並不是要表現面試官自己有多厲害,而是爲了找出合格的候選人。有時我在面試中會刨根問底,但絕不是爲了爲難面試者,而是想看一下對方深度到底是在哪裏,以及遇到挑戰的時候,會有什麼樣的反應。

其次,就是考察面試者是否“適合”,對於不同的崗位,“適合”的定義是很不同的。

比如JDK團隊,因爲是一個非常基礎的、底層的軟件,最在乎的是性能、質量、可靠性等,所以對底層和基礎技術的把握程度很重要。候選者可能是一個很棒的業務開發工程師,但是經驗和技能可能不適合。

爲了公平起見,我們也不會特別隨意的問候選人各種問題,當然也會即興發揮,但總體上是有固定的套路和節奏的,因爲只有用同一標準去考察不同面試者,才能保證候選人的判斷沒有太多主觀因素。

我們也會很在乎候選人過去的背景,如果跳槽過於頻繁,就會有所疑慮。同樣,我們也會看面試者在過去崗位中的表現,一個基本的判斷就是,如果一個人在前一個崗位非常優秀,那他在下一個崗位繼續優秀的可能性也會非常大。

下面,我介紹一些具體的流程。一般來說,開始的時候我不會直接問特別嚴肅的問題,會讓面試者做一下自我介紹,或者從輕鬆的話題開始,讓面試者先放鬆下來。

然後,我一般會問的一個問題是“談談你做過的最有挑戰的項目”,例如,難度很大、在這個項目中起到的作用比較大、能力表現最充分的項目。從答案裏,我就可以知道面試者是不是對自己的項目瞭解的很透徹,且面試者能不能清晰的表達出他所做的東西。在工作中,我們彼此之間交流的場景會非常多,能不能清楚的表達問題,就決定了能不能完成任務。我會側重考察面試者做事情的態度,解決問題的思路和能力,以及在遇到難點的時候採取什麼方法,這些角度都很有參考價值。

對於Java工程師崗位來說,我還會考一些算法和數據結構的基礎知識。從基礎的題目,類似鏈表之類的數據結構開始逐步深入,比如把簡單的數據結構進行組合達到一個新的功能,或者在一個常規的算法上面進一步優化,計算算法複雜度等等。通過面試者給出的思路,可以看出他是不是能夠體會到一些常見的,比如空間換時間這些變通的思路和方法。在面試過程中,我也會觀察面試者和我之間的交流是否流暢、準確、完整,也能體現出我們之間是不是可以很好的合作。因此,建議面試者即使遇到比較難的題目,也要儘量表現出積極溝通的態度。

最後,我在面試時並不會去死摳特別複雜的算法,或者特定的知識點,也不會選擇刷題網站上的那種題目,以免招聘到面試高手,真實的業務能力未必和刷題能力相關。知識點和能力可能是兩碼事,考住一個人很容易,準確判斷他的能力纔是重點。其實我們工作中解決的絕大部分問題,只要有好的基礎和好的態度,基本上就能做得到,畢竟我們不是在解決過於艱深的科學問題,也不是在做原子彈。以上這些,就是我在面試中比較看重的一些方面。

文章出自極客時間Java核心技術36講專欄

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章