一個人經歷過一年,甚至更久的工作之後,總會經歷大大小小的事情。每一次面試之前的總結,不光是為了面試,更是為了讓你在跳槽之前認清自己,並且清楚自己所需要的提升到底在哪,這才是跳槽真正的意義所在。
很多人跳槽都是盲目的,並且每次跳槽之後都感覺不是很滿意。其實有一個很重要的原因,就是你沒有在面試之前認真的總結自己,你不了解自己現在到底優勢在哪,劣勢在哪,你需要彌補哪方面的空缺。以至於在跳槽時,除了薪資待遇以外,很少考慮到自己的職業發展問題。就算考慮了,但是由於沒有好好總結自己的經歷和技術,也很可能會選擇了一個自認為正確但實際上卻是錯誤的方向。
周一晚上下班時,接到了阿里打來的面試電話,本來之前我還以為簡歷被刷掉了,所以接到這個電話我還是比較激動的。值得稱讚的是,由於當時電話沒來得及接被掛掉了,後來我主動打過去,那邊的主機自動幫我轉接了之前打給我的號碼,而不是讓我自己撥分機號。(給阿里點贊)
面試官先是讓我簡單介紹一下自己,包括項目經歷,然後就問我做過的項目中有哪些有代表性的經歷,接著簡單瀏覽了一下我的博客,問了一下 SDWebImage 實現原理和性能優化相關的問題,以及年終總結,最後問了一些 iOS 相關的知識點。
缺乏足夠的準備,導致面試過程中非常緊張,半天想不起來要說什麼,甚至出現了退縮心理。為什麼會底氣不足,極度緊張呢?就是因為沒有提前做好準備,人對於未知事物的恐懼是本能的。
缺乏面試經驗,不知道隨機應變,不知道以什麼心態去面對。
平時學習和實踐的方向不夠清晰,或者說沒有在面試前好好總結梳理,導致在面試時沒有閃光點可講。我以為 Github 和博客是最重要的,其實這些只是加分項,只是一種表現形式。真正重要的是我們所具有的能力和經歷,以及面試時如何把這些能力表現出來。
亡羊補牢,為時不晚1. 了解目標公司、團隊、職位
首先要做的就是了解潛在的目標公司、團隊,了解外界,對外交流,知道自己想要去的公司、團隊的要求是什麼樣的,知道自己跟他們的差距在哪裡。比如說要去餓了么和阿里,也許我們就要對架構、Hybrid、weex/React Native、JavaScriptCore、組件化、性能優化等等非常了解。
現在 iOS 還有人要嗎?最近看了韓帥寫的面經,他說:
現在大公司 iOS 空位很多,如果你有兩年以上(沒有水分的)開發經驗,抓住機遇,好好準備,跳大公司問題不大。
其實,我自己也收到了阿里、騰訊的面試機會,甚至還比較輕鬆地拿到了一個其他廠的 offer,這說明 iOS 的崗位需求還是有不少機會的,但是要求都比較高,所以求職者多的話,就要看誰能突圍了。
去哪裡找機會呢?在微博上會經常看到一些大佬會轉發招聘信息,平時也可以留意一下,另外,找認識的朋友內推,也是一條不錯的路子。對於想進大廠的同學,Enum 有個建議特別好:
想進大廠,肯定是要向大廠的同行們取取經的。他們最近在做什麼,會什麼,看過什麼書,啥時候招人,能不能內推等等。這些信息能像燈塔一般給你指出一條明路。
2. 了解面試流程
然後就是面試流程,不同公司的面試流程不太一樣,但也差不了太多,大部分公司的面試流程都是這樣的:
我們只需要把可能出現的環節都考慮到就行了,比如壓力測試、白板編程、電面突襲、現場要你解決一個問題或者實現一個功能等等。另外還可以請教一些大牛,面試時要注意什麼。
關於 IT 面試的要點,其實《劍指 Offer》這本書中已經講的很詳細了。
3. 準備簡歷
個人覺得比較重要的幾點(主要是參考了 Enum 的建議和韓帥的簡歷):
簡潔大方就好,排版不要太亂,一些無關緊要的東西就不要寫了。(感覺自己的簡歷排版有點亂,項目經歷和工作經歷其實可以分開來寫)
簡歷里的每一條內容都要做好被問的準備,但是不要寫太多,內容控制在兩頁以內。(我寫的有點多了,看起來太雜,面試官和 HR 看了後估計也會「疲勞」,不知道突出點在哪)
項目經歷要有亮點,也就是解決過什麼難點和痛點,做過什麼改進優化和創新,少寫沒營養的東西。(感覺這點自己並沒有梳理好,寫明白,可以再改改)
用詞盡量謙虛一點,精通最好不要亂用。
準備一個殺手鐧。從現在開始,準備一個細分領域做一點點深入的研究,比如優化,Hybrid,架構等,到時把它寫上。如果面試官有興趣,你又能說得出內容來,勝出的概率就很大了。(我自己對架構這塊比較感興趣,但經驗還不夠,對 Hybrid 和列表接觸得多,還有音視頻也接觸過幾次,到底選哪個方向,其實我自己也一直在糾結)
4. 模擬面試
說到模擬面試,也就是拿著自己的簡歷問自己(也可以找個朋友幫忙),列出所有可能會被問到的問題,不斷練習,找自己的不足,直到真正熟悉了所有的問題和答案,等到真正面試時心裡也就有底了。
考前模擬這個方法其實我們已經用過很多遍了,比如在高考和考駕照時都用過,記得當時考駕照時,教練還讓我們把考試時要做的每一步都寫下來,然後再記下來在腦海中不斷回想。
除了技術之外,有些面試官可能還會問一些工作經歷、職業規劃、平時如何學習這類開放性的問題。另外,還有演算法題平時也要練習一下。
一般在面試結束後,很多面試官會問我們有什麼要問的,這個也可以提前想好。還有 HR 面時可能會聊到的問題,都要提前預演一下。
關於技術面的一些技巧:
面試絕不僅僅是面試官問我來答,還要主動展現自己,主動回答問題,主動引導方向。你自己都不知道自己擅長是什麼,難道還要面試官來幫你找嗎。
自我介紹時能主動說出自己的亮點,也就是能給自己加分的,能讓面試官感興趣的,其實這跟第一點的目標是一致的。
面試項目經歷時,也是一定要把自己的亮點講出來,可以說一些「裝逼」的詞,但裝逼必須得有真材實料,要提前做好功課,要知道 What、How、Why,以及自己的一點思考。大公司面試最喜歡刨根問底和問性能優化這方面的問題了。
最重要的一點是,一定要把面試官往你熟悉的領域引導,這真的很重要,因為如果你不引導,面試官不了解你的項目,看不到你的亮點,就只能一直問技術問題刁難你,人家在大公司待這麼久了,還不是輕鬆碾壓你。所以你在引導的同時,時不時提及一些事先準備好的關鍵詞,技術官一問,你馬上能回答得上來。
面試時身邊最好隨身帶上紙和筆,手機安裝好要演示的 APP。
記得阿里面試官在問我關於 SDWebImage 的源碼時,就直接指出「你說的這些靠的是背,而不是靠理解和思考」。這讓我想起了有一次在『得到』上聽過的一篇文章,講的是「六經注我」讀書法,讀書分為四種境界。最低的境界是我們大多數人所做的,讀什麼書都是學習的態度,見山是山,見水是水,我就是這種境界。而最高的境界是,讀之前就有自己的目標,讀的時候把別人的知識拆解消化掉,最後重組改裝,為我所用,自成體系。
5. 系統複習、工作積累
技術面考察的是基本功和工作積累,包括深度和廣度兩個方面。所以我們需要要做兩方面的準備,一方面是粗粒度地完善知識體系,查漏補缺,另一方面是結合工作、學習實踐,深入研究一個方向。
5.1 知識體系
計算機基礎知識
操作系統
演算法和數據結構*
計算機網路*
C 語言
iOS
Objective-C*
內存管理
Runtime
block
category
對象拷貝
KVC、KVO
函數響應式編程
React Native
5.2 書單
把看過的重新複習一遍,書上的東西肯定不是一次就能全部吸收的,很多東西看過就忘記了。而且,有句老話說得好,「好書常讀常新」。所以,在面試前要全部重新複習一遍,加深印象。
《Effective Objective-C 2.0》
《Objective-C 高級編程》
《Objective-C編程之道:iOS設計模式解析》
《劍指Offer》
《程序員的自我修養》
《圖解HTTP》
《網路是怎樣連接的》
《iOS Core Animation Advanced Techniques》
5.3 平時的積累
保持好奇心,養成精益求精的好習慣。
在一個適合思考的時刻(比如下班路上),去思考和總結自己所經歷的過去以及所掌握的技術,要總結到精髓,並且挖掘出自己至少一個亮點。
保持良好的代碼風格。
在 Github 上開源一些不錯的輪子,參與別人的開源項目。
寫一些有質量的博客。
常見問題
Q:如何克服緊張情緒?
A:首先還是要提前做好充分準備,這樣到真正面試時會好很多。如果面試時真的很緊張,就告訴自己專心理思路想問題就行了,答不上來或者答錯了也沒關係,即便失敗了也很正常。但是一定要自信,要讓面試官看到你的積極性,而不是越說聲音越小。就像 Enum 說的那樣,「自信,不要慫。面試時候就覺得自己是大神,最壞的結果不就是沒過嘛。」
Q:面試官一直追問怎麼辦?如果遇到自己真答不上來的問題怎麼辦?