百度招iOS開發(fā)面試的問題

看看百度招iOS開發(fā)面試的問題,你能答對多少

1面

Objective C runtime library:Objective C的對象模型,block的底層實現結構,消息發(fā)送,消息轉發(fā),這些都需要背后C一層的描述,內存管理。

Core Data:中多線程中處理大量數據同步時的操作。

Multithreading:什么時候處理多線程,幾種方式,優(yōu)缺點。

Delegate, Notification,KVO, other 優(yōu)缺點

runtime有一點追問,category,method 的實現機制,class的載入過程。 1面整體感覺不錯,40分鐘不到,感覺回答的還可以。被通知一會兒二面。

2面

二面的時間非常長,差不多將近3個小時,直接面到快下班了。1面問的主要是知識點。2面問主要考察的是設計解決方案的能力,另外輔助追問的方式,考察深度和廣度,回答過程中需要列出適合的具體例子,方案還需要細致到具體的關鍵的函數名稱,方法。另外考察設計模式的理解,最后還考了算法。因為時間太長,這里記錄一些重要的問題。

設計一個progress bar解決方案,追問到 Core Graphic、CGPath、maskLayer。

設計一個popup view被追問到 keyWindow、UIWindow的layer、UIView hierarchy。

從設計模式的角度分析Delegate、Notification、KVO的區(qū)別。被追問到自己寫的library和開源的項目中用到哪些設計模式,為什么使用,有哪些好處和壞處,現在能否改進。

算是問題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)。不使用數據庫,只是使用普通文件,設計一個系統(tǒng)。被追問到內存映射文件。這個問題本來是服務器的問題,我表示從來沒做過,回答很瞎。

算法考了2個。一個是如何求2個集合的交集。另一個是百億數據中查找相同的數字以及出現的次數。

最后還補充了幾個小問題

自己對可穿戴設備的感受

自己如果進入這個team,自己準備做那方面的事情

為什么創(chuàng)業(yè),自己未來規(guī)劃

一會被告知3面,但是因為太晚,約到次日下午3面。

3面

3面的時間和1面差不多40分鐘,問了幾個問題,主要是考察精神層面的東西。

為什么做Windows Mobile

為什么改iOS

為什么來百度

為什么iPhone 可以成功,那些吸引你

如何看待AppStore 現在的生態(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ā)現了很多不足。另外1,2面的面試題目個人覺得也不錯。這里分享給大家。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容