iOSer疫情期間的虐心面試經歷猴鲫,真題 + 總結
這篇文章大概會涉及大廠真題变隔、面試小技巧鲜棠、狗血面試現場、面試資料選擇等表鳍。
大概從去年10月份就有出去看看想法了,12月份開始利用業(yè)務時間開始復習屯蹦,1月份開始利用下班時間看算法飘庄,2月份開始看項目相關的,3月份系統(tǒng)復習狞甚,3月底出征孕豹。雖不是大佬春霍,寫點面經算是對于自己過去幾個月面試經歷的總結,記錄歷程莲趣,如你恰好看到喧伞,希望對你有幫助。
從3月底開始參加面試,投遞的崗位基本都是互聯網大廠潘鲫,阿里騰訊翁逞、字節(jié)快手美團、小米陌陌等溉仑。正值疫情期間挖函,面試都采用視頻面試,有的在疟四睿客網挪圾,有的公司用騰訊會議浅萧,有的公司用Zoom會議逐沙。
這里非常鄭重的告知一件事兒,視頻面試過程中洼畅,不要切瀏覽器吩案,不要切瀏覽器,不要切瀏覽器帝簇。至于為什么徘郭,“可想而知”,且不說面試官都看得到丧肴,咱們面試還是靠真才實學比較好残揉。
提前交代下,本人大概面試了6芋浮、7個公司的10來個職位吧抱环,最終拿到了騰訊、快手纸巷、美團的offer镇草,最開始戰(zhàn)略性失誤,浪費了幾個非常好的機會瘤旨,這里一個獵頭跟我推薦的先用小廠或者意向一般的崗位試試手梯啤,然后再去面試心意的崗位。因為我目前不考慮小廠所以開始比較固執(zhí)的開始面試心儀的崗位存哲,導致準備不充分因宇,下面我要說的這些完全都還沒概念,接連失敗祟偷,不僅是浪費了幾個很好的職位察滑,還導致士氣大大受挫,身心俱疲肩袍,不過好在及時調整杭棵,順利拿到幾個還算不錯的offer。
iOS基礎部分
iOS基礎部分的復習資料:《編寫高質量iOS代碼的52個有效方法》、《iOS程序員面試筆試真題與解析》和《iOS程序員面試筆記寶典》以及博文《招聘一個靠譜的iOS》魂爪,基本這些本書覆蓋了面試中基礎部分百分之70-80的問題先舷,那么剩下百分之20-30要不是更深入的知識點深挖,要不是邊邊角角的知識點滓侍,比如問你動態(tài)庫調用靜態(tài)如何操作蒋川。這些很早就買了,平時工作也會當做手冊來查撩笆,所以看起來不算很費盡捺球,前前后后都看了3編左右,后續(xù)的面試過程中涉及到這部分因為都順利通過了夕冲。
大廠面試基礎常見考題
因為面試的崗位太多了氮兵,題目也非常多,一多就失去了其參考價值歹鱼,看完這篇分享就扔到腦后泣栈,不如我撿幾個必考題,在看完復習資料的基礎上弥姻,著重看看這些題目南片。
一般一面內容是基礎部分,但也不排除有一面面試官直接上來考察項目庭敦,中間穿插問基礎的疼进。
- 關鍵字,strong秧廉、copy伞广、assign、atomic等定血,面試官喜歡延展問atomic哪里不好赔癌,底層如何實現的,更嚴格的面試官會接著問鎖相關的問題澜沟。
- 蘋果如何現weak修飾的變量置位nil灾票。
- KVO的底層原理,進而引出使用KVO注意事項茫虽,如何規(guī)避crash刊苍,或者做過crash防護嗎?各種常見crash的防護實現濒析,這題書本上沒有正什,業(yè)界也有可行方法,但當時真把我難住了号杏,沒做過婴氮,面試那么緊張知道面試官拿著標準答案等我呢斯棒,想不出來。
- GCD關于并發(fā)主经、串行荣暮、同步、異步的概念罩驻。各種常用GCD用法穗酥,深一點的會問柵欄函數干啥用的,與disatch_group使用場景有哪些不同惠遏,disatch_group砾跃、信號量使用過程中需要注意啥,有哪些坑节吮。
- Runloop的相關問題抽高,通過runloop可以引出非常多的問題。如線程、常駐線程、Timer位迂、進程與線程區(qū)別操软、使用runloop解決哪些問題、屏幕刷新请毛、繪制等等問題志鞍。首先要對于runloop的機制爛熟于心,另外要對引出的這些小問題駕輕就熟方仿。說到線程還會引出一個大boss——自動釋放池固棚,變量如何釋放,自動釋放池的結構等問題仙蚜。
- Block底層實現此洲,引出三種block類型,forwarding指針委粉,引起大boss —— runtime呜师,runtime機制,runtime內存布局贾节、蘋果的runtime設計理念汁汗,使用runtime解決那些問題,進入引出熱修復栗涂。
- 分類的底層實現知牌,進而引出dynamic關鍵字的使用,運行時啟動的何時加載分類斤程,關聯對象實現原理角寸,方法覆蓋問題,load方法和initialize方法區(qū)別等。
- 第三方庫的實現原理扁藕,如何衬牛考的AFNetworking、SDWeb纹磺、YYKit帖烘,進而開始考察網絡,緩存橄杨,淘汰算法(有面試官當場讓我寫LRU算法)渲染秘症,繪制等方面的問題。
- 其他相對比較基礎的問題就不多說了式矫,現在面試高級乡摹、資深基礎部分基本上面這些問題是必考的,要求嚴格的廠會針對沒個問題進行更底層的深挖采转,對于這些問題的掌握目前局限在書籍和蘋果官網水平聪廉,所以挖的太深就說不出來所以然了。
項目經驗
1.項目經驗一般面試官會通過你簡歷上項目內容進行發(fā)問故慈,2.也有在自我介紹的過程中就直接發(fā)問的板熊,3.最友好的方式面試直接讓你自己說,挑一個你覺得自己做的還不錯的項目詳細闡述察绷。
關于這部分每個人不一樣干签,但是有幾點還是想著重說明分享下。
- 細節(jié)拆撼、細節(jié)容劳、細節(jié)一定要掌握,比如讓你做過圖文混排闸度,表情如何處理的竭贩,@某人、#話題如何做的莺禁,有效電話號碼的正則如何寫的留量,如果你記不清楚了,勸君還是別說這塊睁宰。否則你與面試官的對話將是:“我從網上找到肪获,直接在項目中使用的,具體啥我也記不住了”柒傻,如果你透漏你是用百度找的孝赫,那么恭喜你,你將收到面試官鄙夷的目光红符。
- 設計模式青柄,如果你對于除了“單例模式伐债、代理模式、觀察者模式致开、通知模式(這幾個面試官耳朵都起繭子了)”這幾種模式有更多的佘略峰锁,面試官會很開心,如果你把設計模式用到了你做的項目中双戳,面試官會更開心虹蒋。
- 優(yōu)化類型的項目,指標飒货、指標魄衅、指標。要量化你做的項目塘辅,提升多少幀率晃虫,減少多少啟動時間,帶來多少收益扣墩。如果你不量化哲银,對于面試官基本等于不是你做的。
- 開放問題呻惕,比較資深的面試官會揪著你項目的某一個細節(jié)一直深挖荆责,直到你說不出來未知。比如你做過啟動優(yōu)化蟆融,那么可能會具體問題pre-main階段rebase和bind到底干了啥草巡,咋干的,這個問題我是不會的型酥。對于這類問題,面試之前自己給自己講一遍項目查乒,嘗試著多問自己幾個為什么弥喉,然后查查資料,說不定能蒙對一個玛迄,那么可能你就通過了面試由境。
關于項目一直都是不是我的強項,面掛的十之八九都掛在這上面了蓖议,所以沒有太多可供參考的精力虏杰,老鐵們自己多總結總結。
算法
哎勒虾,我知道算法是多少同學的噩夢纺阔,也是最不愿意面對的地方。從我面過的幾家公司來看修然,字節(jié)笛钝、快手的算法稍微難一些质况,相對偏一些,其他美團玻靡、騰訊结榄、滴滴等其實都還好,基本leetcode刷200道題(獨立完成才算數)囤捻,劍指offer題目都手動敲一遍臼朗,其實目前對于iOS崗位(除去字節(jié))都夠用。就我參加十幾場面試來講蝎土,80%的算法題是都給出了正確答案的依溯。另外的20%都發(fā)生在了字節(jié)跳動的二面,結果可想而知瘟则,以至于我對于字節(jié)的面試產生了心理陰影黎炉。
我是去年刷過一個月半月,今天準備面試又刷了一個月醋拧。首先把極客時間算法通關40講看了兩遍慷嗜,第一遍只看不寫,第二遍要獨立使用其他Swift完成丹壕,并總結相關模板庆械。再次劍指offer看了一遍,在leetcode把題目又敲了一遍菌赖,又 看了一本薄薄的書《算法圖解》來稀釋畏難情緒缭乘,另外在 Github 創(chuàng)建了一個倉庫,把筆記和刷題記錄總結歸納到上面琉用,同時也敦促自己每天盡量過去點綠一個方塊堕绩,??。
敲重點一:目前面試中算法的部分主要是:字符串邑时、數組奴紧、鏈表、二叉樹遍歷以及非常少的圖(目前我只接到過一次圖的考題晶丘,還是在快手的設計類的題目中)黍氮。另外可能涉及到點,常見的排序算法(比如歸并排序的最后一步合并兩個有序數組不止一次被面試過)浅浮,二分思想(記住模板)沫浆,遞歸寫法的迭代實現,常見數據結構(棧和隊列)使用滚秩。
敲重點二:盡量做到bug free专执,重點考慮 棧溢出、數值類型的溢出叔遂、邊界條件(為空他炊、負數争剿、0、最大最小值等等吧痊末,太多我也羅列不過來了)蚕苇。
其他
- 網絡問題,常見的問題 網絡的七層模型凿叠、https和http區(qū)別涩笤,http1.0和2.0區(qū)別,加密算法盒件、TCP和UDP區(qū)別蹬碧,BT的面試官可能會讓你回答“瀏覽器輸入baidu.com”到頁面顯示出來發(fā)生了什么,這個考察就太全面了炒刁,當時回答的并不好恩沽。
- 設計模式,最好可以多說些翔始,如果看過《架構整潔之道》和《Head First設計模式》應該難不到你罗心。
- 計算機更底層,編譯器城瞎,鏈接器渤闷,Clang等問題。這個太硬核了脖镀,期待別考吧飒箭,反正我本人還有待提升。
狗血面試現場
前方高能警告蜒灰,負能量爆棚弦蹂,如您不感興趣,可以就此打住
面試的過程中卷员,見識了各種各樣的面試官盈匾,有聊得非常愉快的,有開始面試2分鐘就想罷面的毕骡。
- 字節(jié)二面,上來一道算法來個下馬威岩瘦,撕完后未巫,開始問項目,一個一個的問題启昧,摳細節(jié)叙凡,摳到我開始聽不懂面試官的問題,全程面試官畫面不清晰密末,我以為他一直在微笑握爷,頭不聽的在屏幕上轉來轉去跛璧,感覺是不是頸椎有問題,臨結束了又搞了一個面試題新啼,沒做出來追城,面試官又出了一道,居然和一面題目一樣燥撞,我這個人比較老實如何告知了情況座柱,面試官感覺有些尷尬,又出了一道物舒,做出來80%色洞,有些邊界沒考慮好,掛了冠胯。火诸。
- 騰訊二面,面試官臨近面試兩分鐘告訴我會議室鏈接荠察,之前的騰訊都是早早發(fā)了面試郵件置蜀,告知會議室鏈接,這個面試官的做法我感覺不好割粮,可能是個刺頭盾碗,果不其然,面試官畫面進入我的電腦屏幕是經過處理的舀瓢,只有個人頭在屏幕中晃蕩廷雅,其他地方全部都馬賽克了(是家里有不可告人的秘密嗎,哈哈)京髓。航缀。基本這種性格特性的面試官面試的過程都不會太愉悅堰怨,全程冷臉芥玉,生摳,硬摳备图,明確表示這塊我不是很清楚灿巧,依然不依不饒的問,真心累揽涮,想盡快結束面試抠藕。
- 滴滴一面,去年這個時候拿到了滴滴的兩個offer蒋困,因為薪資沒有談妥沒有過去盾似,心想針對滴滴的用人要求應該沒啥問題,然后開場2分鐘我意識到問題的嚴重性雪标,這個面試官不好對付零院,首先上來對于我們的項目指手畫腳溉跃,哪里哪里做的不好,為什么你們做到極致告抄。然后開始問基礎撰茎,參加這么多面試,面試官問我的問題我居然這么多回答不上來玄妈,問的基本都非常偏(大概因為我知識面不夠吧)乾吻,比如某個冷門的庫的API具體是啥,非對稱加密算法有哪些拟蜻,具體算法內容是啥(我真的不知道绎签,這方面是真),哎呀酝锅,想著頭疼诡必,不說了。
- 小米一面搔扁,參加工作以來這是面試經歷最差的一次爸舒,從自我介紹開始面試官沒有讓我說完話,直接打斷稿蹲。我回答的問題的時候正在激情中扭勉,面試官不帶有任何過渡性語句,直接下一道題苛聘,一度我專注于上一題無法聽清楚他突然發(fā)問的第二道題涂炎,需要他重復給我,非常不耐煩设哗。從第一次打斷我唱捣,我室友就坐不住了,跑去廚房玩手機去了网梢。我一直在心理暗示以后還要參加小米其他部門的面試震缭,我要忍住,于是這場面試就硬生生的拖到了40分鐘战虏,雙方都很火大掛斷了視頻拣宰。
其實面試過程中遇到各種各樣的面試官很正常,有的很比較友善烦感,有的人比較嚴肅徐裸,有個人心情不好,有的人喜笑顏開啸盏,有的人溫文爾雅。面試是一個雙方面試的過程骑祟,面試官將來是要合作的同學回懦,如果在面試過程中你發(fā)現面試官不好相處气笙,性格怪癖,十之八九你入職后也要花費心力去相處怯晕,這也是我拒絕了某團一個很重要的原因潜圃,雖然最后我通過了面試。另外面試也是緣分的事兒舟茶,我個人抱著不必強求的態(tài)度谭期,有的時候就是八字不合,看不對眼吧凉,那么權當長經驗了隧出,只要技術過關,我相信終究會遇到伯樂的阀捅。
就到這里吧胀瞪,如果后續(xù)想到啥會更新,希望我的總結可以幫助到你一點饲鄙。