某TMD公司iOS高階工程師面試回憶

陳滿iOS發表於2018-06-20

前言:TMD某T的iOS高階開發崗第三面,下面記錄這次面試的回憶以作日後複習。

一、自我介紹

簡單介紹一下你自己吧

  • 解析:簡單介紹下自己的名字,教育背景,現在的工作,做過的專案

二、自我介紹衍生的口頭問題

講講下你在你專案中做過的優化或者技術難點

  • 題外話:這種問題最好各人自己找問題講講,不多,提前準備一個你專案中非常擅長並熟悉的點,即可。

三、程式設計題:實現以下功能

  1. 編寫一個自定義類:Person,父類為NSObject
  1. 該類有兩個屬性,外部只讀的屬性name,還有一個屬性age
  1. 為該類編寫一個初始化方法 initWithName:(NSString *)nameStr,並依據該方法引數初始化name屬性。
  1. 如果兩個Person類的name相等,則認為兩個Person相等

四、由程式設計題衍生的口頭題目

  1. 怎樣實現外部只讀的屬性,讓它不被外部篡改
  1. nonatomic是非原子操作符,為什麼要這樣,atomic為什麼不行?有人說能atomic耗記憶體,你覺得呢?保讀寫安全嗎,能保證執行緒安全嗎?有的人說atomic並不能保證執行緒安全,你覺得他們的出發點是什麼,你認同這個說法嗎?
  1. 你在初始化的方法中為什麼將引數賦給_name,為什麼這樣寫就能訪問到屬性宣告的示例變數?
  1. 初始化方法中的_name是在什麼時候生成的?分配記憶體的時候嗎?還是初始化的時候?
  1. 作為return的self是在上面時候生成的?
  1. 為什麼用copy,哪些情況下用copy?

五、另外聊到的實際開發問題

  1. 你平時有做過優化記憶體的哪些工作?怎樣避免記憶體消耗的大戶?

  2. 你怎樣實現執行緒安全的?這些執行緒安全的辦法和atomic有什麼不一樣?atomic的實現機制是怎樣

六、後面的話

以上是題目的回憶版,讀到這裡讀者可以自己找答案。

相關文章