探秘百度移動(dòng)面試 iOS試題分享
百度移動(dòng)云可穿戴部門的面試經(jīng)歷,面試官都非常熱情友好,一上來到弄的我挺不好意思的。下面記錄一下自己的面試過程,因?yàn)槲艺娴臎]啥面試經(jīng)驗(yàn),需要總結(jié)下。
1面
- Objective C runtime library:Objective C的對(duì)象模型,block的底層實(shí)現(xiàn)結(jié)構(gòu),消息發(fā)送,消息轉(zhuǎn)發(fā),這些都需要背后C一層的描述,內(nèi)存管理。
- Core Data:中多線程中處理大量數(shù)據(jù)同步時(shí)的操作。
- Multithreading:什么時(shí)候處理多線程,幾種方式,優(yōu)缺點(diǎn)。
- Delegate, Notification,KVO, other 優(yōu)缺點(diǎn)
runtime有一點(diǎn)追問,category,method 的實(shí)現(xiàn)機(jī)制,class的載入過程。 1面整體感覺不錯(cuò),40分鐘不到,感覺回答的還可以。被通知一會(huì)兒二面。
2面
二面的時(shí)間非常長(zhǎng),差不多將近3個(gè)小時(shí),直接面到快下班了。1面問的主要是知識(shí)點(diǎn)。2面問主要考察的是設(shè)計(jì)解決方案的能力,另外輔助追問的方式,考 察深度和廣度,回答過程中需要列出適合的具體例子,方案還需要細(xì)致到具體的關(guān)鍵的函數(shù)名稱,方法。另外考察設(shè)計(jì)模式的理解,***還考了算法。因?yàn)闀r(shí)間太長(zhǎng),這里記錄一些重要的問題。
- 設(shè)計(jì)一個(gè)progress bar解決方案,追問到 Core Graphic、CGPath、maskLayer。
- 設(shè)計(jì)一個(gè)popup view被追問到 keyWindow、UIWindow的layer、UIView hierarchy。
- 從設(shè)計(jì)模式的角度分析Delegate、Notification、KVO的區(qū)別。被追問到自己寫的library和開源的項(xiàng)目中用到哪些設(shè)計(jì)模式,為什么使用,有哪些好處和壞處,現(xiàn)在能否改進(jìn)。
- 算是問題3的追問,設(shè)計(jì)一個(gè)方案來檢測(cè)KVO的同步異步問題。willChange和 didChange的不同點(diǎn),然后被追問到有沒有其他地方也有類似情況,被追問到Core Data 中falut object。
- 這個(gè)是問題4的追問,設(shè)計(jì)一個(gè)KVO系統(tǒng)。
- Multithreading,什么時(shí)候采用Multithreading方案,以及理由。追問到系統(tǒng)還有哪些在后臺(tái)運(yùn)行的thread,被追問到view life cycle、iOS6之后的不同以及內(nèi)存管理。
- Multithreading中常常遇到的問題,追問到死鎖,優(yōu)先級(jí)翻轉(zhuǎn),線程池等。
- 百度有一個(gè)億級(jí)別的APP需要統(tǒng)計(jì)用戶行為的日志系統(tǒng)。不使用數(shù)據(jù)庫(kù),只是使用普通文件,設(shè)計(jì)一個(gè)系統(tǒng)。被追問到內(nèi)存映射文件。這個(gè)問題本來是服務(wù)器的問題,我表示從來沒做過,回答很瞎。
算法考了2個(gè)。一個(gè)是如何求2個(gè)集合的交集。另一個(gè)是百億數(shù)據(jù)中查找相同的數(shù)字以及出現(xiàn)的次數(shù)。
***還補(bǔ)充了幾個(gè)小問題
- 自己對(duì)可穿戴設(shè)備的感受
- 自己如果進(jìn)入這個(gè)team,自己準(zhǔn)備做那方面的事情
- 為什么創(chuàng)業(yè),自己未來規(guī)劃
一會(huì)被告知3面,但是因?yàn)樘恚s到次日下午3面。
3面
3面的時(shí)間和1面差不多40分鐘,問了幾個(gè)問題,主要是考察精神層面的東西。
- 為什么做Windows Mobile
- 為什么改iOS
- 為什么來百度
- 為什么iPhone 可以成功,那些吸引你
- 如何看待AppStore 現(xiàn)在的生態(tài)圈
后面就是他說的多一些,介紹團(tuán)隊(duì)遇到的困難以及14年團(tuán)隊(duì)的打算。***他給了我2句話的評(píng)價(jià),我覺得還是蠻對(duì)的。
- 選擇的時(shí)候都是經(jīng)過深思熟慮的
- 有野心,wanna make a difference
有意思的是,他說他也wanna make a difference。
總結(jié)
整體還是挺尷尬的,幾乎所有的知識(shí)點(diǎn)都是1,2年前積累的,13年積累的東西基本上沒有,都是一些虛的東西。 2面挺好的,暴露了自己不少問題,設(shè)計(jì)模式那部分幾乎沒有概念了。
***
面試通過,我個(gè)人覺得2面我的問題在思考設(shè)計(jì)模式上面少,另外在window hierarchy 上面有不足。設(shè)計(jì) KVO 上面在 didChange上面考慮不足。這些都是被當(dāng)場(chǎng)戳穿的。 有一點(diǎn)疑慮的是整個(gè)面試中并沒有問到Core Animation。這個(gè)還是我蠻喜歡的部分。Anyway 個(gè)人很喜歡追問的方式,很容易考察出來理解的深度和廣度。
整個(gè)面試收獲很大,發(fā)現(xiàn)了很多不足。另外1,2面的面試題目個(gè)人覺得也不錯(cuò)。這里分享給大家。