美團阿里頭條騰訊等iOS面試總結
前言
最近春招一直在緊張的面試中,現在已經拿了頭條offer,所以也沒那麼緊張了。決定把面試題拿出來給大家分享一下,歡迎大家來一起探討。現在先簡單的分享一下面試題,後續再談談面試經驗,此文章後面會繼續更新。
美團一面
- 記不太清了23333
- 主要問項目的一些技術點
- 如何讓一個label靠左,一個label靠右,然後右邊的label能夠完全顯示
- 算法奇數排在前面,偶數排在後面
- 智力題,一個騎手送餐,ABCD商店,送給abcd四個人
- kvo的實現原理
- 消息調用的過程
- get和post的區別
- http有哪些部分
- tcp和udp的區別
- 七層模型
美團二面
- 講一講響應鏈
- 如何通過一個view查找它所在的viewController
- 如何擴大view的響應範圍
- 微信分享大圖如何實現,從進程的角度
- 進程間的通信方式,並舉例
- 兩個進程分別指向同一個地址空間並初始化一個值,分別輸出是什麼
- 算法,判斷一個字符串是否所有的大寫字母都在小寫字母前面
- 修改podfile文件後,怎麼用git diff顯示出修改後版本和當前版本的不同,讓我來設計
- 程序執行的過程
- 如果想要刪除自己的一段代碼,如何刪除(在程序執行的過程中刪除)
- 用過腳本編程嗎
- 瞭解前後端嗎
- 各科成績,成績排名
阿里一面
- 先介紹了項目,然後問了一些項目中的問題,然後開始問基礎
- 屬性的關鍵字
- 淺拷貝和深拷貝的區別
- Block的循環引用、如何解決、原理
- 三種Block
- Block和delegate的比較
- kvo的實現原理
- Autorelease pool的實現原理
- 消息轉發機制
- 線程死鎖的四個條件
- 進程和線程的區別
- 持久化
- 還問了數據庫的知識我當時說我全忘了就沒問了
- 中途還討論了massonery的約束應該寫在哪裏,我說應該寫在layoutSubViews,他說會調用多次,然後爭論了一會兒
阿里二面
- 介紹項目
- 性能優化
- YYModel和AF源碼
- 如何自己設計json轉model
- 架構
- 迷之算法題
image.jpeg
阿里三面
- 一個安卓的面試官。。。。。
- 主要問了項目的一些東西 和給一些場景問我如何實現
- 自我介紹 介紹一些項目難點
- 主線程是相對於什麼而言的
- 一張圖片的內存佔用大小是由什麼決定的
- 索引的作用
- 索引的優缺點
- 在數組中找最小的k個數
- 淘寶下拉加載更多如何優化
- 淘寶頁面發送HTTP請求的過程
- 介紹一下MVVM
- 知道哪些設計模式
頭條一面
- MVC的一些缺點
- 講一講其它架構
- 你知道哪些編碼方式
- 算法字符串翻轉
- HTTPS
- 多線程的方式和它們的區別
- 隊列和線程的關係
- 一道線程安全的題
- 有哪些鎖
- 屬性的關鍵字
- assign可以用於OC對象嗎
- copy和strong的區別
- weak如何實現自動賦nil
- 爲什麼不可變對象要用copy
- assing可以使用在對象中嗎
頭條二面
- Pod update和pod install的區別
- layoutIfNeeded和setNeedsLayout的區別
- 抓包工具抓取HTTPS的原理
- isEquel和hash的關係
- SD的源碼
- bitmap的結構
- 可變數組的實現原理
- 如何hook一個對象的方法,而不影響其它對象
- 如何避免if else
- 自旋鎖和互斥鎖的區別
頭條三面
- 介紹項目,主要介紹自己強項一點的地方
- 數組cop后里面的元素會複製一份新的嗎
- 數組的淺拷貝與深拷貝
- TCP爲什麼是三次握手和四次揮手
- 基本就是走走形式了,主要就是問了一些個人方面的東西。。。。。
騰訊一面
- 介紹項目的網絡層
- 爲什麼要使用HTTP???爲什麼不直接用TCP
- 如何保證HTTP傳輸到達
- HTTP頭部有哪些內容
- 講一講擁塞控制
- MVVM如何實現綁定
- block和通知的區別,分別適用什麼場景
- 算法。連續問了好幾個,都是數組,層層遞進的,但是我忘了,只記得最後是找出數組中重複的數字
- 進程和線程的區別
- 程序在運行時操作系統除了分配內存空間還有什麼
- 進程間通信的方式
- 如何檢測應用是否卡頓
- 好像沒多少問題了,記不太清,然後他說完了,我感覺好快,以爲要掛了,就強行講了些runloop和性能優化的東西,然後他說好了,你和下一輪面試官再說吧
騰訊二面
- OC中對象的結構
- 多態
- Ping是什麼協議
- 知道MTU嗎
- TCP頭部多長,IP呢
- 線程同步的方式
- iOS中有哪些鎖
- MVC和MVVM的區別
- 瞭解哪些設計模式
- 存一個通訊錄,包括增刪改查,用什麼數據結構
- 看過哪些源碼,講講思路
- 兩個鏈表找第一個相同結點
- 字符串旋轉
- 找鏈表的倒數第k個結點
- 把一個鏈表比某個值大的放在左邊,比它小的放在右邊
- 二叉樹的中序遍歷,非遞歸
百度一面
- 我也不知道爲啥我的簡歷會被一個做底層開發的部門拿去,然後面試很尷尬,全是計算機基礎
- 大概回憶一下
- 進程和線程的區別
- 一個進程有哪些區
- 擁塞控制
- 進程間通信的方式
- 七層模型
- TCP和UDP的區別
- 傳輸層和網絡層分別是做什麼的
- UDP可以實現一對多??
- 算法 求數組的最長子數組
- Http2.0如1.x的區別
寫在最後
以上的面試題肯定是不完整的,只能根據我的印象記錄我能想起來的了,而且即時是一個看似簡單的題,你如果沒有真正弄明白它的原理的話,在面試過程中你也很有可能被問懵,所以一定要打好基礎,要知其然並知其所以然,更多的總結後續再更新。。。。
作者:Tamp__
鏈接:https://www.jianshu.com/p/a992b5f697ca