美團阿里頭條騰訊等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
  • 架構
  • 迷之算法題
美團阿里頭條騰訊等iOS面試總結

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

相關文章