面試過程
在疫情期間都是遠(yuǎn)程面試,下邊先介紹一下疫情期間面試的一些公司的面試情況徐裸。同時(shí)拿到了其中幾家的 offer揍诽。下邊介紹的面試題只還原了其中印象比較深的部分酸役,會(huì)存在不足的情況,并不代表面試的全部猫胁。
小米
一面
介紹有哪些設(shè)計(jì)原則箱亿,并讓比較詳細(xì)的說了其中開閉原則在項(xiàng)目中的應(yīng)用。
介紹設(shè)計(jì)模式弃秆,然后其中主要問了我抽象工廠和適配器兩種模式届惋。
介紹 runloop 相關(guān)的知識(shí)和在實(shí)際開發(fā)中的使用情況
要求詳細(xì)的描述事件響應(yīng)鏈
二面
介紹過往的項(xiàng)目經(jīng)驗(yàn)髓帽,因?yàn)樵?jīng)的項(xiàng)目和所面試的部門崗位需求匹配度較高,所以這塊的時(shí)間占比較多脑豹。
回文算法
(算法)判斷一個(gè)字符串是不是對(duì)稱的字符串郑藏,比如 abba 或者 aba 這樣的就是對(duì)稱的。
block 的實(shí)現(xiàn)原理
比較詳細(xì)的介紹 https 的過程瘩欺。
過往開發(fā)中做過哪些優(yōu)化向的工作必盖,問的也比較詳細(xì)。
如何檢測(cè)項(xiàng)目中的卡頓問題(比如假死)
比較詳細(xì)的介紹消息轉(zhuǎn)發(fā)流程和事件響應(yīng)鏈
GCD 的底層線程調(diào)度原理
介紹 hash 算法的原理
三面
一個(gè)二叉樹逐層打印的算法題
介紹自己的過往的項(xiàng)目經(jīng)驗(yàn)俱饿,會(huì)結(jié)合項(xiàng)目問一些架構(gòu)向的思考
如果現(xiàn)在做一個(gè)新的網(wǎng)絡(luò)層框架歌粥,有哪些需要考量的點(diǎn)
百度
百度只有一面,因?yàn)槊娴檬前俣鹊纳虡I(yè)化部門拍埠,對(duì)于細(xì)節(jié)的要求非常嚴(yán)格失驶。個(gè)人感覺自己的表現(xiàn)確實(shí)不是很好。
判斷一個(gè)字符串是不是 ipv6 地址(要求盡全力的考慮所有異常的情況)
PS:當(dāng)時(shí)面試官明確告訴我枣购,這個(gè)面試題做不好嬉探,面試是直接結(jié)束的。
介紹界面卡頓的優(yōu)化有哪些可以優(yōu)化的點(diǎn)棉圈。
介紹 UIResponder 的繼承鏈涩堤。然后說事件響應(yīng)鏈。
Bigo
感覺面試的這些公司迄损,Bigo 對(duì)于基礎(chǔ)的考察最全面定躏。
一面
(算法)找出一個(gè)頁面中漏出部分面積最大的試圖,重合的部分按照最上層的面積算漏出芹敌,會(huì)有時(shí)間復(fù)雜度的要求痊远。
簡(jiǎn)單地介紹的過往的項(xiàng)目經(jīng)驗(yàn)
控件的點(diǎn)擊事件和添加在上邊的手勢(shì)誰先響應(yīng),并說明原因
談 CoreAnimation 和 CoreGraphic 的區(qū)別
說 @synchronized 鎖的實(shí)現(xiàn)原理氏捞,并說明其中可能存在的問題碧聪。同時(shí)介紹了 iOS 開發(fā)中常見的鎖。
介紹編譯的過程和原理
談對(duì)于 bitcode 的理解和作用液茎。
詳細(xì)的介紹了 Https 的過程逞姿。
二面
介紹屬性常用修飾符,介紹 assign 和 weak 之間的區(qū)別捆等。這塊會(huì)延伸到內(nèi)存管理相關(guān)滞造,比如引用計(jì)數(shù)的方式。
聊對(duì)于 GCD 的理解栋烤,和 GCD 底層是如何進(jìn)行線程調(diào)度的谒养。聊 GCD 中常見方法的使用 (group ,信號(hào)量
明郭,barrier 等)
詳細(xì)的介紹了 KVC 和 KVO 的原理买窟。
介紹消息轉(zhuǎn)發(fā)過程
介紹對(duì)于 Runloop 并介紹知道的應(yīng)用場(chǎng)景丰泊。再具體場(chǎng)景中會(huì)有追問。
介紹項(xiàng)目?jī)?yōu)化的經(jīng)驗(yàn)始绍,這一塊會(huì)聊的比較細(xì)瞳购。
介紹對(duì)于靜態(tài)庫和動(dòng)態(tài)庫的理解。
在 webview 使用過程中存在的問題和解決方案亏推。
三面
介紹了過往 RN 的使用經(jīng)驗(yàn)和對(duì)于 Flutter 的理解学赛。
談對(duì)于組件化的理解和市面上常見的組件化方案
問了一些 APM 向上的問題。
談個(gè)人對(duì)于項(xiàng)目架構(gòu)選擇的理解径簿。自己如何進(jìn)行架構(gòu)的選擇(主要對(duì)于 MVVM罢屈,MVC等,后文有個(gè)人對(duì)于這一塊的理解)
談個(gè)人規(guī)劃
滴滴
一面
滴滴的一面分為兩部分篇亭。
第一部分:過往項(xiàng)目經(jīng)驗(yàn)缠捌,會(huì)對(duì)自己的過往項(xiàng)目經(jīng)驗(yàn),結(jié)合自己的描述译蒂,面試官問你介紹到的項(xiàng)目中涉及到問題曼月,然后會(huì)據(jù)此引申出一些問題,這一部分占比比較大柔昼。
第二部分是基礎(chǔ)知識(shí)面
談屬性修飾符哑芹,如果 assign 修飾對(duì)象可能存在的問題和原因。
比較的深入的聊了內(nèi)存管理的內(nèi)容捕透,包含引用計(jì)數(shù)和 weak 修飾的對(duì)象的內(nèi)存管理的過程聪姿。問的會(huì)比較深入。
講 runloop 的過往使用經(jīng)驗(yàn)乙嘀。
介紹自己比較熟悉的三方庫的實(shí)現(xiàn)原理
二面
對(duì)于鎖的理解(自旋鎖和互斥鎖)末购,以及 iOS 開發(fā)中常見的鎖。同時(shí)要求介紹個(gè)人在開發(fā)過程中在哪些場(chǎng)景下用到過鎖虎谢。
在實(shí)際開發(fā)中遇到過哪些多線程問題以及如何進(jìn)行解決的盟榴。
為什么不能在異步線程中更新頁面,介紹原因婴噩。
對(duì)于內(nèi)存泄漏的了解擎场,以及介紹知道的解決方案。
一些優(yōu)化向上的問題几莽,主要是根據(jù)自己介紹的優(yōu)化進(jìn)行較為深入的追問迅办。
一個(gè)坦克從一個(gè)空間的起點(diǎn)到終點(diǎn),中間在某些位置上有阻隔的情況下章蚣,判斷從起點(diǎn)到終點(diǎn)是否有可行路徑的算法題礼饱。
三面
比較詳細(xì)的介紹之前的項(xiàng)目經(jīng)驗(yàn)和主要負(fù)責(zé)的內(nèi)容
介紹過往項(xiàng)目中最有挑戰(zhàn)的事情,并會(huì)據(jù)此深入的聊。
介紹了一些架構(gòu)向的理解
談個(gè)人規(guī)劃
快手
快手的一面是跨部門面試镊绪,二面是本部門面,所以一二面面試題會(huì)有一些重復(fù)洒忧,只寫了一次蝴韭。
一面
介紹過往的項(xiàng)目經(jīng)驗(yàn)
兩個(gè)不算難的算法題(具體的忘記了...)
聊了 assign 修飾對(duì)象可能存在的問題
聊過往項(xiàng)目中的優(yōu)化經(jīng)驗(yàn)
介紹消息轉(zhuǎn)發(fā)流程
二面
比較詳細(xì)的聊到的 block,深入的講了其中的實(shí)現(xiàn)原理熙侍,并介紹不同變量的引用方式榄鉴。
介紹開發(fā)中常見的循環(huán)引用,并說明其中的原因和解決的方案和原理蛉抓。
介紹 Runloop 并講應(yīng)用場(chǎng)景庆尘。
二叉樹翻轉(zhuǎn)
三面
一道多線程實(shí)際場(chǎng)景下的問題,要求遠(yuǎn)程寫出實(shí)現(xiàn)方案的代碼
聊對(duì)于 MVVM巷送,MVC 和 MVP 的理解驶忌。
介紹過往項(xiàng)目中 RN 的使用經(jīng)驗(yàn)和遇到的問題。
講如何將一張內(nèi)存極大的圖片可以像地圖一樣的加載出來(只說實(shí)現(xiàn)思路)
聊對(duì)于組件化的理解笑跛,對(duì)于市面上的組件化方案的理解付魔,優(yōu)劣分析等。
其他
除了上邊介紹的公司外飞蹂,還面了平安几苍,51 talk,58 同城陈哑,好未來妻坝,美篇。
因?yàn)榻^大部分面試內(nèi)容和上邊的基本上只是重復(fù)惊窖,只對(duì)差異性的面試題進(jìn)行了總結(jié)刽宪。
對(duì)圖像編解碼的了解
在子線程中是如何進(jìn)行內(nèi)存管理的JSBridge 是如何實(shí)現(xiàn)的,以及和原生的調(diào)用關(guān)系。
問到了一些 AFNetworking 和 SDWebImage 相關(guān)的實(shí)際開發(fā)中的問題爬坑。
為自己的面試纠屋,為自己的跳槽,加油吧 iOS開發(fā)
簡(jiǎn)歷模板+最新iOS題目+提升視頻:docs.qq.com/doc/DVWlQam9Qd3B1cEF2