某PA科技iOS開發工程師面試回憶

陳滿iOS發表於2019-03-04

面試的時候你可能碰到面試官設的各種坑:不止喜歡問你iOS開發的一些特性和方法,更喜歡喜歡問你這些特性及方法你覺得它是怎麼實現的?你覺得蘋果公司為什麼要這樣設計?

也許面試官自己也沒自己實現過,畢竟有些東西蘋果為什麼這樣設計,若不是蘋果公司的工程師無法知道。

但作為面試者,這個些問題正是拉開差距的最好辦法:不一定要你親手用C去重現蘋果的機制,但可以談談你的見解和看法。所以,這一塊最好有個準備。

某PA科技iOS開發工程師面試回憶

1. 用法實踐篇

一般,會問你怎麼實現某個模組,用過哪些API,介紹下他們的用法。

  • 你以前的專案架構是怎樣的?

  • 你是如何資料建模的?

  • 你怎麼實現字典轉模型的?

  • 你用過哪些動畫效果?

  • 你怎麼處理圖片載入的?

  • 你有怎樣用過一些第三方庫的?

2. 思考見解篇

但是,還有的喜歡問你OC語法各種高階特性如Runtime動態性,以及你平時經常用的某個方法,如果我讓你自己寫自己實現,你覺得它是怎麼實現的?

  • 除了App應用程式的生命週期,ViewController的生命週期你知道嗎?它的生命週期是怎麼操作和控制的?你覺得這些操作的方法是怎麼實現的?它和App的生命週期的區別你說說看?

  • 你平時copy用的多嗎?什麼時候會用?關於copy的其它特性你有了解過嗎,比如說引用計數和記憶體管理方面,你能不能說說看?如果我讓你自己寫個copy的方法,你覺得copy這個方法是怎麼實現的?

  • 你有了解過執行時嗎?執行時是什麼?你覺得執行時的這些特性是怎麼實現的?動態性的這些特性在編譯和執行分別怎樣體現的?你平時程式設計的時候有怎樣利用過執行時的一些特性?

  • 多執行緒程式設計你有過了解嗎?關於多執行緒有哪些方法?執行緒和程式有什麼區別?為什麼要用多執行緒?分別最多可以開多少程式和執行緒?你覺得GCD裡面的開啟執行緒的操作是怎麼實現的?還有執行緒切換的操作你覺得是怎麼實現的?

  • 記憶體管理你瞭解多少?我知道你提到了ARC和strong,retain等等一些東西,但你覺得在ARC之前的MRC是怎麼實現記憶體管理的?ARC又是怎麼實現記憶體管理的?還有,你覺得OC中操作記憶體的這些方法是怎麼實現的?

  • 好的,你剛才提到了FMDB,能介紹你用過它的哪些類?做了些什麼事情?在你的專案中是怎麼用到它的?你覺得它和CoreData的區別是什麼?還能說說其它有關資料模型的一些框架嗎?它們是怎麼實現資料儲存功能的?實現資料儲存的時候各自有什麼共同點和區別?

3. 後面的話

這些問題是PA一個面試官問過的,聽說他是從百度公司跳槽出來的。可能吧,百度系出來的面試官真的喜歡問底層。

關於這些問題的答案,特別是關於自由發揮和獨立見解的部分,歡迎讀者在自己複習相關知識後,在評論區貼出你的見解。

相關文章