
前言:最近應該有很多小伙伴去跳槽面試的吧,相信各位有的已經(jīng)順利收到offer了,而有些則是碰壁了,那么我在這里給大家準備了相關面試資料,還有相關算法資料。想了解的可找我拿
面試過程
- 在疫情期間都是遠程面試,下邊先介紹一下疫情期間面試的一些公司的面試情況。同時拿到了其中幾家的 offer。下邊介紹的面試題只還原了其中印象比較深的部分,會存在不足的情況,并不代表面試的全部。
小米
一面
- 介紹有哪些設計原則,并讓比較詳細的說了其中開閉原則在項目中的應用。
- 介紹設計模式,然后其中主要問了我抽象工廠和適配器兩種模式。
- 介紹 runloop 相關的知識和在實際開發(fā)中的使用情況
- 要求詳細的描述事件響應鏈
二面
- 介紹過往的項目經(jīng)驗,因為曾經(jīng)的項目和所面試的部門崗位需求匹配度較高,所以這塊的時間占比較多。
- 回文算法
- (算法)判斷一個字符串是不是對稱的字符串,比如 abba 或者 aba 這樣的就是對稱的。
- block 的實現(xiàn)原理
- 比較詳細的介紹 https 的過程。
- 過往開發(fā)中做過哪些優(yōu)化向的工作,問的也比較詳細。
- 如何檢測項目中的卡頓問題(比如假死)
- 比較詳細的介紹消息轉發(fā)流程和事件響應鏈
- GCD 的底層線程調度原理
- 介紹 hash 算法的原理
三面
- 一個二叉樹逐層打印的算法題
- 介紹自己的過往的項目經(jīng)驗,會結合項目問一些架構向的思考
- 如果現(xiàn)在做一個新的網(wǎng)絡層框架,有哪些需要考量的點
- 百度
- 百度只有一面,因為面得是百度的商業(yè)化部門,對于細節(jié)的要求非常嚴格。個人感覺自己的表現(xiàn)確實不是很好。
- 判斷一個字符串是不是 ipv6 地址(要求盡全力的考慮所有異常的情況)
- PS:當時面試官明確告訴我,這個面試題做不好,面試是直接結束的。
- 介紹界面卡頓的優(yōu)化有哪些可以優(yōu)化的點。
- 介紹 UIResponder 的繼承鏈。然后說事件響應鏈。
Bigo
感覺面試的這些公司,Bigo 對于基礎的考察最全面。
一面
- (算法)找出一個頁面中漏出部分面積最大的試圖,重合的部分按照最上層的面積算漏出,會有時間復雜度的要求。
- 簡單地介紹的過往的項目經(jīng)驗
- 控件的點擊事件和添加在上邊的手勢誰先響應,并說明原因
- 談 CoreAnimation 和 CoreGraphic 的區(qū)別
- 說 @synchronized 鎖的實現(xiàn)原理,并說明其中可能存在的問題。同時介紹了 iOS 開發(fā)中常見的鎖。
- 介紹編譯的過程和原理
- 談對于 bitcode 的理解和作用。
- 詳細的介紹了 Https 的過程。
二面
- 介紹屬性常用修飾符,介紹 assign 和 weak 之間的區(qū)別。這塊會延伸到內存管理相關,比如引用計數(shù)的方式。
- 聊對于 GCD 的理解,和 GCD 底層是如何進行線程調度的。聊 GCD 中常見方法的使用 (group ,信號量
- ,barrier 等)
- 詳細的介紹了 KVC 和 KVO 的原理。
- 介紹消息轉發(fā)過程
- 介紹對于 Runloop 并介紹知道的應用場景。再具體場景中會有追問。
- 介紹項目優(yōu)化的經(jīng)驗,這一塊會聊的比較細。
- 介紹對于靜態(tài)庫和動態(tài)庫的理解。
- 在 webview 使用過程中存在的問題和解決方案。
作為一個開發(fā)者,有一個學習的氛圍跟一個交流圈子特別重要,這是一個我的iOS交流群:[891 488 181] ,不管你是小白還是大牛歡迎入駐 ,分享BAT,阿里面試題、面試經(jīng)驗,討論技術, 大家一起交流學習成長!
三面
- 介紹了過往 RN 的使用經(jīng)驗和對于 Flutter 的理解。
- 談對于組件化的理解和市面上常見的組件化方案
- 問了一些 APM 向上的問題。
- 談個人對于項目架構選擇的理解。自己如何進行架構的選擇(主要對于 MVVM,MVC等,后文有個人對于這一塊的理解)
- 談個人規(guī)劃
滴滴
一面
滴滴的一面分為兩部分。
- 第一部分:過往項目經(jīng)驗,會對自己的過往項目經(jīng)驗,結合自己的描述,面試官問你介紹到的項目中涉及到問題,然后會據(jù)此引申出一些問題,這一部分占比比較大。
- 第二部分是基礎知識面
- 談屬性修飾符,如果 assign 修飾對象可能存在的問題和原因。
- 比較的深入的聊了內存管理的內容,包含引用計數(shù)和 weak 修飾的對象的內存管理的過程。問的會比較深入。
- 講 runloop 的過往使用經(jīng)驗。
- 介紹自己比較熟悉的三方庫的實現(xiàn)原理
二面
- 對于鎖的理解(自旋鎖和互斥鎖),以及 iOS 開發(fā)中常見的鎖。同時要求介紹個人在開發(fā)過程中在哪些場景下用到過鎖。
- 在實際開發(fā)中遇到過哪些多線程問題以及如何進行解決的。
- 為什么不能在異步線程中更新頁面,介紹原因。
- 對于內存泄漏的了解,以及介紹知道的解決方案。
- 一些優(yōu)化向上的問題,主要是根據(jù)自己介紹的優(yōu)化進行較為深入的追問。
- 一個坦克從一個空間的起點到終點,中間在某些位置上有阻隔的情況下,判斷從起點到終點是否有可行路徑的算法題。
三面
- 比較詳細的介紹之前的項目經(jīng)驗和主要負責的內容
- 介紹過往項目中最有挑戰(zhàn)的事情,并會據(jù)此深入的聊。
- 介紹了一些架構向的理解
- 談個人規(guī)劃
快手
快手的一面是跨部門面試,二面是本部門面,所以一二面面試題會有一些重復,只寫了一次。
一面
- 介紹過往的項目經(jīng)驗
- 兩個不算難的算法題(具體的忘記了...)
- 聊了 assign 修飾對象可能存在的問題
- 聊過往項目中的優(yōu)化經(jīng)驗
- 介紹消息轉發(fā)流程
二面
- 比較詳細的聊到的 block,深入的講了其中的實現(xiàn)原理,并介紹不同變量的引用方式。
- 介紹開發(fā)中常見的循環(huán)引用,并說明其中的原因和解決的方案和原理。
- 介紹 Runloop 并講應用場景。
- 二叉樹翻轉
三面
- 一道多線程實際場景下的問題,要求遠程寫出實現(xiàn)方案的代碼
- 聊對于 MVVM,MVC 和 MVP 的理解。
- 介紹過往項目中 RN 的使用經(jīng)驗和遇到的問題。
- 講如何將一張內存極大的圖片可以像地圖一樣的加載出來(只說實現(xiàn)思路)
- 聊對于組件化的理解,對于市面上的組件化方案的理解,優(yōu)劣分析等。
其他
- 除了上邊介紹的公司外,還面了平安,51 talk,58 同城,好未來,美篇。
- 因為絕大部分面試內容和上邊的基本上只是重復,只對差異性的面試題進行了總結。
- 對圖像編解碼的了解
- 在子線程中是如何進行內存管理的JSBridge 是如何實現(xiàn)的,以及和原生的調用關系。
- 問到了一些 AFNetworking 和 SDWebImage 相關的實際開發(fā)中的問題。
文章到這里就結束了,你也可以私信我及時獲取最新資料以及面試相關資料。如果你有什么意見和建議歡迎給我留言。