想起去年這個時候,我還在努力地去爭取阿里巴巴的實習offer,轉眼間已經到了快畢業的時間了,時間真快,真是一把殺豬刀。經歷過去年阿里“擁抱變化”之後,懷著悲傷的心情,打著“我想去外面看看”的心態面試著一家又一家的企業。最終拿了很多offer,包括百度、騰訊,還有曾經拋棄過我的阿里。
BAT,在國內,幾乎是每個計算機學子的夢想之地,而如何拿到它們的offer,則是眾多學子想知道的。而我想從自己的經歷出發,說一些自己的經驗,讓能看到這篇文章的同學多一些信心,也多一分從容,也就達到寫這篇文章的作用了。
我從下面幾個角度來剖析很多同學關心的問題:
1.該學習哪些基礎知識?
2.面試前該怎麼臨時抱佛腳?
3.我已經大三了,是不是來不及在秋招前學習了?
4.如何能拿到Special Offer
5.淺談我面試中的經歷
該學習哪些基礎知識?
我推薦iOS開發者必學的幾本書:
Operating System Concepts 9th Edition
C++ Primer Plus
Computer Networking A Top-Down Approach 5th Edition
ADTs Data Structures and Problem Solving with C++
資料庫原理
首先,你必須得學一門語言,而與OC相關的除了C就是C++了,而我選擇了C++,因為和OC一樣同為物件導向程式設計。學了C++之後,你對指標,記憶體管理、繼承、多型性等等才會有更深的理解,而這卻是OC會用到的。
作業系統更是要學了,iOS基於Unix,而你如果不瞭解Unix,在你想要更加深入瞭解iOS的時候,也許你就會很迷惘了。比如,你知道虛擬記憶體麼,執行緒跟程式的區別,記憶體的分片,多執行緒的標準(POSIX threads等),CPU的輪詢機制,鎖等,而這也常常是筆試、面試的內容。
計算機網路也是同理,做一個app,你必然要知道http的請求是怎麼發出來的吧?那麼TCP握手你也要了解,http報文格式?等等這些一系列相關的計算機網路知識,肯定也是要學的。
再說資料結構和演算法,這更是學計算機的基礎了,如果連二叉樹,堆,圖,連結串列,陣列這些基本的資料結構都不瞭解的話,那筆試肯定是過不了的。而演算法,雖然對於iOS開發者來說要求沒這麼高,但是也要知道一點。
資料庫也很重要,因為我們之後的開發會用到它,如果你會sql語句,絕對是你面試的加分項。
以上是計算機基礎。
而對於iOS開發而言,你需要學習什麼呢?
ObjC是一定要學的,而Swift是可選的。在大公司裡,還是以ObjC作為主要的開發語言,所以你懂得。
UIkit裡面常用的控制元件你要知道怎麼用,比如tableView,label,button等等。
NSURLConnection&&NSURLSession
GCD&&NSOperation相關的類
block原理,可以看我寫的另一篇文章,點這
記憶體管理
runloop
runtime
ARC&&MRC
等等
面試前該怎麼臨時抱佛腳?
首先要有自信,相信自己是很出色的,不要膽怯。
既然你是抱著拿BAT的心態去的,那就去刷往年的BAT筆試題吧。
然後多去網上看看BAT的面經,我覺得這就足夠了,記住,保持良好的心態。
我已經大三了,是不是來不及在秋招前學習了?
來得及,來得及,來得及,重要的事講三遍。
算算時間,現在4月中旬,9月秋招,中途5個月,你每天像高考一樣花個7、8個小時去系統性地學習第一點提到的東西,我覺得時間是完全夠的。只要你有恆心,結果肯定會是好的。如果時間真的來不及,對於基礎知識可以先簡單瞭解下,重點學習iOS相關知識點。
如何能拿到Special Offer
往往到了一定水平之後,許多公司會向你伸出他們的橄欖枝,而這也是你拿Special Offer的資本。
我認為最重要的是要有全棧的視角並且在某一領域具有足夠的深度。
這句話該怎麼理解呢?
試想一下,任何一家公司,憑什麼給你相對於其他應屆生更高的價格?
你所需要達到的是成為滿足這家公司需要的人才,而這往往是社招的目的。那麼問題就簡單了,你要達到工作好幾年的開發者的水平,這樣才能拿到Special Offer。
以我自己的經歷來說,提早出去實習,獲得更多的工作經驗,則是最好的辦法。
因為在工作中你才有機會去學習除iOS之外的東西,並且只有實踐才能讓你在iOS道路上踩過坑,獲取難能可貴的經驗。
舉個很簡單的例子,一個二面的面試官,他也許是一個業務線的老闆,他不關心你是安卓還是iOS,當他問你,你如何實現push?
如果你只回答出你作為iOS開發者所知道的APNS,那麼你就只能拿到批發價Offer了。
但是此時你卻回答APNS之外,還回答出安卓的push機制,更牽涉到保護push程式,程式復活等等相關內容,試想一下,面試官是不是會露出滿意的笑容呢。
如果此時你在回答出服務端對於APNS的處理,拿到蘋果的p12,完成非對稱加密驗證,並說出蘋果CA證書原理。你猜面試官是什麼樣的表情呢?
淺談我面試中的經歷
先談談實習面試經歷吧,實習面試我只面了阿里巴巴。
筆試
參加線上筆試,前面是一堆考察計算機基礎的選擇題(讀了上面提到的書,肯定沒問題的),夾雜一些ObjC語法。大題目的話,就考察怎麼優化app,怎麼讓啟動時間變短類似,具體我忘了,時間有點久了。
一面
一面問了tableview,cell的複用,懶載入,GCD&&NSOperation,autolayout等等,基本上都是很基礎的iOS知識。
二面
沒什麼可說的,就是問你做過的專案,問問你遇到的坑,怎麼解決。
三面
HR面就比較隨便了,就聊聊人生。
在談談正式秋招面試經歷
首先談談百度:
一面
我印象很深刻是一個妹子面我的。
iOS響應鏈
SDWebImage原理
AFNetworking原理
tableview相關
二面
二面就把我面的想哭了。
AutoreleasePool原理,什麼時候釋放
Runloop是什麼,是不是會自動建立,mode,source
Runtime,如何用runtime進行hook,hotpatch就是利用runtime來做的
然後就是HR面了
騰訊:
騰訊是最蛋疼的,我準備了好久的iOS的知識點,結果一個都沒問,全是問計算機基礎的。
一面
計算機網路五層模型是哪五層
http協議相關
有1000億個數字,在單機上對它進行排序
二面
手寫氣泡排序程式碼
如何統計一個城市的井蓋數,方法越多越好
兩個水桶,一個3L,一個5L,然後問能組裝成幾L的水
技術面結束了
阿里:
前文提到,阿里“擁抱變化”,集團由於人才調整,沒有HC,於是我離開了阿里,後來阿里又給我發了Offer。
總結:
其實BAT Offer也沒有很難,只要你想拿,很想拿,很想很想拿,那麼,它一定會向你伸出橄欖枝的!
歡迎大家關注微博@kuailejim