iOS面試經驗

一、美團

對基礎知識考察較多。

熟悉屬性、類、屬性的修飾符的含義,等等。

Learn More,See:https://item.m.jd.com/product/10273460812.html?utm_source=androidapp&utm_medium=appshare&utm_campaign=t_335139774

or?https://item.m.jd.com/product/1107907589.html?utm_source=androidapp&utm_medium=appshare&utm_campaign=t_335139774

看完該書,對于基礎知識的面試基本沒啥難題。如果英文水平過硬,建議看英文版的,淺顯易懂,能讓你逐句閱讀,細較每一句話每一個單詞的含義。

美團的氛圍很好,環境高大上,面試官和藹可親,善于分享。

二、京東

在多線程、內存管理方面考察較多。

See:https://item.m.jd.com/product/11290076347.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除外。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 一、基本數據類型 注釋 單行注釋:// 區域注釋:/* */ 文檔注釋:/** */ 數值 對于byte類型而言...
    龍貓小爺閱讀 4,288評論 0 16
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,033評論 25 708
  • *面試心聲:其實這些題本人都沒怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個offer,總結起來就是把...
    Dove_iOS閱讀 27,204評論 30 471
  • 這是一部從編劇到表演都很燃的一部劇。我在想為什么電影的名字叫《戰狼》,不叫《戰虎》或者《戰豹》呢。 我最近看了三本...
    宜愛閱讀 594評論 2 6
  • 荷花,我來了。與你赴這一個夏日的約定。層層疊疊、遠遠近近、高高低低、一望無際的荷花淀呀,宛若一片荷花的海洋。 荷葉...
    第一滴露珠閱讀 558評論 16 17