一、美團
對基礎知識考察較多。
熟悉屬性、類、屬性的修飾符的含義,等等。
Learn More,See:https://item.m.jd.com/product/10273460812.html?utm_source=androidapp&utm_medium=appshare&utm_campaign=t_335139774
看完該書,對于基礎知識的面試基本沒啥難題。如果英文水平過硬,建議看英文版的,淺顯易懂,能讓你逐句閱讀,細較每一句話每一個單詞的含義。
美團的氛圍很好,環境高大上,面試官和藹可親,善于分享。
二、京東
在多線程、內存管理方面考察較多。
三、今日頭條
對基礎知識考察較多。
熟悉OC常見基礎知識。
頭條面試官是最先啟蒙我看哪本書的。感謝!
四、百度
對簡歷上所寫知識要求掌握,考基礎算法,發散思維。
五、人人
對基礎控件的使用考察較多,如分享控件等。
六、58同城
更看重做的項目吧,還有對算法的了解。
簡單附一下,遇到的面試題。
1.property各個修飾符的作用?
2.可變數組和不可變數組的區別?
https://juejin.cn/post/6844903735651647502
NSArray是一個靜態數組,不能修改該數組中的元素,也不能添加元素。
NSMutableArray則對應的可修改、可添加元素。
NSArray是線程安全的;
NSMutableArray多線程的時候自己加鎖,一般NSMutableArray內部用,然后copy出一個NSArray做為接口暴露給別人。
3.ARC的對象在什么時候釋放?
dealloc的時候
4.UIView的block為什么不需要處理循環引用?
所以UIView的動畫block不會造成循環引用的原因就是,這是個類方法,當前控制器不可能強引用一個類,所以循環無法形成。
https://www.zhihu.com/question/36358590
美團
5.引用計數器的實現原理
6.深拷貝和淺拷貝的區別及實現
https://juejin.cn/post/6844903735651647502
7.OC的方法調用是消息機制
http://www.cocoachina.com/ios/20141018/9960.html
首先,編譯器將代碼[obj makeText];轉化為objc_msgSend(obj, @selector (makeText));,在objc_msgSend函數中。首先通過obj的isa指針找到obj對應的class。在Class中先去cache中通過SEL查找對應函數method(猜測cache中method列表是以SEL為key通過hash表來存儲的,這樣能提高函數查找速度),若cache中未找到。再去methodList中查找,若methodlist中未找到,則取superClass中查找。若能找到,則將method加入到cache中,以方便下次查找,并通過method中的函數指針跳轉到對應的函數中去執行。
8.KVO實現原理
原類Person生成一個派生類NSKVONotifying_Person,在派生類里邊重寫setter方法,改變原來的屬性值,將原類的isa指針指向派生類,觀察者監聽派生類里邊值的改變。
http://www.lxweimin.com/p/829864680648
9.翻轉單鏈表
public?ListNode?reverseList(ListNode head)?{???
????ListNode p = null;????
? ? ListNode?q?=?head;????
????while?(q?!= null)?{???
????????ListNode?t?=?q.next;?
????????q.next?=?p;?
? ? ? ? p?=?q;?
? ? ? ? q?=?t;?
????}?
return?p;?
?}?
https://developer.51cto.com/art/202002/610190.htm
10.為什么xib或storyboard中定義的label屬性是weak,而純代碼定義需要用strong
這是因為interface Builder實現時label等視圖是故事板或xib文件中定義的,當應用程序啟動時會根據故事板或xib文件描述創建label等視圖對象,對象所有權在故事板或xib,它們對label等視圖是強引用。由于對象所有權不是視圖控制器,因此在視圖控制器中使用它時不能定義為strong,只能定義為weak,但是對于純代碼,label的所有權屬于視圖控制器,所以要用strong
11.dispatch_get_current_queue()被廢棄的原因
http://blog.csdn.net/yiyaaixuexi/article/details/17752925
但當target queue恰好是current queue時,同步阻塞會導致死鎖。
12.給類別添加屬性
http://www.cnblogs.com/cleven/p/5255419.html
美團
13.怎么將nil添加到數組中?
(1)@“nil”
(2)結構體,將結構體作為一個類的屬性,添加進去
(3)添加 [NSNull null]
14.isKindOfClass 和 isMemberOfClass的區別
京東
15.怎么拷貝一個數組中的數組
16.JavaScriptCore是干什么的?
17.單例是否總是只會創建一個實例?
NO!多線程時可能會發生創建多個單例的情況。
18.有幾種鎖
(1)@synchronize{}
? (2) NSLock
19.http://www.lxweimin.com/p/841f60876180
20.類和結構體的區別
結構體不能添加方法,當然swift除外。