年前三面美團百度掛了,疫情間啃完阿里面試寶典,成功斬獲offer

??前言

年前沒有太多時間學習,面試百度、美團到三面就被刷下來了!

疫情期間啃完了這份美團大佬整理的iOS核心知識點,也看了不少馬士兵老師的視頻,本想著去試試,就面試了阿里,沒想到竟拿到了offer,定級P7

阿里的面試經歷

先介紹了項目,然后問了一些項目中的問題,然后開始問基礎

屬性的關鍵字

淺拷貝和深拷貝的區別

Block的循環引用、如何解決、原理

三種Block

Block和delegate的比較

kvo的實現原理

Autorelease pool的實現原理

消息轉發機制

線程死鎖的四個條件

進程和線程的區別

持久化

事務的特征

中途還討論了Masonry的約束應該寫在哪里,我說應該寫在layoutSubViews,他說會調用多次,然后爭論了一會兒

總結起來:面試官喜歡拋出一個大點,看你能講多廣多深

阿里二面 :40mins

介紹項目

性能優化

YYModel和AF源碼

如何自己設計json轉model

架構

迷之算法題

總結:阿里的面試效率是真的不提了,二面和一面間隔時間可能相差了一個月吧,我已經從北京回到了學校開始上課了,而且這次面試感覺有點奇怪,最后那道迷之算法題我們也有討論,實在沒搞懂計算兩點間的距離的算法還能怎樣優化,面試結束后我問了面試官最優解是怎樣的,面試官告訴我沒有最優,只有更優(微笑臉)

作為一個開發者,有一個學習的氛圍跟一個交流圈子特別重要,這是一個我的iOS交流群:761407670 進群密碼000,不管你是小白還是大牛歡迎入駐 ,分享BAT,阿里面試題、面試經驗,討論技術, 大家一起交流學習成長!


阿里三面:2h

一個安卓的面試官。。。。。

主要問了項目的一些東西 和給一些場景問我如何實現

自我介紹 介紹一些項目難點

主線程是相對于什么而言的

一張圖片的內存占用大小是由什么決定的

索引的作用

索引的優缺點

在數組中找最小的k個數

淘寶下拉加載更多如何優化

淘寶頁面發送HTTP請求的過程

介紹一下MVVM

知道哪些設計模式

總結:三面面試官主要就聊了一些具體場景問題和一些基礎,基礎我覺得沒太大問題。面試過程中我講到一些東西發現面試官聽不懂,才知道面試官是做安卓的,問一些問題其實有點讓我無語,但是總的來說還是回答過來了,感覺也沒有太大問題,但是后面還是被掛了,很無奈。


分享下,百度、美團的面試總結吧!

?runtime相關問題

runtime是iOS開發最核心的知識了,如果下面的問題都解決了,那么對runtime的理解已經很深了。runtime已經開源了,這有一份別人調試好可運行的源碼objc-runtime,也可以去官網找objc4


?結構模型

1.? 介紹下runtime的內存模型(isa、對象、類、metaclass、結構體的存儲信息等)

2.? 為什么要設計metaclass

3.? `class_copyIvarList` & `class_copyPropertyList`區別

4.? `class_rw_t` 和 `class_ro_t` 的區別

5.? `category`如何被加載的,兩個category的`load`方法的加載順序,兩個category的同名方法的加載順序

6.? `category` & `extension`區別,能給NSObject添加Extension嗎,結果如何

7.? 消息轉發機制,消息轉發機制和其他語言的消息機制優劣對比

8.? 在方法調用的時候,`方法查詢-> 動態解析-> 消息轉發` 之前做了什么

9.? `IMP`、`SEL`、`Method`的區別和使用場景

10.? `load`、`initialize`方法的區別什么?在繼承關系中他們有什么區別

11.? 說說消息轉發機制的優劣

? 內存管理

1.? `weak`的實現原理?`SideTable`的結構是什么樣的

2.? 關聯對象的應用?系統如何實現關聯對象的

3.? 關聯對象的如何進行內存管理的?關聯對象如何實現weak屬性

4.? `Autoreleasepool`的原理?所使用的的數據結構是什么

5.? `ARC`的實現原理?`ARC`下對`retain & release`做了哪些優化

6.? `ARC`下哪些情況會造成內存泄漏

? Runloop & KVO

? runloop

`runloop`對于一個標準的iOS開發來說都不陌生,應該說熟悉`runloop`是標配,下面就隨便列幾個典型問題吧

1.? app如何接收到觸摸事件的

2.? 為什么只有主線程的`runloop`是開啟的

3.? 為什么只在主線程刷新UI

4.? `PerformSelector`和`runloop`的關系

5.? 如何使線程保活

?KVO

同`runloop`一樣,這也是標配的知識點了,同樣列出幾個典型問題

1.? 實現原理

2.? 如何手動關閉kvo

3.? 通過KVC修改屬性會觸發KVO么

4.? 哪些情況下使用kvo會崩潰,怎么防護崩潰

5.? kvo的優缺點

? Block

1.? `block`的內部實現,結構體是什么樣的

2.? block是類嗎,有哪些類型

3.? 一個`int`變量被 `__block` 修飾與否的區別?block的變量截獲

4.? `block`在修改`NSMutableArray`,需不需要添加`__block`

5.? 怎么進行內存管理的

6.? `block`可以用`strong`修飾嗎

7.? 解決循環引用時為什么要用`__strong、__weak`修飾

8.? `block`發生`copy`時機

9.? `Block`訪問對象類型的`auto變量`時,在`ARC和MRC`下有什么區別

? 多線程

主要以GCD為主

1.? `iOS`開發中有多少類型的線程?分別對比

2.? `GCD`有哪些隊列,默認提供哪些隊列

3.? `GCD`有哪些方法api

4.? `GCD`主線程 & 主隊列的關系

5.? 如何實現同步,有多少方式就說多少

6.? `dispatch_once`實現原理

7.? 什么情況下會死鎖

8.? 有哪些類型的線程鎖,分別介紹下作用和使用場景

9.? `NSOperationQueue`中的`maxConcurrentOperationCount`默認值

10.? `NSTimer、CADisplayLink、dispatch_source_t` 的優劣

?性能優化

1.? 如何做啟動優化,如何監控

2.? 如何做卡頓優化,如何監控

3.? 如何做耗電優化,如何監控

4.? 如何做網絡優化,如何監控

?架構設計

1.? AFN

2.? SDWebImage

3.? JSPatch、Aspects(雖然一個不可用、另一個不維護,但是這兩個庫都很精煉巧妙,很適合學習)

4.? Weex/RN, 筆者認為這種前端和客戶端緊密聯系的庫是必須要知道其原理的

5.? CTMediator、其他router庫,這些都是常見的路由庫,開發中基本上都會用到

6.? 請`圈友`們在評論下面補充吧

?架構設計

1.? 手動埋點、自動化埋點、可視化埋點

2.? `MVC、MVP、MVVM`設計模式

3.? 常見的設計模式

4.? 單例的弊端

5.? 常見的路由方案,以及優缺點對比

6.? 如果保證項目的穩定性

7.? 設計一個圖片緩存框架(LRU)

8.? 如何設計一個`git diff`

9.? 設計一個線程池?畫出你的架構圖

10.? 你的app架構是什么,有什么優缺點、為什么這么做、怎么改進

?數據結構與算法

對于移動開發者來說,一般不會遇到非常難的算法,大多以數據結構為主,筆者列出一些必會的算法,當然有時間了可以去[LeetCode](https://links.jianshu.com/go?to=https%3A%2F%2Fleetcode.com%2F)上刷刷題

1.? 八大排序算法

2.? 棧&隊列

3.? 字符串處理

4.? 鏈表

5.? 二叉樹相關操作

6.? 深搜廣搜

7.? 基本的動態規劃題、貪心算法、二分查找

?總結

這些都是作者收集的加上自身面試的一些經驗總結,后期會持續收集補充,**歡迎圈內的高手在評論區或者公眾號貼上你的答案或者高質量問題**

準備面試是一方面,對于非面試的iOS開發者來說更適用于檢驗自己,發起進階之路。另外知識點是瑣碎的,但是真的能全部弄懂并把瑣碎的知識點融會貫通,構建起自己的知識體系,你就升級了。

???推薦??:

推薦閱讀:直擊2020——iOS 面試題大全(補充完整版)

大家可以加iOS技術交流群,群內提供數據結構與算法、底層進階、swift、逆向、底層面試題整合文檔等免費資料!!!

學習&提升&進階直通車:有任何問題,歡迎你來一起交流,互相學習進群密碼 000,?分享BAT,?阿里大廠面試及答案

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,646評論 6 533
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,595評論 3 418
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,560評論 0 376
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,035評論 1 314
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,814評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,224評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,301評論 3 442
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,444評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,988評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,804評論 3 355
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,998評論 1 370
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,544評論 5 360
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,237評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,665評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,927評論 1 287
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,706評論 3 393
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,993評論 2 374

推薦閱讀更多精彩內容

  • 1.設計模式是什么? 你知道哪些設計模式,并簡要敘述? 設計模式是一種編碼經驗,就是用比較成熟的邏輯去處理某一種類...
    司馬DE晴空閱讀 1,308評論 0 7
  • 1.內存管理 2.單例的理解 3.post和get的區別 4.md5和base64是什么,有什么區別 5.簡單談談...
    coder_Wg閱讀 1,297評論 1 6
  • 父類實現深拷貝時,子類如何實現深度拷貝。父類沒有實現深拷貝時,子類如何實現深度拷貝。? 深拷貝同淺拷貝的區別:淺拷...
    JonesCxy閱讀 1,040評論 1 7
  • 今天閨女的期末考試成績出來了,英語算是保持的很好,而且有進步;數學成績不怎么樣,居然是三科成績里面墊底的,這個有點...
    胭脂LiLy閱讀 156評論 0 1
  • Principles for success An Ultra Mini-Series Adventure In ...
    努力每一天JM閱讀 638評論 0 1