一、美團(tuán)
對基礎(chǔ)知識考察較多憔辫。
熟悉屬性趣些、類、屬性的修飾符的含義贰您,等等坏平。
Learn More拢操,See:https://item.m.jd.com/product/10273460812.html?utm_source=androidapp&utm_medium=appshare&utm_campaign=t_335139774
看完該書,對于基礎(chǔ)知識的面試基本沒啥難題舶替。如果英文水平過硬令境,建議看英文版的,淺顯易懂顾瞪,能讓你逐句閱讀舔庶,細(xì)較每一句話每一個(gè)單詞的含義。
美團(tuán)的氛圍很好陈醒,環(huán)境高大上惕橙,面試官和藹可親,善于分享钉跷。
二弥鹦、京東
在多線程、內(nèi)存管理方面考察較多爷辙。
三彬坏、今日頭條
對基礎(chǔ)知識考察較多。
熟悉OC常見基礎(chǔ)知識犬钢。
頭條面試官是最先啟蒙我看哪本書的苍鲜。感謝思灰!
四玷犹、百度
對簡歷上所寫知識要求掌握,考基礎(chǔ)算法洒疚,發(fā)散思維歹颓。
五、人人
對基礎(chǔ)控件的使用考察較多油湖,如分享控件等巍扛。
六、58同城
更看重做的項(xiàng)目吧乏德,還有對算法的了解撤奸。
簡單附一下,遇到的面試題喊括。
1.property各個(gè)修飾符的作用胧瓜?
2.可變數(shù)組和不可變數(shù)組的區(qū)別?
https://juejin.cn/post/6844903735651647502
NSArray是一個(gè)靜態(tài)數(shù)組郑什,不能修改該數(shù)組中的元素府喳,也不能添加元素。
NSMutableArray則對應(yīng)的可修改蘑拯、可添加元素钝满。
NSArray是線程安全的兜粘;
NSMutableArray多線程的時(shí)候自己加鎖,一般NSMutableArray內(nèi)部用弯蚜,然后copy出一個(gè)NSArray做為接口暴露給別人孔轴。
3.ARC的對象在什么時(shí)候釋放?
dealloc的時(shí)候
4.UIView的block為什么不需要處理循環(huán)引用熟吏?
所以UIView的動(dòng)畫block不會造成循環(huán)引用的原因就是距糖,這是個(gè)類方法,當(dāng)前控制器不可能強(qiáng)引用一個(gè)類牵寺,所以循環(huán)無法形成悍引。
https://www.zhihu.com/question/36358590
美團(tuán)
5.引用計(jì)數(shù)器的實(shí)現(xiàn)原理
6.深拷貝和淺拷貝的區(qū)別及實(shí)現(xiàn)
https://juejin.cn/post/6844903735651647502
7.OC的方法調(diào)用是消息機(jī)制
http://www.cocoachina.com/ios/20141018/9960.html
首先,編譯器將代碼[obj makeText];轉(zhuǎn)化為objc_msgSend(obj, @selector (makeText));帽氓,在objc_msgSend函數(shù)中趣斤。首先通過obj的isa指針找到obj對應(yīng)的class。在Class中先去cache中通過SEL查找對應(yīng)函數(shù)method(猜測cache中method列表是以SEL為key通過hash表來存儲的黎休,這樣能提高函數(shù)查找速度)浓领,若cache中未找到。再去methodList中查找势腮,若methodlist中未找到联贩,則取superClass中查找。若能找到捎拯,則將method加入到cache中泪幌,以方便下次查找,并通過method中的函數(shù)指針跳轉(zhuǎn)到對應(yīng)的函數(shù)中去執(zhí)行署照。
8.KVO實(shí)現(xiàn)原理
原類Person生成一個(gè)派生類NSKVONotifying_Person祸泪,在派生類里邊重寫setter方法,改變原來的屬性值建芙,將原類的isa指針指向派生類没隘,觀察者監(jiān)聽派生類里邊值的改變。
http://www.reibang.com/p/829864680648
9.翻轉(zhuǎn)單鏈表
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
這是因?yàn)閕nterface Builder實(shí)現(xiàn)時(shí)label等視圖是故事板或xib文件中定義的禁荸,當(dāng)應(yīng)用程序啟動(dòng)時(shí)會根據(jù)故事板或xib文件描述創(chuàng)建label等視圖對象右蒲,對象所有權(quán)在故事板或xib,它們對label等視圖是強(qiáng)引用赶熟。由于對象所有權(quán)不是視圖控制器瑰妄,因此在視圖控制器中使用它時(shí)不能定義為strong,只能定義為weak钧大,但是對于純代碼翰撑,label的所有權(quán)屬于視圖控制器,所以要用strong
11.dispatch_get_current_queue()被廢棄的原因
http://blog.csdn.net/yiyaaixuexi/article/details/17752925
但當(dāng)target queue恰好是current queue時(shí),同步阻塞會導(dǎo)致死鎖眶诈。
12.給類別添加屬性
http://www.cnblogs.com/cleven/p/5255419.html
美團(tuán)
13.怎么將nil添加到數(shù)組中涨醋?
(1)@“nil”
(2)結(jié)構(gòu)體,將結(jié)構(gòu)體作為一個(gè)類的屬性逝撬,添加進(jìn)去
(3)添加 [NSNull null]
14.isKindOfClass 和 isMemberOfClass的區(qū)別
京東
15.怎么拷貝一個(gè)數(shù)組中的數(shù)組
16.JavaScriptCore是干什么的浴骂?
17.單例是否總是只會創(chuàng)建一個(gè)實(shí)例?
NO宪潮!多線程時(shí)可能會發(fā)生創(chuàng)建多個(gè)單例的情況溯警。
18.有幾種鎖
(1)@synchronize{}
? (2) NSLock
19.http://www.reibang.com/p/841f60876180
20.類和結(jié)構(gòu)體的區(qū)別
結(jié)構(gòu)體不能添加方法,當(dāng)然swift除外狡相。