百度移動云可穿戴部門的面試經歷扳抽,面試官都非常熱情友好,一上來反倒弄的我挺不好意思的殖侵。下面記錄一下自己的面試過程贸呢,因為我真的沒啥面試經驗,需要總結下拢军。
一面
Objective C runtime library:Objective C的對象模型楞陷,block的底層實現(xiàn)結構,消息發(fā)送茉唉,消息轉發(fā)固蛾,這些都需要背后C一層的描述,內存管理赌渣。
Core Data:中多線程中處理大量數(shù)據(jù)同步時的操作。
Multithreading:什么時候處理多線程昌犹,幾種方式坚芜,優(yōu)缺點。
Delegate斜姥, Notification鸿竖,KVO, other 優(yōu)缺點
runtime有一點追問铸敏,category缚忧,method 的實現(xiàn)機制,class的載入過程杈笔。
1面整體感覺不錯闪水,40分鐘不到,感覺回答的還可以蒙具。被通知一會兒二面球榆。
二面
二面的時間非常長朽肥,差不多將近3個小時,直接面到快下班了持钉。1面問的主要是知識點衡招。2面問主要考察的是設計解決方案的能力,另外輔助追問的方式每强,考察深度和廣度始腾,回答過程中需要列出適合的具體例子,方案還需要細致到具體的關鍵的函數(shù)名稱空执,方法浪箭。另外考察設計模式的理解,最后還考了算法脆烟。因為時間太長山林,這里記錄一些重要的問題。
設計一個progress bar解決方案邢羔,追問到 Core Graphic驼抹、CGPath、maskLayer拜鹤。
設計一個popup view被追問到 keyWindow框冀、UIWindow的layer、UIView hierarchy敏簿。
從設計模式的角度分析Delegate明也、Notification、KVO的區(qū)別惯裕。被追問到自己寫的library和開源的項目中用到哪些設計模式温数,為什么使用,有哪些好處和壞處蜻势,現(xiàn)在能否改進撑刺。
算是問題3的追問,設計一個方案來檢測KVO的同步異步問題握玛。willChange和 didChange的不同點够傍,然后被追問到有沒有其他地方也有類似情況,被追問到Core Data 中falut object挠铲。
這個是問題4的追問冕屯,設計一個KVO系統(tǒng)。
Multithreading拂苹,什么時候采用Multithreading方案安聘,以及理由。追問到系統(tǒng)還有哪些在后臺運行的thread,被追問到view life cycle搞挣、iOS6之后的不同以及內存管理带迟。
Multithreading中常常遇到的問題,追問到死鎖囱桨,優(yōu)先級翻轉仓犬,線程池等。
百度有一個億級別的APP需要統(tǒng)計用戶行為的日志系統(tǒng)舍肠。不使用數(shù)據(jù)庫搀继,只是使用普通文件,設計一個系統(tǒng)翠语。被追問到內存映射文件叽躯。這個問題本來是服務器的問題,我表示從來沒做過肌括,回答很瞎点骑。
算法考了2個。一個是如何求2個集合的交集谍夭。另一個是百億數(shù)據(jù)中查找相同的數(shù)字以及出現(xiàn)的次數(shù)黑滴。
最后還補充了幾個小問題
自己對可穿戴設備的感受
自己如果進入這個team,自己準備做那方面的事情
為什么創(chuàng)業(yè)紧索,自己未來規(guī)劃
一會被告知3面袁辈,但是因為太晚,約到次日下午3面珠漂。
三面
3面的時間和1面差不多40分鐘晚缩,問了幾個問題,主要是考察精神層面的東西媳危。
為什么做Windows Mobile
為什么改iOS
為什么來百度
為什么iPhone 可以成功荞彼,那些吸引你
如何看待AppStore 現(xiàn)在的生態(tài)圈
后面就是他說的多一些,介紹團隊遇到的困難以及14年團隊的打算待笑。最后他給了我2句話的評價鸣皂,我覺得還是蠻對的导俘。
選擇的時候都是經過深思熟慮的
有野心墩虹,wanna make a difference
有意思的是,他說他也wanna make a difference。
總結
整體還是挺尷尬的椎侠,幾乎所有的知識點都是1,2年前積累的措拇,13年積累的東西基本上沒有我纪,都是一些虛的東西。
2面挺好的,暴露了自己不少問題浅悉,設計模式那部分幾乎沒有概念了趟据。
最后
面試通過,我個人覺得2面我的問題在思考設計模式上面少术健,另外在window hierarchy 上面有不足汹碱。設計 KVO 上面在 didChange上面考慮不足。這些都是被當場戳穿的荞估。
有一點疑慮的是整個面試中并沒有問到Core Animation咳促。這個還是我蠻喜歡的部分。Anyway 個人很喜歡追問的方式勘伺,很容易考察出來理解的深度和廣度跪腹。
整個面試收獲很大,發(fā)現(xiàn)了很多不足飞醉。另外1冲茸,2面的面試題目個人覺得也不錯。這里分享給大家缅帘。
1轴术、如何令自己所寫的對象具有拷貝功能?
2、說說你理解weak屬性股毫?
3膳音、題目:Swift mutating關鍵字的使用?
4铃诬、UIView和CALayer是什么關系?
5祭陷、下面的代碼輸出什么?
6趣席、@synthesize 和 @dynamic 分別有什么作用兵志?
7、動態(tài)綁定
8宣肚、Category(類別)想罕、 Extension(擴展)和繼承的區(qū)別
9、為什么代理要用weak霉涨?代理的delegate和dataSource有什么區(qū)別按价?block和代理的區(qū)別?
10笙瑟、id和NSObject*的區(qū)別
11楼镐、如何令自己所寫的對象具有拷貝功能?
12、使用系統(tǒng)的某些block api(如UIView的block版本寫動畫時)往枷,是否也考慮引用循環(huán)問題框产?
13凄杯、用@property聲明的NSString(或NSArray,NSDictionary)經常使用copy關鍵字秉宿,為什么戒突?如果改用strong關鍵字,可能造成什么問題描睦?
14膊存、UIView和 CALayer是什么關系?
15、static有什么作用?
底層:
16忱叭、main()之前的過程有哪些膝舅?
17、KVO基本原理窑多?
18仍稀、Swift 下的如何使用 KVC?
19、:Swift有哪些模式匹配埂息?
20技潘、objc在向一個對象發(fā)送消息時,發(fā)生了什么千康?
21享幽、靜態(tài)庫的原理是什么?你有沒有自己寫過靜態(tài)編譯庫拾弃,遇到了哪些問題值桩?
22、runloop是來做什么的豪椿?runloop和線程有什么關系奔坟?主線程默認開啟了runloop么?子線程呢搭盾?
23咳秉、不手動指定autoreleasepool的前提下,一個autorealese對象在什么時刻釋放鸯隅?(比如在一個vc的viewDidLoad中創(chuàng)建
24澜建、不手動指定autoreleasepool的前提下,一個autorealese對象在什么時刻釋放蝌以?(比如在一個vc的viewDidLoad中創(chuàng)建)
25炕舵、OC完整的消息轉發(fā)機制+代碼實現(xiàn)【暴擊】
答案:
由于答案太多,我做了一個PDF文檔跟畅,由于簡書不能上傳文件咽筋,,由于文章有限碍彭,需要這些文檔的晤硕,點擊 iOS中高級進階之路
免費領取