1. 程式人生 > >給扔物線 HenCoder Plus 學員的一次分享文字版

給扔物線 HenCoder Plus 學員的一次分享文字版

半個月前,和我的終極技術目標扔物線朱凱一拍即合,到了他所開展的 HenCoder Plus 課程給大家分享了 1 個多小時的「模擬面試」心得,也順便聽了幾次凱哥的課程,感覺真的挺用心的。自己也希望能一直不忘初心,在技術領域像凱哥一樣,認真並且鍥而不捨。準備了許久,主要是為了做這一次分享。

自己下來其實看了好幾遍自己的錄屏,覺得還是有必要做一篇文字版的分享給大家,還要有一位童鞋能夠從中得到收穫,那也是不枉費我手打了接近 3 萬字的分享。很多思想都受著去年 Android 巴士成都交流會另外一位講師 Even 的影響,所以說,你的圈子,真的會潛移默化地影響你。

下面是正文:

我先自我介紹一下,我叫劉世麟,在網上呢,我的名字是南塵或者說,是南塵2251。

在找工作之前,我們總會經歷寫簡歷,準備面試知識,再到面試的過程。但我們總會發現,即使我們準備許久,感覺自我良好。但在面試的時候,卻總感覺使出渾身解數也無濟於事。實際上,我們的面試是需要實戰的,我們刷再多的題,不實戰也是無濟於事。然而,我們通常面試一次,算上花在路上的時間,我們至少得要好幾個小時。最重要的是,這個時間還基本都是花在了工作日上。

此外,我們即使花上幾個小時,面完之後卻會發現,我們能得到的有價值的東西卻需要深挖細掘才能形成精華。我們很難得到面試官對自己真正的反饋,大多數情況下被拒絕的時候面試官給的原因都極其委婉。

為了解決這樣尷尬的窘境,我在去年11月在公眾號上推出了「模擬面試」這項活動。用工作之餘的時間幫助那些真正渴望希望面試卻又不希望浪費工作時間的讀者。

在為期 4 個多月的活動中,我面試了 118 位讀者,其中包括小米、矽谷、美團的一些在職員工。在活動中,我與他們共同成長,一起進步,從自我介紹,到面試過程,再到面試反饋。讀者從我這裡得到了有價值的評價,我從讀者那裡得到了非常有價值的資料反饋。

我只是抱著一種嘗試的態度,希望小範圍進行,但沒想到有這種情況的讀者極多,我採取的排隊機制已經完全不能讓讀者得到及時反饋了,加上我自己的時間分配問題,我很快就停止了這項活動。

雖然做的時間不長,但卻非常有意義,所以,今天,我和凱哥一拍即合,來到了這裡,給大家做一下分享。我並不是什麼麵霸,也不是什麼大佬,僅僅是凱哥的迷弟而已。

週三呢,我跟著大家一起聽了課,我發現聽課的同學不少我認識的哈,還有在我這裡進行過模擬面試的人,不得不說呀,做 Android 的人很多,但圈子裡面上進的人,轉來轉去還是這些人。

下面,我給大家簡單地分享一下我做這個活動後的一些心得。在分享之前呢,我想先送大家一句話:你能否通過面試往往不是靠技術,但你能否拿高工資絕對是靠技術。我們的求職面試,決定因素確實不是隻靠技術,你的簡歷、面試表現,通通都會影響著你的評級。

幾個月的「模擬面試」下來,我發現大家的問題五花八門,總結下來就是這四個問題:

  • 不知道怎麼寫簡歷
  • 不知道怎麼做自我介紹
  • 不清楚自己的定位(優勢)
  • 不知道怎麼準備面試

我先說一下簡歷呀。雖然我只面了 118 位讀者,但收到的簡歷卻遠不止這點,對於明顯抱著來嘗試浪費其他人時間的,我從來都是直接打回去的。但我面試的人中,簡歷寫的足夠讓我滿意的人,也是鳳毛麟角。大多數人的簡歷都是寫的非常的亂,連基本的排版整潔都談不上。

簡歷的本質

我經常會收到來自讀者的同一個問題,「南塵呀,你能不能給我一個好的簡歷的模板?」

這個問題讓我十分為難,如果我說「其實不存在好與不好的模板,主要看氣質」。你可能會很失望,覺得我可能在浪費你的時間。如果我說有,並且挑了一份我認為還不錯的模板給你,可能你也會很失望,會懷疑,好的簡歷模板是這個樣子的嗎?

這就好比凱哥在上海開發者大會上講的一樣,「圖片上傳怎麼做,你伺服器怎麼給你要求的你就怎麼上傳呀」。

實際上我們並沒有逗你,要得到一個「好」的簡歷模板,其實並不困難,而且根本就不需要向別人要。你只需要問一下自己,什麼是「好」,並把「好」這個很縹緲的詞量化出來,你的簡歷就是好簡歷。

不過,在你量化「好」這個詞之前,我們需要先解決一個問題:「簡歷的本質是什麼?」

可能每個人的理解並不一定相同,不過這並不是很重要。如果你有不同於我的思考,那也不代表你和我之間有一個人是錯的,我們暫時可以這麼認為:絢麗或者簡約的模板其實都不是簡歷的本質。

簡歷的本質只有一個:向別人說明清楚你是誰,你擅長做什麼。

你可能會發現,其實這兩個問題都是同一個問題:你的定位是怎樣的?

  • 問題 1:「你是誰」?

    可能你覺得自己很清楚了,你是張三,你是李四。但如果讓你用三個詞,可以是名動、形容詞、動詞或者成語都可以,只用三個詞來概括一下「你是誰」,你能做到嗎?這就是你對自己的定位。

  • 問題 2:「你擅長做什麼?」

    如果我能說「什麼都不擅長就是最好的擅長」,可能大家都會拍手稱快吧。正如問很多人你的興趣是什麼一樣,有很多人都表示沒有什麼興趣。然而,你真的沒有擅長的事情嗎?可能只是因為你沒有發現而已。這是你對自己能力的定位。

如何對自己進行更好的定位

如果你真正把問題定位好了,其實解決問題並不難。然而,難就難在對自己進行定位往往很難做到精準,正如蘇軾的名句:「不識廬山真面目,只緣身在此山中」。

即然是定位,那麼,我們用生活中的一個例子來說明吧。你的手機上的 GPS 定位是怎麼做到「精準」定位的?

不是靠手機自身就行的吧,它需要通過在天上的至少 4 顆衛星才能精確定位自己的空間位置。也就是一個簡單的道理:

你要定位自己,是需要別人來做參照物的。

那麼如果你是應屆畢業生,你需要在簡歷中和你的參照物(基本上是和你同一屆畢業的人)做個對比較。如果你已工作多年,那麼和同樣工作幾年的人或者應屆畢業生,你也需要和他們做一個比較。

其實,你也可以從另一個角度理解,要定位自己,也可以參考一下別人眼中的自己是怎麼樣的,別人往往更能發現你的優點和缺點,而且一般比你自己評估的要準確。

此外,你還可以用事物來做參照。比如為了表達你擅長 Android 視訊直播技術,很多人喜歡直接在簡歷上加上一個「自我評價」,然後寫上「我擅長 Android 視訊直播技術」,你覺得是個什麼效果呢?像不像一個人說他很幽默,但別人和他聊天從來沒笑過?

比較好的表達一個人幽默的方法應該是直接說段子,那麼表達一個人擅長某個技術的方法呢?「段子」留給大家自己去寫吧。

簡歷的加分項和減分項

在面試後和他們分享,我才知道,他們其實並不是說沒有認真去做,而是確實不知道簡歷上到底應該放哪些東西,或者說編寫的順序是怎樣的,大多數人都是直接使用比如拉勾網呀、BOSS 直聘呀,這些招聘網站的模板來編寫的。這就會導致,我們的簡歷上出現了一大堆沒有任何價值,別人也不關心的東西。所以,我在這裡再次申明呀:千萬不要去用招聘網站的模板來做你的簡歷。

有哪些好一點的簡歷加分項呢?

  • 黃金兩頁原則:最好簡歷控制在 A4 兩頁;
  • PDF 原則:簡歷最好為 PDF,這樣可以解決不同系統上開啟格式混亂或者亂碼的問題;
  • 在最頂部寫清楚個人資訊:比如姓名,電話,年齡,畢業院校/專業,Blog 和 GitHub 比較有內容的也可以直接放在最前面。最好一行兩個資訊,不要一行只寫一個資訊,導致右半部全部空白浪費。

不知道怎麼寫專案經歷

從簡歷上來看,大家還有一個常見的問題是,對於專案經歷,寫的非常粗糙,大多數人都是寫的:「我用了什麼第三方庫,實現了什麼功能。」「我在專案中,使用什麼技術,做了什麼什麼。」甚至是,一個專案下來,三句話就被完全介紹完了。對於這點,我還專門諮詢了我們的 HR,他們對於這種技術簡歷,會怎麼處理。我得到的回答是:「除非是非常厲害的公司或者專案,不然都會直接 Pass 的。」

那到底怎麼寫專案經歷呢?在網上,盛傳著一種法則:STAR (Situation Task Action Result)法則。

  • S(情景):這可以是讓你參與這個專案,或者是解決問題的背景;
  • T(任務):只需要在簡歷上寫清楚自己的職責;
  • A(策略):如何實現,是否遇到困難,如何解決的。
  • R(結果):取得的成果,作為程式設計師,一定用數字說話。

前面說了,在編寫專案經歷上,大多數人寫的真的非常粗糙,基本都是使用了什麼技術,什麼庫。甚至有人僅僅只是用過,也寫了一個「精通」,實際上這是非常不好的,即使拿到了面試資格,也很容易在面試中翻車。因為大多數面試官面試的策略都分兩步:

  • 就你簡歷上提及的點問問題,瞭解你對簡歷上技術的掌握程度;
  • 就公司處理好的或者還沒有處理的難題,問問你的想法。

所以,簡歷上出現的內容,一定要是自己能答上的,僅僅是使用過的東西,不要寫在最前面。

到底寫不寫自我評價?

還有一個比較受爭議的問題,就是到底寫不寫自我評價。可能是受招聘網站模板簡歷的影響,我發現 80% 的面試者都寫了這一欄。其實無可厚非,但大多數人直接放在第二個位置,我很好奇這樣做的緣由。最重要的是,深入一看,內容居然都是一些亂七八糟,面試官並不關心的內容。

先給大家擷取一個反面教材:

  • 為人友善,誠實謙虛,勤奮,能吃苦耐勞,有耐心;
  • 有團隊意識,能和同事和諧相處,虛心接受別人的建議;
  • 責任心強,善於溝通,具有良好的團隊合作精神;
  • 專業紮實,具有較強的鑽研精神和學習能力;
  • 性格比較樂觀外向,喜歡打籃球和羽毛球。

當我看到這個自我評價的時候,就覺得比較冠冕堂皇,可能面試者確實就是這麼好的人,但是,從何取證呢?所以建議大家不要在簡歷中寫一堆廢話,簡歷就是求職的敲門磚,不要把沒有價值的東西放在上面。

正確的關注點應該是:

  • 定位:主攻 Android,不依賴別人,希望全棧;
  • 態度:高效完成=>追求完美=>互相提升;
  • 困難:Google && Stack Over Flow,閱讀文件原始碼;
  • 視野:GitHub? 掘金? 簡書? CSDN?
  • 優劣勢:熱愛技術,心態溝通。非科班劣勢(演算法)

上面並不是模板,只是著重的一些點。好的自我評價應該寫清楚自己的定位和方向,以及平時自己的一些生活和習慣。非科班出身的通常會被打上演算法不夠出眾的標籤,但我們完全可以從其他方面表現自己的優勢。

簡歷總結

總的來說,簡歷就是求職的敲門磚。

  • 它不需要精美的外表,但求整潔和規範,使用 PDF,控制在兩頁左右;
  • 它不求你樣樣精通,但求你對上面的內容胸有成竹;
  • 只寫有價值的內容,不寫無意義東西。
  • 對於不一樣的公司,簡歷儘量不要只寫一個。
  • 經歷一定要寫出亮點,如果你沒有亮點,那現在就行動起來去創造一兩個亮點,讓自己一兩年後不再重複這樣的煩惱。

面試

說完了簡歷,我們再來談談面試。無數次面試讓我深刻的明白一個道理:**作為程式設計師,我們的能力都是建立在技術基礎上的,技術不達標,其他的能力會顯得很縹緲。**但決定我們是否通過面試,除了我們得有足夠的技術能力以外,還得有不錯的表達和溝通能力。

我進行了 118 次模擬面試,卻發現了一個非常尷尬的結論,那就是:沒有人會做自我介紹。

基本總結下來大家的自我介紹是這樣的:

  • 簡單介紹下自己的個人基本資訊,就已經不知所措;
  • 說兩三句就終止;
  • 把簡歷上的內容背誦一遍;

重點我「模擬面試」的方式僅僅是通過微信語音,還沒有現場的氛圍壓抑感,我難以想象要是在現場面試他們會發揮成怎樣。我一度以為他們是表達能力不行,或者說是怯場緊張,所以我一直在調整面試氣氛。但到講技術的時候,我發現他們的問題並不是出在表達能力。

如何自我介紹

必須要說一下自我介紹啊。任何的面試,都會有自我介紹這個環節,這是大家給面試官的第一印象,真的非常重要。一個好的自我介紹,能改善面試氣氛,讓自己接下來發揮更好,面試官也面試得更爽。

那我們自我介紹應該說什麼呢?我建議大家說自己的亮點閃光點,這些東西最好是簡歷上亮點的詳細介紹,時間控制在一分鐘左右,再重複一遍:不要背簡歷!!!

我先給大家來個範例哈,注意一下,這是沒有什麼技術閃光點的自我介紹。

面試官您好,我是劉世麟,非常榮幸能參加貴公司的面試,下面我簡單介紹一下我的個人情況:我從實習到現在一直在 XX 公司工作,從事 Android 開發,憑藉良好的工作能力和溝通能力,連續兩年蟬聯「優秀員工」稱號,在今年初被公司內聘為技術總監助理,協助技術總監開展部門管理和專案推動工作。在工作之外,我喜歡編寫技術部落格和在 GitHub 上貢獻開原始碼,目前在 GitHub 上總共擁有 7k 左右的 Star,數篇技術部落格也有數十萬閱讀。我非常地熱愛移動開發,早已久仰貴團隊對技術的看重,所以希望今天自己面試有好的表現,未來能有幸與您共事。

很簡單的一個自我介紹,這些內容在簡歷上都很少提及,其中,我抓住要點,強調了我自己的工作能力和溝通能力。蟬聯優秀員工,被內聘為技術總監助理,都說明了自己在工作中的優異表現。在技術部落格和 GitHub 上的表現,說面了我的軟實力比較強,非常地熱愛學習, 通過數字性的展示,讓面試官有了一個比較直觀的良好感受。

大家在面試之前都可以在筆記本上面寫下來,然後自己對著牆壁,模擬介紹幾次,這樣下來你在面試中進行自我介紹的時候往往就能夠得心應手。

技術面試

在自我介紹之後,一般都會開始進行技術面試,基本上你的技術等級都會在技術面試環節敲定。那面試官如何在短時間內判斷你的技術等級呢?

這裡先借用凱哥之前在知乎上的一個回答,我覺得非常有意思。

從這裡,我想大家已經可以得到結論啦。通常面試官在開始面試的時候,都會針對你的簡歷對你進行大概的判斷。因為每個人的經歷不同,擅長的方向也是千差萬別,所以都不會緊抓自己擅長的方向問,而會選擇對你簡歷上提及的內容進行挖掘。

比如你說你擅長使用 RecyclerView,那你知道如何處理 RecyclerView 的巢狀滾動麼?那你知道如何處理 ViewPager 和 RecyclerView 巢狀的時候出現的焦點問題麼?假設檢查 RecyclerView 各種設定沒問題後,資料卻展示不出來,你能猜想哪些原因麼?假設只能用一個 RecyclerView,不用分 Type,讓你實現一個複雜佈局,你能想到一些方法或思路麼?

我們經常會在面試前刷很多的面試題,準備很久,但我們真正到面試的時候,卻總是被面試官虐的體無完膚。這說明了一個問題,我們平時準備的東西,平時如果沒有深入理解的,是很難在面試中正常發揮的,所以,這還需要一個沉澱的過程。所以大家參加 HenCoder Plus 跟著凱哥搞清楚細節,是非常有價值的。

一些的情況說明一個結論:細節 => 技術

但我想說,應該是 細節 + 深度 => 技術。

前面我們有說到,在簡歷上我們可以使用 STAR 法則編寫我們的履歷。實際上,我們在編寫簡歷的時候,就已經可以思考自己面試中可能被問到的問題啦。呈現在簡歷上的是遵循 STAR 法則的精簡版內容,實際上面試中,我們給到的應該是詳細版。不過我認為在面試中應該是 START 法則,我在後面加了一個 T,這個 T 是什麼呢?Thinking。

不會總結的程式設計師不是好程式設計師,大家知道,我在工作之餘寫了不少 Blog,實際上就是一個總結的過程,我認為這樣的方式,讓我成長非常迅速。實際上,我們在面試中完全可以展現自己的總結能力,讓面試官看到自己的亮點。

我們來看看面試中,我們如何利用好 START 法則。

  • S(Situation):在簡歷上我們呈現的是專案的背景,但在面試中,我們還應該就專案的細節進行更加詳細的講解。
  • T(Task):我們在簡歷上主要是編寫自己在該專案中承擔的職責,但在面試中,除了說明自己的職責,建議帶上團隊的整體任務,展現出無論何時,你都很在乎你的團隊。
  • A(Action):在簡歷上我們展現的是應對問題採取的策略和具體方法,在面試中,除了進行詳細說明以外,還應該說清楚自己和團隊成員的分工,一定需要記住的是:不能否認團隊的價值。
  • R(Result):產生的結果,這一點在面試中和簡歷上可以基本保持一致。
  • T(Thinking):這一個詞是我自己新增的,我覺得一個好的介紹還應該舉一反三,總結這個事情哪裡做的好,哪裡做的不好,接下來如何去避免這個問題,以及可以複用在哪些場景。

簡歷之外的技術面試

除了上面提及的,面試官會對簡歷上進行深挖細掘以外,通常面試官還會問一些其他的。比如對於中級和初級工程師,一般會問一些 Java 基礎和 Android 基礎,比如什麼 HashMap 的內部結構,Hash 碰撞處理方式呀,還有 JVM 類載入過程呀,垃圾回收演算法呀,啟動模式呀,Handler 原理呀,Android 的事件分發機制呀,Activity 的生命週期呀等等。這些問題好像網上都已經司空見慣,很多人都選擇了直接去背誦面試題答案。

我是非常不贊同背誦答案這種做法的,人的記憶本來就是有限的,你的腦袋就只能裝這麼多,況且網上的部落格基本出處都差不多,很多部落格並沒有深入到細節裡面。現在的面試官也越來越聰明,知道如何辨別面試者是真會還是假會。

比如上面的 Activity 生命週期,可能網上都會寫,額是,onCreate() => onStart() => onResume() => onPause() => onStop() => onDestory()。但實際上,背的了這個流程,不一定能靈活應用起來。比如面試官問到,鎖屏會依次呼叫哪些生命週期,面試者不一定知道。有些 Blog 可能寫的比較仔細,會給大家列上一個表,展示這些可能的問題,比如 鎖屏是 onPause() => onStop(),Activity 從不可見到可見的呼叫方法是 onStart(),onStop() 是完全不可見的時候呼叫,所以自然而然調起 Dialog 的時候走的生命週期是 onPause() 而不是 onStop()。甚至有的 Blog 直接教大家背誦。完整生存期是 onCreate() 一直走到 onDestroy(),可見生存期是 onStart() 到 onStop(),前臺生存期是 onPause() 到 onPause()。

可能這樣的問題早已經被大家司空見慣,但實際上,面試官早就不會這樣直接問了。基本採用的方式是給你一個場景,看你能否正確的處理,比如 Activity A啟動 Activity B 後,A 真的一定會呼叫 onStop() 麼?畢竟我們平時做需求,也是用自己已有的知識組織起來解決需求的。

如何準備面試

說了這麼多面試技巧,那我們還得有個非常重要的過程:準備面試,大多數人會選擇去看各種面經,刷各種面試題。雖然這樣確實會有一定的作用,但我認為是低效的。首先,大多數的面經,都沒有一個深入講解的答案。第二,刷的題,大多數和求職公司的面試不匹配。目前看來,只有刷演算法題在應對演算法類面試的時候成功率較高,基本應用類面試,作用都微乎其微。

這就讓我們必須談到了另外一個話題:如何準備面試?

經過我多次試驗發現,技術面試的面試官問的知識,80% 會來自於你的簡歷,所以你至少提前除了準備自我介紹,還應該認真針對簡歷上的每個技術點,思考一下可能出現的面試題,並想一想如何去應對它。

除了一些特別基礎的機制原理問題,比如 Activity 的生命週期呀、Handler 機制等,其他問題都是允許面試者答錯的。其實面試官並不會奢望你能夠完整無缺地答好每一個知識點,有時候判斷一個面試者是否適合面試官所在公司提供的開發崗位,往往看的是面試者在回答問題中體現出來的「編碼之外的能力」。所以,不要想著背誦面試題和知識點,那樣無疑是低效的,並且這樣得來的知識,你以後也基本不可能用到。

此外,針對不一樣的工作崗位,準備的面試內容也不應該一樣。相較於中小型企業,大廠會問的知識面更廣,比如會問不少的演算法和計算機網路等基礎知識,而一般的中小型企業卻對這塊不那麼看重,他們更期望的是能迅速上手的人。也就是說,他們需求的並不是一個技術多麼厲害的人,而是一個合適的人。對於初級和中級工程師,面試官會更看重基礎知識,對於高階甚至資深工程師,會對多執行緒程式設計,自定義View,架構能力,產品觀有更高的要求。

其實「二八原則」在好多地方都發揮著作用,在 Android 開發中,我認為也是一樣的。作為一個 Android 開發,你也許只會用到 Android 開發知識的 20%,另外的 80% 你其實學了也不一定會用。

而面試官其實也一樣,他有可能也只掌握了 20% 的知識,而且一個面試也不會有足夠多的時間給你展示你全部的知識,而往往只會注意開發中最常遇到的 20%。但大體上來說,這 20% 比較重要的知識點,一般都是大家需要重視和答對的。我之前在公眾號上寫了一個面試專題,現在在公眾號底部也還有一個導航。雖然後面夭折了,但寫的內容基本都是每一位 Android 開發都需要重視和答對的。

俗話說「英雄不問出處」,前提很明顯了你得是「英雄」。如果別人不知道你是「英雄」,那麼勢必會通過你的學歷、公司和專案經驗來判斷你是否合適。畢業的學校和任職過的公司,包括你跳槽的頻繁度等都會對你的評分有一定的影響。

但其實最重要做判斷的根據還是你的專案經驗。所以對於你從事過的專案及你在這些專案中的職責和作用,你應該有一個清晰的描敘。

對於專案經驗豐富但是專案的型別單一的人,如專案中清一色的「資訊」類應用,那麼你應該表現你具備獨立開發和處理各方面問題的能力,而且最好在平時你就要有意識的避免進入到這種境地當中。對於「一個經驗用十年」的人,面試官其實也很難分辨出他在其他的方面是否也能做得一樣好,如果你不能在公司層面避免陷入到這種情況,那麼你還是應該嘗試同一個專案中的不同方面,或者自己做一些和當前公司不相關的專案、開源庫等。

但其實有很多人的問題在於,專案經驗並不豐富,而且有些人工作了很多年,但有可能其中的幾年都在維護一個專案,簡歷上往往用一句話就把這幾年的事情說完了。但我認為,並不是我們在這幾年中沒有做什麼有價值的事,而是我們沒有把這些事情記錄和總結,並做一個深入的思考和擴充套件。想想吧,總會有的,把事情想到了還要對這個主題做一下擴充套件,你總結出來的東西才更有深意。

對於面試者來說,往往覺得面試就是回答對面試官的問題,但從面試官的角度來看,面試其實就是要做一件事情:「如何區分面試者」。簡單的說,就是把你和麵試官面過的(或即將面試的)的人區分開來,並給你打上幾個籤標,簡單點可以是「不錯」、「合適」、「猶豫」、「肯定不行」。複雜點的,可能會把你的某些能力列出來,比如學習能力強、協作能力差,然後再和其他人放在一起綜合考慮。每個專案都有不同的特點,所以每次的側重能力考察也會不一樣。

所以,有時候你通過了一家公司的面試,也不需要太得意了,可能並不是你有多厲害,僅僅只是你正好是這個時間段裡價效比較高的那個。當然,如果你被淘汰了,也不需要妄自菲薄,也許只是因為在這個時間段有個比你更高性價比的人也來這家公司面試了。

如何準備與 HR 的面試

HR 通常會問你一些離職原因和職業規劃,對於離職原因的闡述,我想大家應該都很清楚了,不要否認老東家的價值,不要否認老東家的價值,可以結合現在面試公司來說出自己的展望。比如我之前面試美團的時候,我是這樣回答的,因為美團是一個非常重視移動端業務的網際網路平臺,而我之前公司由於公司戰略的變化,現在業務像提供服務轉型而弱化了移動端,作為一個深愛著移動網際網路的人,我渴望加入美團這樣的團隊。

而除了說離職原因,我們還極可能遇到的諸如「說說你的優缺點」、「你最擅長什麼」、「你在專案提供的最有價值的作用是什麼」等等這類問題。這類問題在我前不久的面試中,其實技術面都會提到。其實,反過來看就很簡單了,這些問題歸根到底就是「你和別人的區別在哪裡」。面試官的任務是要把你和別人做區別,你自己也需要把自己和別人做區別,回答「不知道、好像沒什麼這樣的話,其本上會給減分。

我遇到過最難的「吹牛」面試題就是:

說說你和其他程式設計師相比你更出色的地方,為什麼我們要錄用你?

這是我遇到過的最難的面試題,哲學家蘇格拉底說過:「人最難的就是認識自己」。這句話一點都不假,我們可能經常會慣性地覺得自己比其他程式設計師厲害,但真要說厲害在哪裡,這真難說出來。每個人都有和別人不一樣的地方,在面試前一定要想想一些正面的積極的地方,然後自己總結一下,最好給你周圍的同事、朋友說一下,看他們是否認同你的看法。最後你會發現給別人說事情時,最好的方式是說一些案例故事,雖然你要說的可能只是一個簡單的點(比如你抗壓能力強),但你也可以用講故事的方式講出來(在某次事件中你在怎樣的壓力下完成工作的)。

如何準備和 BOSS 的面試

在我進行模擬面試中,我清晰地記得我有一位讀者,在一天晚上 11 點過,慌亂地找到我,希望我能給他做一下模擬面試,因為第二天他就要和自己心儀已久公司的 CEO 進行終面。這位小夥伴已經經過了三輪技術面和 HR 面了,而且是自己非常渴望加入的公司,所以也是慌得不行。我強忍睡意,和他進行了模擬面試,額,嚴格意義上說,這隻能算一次交流。

我簡單瞭解了下他的情況,他的音視訊開發經驗非常豐富,而自己渴望加入的公司也是微視訊領域的。所以我認為他沒什麼好擔心的,經過了整整 3 輪的技術面試,說明他的技術實力已經得到了公司的認可,BOSS 面最多隻是隨便聊聊,談談「人生和理想」。

大家切不可小看這個「隨便聊聊」,這個「聊聊」可以很容易看出你的思維能力和對事物的看法,而且這些方面是你短期很難改變的特質。

他應聘的職位只是高階開發工程師,並不是管理和技術負責人的角色,對方並不會太在意他的管理能力和領導能力,所以後面的面試大可輕鬆應對,但還是要簡單準備一下,瞭解下公司情況,態度上不卑不亢。

如何和 HR 談薪資

中國人都很喜歡打聽別人的收入,收入對於我們這個社會傳統來說並不算隱私,但是對本公司或者同行業的人我一般都會選擇隱瞞。HR 或者公司的制度都會明文規定不許在公司內打聽員工的工資和獎金,為什麼呢?大家心知肚明,別人比自己低了,別人難過;別人比咱高了,自己得難過吧。人都會認為自己的能力高於平均水平,對公司的貢獻肯定比身邊的某某多,但一但得知對方的工資比自己高,那就容易打破自己的心理平衡。

身體不平衡容易生病,心理不平衡容易出事。

所以薪資這個東西一直以來都是一個敏感話題。在講這個之前,我想先提醒大家,選擇工作的時候一定不要只看薪資福利,而應該看重更加長遠的價值。

前段時間,我也經歷了找工作,一共面了 4 個公司吧, 拿到了 3 個 offer,但我最後就選擇了薪資最低的公司,儘管薪資第一的公司一年可以多不少收入。直到現在,我一點都不後悔。因為我看中的是同事們的學習能力和提升,現在的公司每隔一週都會又一次技術分享,分享的內容,經常都讓我瞠目結舌。

好像扯遠啦,我們終究還是繞不開和 HR 談薪資的過程,我們總是期望著在加入自己心儀公司的前提下,還可以搖到儘可能高的薪資。下面結合我的經驗給大家幾點建議:

  • 增加自己的籌碼

    也就是你在技術面試和管理者的面試過程中表現較好,這時候你可以獲得較高的評級,這時候 HR 給到你的幅度也會大一些。所以在面試前應該進行充分的準備,如果你是別人猶豫的物件,剛好放你通過,你不來也行的話,HR一般情況下是不會對你讓步的。所以總得來說,好像是廢話,但就是真理,你還得好好準備提升自己的能力,以便於在面試中獲得更好的評價。

  • 在關鍵位置上有人

    這一點非常重要,有自己人在你要面試的公司內部,你可以獲知他們很多情況,比如這次招聘是否緊急,什麼叫坐地起價,就是別人沒有你有。有自己人在你才能知道有沒有其他比你合適的候選者,沒有的話,你才有資格坐地起價。

    如果一個公司找了很久都找不到合適的人,專案已經迫在眉睫,這個時候你出現了。但是你並不知道你是他們千辛萬苦找到的,他們不要你就有可能將專案至於風險中可能會有更大的損失,這個時候你是可以要一個比較高的價位的。但沒有自己人告訴你這個狀態的話,一般你還是會從自身出發,可能覺得自己的表現並不算特別好,會患得患失,臉皮薄的話當然不敢獅子大開口(或者你不明白你為什麼在這個時候在這個公司值高價)。

    如果沒有相關資訊瞭解對方公司內部對人員的需求情況的話,很多時候你靠的是運氣,就是看你前後的面試者(候選人)和你的價效比結果。如果那個時期,只有你一個候選人,那麼你的要求不過份,一般都可以滿足。當然,HR還是會打擊你一下壓壓價,別人的工作就是要控制人力成本嘛。所以你認為能力不如你的人工資卻比你高,一點也不奇怪,你們進入公司的時機不一樣。而且就算你認為對方水平不如你的,那只是你個人的看法,他的水平可能真不如你,但在公司的層面,你們可能被劃分在同一級別。所以不要太在意,最好就不要去打聽。

  • 不要讓對方給你定價格

    之前不少讀者問我,在 HR 問到期望薪資的時候,自己可否反問對方 HR 自己值多少錢。假如我是 HR,我肯定是非常反感這種行為的,我詢問我們家 HR 後(平時和 HR 私下關係很好),得到的結果如出一轍。後面我發現網上竟然還有文章說到,可以委婉地把問題拋回給 HR,比如「我相信貴公司會給我一個心儀的價位。」

    我個人是非常反對這樣的做法的。大多數公司會給到招聘網站上掛的薪資範圍,而且普遍會比較接近平均值以下。所以當 HR 問你期望薪資的時候,你除了要預估自己在之前技術面試中的表現,還應該注意一下公司給的薪資範圍。一般情況下不要直接給出公司給的最高值(自己能力足夠優秀的例外),基本比自己預期高出 15% 較為合適,比如自己心裡期望是 18k,實際上自己覺得 16k 也可以加入,這時候可以說自己期望是 20k 如果實在是沒有底氣,也可以附加一句, 19k 也可以,相信公司不會埋沒自己。

你還有什麼想問的?

經常遇到這樣的面試官,當他吧唧吧唧問完你問題後,突然就停下了,但感覺又意猶未盡,所以往往會把對話的主動權交給你,讓你來提問。

我的問題問完了,你有什麼要問的嗎?

可能這時對於你,“要問”還是“不要問”是個問題。如果要問,那麼要問什麼樣的問題呢?只要你不是太傻太天真,你的內心會堅信面試其實還沒結束,並不是什麼問題都合適問的,如獎金、加班費這些你特別關心的。

面試官的這個問題,是有意問的一種開放性問題,以此來了解你這個人的關注點;還是僅僅是因為面試確實無問題可問了,但又不想太直接結束面試,所以就順便問問?

這真的是個問題。

不過我們不一定非要去揣測面試官的用意,我們回到自身的需要。

如果你也沒什麼問題想問,那麼可以委婉的告訴面試官自己沒什麼問題要問。

如:「通過一些朋友和渠道,其實我對貴公司的一些文化和願景都還比較瞭解,所以我暫時也沒有什麼想問的,我也很希望能加入到這樣一個環境中。」

那問什麼呢?

如果要問,那問題就多了。

“專案常加班嗎?有加班費嗎?” “有出國旅遊嗎?” “在這個團隊中的個人提升空間怎樣?” ......

其實,並不是說上面的這些問題不好,或者不能問。只是,我們問題之前應該思考一下,問什麼樣的問題即可以瞭解到想要的資訊,又是眼前這個面試官最合適回答的。即我們要讓這個問題問出去後的對話能成為有效的溝通,而且這個問題是我們關注的,並且這個問題是對方比較有發言權的。

如關於加班費的問題,其實你問 HR 或者在裡面上班的朋友會更清楚些。

技術面試官 在提出問題前,我們要先看一下現在這個面試官是處在公司的什麼位置。如果他也是一個開發人員,在對你做技術面試,那不妨聊聊團隊的一些技術棧方面的問題。

如:“你們的團隊在採用敏捷開發的方式嗎?” 然後和麵試官聊聊敏捷,分享一些各自的經驗,方便雙方進一步的瞭解。

並不是所有的公司都會用敏捷,那我們可以問一些更開放性的問題,如:「在你們的專案中遇到技術障礙了,公司有什麼機制去應對嗎?」可以就此看看這個公司是否重視技術,有沒有一些技術提升和交流的傳統。

管理類面試官 如果面試官是管理職位的,那麼可以問問團隊組成;假設你能加入的話,會分配在哪個team,team中有沒有帶你的人或讓你得到進步的模式;或者瞭解一下他對團隊目前狀態的看法,是否有什麼變化他想引入團隊或組織的。

也就是向管理類面試官提問,你可以問一些對團隊現狀和未來預期(目標)相關的一些問題,這些問題會讓你提前知道,進入這家公司後你應該往哪個方向去努力。

HR 公司文化什麼的 HR 一般會主動向你介紹,薪酬和福利不清楚的地方也可以繼續溝通。

簡單說,問自己需想要得到答案的問題,而且要針對不同的面試官問對方比較“擅長”回答的問題。

管理者:問戰略 技術人員:問戰術 HR 行政人員:問後勤

離面試不到 24 小時,怎麼辦?

大多數面試一般都會有 3 天以上的時間讓我們準備,不過我們時常還是會遇到臨時安排的面試,給你準備的時間不足 24 個小時,讓人措手不及,這個時候我們該準備些什麼呢?當然,有些同學可能是從有很多天時間拖延到只剩一天,才下定決心要準備一下。

那假如我們就只剩下一天的時間了,怎麼辦?不少小夥伴呀,會越來越慌,越來越慌,不斷地去看一些其他的面試點,生怕哪一個點沒有看到。最後呢,在面試的時候,發現自己全都忘光啦,而且在面試的時候,發現自己前面沒答好,極容易影響自己後面的發揮,對吧。

其實時間越近啦,反而我們不應該再去看一些新的面試知識,放平心態,不需要準備什麼。

不需要準備什麼?你可能會說,南塵,你在逗我?怎麼可以平靜到什麼都不去準備呢?

確實還是需要準備一些東西。

那到底準備啥?

  • 自我介紹

    第一個是自我介紹,剛剛前面說了我們要怎麼自我介紹,到底要說多少句,但我沒有說到底該什麼時候準備。正常來說,在面試前一天準備這個,是最好的,但不要死記硬背。

  • 專案經驗介紹

    你比較熟悉的專案是什麼?你在工作中遇到的最大困難是什麼?以及你最終是如何解決的?這個專案讓你得到了什麼成長?

  • 自己的定位

    一般在面試中,還會問到的優勢和劣勢,比如說:「你的有點是什麼」?「你最擅長的事情是什麼」?

    不過但凡是你對自己有一個比較清晰的定位,哪怕你這個定位是錯的,你也可以以不變應萬變,拿出紙和筆記錄下你自己的優劣勢,並附上相應的案例。

  • 儘可能瞭解公司

    要了解公司什麼呢?肯定不是他的什麼福利呀什麼的,你先得知道對方想要什麼樣的人,可以先看招聘網上的職位簡介。這個一般還是不夠準確,如果有條件,可以問問裡面工作的人,或者直接問他們 HR,如果錄用你的話,會讓你做什麼。當你清楚了對方想招什麼樣的人,你會更加清楚自己應該怎麼做。

    再來應該瞭解面試公司的產品,猜測他們可能會遇到哪些問題。對方招你去是要實現產品和解決問題的,比如大型的 APP 應用,可能會涉及元件化方案和各種效能問題,而小型的應用可能會更加看重你的快速開發能力。

  • 如果有條件,還可以準備一下 Java 的基礎和 Android 的基礎,沒什麼好說的,Android 基礎可以直接去看我的面試系列。

  • 不需要準備的。

    一些你現在還沒有掌握的技術點,準備它們的收益不是很大。既然你還未掌握,現在再看一遍還是難以理解透徹,可能還會出現你認為自己答對了,面試官卻認為你南轅北轍的情況。

    比如:演算法、設計模式、OpenGL 等,這時候看並不利於你記憶和應付面試官可能換一個角度來問你。

    這樣的題或者說技能,是很重要的,但在 24小 時內你只能接受這個現實。如果你其他都準備好了,也可以從現在開始投入時間在這些方面,但不要想著馬上就能用上。

在最後一刻,請再看一遍自己投遞給這家公司的簡歷,如實按簡歷上的回答,保證你的誠信。如果你的說法和簡歷上不相符,對你的影響是很大的。

總結

今天大概就講到這樣,我們來做個總結。首先是我們的簡歷總結。

針對簡歷

  • 簡歷上的所有內容都應該是你最有價值的東西。

    第一句話非常重要,我在這裡再說一遍啊。**簡歷上的所有內容都應該是你最有價值的東西。**這上面不應該帶任何亂七八糟毫無價值的東西哈,比如你喜歡打遊戲,喜歡攝影,這跟我們程式設計師沒什麼太大關係哈。

  • 黃金兩頁,PDF 格式,個人資訊一行兩個避免留白

    我們的簡歷簡歷都採用 PDF 格式,防止別人打開出現各種格式問題。頁數最好控制在兩頁,專案個數控制在 3~5 個,專案數目太多的,注意篩選,每個專案寧可寫更詳細也不要寫太多的專案,免除外包專案嫌疑。最開始的個人資訊欄最好一行寫兩個資訊,不要一行只寫一個,浪費右上角大部分的好展位。

  • 簡歷上每個欄目的順序

    簡歷上每個欄目的順序最好遵循:個人資訊 => 工作經歷 => 專案經歷 => 個人評價。社招的同學也建議自己能有幾個練手專案,可以增加校內經歷在第二個欄目。

  • 利用好 STAR 法則

    在寫簡歷的專案介紹的時候,最好採用 STAR 法則寫清楚專案發生背景、自己的職責任務、自己的處理方案和遇到困難如何解決,最後用數字來量化結果。

  • 拒絕太官方的自我評價

    自我評價可以寫,但不應該太多,一般 4 ~ 5 條適宜,內容不要太官方,最好能體現自己的定位,態度,遇到困難時的方案,自己平時的技術交流平臺,以及自己的優劣勢。一般自己對自己評價容易太主觀,這時候把自己的想法告訴你的朋友,看看他們是否和你的看法一致,一般而言,其他人的看法會更加具有客觀性。

  • 不要只准備一份簡歷

    對不同的公司應該準備不一樣的簡歷,實際上每次的修改也不大,但不要一味迎合對方的 JD 要求去改寫自己的簡歷,自己的內容還是應該做到心中有數。

針對面試

  • 提前準備自我介紹

    自我介紹是面試的第一個環節,而且在每一輪面試都會存在。針對不一樣的面試官,自我介紹應該側重點不一樣,但大體思路一致。不可完全背誦簡歷上有的內容,也不可隨便說幾句就完事兒。正確的思路應該是自己的一個全面總結,包含自己的工作中印象深刻的難題解決過程(START 法則),一半表現自己的技術硬實力和工作表現,另一半表現自己的軟實力,包括但不限於溝通,學習和其他能力。

    針對自我介紹,最好是提前在紙上寫下來,並且對著牆多練習幾遍。

  • 如何準備技術面試

    技術面試一般分兩個方向。

    第一個方向是簡歷上的內容,一般會針對簡歷上提及的內容進行深層次地追問,以確保簡歷上的內容屬實,並且很容易通過細節判斷技術深度。所以在寫簡歷的時候,就應該猜測面試官可能面試到的問題。對簡歷上出現的一些框架,最好針對它的疑問點進行一定的準備。比如你說你擅長使用 RxJava,那你得知道 RxJava 1 和 2 的區別聯絡吧,給你一個實際場景,你得知道什麼時候用 map、flatMap、zip、skipWhile 等這些操作符吧,你還得知道背壓吧,以及 RxJava 2 到底是怎麼去應對處理的吧?

    第二個方向是簡歷之外的內容提問。這個得先看你面試的職級,比如中級和初級開發,你得明白四大元件的基本生命週期吧,你得明白 Java 的基本基礎吧,你得明白基本的自定義 View 吧。對於高階和資深,你得好好準備一下多執行緒、複雜自定義 View 以及動畫,得知道多點觸控這些吧。還有一些就是面試官所在的公司迫切希望解決或者是他們之前的問題後面得到解決的內容了。

    還有一個是需要看一下你面試的公司,稍大的公司會更加在乎你的基礎水平和程式碼質量,所以會對你的技術深度和技術廣度有更高的要去,而小型甚至外包公司會更在乎你的開發速度,和你的抗壓能力。

    總的來說,準備再多的面試題都不如先把基礎問題弄清楚,弄明白,再把你簡歷上提及的技術點都先想清楚,搞明白再去面試。

  • 如何應對吹牛題

    HR 的吹牛題不可避免,而且現在吹牛題除了 HR,甚至還有一些總監、經理等都會問到。基本吹牛題都是什麼離職原因呀,職業規劃呀,什麼你遇到過最大的挑戰呀,還有你的優勢是什麼,為什麼我們要錄用你呀這類的。這些問題還是應該事先準備的。和自我介紹應該,同樣是應該寫在筆記本上,然後自己多次揣摩,可能你覺得自己準備很好的東西,你寫出來自己都知道了。

    還有一個基本不可避免的吹牛題是:「你還有什麼想問我的」?這個問題,針對不一樣的人問的內容要不一樣,對於管理者,可以問公司戰略;對於技術人員,可以問公司的專案流程;對於行政 HR 人員,可以問福利和公司文化。如果確實沒啥好問的,就委婉地表示自己之前通過其他渠道已經瞭解了自己想知道的,切忌不要直接說沒有。

  • 如何和 HR 談薪資

    和 HR 談薪資是一個必不可少的過程。如果手裡已經有 offer 或者前面感覺自己面試表現不錯,建議談的更加有底氣。一般要價比自己期望的高 15%,不要說範圍價格,不要說範圍價格!雖然我知道你心裡比預期低 10% 也可以接受。

  • 手裡有多個 Offer 怎麼選

    面對多個 Offer,大多數都在同一個城市,這時候需要把眼光看的更加長遠,**一定要把眼光看得更加長遠!**選擇更有發展潛力的公司,而不要一味地追求薪資。這一塊我其實深有感觸,所以前段時間,我放棄了高我現在薪資一半的公司,選擇了現在的公司,其實原因很簡單,一面的面試官把我點燃了。

    還有一點是,一定要注意距離,最好優先選擇距離家近的公司,租房的可以把家搬過去。每天花在地鐵上的時間,不如在公司多做點事兒。

    對於校招的同學,肯定會有些 Offer 來自不同城市。不考慮到家距離的,建議優先北京、上海、深圳、成都。再是廣州、杭州和一些其他城市。

沒有技術深度的煩惱

當我們是初級工程師的時候,最希望的就是有豐富的專案經驗,好把自己蒼白乾癟的簡歷填的炫麗飽滿。然而隨著時間的積累,簡歷上的專案是挺「飽滿」的了,但我們只看「外表」的行為造成了自己另一個困境:看似很資深,其實又沒有做過什麼有難度的事情,工作了十年可能只是 1 年的工作經驗用了 9 次。

我之前就面過一位從 09 年開始就做 Android 的人,我算算啊,到現在應該是快乾了 10 年了。光專案,簡歷上都寫了 10 多個,整整 4 頁的簡歷。我們拋開簡歷沒有對專案經歷進行精挑細選的毛病,我仔細閱讀簡歷之後,發現簡歷中沒有任何深入的地方。雖然寫的很有技術,但卻只是在使用 API 的程度而已,有些解決問題的方式很有技巧,但還不成體系。

這位讀者待過 4 家公司,其中兩家都是知名網際網路企業。但假設我是公司的面試官,我可能會對他表示遺憾,心疼他沒有選擇更加深入的研究和拓展。

有知名網際網路企業做背書,有將近 10 年的開發經驗,但我總感覺還差了點什麼。

假如我是公司的 Leader,我會覺得這樣的一位面試者,當然會比一般的 Android 求職者技術更好,但價效比確實太低了。

沒有技術深度是 Android 程式設計師的一種常態。因為很多工作,很多人從事的專案並不需要多少技術深度,即使你有深度,你也有可能發現用不上,對於大多數人,合乎理性的做法不是去追求技術深度,而是夠用,能滿足需求就可以了。

但轉到個人的話就不一樣了,在技術上你需要夠用,但是在某方面上你需要有一定的深度,以突出你自己的學習理解和運用的能力,而且這個能力是要有成功案例來背書。

特別是當你成為一個資深的工程師的時候,很多公司並不希望你還是那樣平庸,沒有深度。雖然你會納悶,我就算有深度你們也不一定用得上呀?然而到了這個級別的人需求量並不像初中級開發那麼多,公司更理性和穩妥的做法是選擇有深度的人,不是嗎?


我是南塵,只做比心的公眾號,歡迎關注我。

南塵,GitHub 7k Star,各大技術 Blog 論壇常客,出身 Android,但不僅僅是 Android。寫點技術,也吐點情感。做不完的開源,寫不完的矯情,你就聽聽我吹逼,不會錯~