校招攻略:43份優質面經匯總(iOS開發)
序
我是一名普通本科的大四學生(軟件工程專業),應聘方向是iOS開發,我在招聘中一共面試了30家左右的公司,每次面試后,都及時進行面經整理和解答擴展,現在篩選出優質面經,將它們匯總,分享給大家。
目錄
- 實習面試
- 百度
- 今日頭條
- 餓了么
- SAP
- 校招面試
- 阿里巴巴
- 百度
- 騰訊
- 美團點評
- 今日頭條
- 京東
- 小米
- 迅雷
- 深信服
- 商湯科技
- 順豐科技
- 招銀網絡
- 實習面試
百度
百度一面
iOS
- iOS中有哪些設計模式,舉出兩個例子
- property有什么作用
- 事件傳遞和響應鏈
- ARC下,有哪些對象被加入了自動釋放池中
- 子線程中如何管理對象的生命周期
- 如果使用Category添加了和基類一樣的方法名的方法后,調用該方法,執行的是Category中的代碼而不是基類的代碼
計算機網絡
- HTTP報文格式
- https的加密過程
- 響應碼有哪些
- TCP和UDP的區別
- TCP如何保證可靠傳輸,分別有哪些機制
- 簡要說明下用于交換網絡的設備,從物理層往上進行敘述
算法
- 在數組中尋找第k大的數,要求時間復雜度為O(n)
百度二面
iOS
- 屬性修飾符
- 有哪些屬性修飾符
- assign和weak區別
- assign在MRC和ARC
- copy的用法
- autoReleasePool
- autoReleasePool在什么情況下使用
- 什么對象會加入autoReleasePool
- autoReleasePool在什么情況下釋放
- RunLoop
- RunLoop三種模式的區別
- 在什么情況下使用RunLoop
- Delegate、Block、Notification的區別
算法
- 如何判斷一個鏈表是否有環
- 如何判斷一個環的入口
- 如何用兩個棧模擬一個隊列
計算機網絡
- TCP和UDP的區別
- TCP三次握手的過程和為什么要三次握手
今日頭條
今日頭條一面
算法
- 驗證一個字符串是否為合法的ipv4地址
iOS
- 一個被放入到@autuReleasePool的對象,當自動釋放池調用drain方法時,一定會釋放嗎
- @aotuReleasePool的嵌套使用,對象內存是如何被釋放的
- 關于block的
- 在Masonry的block中,使用self,會造成循環引用嗎
- 那如果是在普通的block中呢
- 那在普通的block中只使用下劃線屬性去訪問,會造成循環引用嗎
計算機網路
- 狀態碼
今日頭條二面
算法
- 給出兩個有序數組,其中A數組的長度為另外B數組的兩倍,并且有效數字個數都是B數組大小,合并兩個數組,要求:時間復雜度為O(n),空間復雜度為O(1)
iOS
- 如何檢查循環引用
- 在delloc方法執行的時候,該對象已經會回收了嗎
今日頭條三面
計算機網絡
- http和https的區別
- https的加密過程
- 有了解過中間人攻擊嗎
- https能防止中間人攻擊嗎
iOS
- 橫向比較C++、andriod和iOS的內存管理機制
餓了么
餓了么一面
熱身
- iOS接觸時間
- 收獲最多的地方
- 看簡歷上寫了sqlite,能簡要說明下sqlite的實現原理嗎
- ORM如果要你來設計的話,你覺得有什么瓶頸問題
數據庫
- 描述一下主鍵和索引的作用
- 有了解數據庫引擎嗎
- 描述一下普通的存儲過程和事務性存儲過程
- 描述一下第三范式和BCNF范式
計算機網絡
- session和cookie
- https的加密過程
- 如何防止https的證書被篡改
- 有了解過對稱加密和非對稱加密嗎
iOS
- 你了解哪些iOS底層知識
- AFNetworking2.0和3.0的區別
- automic一定是線程安全的嗎
- iOS中的消息傳遞是怎么一步一步實現的
- category和extension有什么區別
- iOS中的私有屬性如何設置
- 串行隊列和同步鎖兩者在保護線程安全上的性能對比
- 并行隊列是同時執行的嗎
- iOS中有哪些鎖,你了解多少
- iOS中UIKit框架的架構
- UIView和CALayer之間的關系
- UIView、CoreAnimation和CoreGraphics的關系
- 應該知道SegmentFault,這個在iOS中是什么錯誤,那StackOverFlow呢
- GCD、NSThread、NSOperation性能上有何區別
算法
- 說說你覺得在學習過程遇到最難理解的東西
- 網絡緩存中涉及到什么算法思想有研究過嗎
其他
- CSS全稱和HTML全稱是什么
- 面向對象和面向過程的區別
餓了么二面
熱身
- 關于參加過項目的一些問題
- 享問是個創業項目,如何和大家一起協作的
- ...
- 在大學里成績如何(我會說我成績不好嗎,嚴肅臉)
設計
- 例如有這樣一個場景,一個APP,有很多的橫欄,每個橫欄中都有很多標簽,這些標簽都能夠被拖動
- 如何去設計
- 如果一個橫欄中的標簽能夠被拖到另一個橫欄呢
- 是選擇采用重寫拖動方法還是選擇使用UICollectionView呢
- 是將整體作為UICollectionView,還是整體使用UITableView,每個橫欄中使用UICollectionView呢
SAP
SAP一面
計算機網絡
- 數據鏈路層的幀的概念和作用
- ARP路由協議
- 傳輸層有哪些協議
iOS
- UIView是如何設計的
- CALayer和UIView的區別
算法
- 一個鏈表,如何進行每兩個交換一次的操作
SAP二面
計算機網絡
- 簡述計算機網絡的五層,從底層說起
- ARP協議如何工作
- TCP和UDP區別
- 狀態碼
算法
- 給一個int類型數字,判斷這個數字是否是回文的
校招面試
阿里巴巴
阿里巴巴一面
自我介紹
...
數據庫
- 提高增刪改查的效率手段
- 數據庫同步
操作系統
- 進程之間通信步驟
計算機網絡
- http和https有什么區別
- 傳輸層的優化協議
設計模式
- 了解哪些設計模式(我:所有設計模式,面:哦?)
- 講一下工廠模式
- 工廠模式和抽象工廠的區別
iOS
- 如何理解運行時
- 運行時可以做什么
- UIViewController的生命周期
- loadView在什么時候執行,一定會執行嗎
- 如何解決死鎖問題
- 多個線程同時訪問一個資源應該注意什么
- 鎖的原理是什么
- 函數參數傳入的一般是什么
- 如果傳入一個對象,函數中做一些改變操作,如果不想改變原對象,該如何
- iOS有幾種復制
- 什么行為能夠產生深復制
- 復制的應用
java
- java中如何實現值傳遞和引用傳遞
- java的內存管理和OC區別
算法
- my name is Z X變成Z X is name my
- 并分析時間復雜度和空間復雜度
數據結構
- 用兩個隊列模仿一個棧
阿里巴巴二面
閑聊
- 面:哈哈,看你很多地方都是這個名字,nineteen,你是很喜歡這個嗎?
- 我:.......
- 面:那我們就直接進入正題吧
項目
- 簡單聊了幾個項目的內容
- 要求共享桌面看項目代碼
- 講述項目的架構過程和細節
- 如何進行項目瘦身
算法
- 寫冒泡排序(寫了三個版本)
結尾
- 面:稍微等一下,這邊安排一個加面
- 面:你趕緊吃個飯吧
- 我:哦好的......
阿里巴巴加面一
自我介紹
...
算法
- 封裝一個字符串逆序的API
編程
- A、B、C、D四個線程,A、B、C執行完畢之后,D執行,且A、B、C同時進行
- A、B、C、D分別添加執行時間
- A、B、C中都修改一個資源
問題
- 線程之間的通信步驟
- 講一下開源框架的源碼
- 既然說到AF,那么說下基本的NSURLConnection和NSURLSession的區別
- 用一件事說明你對iOS的熱情
- iphoneX推出,我們應該在哪些方法做改變
- WWDC11上面說了什么改變
阿里HR面
自我介紹
- 面:這是我今天聽過的最簡單的自我介紹
- 我:嚴肅臉
項目相關
...
公司實習相關
...
對自己的認識
...
阿里加面二
閑聊
晚上7點一個電話響起,鈴鈴鈴~
- 面:現在又把你叫過來面試,你今天應該面了5輪吧
- 我:恩......
項目
- 享問作為一個創業項目的細節
- 背景
- 成員管理
- 如何運營
- 技術難點
- 未來發展
實習
- 實習的具體經歷
- 為什么沒有選擇去大企業實習
技術
- 如何理解iOS系統
- iOS和andriod在性能上又和區別,具體到實現呢
- 設計模式是如何在iOS中體現的
- 如何去優化項目
自我認知
- 用三個關鍵標簽定位自己,并說出充分的依據
阿里補招一面
項目
- 分享一下之前做的項目,難點是什么
- 剛剛說到你平時會研究的一些技術點,那么分享一兩個
iOS
- 如何利用Runtime進行字典轉模型
- 有沒有研究過開源框架,有哪些收獲
- 如何設計保證三方庫變動對項目本身影響最小
- 有什么輔助工具去檢測內存泄露
- 內存泄露有哪些方式
- block如何導致引用計數增加的
阿里補招二面
熱身
- 確認下是否有Offer了,已經簽了三方了嗎
- 在美團的實習主要做了什么
iOS
- 怎么理解JSBridge工作的
- 對這種工作原理有覺得有什么缺點嗎
- 有了解哪些開源項目
- 為什么大家要用AFNetworking
- AFNetworking做了什么性能方面的優化
- Masonry有什么亮點
- Block循環引用如何解決
- Runloop和線程的關系
- MVC有什么不好的地方
- 有了解過MVP嗎
- 如果讓你設計dispatch_once,你會如何設計
計算機基礎
- 從瀏覽器查詢一個關鍵字,從計算機原理到計算機網絡,展示整個過程
- 最后的響應報文如何解析到瀏覽器上有了解嗎
算法
- 一個算法:A和B兩個序列,經歷最小次數的操作,使得序列從A變成B
項目
- 參與過開源項目嗎
- 之前做的項目或者實習有比較具有挑戰性的事情嗎
百度
百度一面
自我介紹
...
算法
- 打印100到200之間的素數
項目
...
iOS
- UITableView如何調優
- iOS內存管理模式
- ARC全稱
計算機網絡
- TCP和UDP的區別
- 三次握手
數據庫
- 一個場景,手寫SQL查詢
百度二面
自我介紹
- 面試官好像認識我的樣子,并沒有自我介紹環節
算法
- 反轉鏈表
- 三種方式遍歷二叉樹
iOS
- 介紹iOS內存管理
計算機網絡
- TCP和UDP的區別
- 手寫TCP三次握手
設計模式
- 手寫代理模式
百度三面
技術相關
- 花10分鐘講述一個技術點
- JSPatch的原理以及蘋果如何檢測
其他
- 項目細節(享問)
- 如何帶團隊
- 如何協調工作
- 項目背景和目標
- 成果
- 對自己的規劃
- 有沒有目標榜樣
- 來北京會不會壓力過大
- 對大公司和初創公司的選擇
- 同級別大公司如何選擇
- 答:提高技術
- 具體怎么個提高法:
- 答:三個方面......
- 面試官介紹了百度如何能提高技術(大概10分鐘)
騰訊
騰訊一面
自我介紹
...
閑聊
- 我看你面的是iOS崗位,目前成都是沒有iOS的
- 東北大學的為什么來成都呢
計算機網絡
- 計算機網絡一共有多少層
- HTTP和HTTPS的區別
- TCP三次握手
項目
- 介紹一個比較典型的項目
iOS
- MVC模式和MVVM模式區別
- iOS內存管理方式
- 如何解決iOS的內存管理出現的問題
- iOS內存管理和andriod內存管理的區別
結尾
- 我覺得你作為本科生是很優秀的
- 介紹了成都這邊的情況,目前andriod居多,沒有iOS崗位
- 你介意進入的話轉崗到andriod開發或者weex開發嗎
- 你等下,我把你引薦到二面
騰訊二面
自我介紹
...
項目
- 介紹一個比較好的項目
按照簡歷問
- MVC模式C的臃腫和單薄如何控制,自己是如何寫的
- M不應該和V交互嗎,M不是要顯示到V上嘛(釣魚執法)
- Unicode和UTF-8的區別
- 數據庫事務是什么
- JS可以用來做什么
- JS能用來開發服務器嗎,開發服務器用的引擎是什么
美團點評
美團點評一面
自我介紹
...
iOS基礎
- C++和OC有什么區別
- 利用OC的動態特性能做什么
- UITableView如何調優
- 事件傳遞和事件響應
- MVC和MVVM有什么區別
- iOS的內存布局
- 介紹ARC
- 消息機制具體的步驟
iOS項目
- 瀑布流如何布局
- 有多個樣式的Cell,你會怎么設計
算法
- 兩個有序數組,求第K大的數
計算機網絡
- TCP和UDP的區別
美團點評二面
自我介紹
- 面:這邊沒有找到你的簡歷
- 我:啊?那會不會沒有優勢啊
- 面:不會的,講的好就行
iOS
- iOS內存管理
操作系統
- 進程之間如何通信
計算機網絡
- TCP三次握手具體流程(畫出來)
- TCP三次握手只允許用一個標志傳遞,如何控制
- 為何要進行三次握手
- TCP的擁塞控制
智力題
- 坐標系中存在一個不規則多邊形,判斷一個點是否在其中
算法
- 求二叉樹中最大的距離
美團點評三面
自我介紹
- 面:沒有我的簡歷
- 我:我用手機傳一份吧
- 于是加了微信
項目
- 享問
- 背景
- 團隊協作
- 如何設計產品
- 運營成果
技術相關
- 有了解過認證的協議嗎
- SSL的詳細通信過程(紙畫)
- JSPatch原理
- 如何模擬熱更新的過程
產品經理
- 如何設計一個首頁
- 產品經理應該具備哪些素質
- 產品經理應該向程序猿交付哪些東西
- 一般情況下,產品和程序猿配合出現問題,細節體現在哪里
個人
- 你覺得自己最大的優點是什么
- 是完美主義者嗎
- 在團隊協作中會有覺得很垃圾的人嗎
- 團隊協作中會覺得別人寫的代碼很垃圾嗎
美團點評HR面
閑聊
- 聽面試官說特別想讓你留在成都
- 你是綿陽的吧,我是德陽的,大學在上海,就一直在上海工作了
- 介紹了美團的餐飲事業群的詳細信息(我并沒有問...)
問題
- 對一個薪資的要求
- 意愿城市
- 將來的規劃
項目
- 主要問了享問的細節
提問
- 請問下我的評分sp機會大嗎
- 請問sp的一個標準是top幾大概
- 后續的通知會什么時候發出
今日頭條
今日頭條一面
自我介紹
- 手里有你的簡歷,但是還是想聽聽你來自我介紹下
算法
- 合并兩個有序數組
- 二叉樹的反轉
操作系統
- 線程和進程的區別
- 堆和棧的區別
iOS
- load和initialize區別以及它們有哪些應用
- 代碼寫在load和initialize中會影響啟動嗎
- 介紹下iOS中的多線程
- GCD手動創建的線程和GCD提供的API線程有啥關系
- 有讀過GCD的源碼嗎
今日頭條二面
算法
- 實現一個LUR Cache,包含讀、寫兩個操作
iOS
- block相關
- 發送網絡請求
- MVVM
- KVO
- 消息機制
今日頭條三面
算法
- 查找兩個節點的最近公共父節點
閑聊
- 相比上次來面試提高了什么
- 來段英文介紹
- 拿過哪些offer
- 為什么選擇去天天狼人殺
iOS
- AFNetworking的源碼架構
- 自己如何設計網絡庫
- Masonry源碼架構
計算機網絡
- TCP的三次握手
- TCP的四次揮手
京東
京東一面
自我介紹
...
項目
- 挑一個比較典型的項目進行分享
iOS
- iOS中開發有哪些調優策略
- KVO和KVC是什么
- 工廠模式是什么
- 工廠模式和抽象工廠的區別
- 單例模式如何設計
- 多線程有哪些
- GCD中信號量怎么使用
- 一個隊列負責插入數據操作,一個隊列負責讀取操作,同時操作一個存儲的隊列,如何保證順利進行
- 原型模式
小米
小米一面
自我介紹
- 問:面試官您是從事什么崗位的呢
- 面:我是后臺開發的
- 我:......
算法
- 實現reHash方法細節
計算機網絡
- 在瀏覽器中輸入一個域名會執行哪些操作
小米二面
閑聊
- 問: 面試官您是從事什么崗位的呢
- 面:Andriod系統層開發
- 我:......
算法
- 多個任務,具有起始時間和結束時間,任務是串行執行,規則如下:前一個任務結束時間和后一個任務開始時間不能相交,則計算最多的執行個數的路徑為
java多線程
- 在一個方法中有一個內部類,聲明一個內部類類型的臨時對象,然后開辟一個子線程去訪問這個臨時對象,最后在main中調用這個方法,問程序能正常運行嗎,會出現野指針異常嗎?
java基礎
- 弱引用和強引用的區別
迅雷
迅雷一面
自我介紹
- ...
iOS
- MVC和MVVM的區別
- MVVM哪些東西是可以重用的
- 如何進行自動布局
- storyboard和純代碼布局的優劣
- SDWebImage的緩存策略
項目
- 享問細節
算法
- LRU算法
深信服
深信服一面
自我介紹
面前擺放著一臺聯想筆記本
- 我:面試官是做什么開發的
- 面:我是做Linux開發的
- 我:......
面試體驗
- 拿著一份像是公司出的題,好幾頁,整個過程來回翻閱題,然后看到合適的就問
算法
- 模式串匹配(用牛客的某個后臺付費平臺出的題)
- 具體內容:普通字符+(通配符)?+(通配符)*
- 二叉樹的幾種遍歷方式
筆試題(可能測試是否作弊)
- iOS數據持久化的幾種方式
- 如果是自定義文件如何持久化
- 寫出相應代碼
C語言
- 如何判斷一個C語言結構體相等
- 那如果是在Java中如何判斷一個對象相等呢
- C語言中static修飾符的作用
數據庫
- 數據庫事務的特點
深信服二面
自我介紹
- 我:面試官您是做什么的崗位的呢
- 面:哦,我不是iOS的,可能沒法面iOS方面的,我們就問一些算法吧
- 我:......
面試體驗
- 同樣是不斷翻面試題考
- 基本是算法,以算法能力評估一個人的能力
算法
- 設計一個算法求圓周率
- 只能遍歷一次文本,需要找出多個關鍵字的次數,位置
- 找出一個32位數二進制表示法中1的個數(需要達到最優解)
商湯科技
商湯科技一面
自我介紹
- 面:不好意思,我這邊好像找不到你的簡歷了,所以你得比較詳細地介紹一下你自己
- 我:......
算法
- 數羊,給定一個初始數N,第一次數的數為N,第二次為2N,依次類推,直到kN,那么求當0-9的數全部都出現的時候的k值
iOS
- 介紹property的修飾符
- bounds和frame的區別
- 在MRC中如何解決循環引用
- 介紹多線程的實現方式
- 介紹iOS中數據庫,描述一下sqlite的表結構
- KVO是什么,使用KVO需要注意哪些問題
- GCD中的循環引用
商湯科技二面
自我介紹
- 我:接觸iOS開發三年,上架的項目有5個...
- 面:哇,你比我開發還久,我上架項目也沒有你多(見笑了大佬),不過我是做底層SDK開發的
算法
面試官沒說清楚題
然后邊討論題應該怎么設計,邊聊思路
設計模式
- 拿到一個項目,應該如何設計架構
- MVC模式是怎么交互的
- UITableViewCell如何實現代理模式的
- 談談KVO模式如何實現
計算機網絡
- 三次握手的細節
- 狀態碼
- 如何設計緩存策略
操作系統
- 談談多線程的底層原理
iOS
- 內存管理修飾符的區別
- 介紹一下深復制和淺復制
- 描述一下runtime
- runtime可以做什么事情
- 描述一下runLoop
- runLoop又可以做什么事情
- 介紹一下iOS中的多線程
- GCD有哪些常用的API
- 使用GCD應該注意什么問題
- iOS內存管理方式
- iOS的沙盒
商湯科技三面
自我介紹
- 我:開發過五個上架APP
- 面:哇,這么多
項目
- 動機
- 過程
- 扮演角色
- 收獲
- 有哪些不足
- 具體每個項目還聊了可行性(其中有創業項目)
技術
- git相關操作
- 多線程底層原理
人生
- 職業規劃
- iOS工作想要從事前端UI還是高性能
- 想要從事前端移動端還是愿意從事后臺的工作
商湯科技HR面
- 有了解過相關工作內容嗎,是否和預期一致
- 對公司了解嗎
- 我給你介紹下吧
- 工作城市選擇
- 目前有offer嗎
- 實習時間
- 目標公司的特點
順豐科技
順豐科技一面
自我介紹
...
項目
- 享問的細節
計算機網絡
- 三次握手過程
Java
- Java的引用和對象的區別
設計模式
- 解釋單例設計模式
- 應用場景
- 和靜態方法的區別
算法
- 快速排序的原理
- 線段樹
iOS
- MVC模式
- MVVM和MVC的區別
順豐科技HR面
自我介紹
- ...
項目
- 講一個最好的項目
閑聊
- 有面過其他哪些公司
- 對于深圳壓力大如何看待
- 東北大學的學生為什么來成都面試
- 介紹一下家庭情況
- 家里人對于工作地點的建議
- 自己對工作城市的選擇
- 優點和缺點
我的提問
- iOS崗位主要做什么
- 薪資如何
- 加班嚴重嗎
- 公司有食堂嗎
招銀網絡
招銀網絡一面
自我介紹
...
項目
- 享問細節
- 有做過日志管理嗎
- 更新版本的內容是通過什么方式獲得的
iOS
- iOS內存管理方式
- 項目架構圖
- iOS推送是什么
- 瀏覽器可以分享東西到具體APP,這樣是如何實現的
- 有做分享嗎
招銀網絡二面
自我介紹
- 面:你面試這么多了,自我介紹太累了,就省去吧
- 我:(中國好面試官!)
項目
- 享問細節
- 如果保證團隊順利運行
- 未來目標
招銀網絡HR面
自我介紹
- ...
項目
- 享問細節
閑聊
- 成績排名
- 有獎學金嗎
- 有掛科嗎
- 意向城市是哪里,成都這邊不確定有iOS崗位,我得問問
- 優點和缺點
結尾
看到這里的童鞋們,預祝你們秋招成功!