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

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

也許面試官本身也沒本身實現過,畢竟有些東西蘋果爲何這樣設計,若不是蘋果公司的工程師沒法知道。編程

但做爲面試者,這個些問題正是拉開差距的最好辦法:不必定要你親手用C去重現蘋果的機制,但能夠談談你的看法和見解。因此,這一塊最好有個準備。多線程

1. 用法實踐篇

通常,會問你怎麼實現某個模塊,用過哪些API,介紹下他們的用法。架構

  • 你之前的項目架構是怎樣的?框架

  • 你是如何數據建模的?動畫

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

  • 你用過哪些動畫效果?設計

  • 你怎麼處理圖片加載的?3d

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

2. 思考看法篇

可是,還有的喜歡問你OC語法各類高級特性如Runtime動態性,以及你平時常常用的某個方法,若是我讓你本身寫本身實現,你以爲它是怎麼實現的?

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

  • 你平時copy用的多嗎?何時會用?關於copy的其它特性你有了解過嗎,好比說引用計數和內存管理方面,你能不能說說看?若是我讓你本身寫個copy的方法,你以爲copy這個方法是怎麼實現的?

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

  • 多線程編程你有過了解嗎?關於多線程有哪些方法?線程和進程有什麼區別?爲何要用多線程?分別最多能夠開多少進程和線程?你以爲GCD裏面的開啓線程的操做是怎麼實現的?還有線程切換的操做你以爲是怎麼實現的?

  • 內存管理你瞭解多少?我知道你提到了ARC和strong,retain等等一些東西,但你以爲在ARC以前的MRC是怎麼實現內存管理的?ARC又是怎麼實現內存管理的?還有,你以爲OC中操做內存的這些方法是怎麼實現的?

  • 好的,你剛纔提到了FMDB,能介紹你用過它的哪些類?作了些什麼事情?在你的項目中是怎麼用到它的?你以爲它和CoreData的區別是什麼?還能說說其它有關數據模型的一些框架嗎?它們是怎麼實現數據存儲功能的?實現數據存儲的時候各自有什麼共同點和區別?

3. 後面的話

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

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

相關文章
相關標籤/搜索