每年都有大量的應屆畢業(yè)生投入到iOS開發(fā)大軍當中,我過去3年也面試過不少應屆生,總體感覺出類拔萃者相當稀少,泯然眾人者還是占多數(shù),大部分人對iOS技術面試會是什么樣沒什么概念,更不知道該怎么去準備一場面試。其實畢業(yè)季學校都留給了每個人充足的自由時間去準備學習,對于,僅以過來人提些切實可行的建議幫助剛畢業(yè)的同學們,以下這些建議花三個月準備綽綽有余。
相信自己的選擇,全力以赴
在開始準備面試前,一定要確信自己所選擇的方向。這兩年雖然iOS開發(fā)雖然有所降溫,但市場對于優(yōu)質人才的需求還是求賢若渴的狀態(tài),即使長遠的來看,iOS開發(fā)也是一個可以深度發(fā)展持續(xù)提升的職業(yè)方向。一旦決定應聘iOS崗位,一定要全力以赴,切不可今天OC,Swift明天再抓一本java。再者,iOS整套的硬件軟件開發(fā)體驗,macbook,iPhone,Xcode,Develper API等等都是一流的。
建議一:動手做一個簡單App
做過和沒做過App之間有很大的差別,不用做復雜的app,可以是一個簡單的demo,類似于計算器,日歷,天氣的app,這個app展示給面試官看的時候,可以表明以下信息:
使用過Mac系統(tǒng)。
有Xcode上手經(jīng)驗,知道如何調試App。
能做基本的UI,清楚諸如UIWindow,UIView,UIButton這些基礎的元素。
發(fā)送過網(wǎng)絡請求,大致知道HTTP的概念。
有過本地的存儲,可以是簡單的NSUseDefault,了解持久化的概念。
所以App可以功能很簡單,不需要花心思在UI的設計上,只是用來說明你知道iOS App開發(fā)是怎么一回事。
但這個建議實際上是加分項,很多面試官包括我本人都不強制要求應屆生有iOS開發(fā)經(jīng)驗,畢竟在校期間更多的是吸收理論知識,但做過App會加印象分,更是一個積極的信號,代表你對iOS開發(fā)確實感興趣。
做一個真實的App,比在網(wǎng)上找一堆面試題,記住所謂的標準答案要靠譜的多。而且強行記住的答案很容易露餡,Objective C的runtime知識豈是幾道面試題可以說得清楚地。
建議二:完整的閱讀一個github開源項目源碼
做過App表明你上過手,但是閱讀過優(yōu)秀的開源代碼會讓你更自信,更容易讓面試官相信你確實是個技術向的人。
這里推薦兩個github上的項目,Objective-C和Swift各一個,選擇任何一個深入閱讀都可以,根據(jù)自己喜好即可。
CodeHub - Objective C
siesta - Swift
閱讀過后要確信自己能理解源碼的思路,標準是脫離代碼后,你能把這個App的實現(xiàn)思路,從UI展示,數(shù)據(jù)存儲,網(wǎng)絡請求,基本架構都能大致說清楚,最好能說下具體那一部分的代碼讓你印象深刻,讓面試官能相信你確實仔細的讀過。
建議三:粗粒度梳理大學知識體系
這部分和關鍵,無論大公司還是小作坊,對你在大學期間所學必定最感興趣,也是會深入挖掘的部分。大學課程雖然眾多,但和實際工作貼近的卻只有幾門,準備起來不用廣撒網(wǎng),可以針對性的復習,主要可分為以下幾類:
操作系統(tǒng)
操作系統(tǒng)的知識是重中之重,以后新技術的學習,不論什么平臺,幾乎都是以這堂課的知識為基礎,主要知識點包括:內存,磁盤,I/O,線程,進程,系統(tǒng)調度等,這些知識點相關的基礎都要能明白。
數(shù)據(jù)結構
數(shù)據(jù)結構也很重要,算法可以選擇性的適度復習,有經(jīng)驗的面試官是不會讓你手寫Quicksort的?;A的數(shù)據(jù)結構,List,Heap,Stack,Tree等都要知道,時間復雜度知道如何計算,graph相關的可以不用看,這一塊偏復雜,面試官也不會問。
計算機網(wǎng)絡
能說出OSI七層模型,和每一層的職責,了解tcp三次握手的流程,大致了解HTTP協(xié)議格式,明白post和get的區(qū)別,查看過request和response的具體樣本等。
C語言
C語言的重要性是被嚴重低估的,即使是不少有過工作經(jīng)驗的朋友,沒有系統(tǒng)的學習過C語言或者類似的偏底層語言,對于知識深度的拓展都收到限制,C語言更接近計算機原本的樣貌,比如真正了解指針的概念后,你才能對對象的memory layout有清晰認識,進而對你學習內存管理起到事半功倍的效果。