阿里騰訊百度頭條美團(tuán)iOS面試總結(jié)

更新

面試基本已經(jīng)結(jié)束了,目前已拿頭條、百度、騰訊offer,現(xiàn)在可以好好來(lái)寫(xiě)寫(xiě)總結(jié)了,關(guān)于面試題,可能沒(méi)那么多時(shí)間來(lái)總結(jié)答案,有什么需要討論的地方歡迎大家指教。主要記錄一下我的準(zhǔn)備過(guò)程,和面試的一些總結(jié),希望能幫助到正在面試或者將要面試的同學(xué)吧。

準(zhǔn)備階段

我其實(shí)從寒假前就有一點(diǎn)準(zhǔn)備,不過(guò)也僅僅是過(guò)了一下基礎(chǔ),然后寒假去搜狐實(shí)習(xí)了。在公司一邊上班一邊復(fù)習(xí)(請(qǐng)不要舉報(bào)我),系統(tǒng)的看書(shū)是必須的,操作系統(tǒng)的話(huà)我推薦看程序員的自我修養(yǎng),如果想偷懶的話(huà)可以看我這篇博客一個(gè)程序是如何被機(jī)器運(yùn)行起來(lái)的?,這個(gè)問(wèn)題還是很有可能被問(wèn)到的(不過(guò)我好像就美團(tuán)二面問(wèn)到了),即時(shí)不被問(wèn)到,了解一下我覺(jué)得也是很有必要的。然后如果大學(xué)操作系統(tǒng)課程學(xué)得還算可以的話(huà)可以直接去刷題了吧我覺(jué)得,如果我算好最好還是去過(guò)一遍操作系統(tǒng)的教材。計(jì)網(wǎng)的話(huà)我看了圖解HTTP和圖解TCP/IP這兩本書(shū),然后基本就可以去刷題了。當(dāng)然如果你有更深的追求,大佬們建議我是看TCP/IP詳解,但是我到現(xiàn)在都還沒(méi)有靜下心來(lái)看一遍(真的很難看)。如果不想系統(tǒng)的去看書(shū),可以看看我這的計(jì)網(wǎng)的系列文章計(jì)算機(jī)網(wǎng)絡(luò)篇,至少對(duì)各個(gè)層進(jìn)行大體的了解,然后對(duì)具體的問(wèn)題去深入探索。數(shù)據(jù)結(jié)構(gòu)和算法就是刷題了,一定要刷題,等你刷得多了,你會(huì)發(fā)現(xiàn)面試的大多都是你刷過(guò)的,即時(shí)你沒(méi)刷過(guò),在你刷完足夠多的題后,一般的算法題你都能找到思路,因?yàn)樾U兴惴ú恢劣诙嚯y(ACM算法大佬就不要跟我們相提并論了)。強(qiáng)推《劍指Offer》這本書(shū),這本書(shū)我至少刷了三遍吧,看了也不低于三遍。做到這些,基本就是刷面試題了(說(shuō)實(shí)話(huà)我沒(méi)刷)。另外,有面試機(jī)會(huì)一定不要錯(cuò)過(guò),每一次面試都會(huì)是你查缺補(bǔ)漏的過(guò)程!?。?/p>

美團(tuán)一面

記不太清了23333
主要問(wèn)項(xiàng)目的一些技術(shù)點(diǎn)
如何讓一個(gè)label靠左,一個(gè)label靠右,然后右邊的label能夠完全顯示
算法奇數(shù)排在前面,偶數(shù)排在后面
智力題,一個(gè)騎手送餐,ABCD商店,送給abcd四個(gè)人
kvo的實(shí)現(xiàn)原理
消息調(diào)用的過(guò)程
get和post的區(qū)別
http有哪些部分
tcp和udp的區(qū)別
七層模型

總結(jié):美團(tuán)是視頻面,要求手寫(xiě)代碼。主要還是問(wèn)iOS方面的經(jīng)驗(yàn)吧,算法題很簡(jiǎn)單也很常見(jiàn),感覺(jué)春招面試算法題基本都是那些常見(jiàn)的,從我這份面試題中也可以看出,很多重復(fù)的。那道智力題想清除了也不算難。其它就是一些必備的iOS基礎(chǔ)和計(jì)網(wǎng)基礎(chǔ)吧。

美團(tuán)二面

講一講響應(yīng)鏈
如何通過(guò)一個(gè)view查找它所在的viewController
如何擴(kuò)大view的響應(yīng)范圍
微信分享大圖如何實(shí)現(xiàn),從進(jìn)程的角度
進(jìn)程間的通信方式,并舉例
兩個(gè)進(jìn)程分別指向同一個(gè)地址空間并初始化一個(gè)值,分別輸出是什么
算法,判斷一個(gè)字符串是否所有的大寫(xiě)字母都在小寫(xiě)字母前面
修改podfile文件后,怎么用git diff顯示出修改后版本和當(dāng)前版本的不同,讓我來(lái)設(shè)計(jì)
程序執(zhí)行的過(guò)程
如果想要?jiǎng)h除自己的一段代碼,如何刪除(在程序執(zhí)行的過(guò)程中刪除)
用過(guò)腳本編程嗎
了解前后端嗎
各科成績(jī),成績(jī)排名

總結(jié):這是我表現(xiàn)得最差的一輪面試吧,美團(tuán)是我春招面的第一家公司,但是說(shuō)實(shí)話(huà)當(dāng)時(shí)準(zhǔn)備得還不是很充分,也可以說(shuō)沒(méi)有面試經(jīng)驗(yàn)吧,很多面試官問(wèn)的問(wèn)題我都沒(méi)有g(shù)et到面試官的點(diǎn),不過(guò)這一面對(duì)廣度深度都有要求,我面得有點(diǎn)懵逼,以為是一面表現(xiàn)得好二面故意壓力面,結(jié)果并不是,猝。

阿里一面

先介紹了項(xiàng)目,然后問(wèn)了一些項(xiàng)目中的問(wèn)題,然后開(kāi)始問(wèn)基礎(chǔ)
屬性的關(guān)鍵字
淺拷貝和深拷貝的區(qū)別
Block的循環(huán)引用、如何解決、原理
三種Block
Block和delegate的比較
kvo的實(shí)現(xiàn)原理
Autorelease pool的實(shí)現(xiàn)原理
消息轉(zhuǎn)發(fā)機(jī)制
線(xiàn)程死鎖的四個(gè)條件
進(jìn)程和線(xiàn)程的區(qū)別
持久化
事務(wù)的特征
中途還討論了Masonry的約束應(yīng)該寫(xiě)在哪里,我說(shuō)應(yīng)該寫(xiě)在layoutSubViews,他說(shuō)會(huì)調(diào)用多次,然后爭(zhēng)論了一會(huì)兒

總結(jié):阿里一面算是一次中規(guī)中矩的一場(chǎng)面試吧,從介紹項(xiàng)目開(kāi)始,然后由淺入深,主要考察iOS基礎(chǔ),面試官說(shuō)我表現(xiàn)得不錯(cuò),這次面試的時(shí)候我還在搜狐實(shí)習(xí)(捂臉)

阿里二面

介紹項(xiàng)目
性能優(yōu)化
YYModel和AF源碼
如何自己設(shè)計(jì)json轉(zhuǎn)model
架構(gòu)
迷之算法題

image.jpeg

總結(jié):阿里的面試效率是真的不提了,二面和一面間隔時(shí)間可能相差了一個(gè)月吧,我已經(jīng)從北京回到了學(xué)校開(kāi)始上課了,而且這次面試感覺(jué)有點(diǎn)奇怪,最后那道迷之算法題我們也有討論,實(shí)在沒(méi)搞懂計(jì)算兩點(diǎn)間的距離的算法還能怎樣優(yōu)化,面試結(jié)束后我問(wèn)了面試官最優(yōu)解是怎樣的,面試官告訴我沒(méi)有最優(yōu),只有更優(yōu)(微笑臉)

阿里三面

一個(gè)安卓的面試官。。。。。
主要問(wèn)了項(xiàng)目的一些東西 和給一些場(chǎng)景問(wèn)我如何實(shí)現(xiàn)
自我介紹 介紹一些項(xiàng)目難點(diǎn)
主線(xiàn)程是相對(duì)于什么而言的
一張圖片的內(nèi)存占用大小是由什么決定的
索引的作用
索引的優(yōu)缺點(diǎn)
在數(shù)組中找最小的k個(gè)數(shù)
淘寶下拉加載更多如何優(yōu)化
淘寶頁(yè)面發(fā)送HTTP請(qǐng)求的過(guò)程
介紹一下MVVM
知道哪些設(shè)計(jì)模式

總結(jié):三面面試官主要就聊了一些具體場(chǎng)景問(wèn)題和一些基礎(chǔ),基礎(chǔ)我覺(jué)得沒(méi)太大問(wèn)題。面試過(guò)程中我講到一些東西發(fā)現(xiàn)面試官聽(tīng)不懂,才知道面試官是做安卓的,問(wèn)一些問(wèn)題其實(shí)有點(diǎn)讓我無(wú)語(yǔ),但是總的來(lái)說(shuō)還是回答過(guò)來(lái)了,感覺(jué)也沒(méi)有太大問(wèn)題,但是后面還是被掛了,很無(wú)奈。

頭條一面

MVC的一些缺點(diǎn)
講一講其它架構(gòu)
你知道哪些編碼方式
算法字符串翻轉(zhuǎn)
HTTPS
多線(xiàn)程的方式和它們的區(qū)別
隊(duì)列和線(xiàn)程的關(guān)系
一道線(xiàn)程安全的題
有哪些鎖
屬性的關(guān)鍵字
assign可以用于OC對(duì)象嗎
copy和strong的區(qū)別
weak如何實(shí)現(xiàn)自動(dòng)賦nil
為什么不可變對(duì)象要用copy
assing可以使用在對(duì)象中嗎

頭條二面

Pod update和pod install的區(qū)別
layoutIfNeeded和setNeedsLayout的區(qū)別
抓包工具抓取HTTPS的原理
isEquel和hash的關(guān)系
SD的源碼
bitmap的結(jié)構(gòu)
可變數(shù)組的實(shí)現(xiàn)原理
如何hook一個(gè)對(duì)象的方法,而不影響其它對(duì)象
如何避免if else
自旋鎖和互斥鎖的區(qū)別

頭條三面

介紹項(xiàng)目,主要介紹自己強(qiáng)項(xiàng)一點(diǎn)的地方
數(shù)組cop后里面的元素會(huì)復(fù)制一份新的嗎
數(shù)組的淺拷貝與深拷貝
TCP為什么是三次握手和四次揮手

頭條總結(jié):頭條一直都是視頻面,而且是一條龍服務(wù)??傮w來(lái)說(shuō)感覺(jué)不錯(cuò),反正主要就是需要基礎(chǔ)足夠扎實(shí),不過(guò)之前聽(tīng)說(shuō)的會(huì)手撕算法我倒是運(yùn)氣好沒(méi)有碰到,就一面寫(xiě)了一道算法題。三面面試官等了一會(huì)兒沒(méi)有來(lái),約到了第二天(畢竟大佬都比較忙)。

騰訊一面

介紹項(xiàng)目的網(wǎng)絡(luò)層
為什么要使用HTTP???為什么不直接用TCP
如何保證HTTP傳輸?shù)竭_(dá)
HTTP頭部有哪些內(nèi)容
講一講擁塞控制
MVVM如何實(shí)現(xiàn)綁定
block和通知的區(qū)別,分別適用什么場(chǎng)景
算法。連續(xù)問(wèn)了好幾個(gè),都是數(shù)組,層層遞進(jìn)的,但是我忘了,只記得最后是找出數(shù)組中重復(fù)的數(shù)字
進(jìn)程和線(xiàn)程的區(qū)別
程序在運(yùn)行時(shí)操作系統(tǒng)除了分配內(nèi)存空間還有什么
進(jìn)程間通信的方式
如何檢測(cè)應(yīng)用是否卡頓
好像沒(méi)多少問(wèn)題了,記不太清,然后他說(shuō)完了,我感覺(jué)好快,以為要掛了,就強(qiáng)行講了些runloop和性能優(yōu)化的東西,然后他說(shuō)好了,你和下一輪面試官再說(shuō)吧

總結(jié):k神前一天晚上幫我推的簡(jiǎn)歷,第二天就接到電話(huà)了,效率還是比較高。打電話(huà)的時(shí)候我正在上課,面試官上來(lái)就要開(kāi)始面試,我約到了晚上。這次面試其實(shí)表現(xiàn)得也不夠好,前兩個(gè)問(wèn)題有點(diǎn)沒(méi)get到面試官想問(wèn)的點(diǎn),問(wèn)得很快。最后面試官突然說(shuō)他問(wèn)完了,我很虛,以為自己是掛了,然后給面試官說(shuō)面試是不是太快了,iOS方面的東西好像都沒(méi)怎么問(wèn)。面試官說(shuō)如果你覺(jué)得你還有什么沒(méi)用展現(xiàn)出來(lái)的,你就說(shuō)說(shuō)吧,然后我強(qiáng)行講了一些性能優(yōu)化方面的東西,因?yàn)檫@是我唯一準(zhǔn)備的了解得稍微有點(diǎn)深的東西了。最后還沒(méi)講完,面試官直接告訴我讓我和下一輪面試官再講。我不知道如果后面我不強(qiáng)行講的話(huà),這一面會(huì)不會(huì)掛,所以很多事情還是需要我們自己努力去爭(zhēng)取機(jī)會(huì)的。

騰訊二面

OC中對(duì)象的結(jié)構(gòu)
多態(tài)
Ping是什么協(xié)議
知道MTU嗎
TCP頭部多長(zhǎng),IP呢
線(xiàn)程同步的方式
iOS中有哪些鎖
MVC和MVVM的區(qū)別
了解哪些設(shè)計(jì)模式
存一個(gè)通訊錄,包括增刪改查,用什么數(shù)據(jù)結(jié)構(gòu)
看過(guò)哪些源碼,講講思路
兩個(gè)鏈表找第一個(gè)相同結(jié)點(diǎn)
字符串旋轉(zhuǎn)
找鏈表的倒數(shù)第k個(gè)結(jié)點(diǎn)
把一個(gè)鏈表比某個(gè)值大的放在左邊,比它小的放在右邊
二叉樹(shù)的中序遍歷,非遞歸

總結(jié):主要還是基礎(chǔ),騰訊是真的喜歡問(wèn)計(jì)網(wǎng)和數(shù)據(jù)結(jié)構(gòu)。這一輪面試我可以說(shuō)是裸面了,那幾天都在放飛自我,因?yàn)槟菚r(shí)候已經(jīng)拿了頭條offer,也沒(méi)有其它想法了,就想著隨便面面吧,不過(guò)也無(wú)所謂。還好面試的時(shí)候還能進(jìn)入狀態(tài),雖然面得不是特別好,不過(guò)基本上還是能答出來(lái),最后的二叉樹(shù)遍歷,由于平常都想的是遞歸,一直沒(méi)怎么注意非遞歸的實(shí)現(xiàn),我卡了一會(huì)兒,還好最后還是想出來(lái)了(請(qǐng)不要嘲笑我)。
中間有個(gè)小插曲,就是過(guò)了幾天我在公眾號(hào)上面查發(fā)現(xiàn)我的狀態(tài)已經(jīng)掛了,都已經(jīng)“心灰意冷”了,結(jié)果昨天收到一個(gè)廣東深圳的電話(huà),當(dāng)時(shí)心里就挺激動(dòng)的,接通后果然是騰訊的HR,意外驚喜。

百度一面

大概回憶一下
進(jìn)程和線(xiàn)程的區(qū)別
一個(gè)進(jìn)程有哪些區(qū)
擁塞控制
進(jìn)程間通信的方式
七層模型
TCP和UDP的區(qū)別
傳輸層和網(wǎng)絡(luò)層分別是做什么的
UDP可以實(shí)現(xiàn)一對(duì)多??
算法 求數(shù)組的最長(zhǎng)子數(shù)組
Http2.0如1.x的區(qū)別

總結(jié):開(kāi)始是把我推給的一個(gè)偏網(wǎng)絡(luò)層做C++的部門(mén),所以面試基本都是計(jì)算機(jī)基礎(chǔ),也講了一些iOS的東西,但是我猜面試官可能也不是做iOS的。本來(lái)打算問(wèn)我C++,我果斷說(shuō)自己沒(méi)怎么寫(xiě)過(guò)C++,如果問(wèn)C++我肯定hold不住。

百度二面

發(fā)送一個(gè)HTTP請(qǐng)求的過(guò)程
TCP是如何保證可靠的
內(nèi)核態(tài)和用戶(hù)態(tài)的區(qū)別
在一個(gè)10G的數(shù)據(jù)里面找出最大的100個(gè)數(shù)
講一下我最滿(mǎn)意的一個(gè)項(xiàng)目
然后講了一下網(wǎng)絡(luò)造成卡頓的原因

總結(jié):這一面是把我轉(zhuǎn)到做APM的那個(gè)組后面的,感覺(jué)面試官時(shí)間很急,面得有些突兀,不過(guò)沒(méi)有太大的問(wèn)題,所以基本就讓我過(guò)了吧。

百度三面

全是問(wèn)得iOS方面的問(wèn)題,問(wèn)得真的很細(xì),需要基礎(chǔ)很扎實(shí),對(duì)各個(gè)機(jī)制真的足夠理解,不然確實(shí)有點(diǎn)難回答。我只列舉一下大概方向,這些東西也是iOS開(kāi)發(fā)必須掌握的基礎(chǔ)吧
屬性的關(guān)鍵字方面的
內(nèi)存管理方面的
多線(xiàn)程
各種隊(duì)列
線(xiàn)程鎖
MVVM

總結(jié):本來(lái)前一面面完都說(shuō)我技術(shù)面已經(jīng)通過(guò)了,我還很詫異,結(jié)果發(fā)現(xiàn)是搞錯(cuò)了,所以補(bǔ)了這一面,就是考察一下我iOS方面的能力到底是否有水分吧。問(wèn)得很細(xì),確實(shí)需要基礎(chǔ)足夠扎實(shí)才行。

寫(xiě)在最后

以上的面試題肯定是不完整的,只能根據(jù)我的印象記錄我能想起來(lái)的了,而且即時(shí)是一個(gè)看似簡(jiǎn)單的題,你如果沒(méi)有真正弄明白它的原理的話(huà),在面試過(guò)程中你也很有可能被問(wèn)懵,所以一定要打好基礎(chǔ),要知其然并知其所以然。如果你能把上面的問(wèn)題搞得很清楚的話(huà),我覺(jué)得BAT的offer應(yīng)該都是沒(méi)有問(wèn)題的。當(dāng)然有時(shí)候面試還是要看一點(diǎn)運(yùn)氣的,所以我們還需要抓住每一次面試機(jī)會(huì)。希望面試的同學(xué)一切順利。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容