關於面試的一些個人看法

本文是個人經驗,僅供參考!

簡歷的準備

頁數

簡歷通常最好是兩頁,一頁的簡歷會顯得過於簡潔,正常來說不管一個人在某個行業做得好與壞,都能夠把自己的所掌握的東西轉換到兩張 A4 紙上。

精簡簡歷

• 刪除不必要的自我介紹:不要寫上任何與課程有關的東西,作業系統、電腦網路、數據結構等等這些電腦專業核心課程或知識,是我們必須要掌握的,沒有必要突出你上過這些課,這些課只要是中國高校相關專業都會上。這就好像應聘一個環衛工人,你要跟僱主說我會用芭蕉葉掃把、竹子葉掃把以及會使用大剪刀修建枝芽,這些東西都是一名合格環衛工人必須要掌握的,完全沒必要突出。

• 刪除不必要的工作或實習、實踐經歷:這點我深有感觸,我的第一份實習實在一家外包公司,幹了兩個月,在這兩個月中,我沒有做多麼深入的性能調優,也不允許我去做(兩個月的時間上了兩個 app),這段時間給我的最大感觸就是我對 iOS 的相關需求有了非常大的熟練度,也就是說,我在這兩個月的時間中存粹就是去練程式碼熟練度的。所以,這段實習經歷完全沒必要擺出來。

而且要注意分類!如果我們找的是一家 社會企業,社會企業可能會要求我們有「奉獻精神」,這就可以把我們的各種志願者經歷放到簡歷中;如果我們要找的是一家 互聯網企業,志願者經歷等等的類似的資訊就不要放上去了。

• 刪除不必要的證書:我覺得四六級都沒必要放上去,電腦是變化最快的行業之一,沒人保證你拿了什麼證就能夠做什麼事情,也沒人能保證沒有這個證你就不會做什麼事情。如果我們自己都覺得這個證書沒什麼技術含量,那就不要放上去。

• 刪除不必要的細節:簡歷上寫自己做過的項目時,不要連這個項目用到的環境都上去,比如,xxx項目的環境為 macOS ,設備為 Macbook pro 等等。

重要的資訊寫在簡歷的最前面

最開始的時候我的簡歷十分尷尬,我居然是按照時間順序排序的,隔了大半年的外包實習經歷我居然放在了最前面,這就導致了每次面試官都從第一個項目開始問起,而我自己已經記不起太多細節了(也沒多少細節可說),所以最後我決定在簡歷中刪掉了這段實習經歷。

所以,最好的做法是先把重要的資訊放在簡歷的相對靠前的位置。比如個人的一些基本資訊,寫清楚自己的名字、郵箱、院校、部落格地址、GitHub 等等即可,接下來就要重點「渲染」自己最厲害的經歷放出來,可以是名氣較大的公司實習,也可以是比賽獎項等。

最好不要去網上下模版,最佳的做法是直接 markdown 搞起,讓面試官專註你的內容而不是那些酷炫的排版。

不要簡單的羅列工作經歷

不要在簡歷上寫太多關於某個項目的事情,也不要一筆帶過。個人推薦最好的做法是分版本描述,在每個版本的描述中概括性的描述出自己做了哪些事情即可,如果面試官對你做的這個項目中的某個版本中的某個功能點感興趣,他是會問我們的。這有個例子:

• v1.5.0 :數據快取、網路監控 • v1.6.0 :弱網體驗提升、數據異常中間件 • ……

需要注意的是,必須要保證只要我們寫在簡歷上的東西就是自己做過、摸過的,要不然如果只是為了充數好看,被問到而答不上來就十分尷尬了。

不要寫任何虛假或誇大的資訊

千萬千萬不要出現「精通」二字,甚至也不要出現「熟練」,摸著自己的良心說話,你真的精通,真的熟悉了嗎?我始終不認為少於 10000 個小時或者少於 10 萬行程式碼量的鍛煉就能夠稱得上精通 or 熟悉。但是如果你對自己非常有自信,確實在某些方面有自己的心得,那可以這麼說:

主攻 iOS 開發,正在學習以 python 為主的後端開發技術棧。

短短的一句話涵蓋了非常多的東西,「主攻」二字沒有自狂但很實在。但如果你的情況是真的沒什麼項目可寫,自己參加的又是一些「邊角料」的工作,可以把面試官引導到自己比較穩妥的方向上來,比如說可以讓面試官問你演算法和數據結構。

留下更多的資訊

我推薦大家留下:

• github

• 掘金/簡書或者自己的 blog

• 郵箱

• 社交帳號,如微博等

需要注意的是,要確保我們留下的這些帳號是真實有效的,其中的資訊都是可考證的。比如說,如果你留下了 github 地址,我是一定會去看的,而且會去思考哪部分程式碼是你寫的,寫的怎麼樣,甚至會去觀察你的 contributes, 還會去看你程式碼中的命名等等,如果發現了你只是因為兩個月或者一個月要找工作而開始「瘋狂」的 commit ,那麼你還不如不放,我知道大部分同學的 github 上沒有多少優秀的 repo (我也一樣),但是一旦你放到 github 上了,並且還把你的 github 地址放在簡歷上了,這就表明了你是有內容的,想給面試官去查看。

不要附加任何帶來負面影響的消息

• 不要放個人照片。(我曾經犯過這個錯,現在想起來真是太傻了)這是你的簡歷!不是你的相親!工作就是創造價值,你的性格如何,人品如何,會有專門的面試去考量,只要你能保質保量的完成任務,單臂編程也沒問題。

• 如果你沒有出色愛好證明,比如國家二級運動員等等榮譽,那請也不要把你的個人愛好放到簡歷上來。等你入職了,會有專門的自我介紹環節,這個時候請你多多表現,不要啞口無言。

• 如果要求電子簡歷,請轉成 PDF!

• 如果我們要留郵箱,最好留一個能夠及時收到消息提醒的郵箱,唐巧在書中說的是不要留 QQ 郵箱,但是我明確知道在中國 QQ 郵箱的體驗還算不錯,很多時候我之所以留 QQ 郵箱是因為我綁定了 QQ 和微信的收件提醒,而 QQ 和微信是我幾乎不會關閉的 app 。

• 不要寫上任何職業培訓資訊。我一點都不反對培訓出來的程式設計師同學,因為他們至少證明了一點,他們想做這個事情,然後有所付出。至於培訓出來的程式設計師品質如何,這裡不做考究。從我自身來說,我是 mooc 的常客,coursera 和 edX 是我經常活躍的地方。但是你沒必要把參加這些課程或者培訓寫到簡歷上,因為參加這些課程或者培訓是我們應該做的,這是提升我們自己的手段,換種方式,如果連這種事情都要放在簡歷上,是不是也要把自己看過什麼書也放到簡歷上呢?

尋找機會

網上流傳這麼一句話,大部分的工作都不是面試來的。

尋找內推機會

• 找師兄師姐(也可以找我 ?)。

• 微博、知乎等社交平台。

• github。這是一個極好的平台,曾經我開源了 PLook ,兩天後就有人找到了我。

你要相信,只要是個人才,誰都喜歡,更何況還有豐厚的內推獎金等著呢。

其它常見的招聘渠道

實習僧(找實習非常靠譜)、拉鉤、100 offer 、Boss 直聘(不是很推薦)、智聯招聘等

面試流程

自我介紹

在這個環節中我們千萬要把握好時間和要闡述的內容,時間把握在 3 ~ 5 分鐘。這個環節我跟唐巧老師的看法是一致的,非常重要。我記得去年的暑期實習面試中,我臨時採取了一種方法,就是按照簡歷上的內容一個一個介紹,但是這個介紹不是細緻無比的介紹,而是籠統的大概介紹自己都做了什麼,用到了哪些技術,這個項目是服務於誰,用於做什麼的。

我反而不推薦大家去背自我介紹,只要我們的簡歷寫得足夠清晰明了,錯落有致,那我們就先在自我介紹環節引導面試官去看我們的簡歷,讓面試官把注意力放到我們的簡歷上,而不是讓他把注意力集中到自己之前準備好的問題上(雖然也有一定幾率轉移注意力失敗)。在這個環節中,其實我覺得自我介紹根本沒啥用,與我相關的內容早都已經寫在簡歷上了,讓我做個自我介紹不就代表著簡歷你都沒看就來面試我?當然,我覺得面試官們讓我們做的應該不是自我介紹,應該是給我們一個梳理自己思路,讓自己進入面試狀態的階段。

需要注意的是,不要在這個環節表現得自己無話可說,磕磕碰碰,支支吾吾。適當停頓是好的,但是不要停頓了很久,然後才接著說,如果真的在面試過程中出現了這個情況,我們需要用一些「自我調侃」的語氣來勻一下,比如:「之前的做這個的時候,我想著是學習一個產品怎麼從 0 到 1 ,但是沒想到最後 xxxxx」,這部分因為是我們緩解自我介紹過程中斷片用的,不要一直都在「調侃」,適當抓住時機回到正軌上。

如果我是面試官的話,我會非常喜歡聽面試者談論他當初為什麼要做/加入這個產品/項目。用唐巧老師的話來說:「優秀的應聘者會通過自我介紹「引導」面試官問到自己擅長的領域知識」,用我自己的話來說,就是忽悠面試官到我們自己擅長的領域或者項目中來,最後別讓面試官上來就問,「會手寫快排么?來一個」,說真的,如果你沒啥說的,我是會問的,但是如果你已經做過很多東西了,我要問的會往架構和設計方面的更多一些,因為之所以問我們演算法和數據結構,是因為這是面對一個與自己毫不相干的人時最直接的方法,因為這更能省事,如果你已經做了很多東西了,並且也能夠給我看到,那麼我當然會認為你已經會寫程式碼了。

項目介紹

這裡有一個我自己認為是禁忌的地方,當面試官問到你 xxx 項目時,千萬不要表現出這個項目簡單啊、沒什麼說的等等,因為這會讓面試官覺得,既然你自己都覺得沒什麼可說的,那你為什麼要寫在簡歷上呢?並且當我們確定要把一個項目放在簡歷上時,千萬要記得這就是你身上的一塊肉,如果這塊肉是你身上的,點一下都會有感覺,更不要說這塊肉被割了一下,所以我的意思是,這個項目是你做的,那就要事無巨細的從零到一的所有細節你都要知道,因為比如說我,我就會抓住其中一個點問下去,反正也是你做/參與其中的,這其中肯定有你構思了很久的地方,所以我是一定會問下去的。

需要注意的地方有:

• 這個工作具體的產品需求是什麼樣的?

• 大概做了多長的時間?

• 整體的軟體架構師什麼樣的?(劃重點)

• 涉及哪些人合作?幾個開發幾個測試?(這問題我不會問,只要是個項目肯定不只一個人,更別說在公司中了)

• 項目的時間排期是怎麼定的?

• 你主要負責的部分有哪些?(劃重點)

• 項目進行中有沒有遇到什麼問題?(劃重點,會被面試官問:「那你有沒有想過其它方案?」,然後就開始了……)

• 這個項目最大的收穫是什麼?遺憾是什麼?

• 項目中最難實現的一個需求是什麼?具體是怎麼實現的?

寫程式碼

這個環節是一場面試中重中之重的環節,如果這個環節表現得好了,可以覆蓋掉之前所有的表現,因為招一個程式設計師進來,最終的目的就是寫程式碼。當然考察程式碼寫得如何有非常多的方法,其中最基本的就是從數據結構、演算法一直到系統架構,我個人把這個環節分成了兩部分——電面和面試。

電面中千萬不要讓人給你做題,我自己就被這麼玩過,簡直痛不欲生,一是訊號不號,無法想像在跟你通電話的面試官是在一個什麼樣的環境下跟你溝通,更何況有些走的還是 IP 電話,不想罵人;二是講不明白,這點可以理解為雙方都不知道對方在說什麼,如果「隔空能力」表達不好,需要藉助紙筆來輔助回答,那就別問讓面試者需要紙筆輔助回答的問題,這樣會讓雙方都很尷尬;三是溝通費勁,這點不用多說。之前我在給團隊面試 iOS 實習生時出了一份電面題,基本上都是基礎知識,答對這份電面題只能說明能夠具備面試的要求,不是說就具備了入職的要求,千萬別搞錯了,鏈接在此

面試過程中因人而異,需要顧及的問題很多,不可隨便網上找份題直接肝,這樣體現不出面試者的差異性。個人推薦做法還是就事論事,簡歷上寫了哪些東西就問哪些東西,然後結合團隊本身產品及業務進行拓展,別上來就讓人「手寫快排」、「翻轉二叉樹」……這些東西需要時間去準備,更何況真正的大佬根本不會去準備面試的,因為他沒時間。但是這些知識不可能不問,因為工作中真的會用到,那怎麼辦?給個業務例子或造一個場景,讓面試者自己去發散思維,說不定面試者還能給我們長長見識呢,如果我們出的業務例子或場景只能用某個數據結構去完成,那符合要求的面試者是一定會想到的,他也應該知道怎麼去調優,去實現,反而是根本想不出來或者就是錯誤方向的面試者才值得我們斟酌,如果出現了這種情況,十有八九是個幌子。

說到底,我還是推薦如果面試官們真的要考面試者的數據結構和演算法能力(純粹),直接讓它現場上機擼碼吧。

系統設計

這部分內容不一定會單獨拎出來,可能會跟寫程式碼環節有重疊,但現在問的最多的基本是這個套路:

• 「有看過 xxx 庫么?」

• 如果你看過,「能說說看這其中的設計么?」

• 如果你沒看過,「如果要你設計,你要怎麼做呢?」

這是個大坑!如果你真的認認真真的研究過了,鑽研過了,那你大可放心的說,「我看過!」,可問題是不是每個人都有時間去鑽,我唯一重頭到尾每一行程式碼都認認真真的看完是這個庫:DOFavoriteButton,因為我覺得他寫的很爛,如果我們給的是一個鏤空圖,它依舊會在點擊狀態完後給你填充,當時把我氣得不行,怎麼會有這麼 zz 的庫,把程式碼全部翻完後,加了個屬性(當然,可能現在已經改過來了)。

由此可見,如果用到的庫完全能夠滿足自己的需求,我還真的不一定會有時間去看源碼,除非用到的庫品質不高或者設計上有問題,但是其中有些地方導致了沒法捨棄,只能去看源碼改程式碼。所以,就算看過 xxx 庫的源碼,我也會說沒看過,如果你說看過了,有些神奇的面試官還真的會問你一些犄角旮旯的問題,但如果我們說了沒看過,然後自己設計一套出來,就算某些地方說的不好,也會有加分的地方。

提問

這個環節可以認為是我們全場面試中唯一一個主動出擊的機會了,如果整場面試下來覺得這家公司不錯,那麼我會問如果我進來的話,主要負責的產品是什麼?業務是什麼樣的?誰帶我?(這個問題慎重)現在團隊有多少人在負責這個產品?千萬不要問:

• 我剛才的面試情況如何?

• 剛才 xxx 面試題的答案應該是什麼?

• 大概能有多少錢?

其它

筆試、程式碼考察準備

首先要明確一點,如果我們非常喜歡、期待進入某家公司,一定一定要記得用盡自己的一切手段去獲取這家公司的所有細節,包括面試官都會問哪些問題、面試題/筆試題大概都有哪些、多看一些面經等等,並且如果我們真的確定了自己非這家公司不去,那就一定要記得去刷題!我十分推薦去刷 leetcode ,前段時間本想著每天一道題持續到明年春招,但是沒想到自己可以轉正,而且轉正三面全過了,就把重心偏移到其它方面去了。

關於系統設計的準備,我個人推薦大家在平常擼碼的過程中多跟後台溝通溝通,或者在業餘時間做一些自己的全棧 side-project ,這樣有助於從大局考慮系統設計,當然,最重要的還是對日常需求的思考,還是那句話「再簡單的事情也能過做到完美!」

Offer 的比較和選擇

這部分內容我跟巧哥的思路不太一樣,也有可能是因為我個人經歷的原因,我始終認為時間是最寶貴的,我每天都必須給自己留下一定量的時間放空自己。在這段放空的時間內,玩遊戲是非常非常小的一部分,甚至可以忽略不計,大部分的時間我會選擇去看書,各種書都看,可以是技術書籍也可以是人文書籍,不要小看用這些時間去閱讀取得的效果,看書真的能夠使人進步和加深思考,初中的時候因為還是走讀生,每天回到家都有時間給自己一本一本的去看書,導致一次作文滿分,好幾次只扣了三四分,甚至一兩分。

當然,我說這些原因主要還是想突出一點,如果我們現階段不是特別的缺錢,當然,錢多少都不嫌多,我的意思是說,在保證自己各項開支都均衡的情況下,盡量選擇能夠給自己留下空餘時間的 offer ,如果真的能夠可以少拿錢,然後提前下班(強制性趕人),我真的願意這麼做!

至於多出來的時間要怎麼消費,這就看個人的需求了,如果是我的話,我會先學做飯,把小時候媽媽逼我學的幾道菜再精進一番。如果還有更多的時間,我會用自己所學的知識做一些傳承的事情,比如做一些遊戲化編程的事情等等,每天都有多餘的時間真的很重要,因為這至少能夠保證我們的熱情不減,還是當初那個一腔熱血的少年。

小編註:小集為方便大家交流職位相關的資訊,新建了一個 QQ 群,目前已經有 900+ 位小夥伴,發布了數十個崗位,這些崗位有來自騰訊、阿里、位元組頭條等大廠,也有諸如 Grab 等外資企業。同時我們也歡迎中小型公司以及二三線城市的公司進來發布一些職位。QQ 群號:544703151,也可以描以下二維碼加入。後續小集公眾號也會增加面經方面的一些內容。


推薦閱讀 • 深入理解 Symbol • Flutter Widget - Container 布局詳解 • 一文領略鏈接與裝載 • 下個 App,可以嘗試下這幾個庫

Tags: