五月這一篇百度 iOS 面試總結轟動整個開發界【頭條熱搜】

來源:互聯網
上載者:User

標籤:delegate   path   成功   優缺點   any   動畫   方法   api   演算法   

百度移動雲可穿戴部門的面試經曆,面試官都非常熱情友好,一上來反倒弄的我挺不好意思的。下面記錄一下自己的面試過程,因為我真的沒啥面試經驗,需要總結下。

一面

Objective C runtime library:Objective C的物件模型,block的底層實現結構,訊息發送,訊息轉寄,這些都需要背後C一層的描述,記憶體管理。

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

Multithreading:什麼時候處理多線程,幾種方式,優缺點。

Delegate, Notification,KVO, other 優缺點

runtime有一點追問,category,method 的實現機制,class的載入過程。

1面整體感覺不錯,40分鐘不到,感覺回答的還可以。被通知一會兒二面。

二面

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

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

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

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

算是問題3的追問,設計一個方案來檢測KVO的同步非同步問題。willChange和 didChange的不同點,然後被追問到有沒有其他地方也有類似情況,被追問到Core Data 中falut object。

這個是問題4的追問,設計一個KVO系統。

Multithreading,什麼時候採用Multithreading方案,以及理由。追問到系統還有哪些在後台啟動並執行thread,被追問到view life cycle、iOS6之後的不同以及記憶體管理。

Multithreading中常常遇到的問題,追問到死結,優先順序翻轉,線程池等。

百度有一個億層級的APP需要統計使用者行為的日誌系統。不使用資料庫,只是使用普通檔案,設計一個系統。被追問到記憶體對應檔。這個問題本來是伺服器的問題,我表示從來沒做過,回答很瞎。

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

最後還補充了幾個小問題

自己對穿戴式裝置的感受

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

為什麼創業,自己未來規劃

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

三面

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

為什麼做Windows Mobile

為什麼改iOS

為什麼來百度

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

如何看待AppStore 現在的生態圈

後面就是他說的多一些,介紹團隊遇到的困難以及14年團隊的打算。最後他給了我2句話的評價,我覺得還是蠻對的。

選擇的時候都是經過深思熟慮的

有野心,wanna make a difference

有意思的是,他說他也wanna make a difference。

總結

整體還是挺尷尬的,幾乎所有的知識點都是1,2年前積累的,13年積累的東西基本上沒有,都是一些虛的東西。

2面挺好的,暴露了自己不少問題,設計模式那部分幾乎沒有概念了。

最後

面試通過,我個人覺得2面我的問題在思考設計模式上面少,另外在window hierarchy 上面有不足。設計 KVO 上面在 didChange上面考慮不足。這些都是被當場戳穿的。

有一點疑慮的是整個面試中並沒有問到Core Animation。這個還是我蠻喜歡的部分。Anyway 個人很喜歡追問的方式,很容易考察出來理解的深度和廣度。

整個面試收穫很大,發現了很多不足。另外1,2面的面試題目個人覺得也不錯。這裡分享給大家。

1、如何令自己所寫的對象具有拷貝功能?

2、說說你理解weak屬性?

3、題目:Swift mutating關鍵字的使用?

4、UIView和CALayer是什麼關係?

5、下面的代碼輸出什嗎?

6、@synthesize 和 @dynamic 分別有什麼作用?

7、動態綁定

8、Category(類別)、 Extension(擴充)和繼承的區別

9、為什麼代理要用weak?代理的delegate和dataSource有什麼區別?block和代理的區別?

10、id和NSObject*的區別

11、如何令自己所寫的對象具有拷貝功能?

12、使用系統的某些block api(如UIView的block版本寫動畫時),是否也考慮引用迴圈問題?

13、用@property聲明的NSString(或NSArray,NSDictionary)經常使用copy關鍵字,為什嗎?如果改用strong關鍵字,可能造成什麼問題?

14、UIView和 CALayer是什麼關係?

15、static有什麼作用?

底層:

16、main()之前的過程有哪些?

17、KVO基本原理?

18、Swift 下的如何使用 KVC?

19、:Swift有哪些模式比對?

20、objc在向一個對象發送訊息時,發生了什嗎?

21、靜態庫的原理是什嗎?你有沒有自己寫過靜態編譯庫,遇到了哪些問題?

22、runloop是來做什麼的?runloop和線程有什麼關係?主線程預設開啟了runloop嗎?子線程呢?

23、不手動指定autoreleasepool的前提下,一個autorealese對象在什麼時刻釋放?(比如在一個vc的viewDidLoad中建立

24、不手動指定autoreleasepool的前提下,一個autorealese對象在什麼時刻釋放?(比如在一個vc的viewDidLoad中建立)

25、OC完整的訊息轉寄機制+代碼實現【暴擊】

答案:由於答案太多,我做了一個PDF文檔,由於不能上傳檔案,需要答案可以加小編的qq交流群776598941,在裡面擷取文檔,也歡迎招聘者,找工作的來,提供一個更大的平台

 

 

 

 

五月這一篇百度 iOS 面試總結轟動整個開發界【頭條熱搜】

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.