前言:TMD某T的iOS高階開發崗第三面,下面記錄這次面試的回憶以作日後複習。
一、自我介紹
簡單介紹一下你自己吧
- 解析:簡單介紹下自己的名字,教育背景,現在的工作,做過的專案
二、自我介紹衍生的口頭問題
講講下你在你專案中做過的優化或者技術難點
- 題外話:這種問題最好各人自己找問題講講,不多,提前準備一個你專案中非常擅長並熟悉的點,即可。
三、程式設計題:實現以下功能
- 編寫一個自定義類:Person,父類為NSObject
- 該類有兩個屬性,外部只讀的屬性
name
,還有一個屬性age
- 為該類編寫一個初始化方法
initWithName:(NSString *)nameStr
,並依據該方法引數初始化name
屬性。
- 如果兩個Person類的name相等,則認為兩個Person相等
四、由程式設計題衍生的口頭題目
- 怎樣實現外部只讀的屬性,讓它不被外部篡改
- nonatomic是非原子操作符,為什麼要這樣,atomic為什麼不行?有人說能atomic耗記憶體,你覺得呢?保讀寫安全嗎,能保證執行緒安全嗎?有的人說atomic並不能保證執行緒安全,你覺得他們的出發點是什麼,你認同這個說法嗎?
- 你在初始化的方法中為什麼將引數賦給_name,為什麼這樣寫就能訪問到屬性宣告的示例變數?
- 初始化方法中的_name是在什麼時候生成的?分配記憶體的時候嗎?還是初始化的時候?
- 作為return的self是在上面時候生成的?
- 為什麼用copy,哪些情況下用copy?
五、另外聊到的實際開發問題
-
你平時有做過優化記憶體的哪些工作?怎樣避免記憶體消耗的大戶?
-
你怎樣實現執行緒安全的?這些執行緒安全的辦法和atomic有什麼不一樣?atomic的實現機制是怎樣
六、後面的話
以上是題目的回憶版,讀到這裡讀者可以自己找答案。