一面 (40min)
- 屬性關鍵字:atomic、nonatomic、strong、weak、assign、copy、retain、readOnly、readWrite(建議解釋一下各個關鍵詞,並且說明一下怎麼使用及其使用的坑點),readOnly和readWrite怎麼使用,weak的實現原理
- block用什麼關鍵字修飾,用copy和strong有什麼區別,對block有什麼瞭解,對block引用迴圈有什麼瞭解,__strong什麼情況下使用
- 對ARC有什麼瞭解,ARC的引用計數加一和減一怎麼實現的(該問題還可以延伸:編寫ARC和MRC情況下一個屬性的set和get方法)
- 對KVO和KVC有什麼瞭解。KVO的實現機制以及怎麼使用的,如果直接修改成員變數進行KVO會怎樣,什麼情況會觸發KVO,“=”賦值和KVC賦值會觸發KVO麼(通過willChangeValueForKey和didChangeValueForKey方法觸發)? KVC有那些方法,平常怎麼使用的?
- 對runtime有什麼瞭解,有怎麼使用runtime機制(該問題可以延伸提問iOS各種執行時使用的底層原理)
- __block有什麼瞭解,怎麼用,實現原理是什麼(實現原理不記得了)
- 程式設計題:尋找兩個view的最近公共父檢視
- UIView和CALayer有了解多少(因為了解的不多,所以沒有接下來的問題)
······一面問題有近二十個,都是基礎問題,最好不要答錯或答不出來,我感覺答對了8成左右吧,面試官不是很滿意······
二面 (30min)
- 先簡單自我介紹
- 單例的實現有幾種(只知道GCD的實現方式,汗顏)
- 多執行緒有幾種實現(NSTread,GCD,NSOperation),分別有什麼區別。專案中有用到那些多執行緒(還會針對你的回答進行深入討論)
- 如何對tableView滑動卡頓進行優化,對於微博的tableView的優化有什麼想法
- 有遇到哪些崩潰,都是怎麼解決的
- 死鎖?怎麼解決
- 有接觸過動畫麼,對coreAnimation有了解麼(因為沒怎麼接觸過動畫,所以也就不知道接下來會問什麼)
- 專案中可以拿出手的東西
······其實一面二面還有一些題目,當時比較緊張不太記得了(明明搜狐的面試都很淡定的)······
結論
一面就是一些基礎知識,只有有準備,基本都能答上來,二面則會深入一些。面試結束,面試官說領導不在,讓我回去等訊息(潛臺詞就是你以及掛了,快走吧)。感覺基礎知識還是有些沒答上來,後面多積累吧。綜合來說,百度的面試比搜狐的面試質量高多了,會細緻考察基礎知識,也會考察具體專案的細節,對個人技術積累和思考能力的測試很全面。百度不愧是大廠,面試還是有水平的,一般人進不去。很可惜面試沒過,以後再接再厲吧,爭取兩年後再去百度面試(在此立貼為證)