開篇啰嗦
在上家公司呆了兩年半,2018年春節(jié)后開始面試扎狱,驚奇地發(fā)現(xiàn)侧到,世界變化好快!和兩年前的面試感覺完全不同委乌,整體來說是要求高了床牧,底層原理、手寫算法遭贸、性能優(yōu)化等等是主要面試點。?
但同時不得不吐槽心软,一些所謂的大公司壕吹,面試方法有問題著蛙,面試體驗很不好。?
以下是對面試的總結(jié)耳贬,以及對將要換工作的小伙伴的一些建議踏堡。
作為一個開發(fā)者,有一個學(xué)習(xí)的氛圍跟一個交流圈子特別重要這是一個我的iOS交流二群:131915142(一群已滿)咒劲,不管你是小白還是大牛歡迎入駐 顷蟆,分享BAT,阿里面試題、面試經(jīng)驗腐魂,討論技術(shù)帐偎, 大家一起交流學(xué)習(xí)成長!
考點分類
iOS基礎(chǔ)
不管是剛畢業(yè)蛔屹,還是有幾年的開發(fā)經(jīng)驗削樊,常用的基礎(chǔ)性知識,必須掌握到位兔毒。這個其實并不難漫贞。一下列幾項:?
- 屬性的關(guān)鍵字,默認(rèn)關(guān)鍵字育叁;?
- 代理和Block的區(qū)別迅脐;?
- 循環(huán)引用;?
- 講一下MVC和MVVM豪嗽,MVP仪际;?
- 為什么說Objective-C是一門動態(tài)的語言;?
- 數(shù)據(jù)持久化的幾個方案昵骤。
等等树碱,這些都是在平時開發(fā)中用到的,沒什么難度变秦。如果講述不精確或者不全成榜,建議自己多去查漏補(bǔ)缺。
手寫算法
關(guān)于手寫算法蹦玫,其實內(nèi)心是抵觸的赎婚。一張紙,一支筆樱溉,要求寫出來可以運行的算法代碼挣输。?
被考過的算法有:?
1. 快速排序;?
2. 尋找二叉樹中兩個子節(jié)點的最低共同父節(jié)點福贞;?
3. 就地反序單向鏈表撩嚼。?
沒有被考過的,我列上幾個吧:?
1. 不用中間變量,用兩種方法交換A和B的值;?
2. 求最大公約數(shù)完丽;?
3. 模擬棧操作恋技;
這些算法,咋一看好像也不難逻族。但我我不知道有多少人能直接寫出來蜻底,或者說出思路。?
反正我是面試被虐之后聘鳞,回家才惡補(bǔ)了一些薄辅。?
手寫算法這事,也是一直被大家吐槽的梗抠璃。我是抵觸的站楚,但我不多做評論。平時沒事在LeetCode上刷刷算法題也是挺有趣的鸡典。
iOS底層原理
RunLoop源请,RunTime,Timer彻况,KVO谁尸,Block,AutoreleasePool纽甘,內(nèi)存管理良蛮,一些有名第三方庫的源碼。這些更底層的問題越來越受面試官的青睞悍赢,這確實是考察一個程序員知識深度和自主鉆研能力的基本手段决瞳。雖然大多數(shù)程序員在開發(fā)過程中,這些知識點用的并不多左权,但是掌握這些知識皮胡,會幫助你寫出更優(yōu)秀的代碼,避免一些“莫名其妙”的坑赏迟。想成為一名真正優(yōu)秀的工程師屡贺,確實應(yīng)該在相應(yīng)的領(lǐng)域不斷深挖,才能到達(dá)大多數(shù)到不了的高度锌杀。
我的情況是甩栈,做了三年的iOS開發(fā),2017年初由于業(yè)務(wù)需要糕再,開始做ReactNative開發(fā)量没,原生基本擱置了一年,再加上之前對這些知識點沒有做深入研究突想。所以導(dǎo)致在最近剛開始的面試中被問到時挺懵的殴蹄,能說出個大概究抓,說不出具體原理,這當(dāng)然達(dá)不到面試要求饶套。之后邊面試邊補(bǔ)充這些知識點漩蟆,后面就順利多了垒探。后續(xù)我會把這些知識點整理成博客妓蛮。
所以,平時需要多積累圾叼,不能只忙于業(yè)務(wù)蛤克,忽略了這些更深入的東西。
多線程
這基本是面試必考夷蚊,平時開發(fā)中或多或少會用到构挤。
GCD和NSOperation是最常用的庫,最好能知道iOS底層的PThread,以及最基本的NSThread惕鼓。
被問到兩次的一個問題是:有多個任務(wù)同時執(zhí)行筋现,要等到這些任務(wù)全部完成之后,再進(jìn)行下一個動作箱歧,這個改怎么實現(xiàn)矾飞。這個問題我是知道的,在面試中提出了兩種方案呀邢。想了解的自行搜索和研究洒沦。
性能優(yōu)化
這個問題一般出現(xiàn)在二面,這是很好的一個問題价淌∩暄郏考察參與項目的深入度,以及之前的項目水平蝉衣。面試之前最好把之前的項目梳理一下括尸,整理一些重點難點和亮點〔≌保可以從UI優(yōu)化說起濒翻,然后到內(nèi)存優(yōu)化、APP啟動優(yōu)化剪验、包體量優(yōu)化肴焊、網(wǎng)絡(luò)請求優(yōu)化等等。
如果你在之前的團(tuán)隊中功戚,僅僅是負(fù)責(zé)最簡單的功能開發(fā)娶眷,沒有較深的積累,這個問題肯定是答不好的啸臀。所以届宠,平時工作中烁落,除了要積累基礎(chǔ)知識外,還要爭取參與到項目中的核心模塊豌注,積極參與到一些研發(fā)性工作中去伤塌。
自我規(guī)劃
這個問題一般出現(xiàn)在最后一面。這是用人單位考察一個人職業(yè)定位和發(fā)展愿景的普遍問題轧铁。從回答能看出你對技術(shù)的追求和對職業(yè)的熱愛程度每聪。
回答時分兩個方面:?
- 對自己當(dāng)前情況的定位,當(dāng)前自己處于什么水平齿风,哪里做的好药薯,哪里還需要提高;?
- 對自己未來的規(guī)劃救斑,想往哪個方向發(fā)展童本?技術(shù)深度鉆研?培養(yǎng)項目大局觀脸候,往技術(shù)經(jīng)理方向發(fā)展穷娱?未來想轉(zhuǎn)產(chǎn)品經(jīng)理?
總的來說运沦,不管你是真有想法還是只是口才好泵额,這個時候一定要表現(xiàn)出你的熱情和潛力。?
來點雞湯:拋開面試不說茶袒,這個問題值得我們每個人去認(rèn)真思考梯刚。不管身處哪個行業(yè),對自己的定位和對未來的規(guī)劃薪寓,都是很重要的亡资,否則我們就失去了方向。
面試方法分類
從概念和“基礎(chǔ)”問起的機(jī)械化流程
這種面試方法向叉,常見于大的公司锥腻,由于面試的人太多,這樣有助于公司降低面試成本母谎。但這樣有很大的一個弊端瘦黑,尤其是那種不太把面試者當(dāng)回事的公司,面試體驗很差奇唤,而且考察不全面幸斥。
我經(jīng)歷過兩家這樣的公司,一面派來個小兵咬扇,他自身技術(shù)深度就不太夠甲葬,然后就是對著電腦從題庫里挑幾個問題劈頭蓋臉的開問。這樣會出現(xiàn)這么幾種情況:?
- 問的這三四個問題懈贺,面試者剛好不知道或者項目中沒涉及到,然后直接掛掉,大老遠(yuǎn)跑來面試阿宅,幾分鐘結(jié)束。?
- 面試官提問方式有問題(不客氣地說就是表達(dá)能力不行)瓣赂,想考察一個知識點,他繞著彎子問,讓面試者搞不清楚具體問題。他可能是想從實際問題切入一個知識點溉卓,結(jié)果事與愿違。?
- 由于面試官技術(shù)理解的局限性宪卿,對面試者的回答只和標(biāo)準(zhǔn)答案對比的诵。有一次我回答了一個問題万栅,那小哥說不對佑钾,然后他表達(dá)了一番,實際和我說的一樣烦粒。
請原諒我的吐槽休溶,不得不承認(rèn),另一方面也是由于自身水平有限扰她,面試準(zhǔn)備不充分兽掰,才導(dǎo)致這兩次一面就掛的結(jié)果。
從項目問起徒役,然后深入知識點的人性化面試
相比上面的那種機(jī)械化流程孽尽,這種從項目問起,然后逐步深入的面試方法忧勿,才能真正考察出面試者的真是水平杉女。這種情況一面的時候面試官是一位技術(shù)全面且有深度組長或者技術(shù)經(jīng)理。他會從知識點或者項目中一步一步鸳吸,從基礎(chǔ)到深層次的原理進(jìn)行提問熏挎,直到面試者答不上來為止,然后進(jìn)行下一個問題晌砾。這樣就能清楚的看出面試者水平和深度坎拐,而不是背書的能力。
總結(jié)
經(jīng)過幾次面試养匈,收獲良多哼勇。每次面試都是一次有意義的交流,自信地去表達(dá)呕乎,虛心地去學(xué)習(xí)积担,面試一次就有一次收獲。對于自己不了解的知識楣嘁,回來及時補(bǔ)漏磅轻,然后總結(jié)珍逸。
實際上,在平時的開發(fā)中聋溜,涉及到的知識面是有限的谆膳。由于項目時間節(jié)點的限制,也不可能留大量的時間讓你去專門深入調(diào)研某一個點撮躁。所以這些知識面的擴(kuò)展和知識點的深入研究漱病,還得靠自己業(yè)余時間去鉆研。不要去當(dāng)一個“碼農(nóng)”把曼,要對技術(shù)有追求杨帽。不管以后是當(dāng)技術(shù)經(jīng)理,還是轉(zhuǎn)產(chǎn)品嗤军,或者是轉(zhuǎn)行注盈,但目前身處軟件開發(fā)這個職業(yè),你就應(yīng)該不斷地學(xué)習(xí)叙赚,讓自己有競爭力老客,提高自身價值。
自省和建議
基礎(chǔ)知識要扎實
這個不用多說震叮,作為開發(fā)者胧砰,如果不能夯實基礎(chǔ),以后的發(fā)展空間肯定是有限的苇瓣。
別只奔命于業(yè)務(wù)尉间,深入鉆研,以自我為本
還是那句話击罪,以自身為本哲嘲。從項目中學(xué)習(xí),在開發(fā)中一定要有收獲外邓,盡可能地深入研究撤蚊。雖然這個行業(yè)很忙碌,一期期的需求迭代壓得大家喘不過氣损话。但是侦啸,同樣是加班做需求解bug,但是每個人的收獲是不同的丧枪。還有就是光涂,業(yè)余時間,利用起來拧烦。
去螞蟻金服面試那次忘闻,由于我做過RN,面試官第一句就問我恋博,看過RN源碼沒齐佳。雖然沒面過私恬,那個面試官很友好,給我了很多建議炼吴,最重要的一條建議是本鸣,做技術(shù)就要深入。舉了他自己的一個例子硅蹦,大家常用的SDWebImage和FastImage荣德,他仔細(xì)研究過源碼,對比了這兩套框架的優(yōu)缺點童芹,然后自己寫了一套更全面的框架涮瞻。不得不服啊。
定期出去面試假褪,見見外面的世界
現(xiàn)在如愿以償?shù)啬玫搅宋宜蛲墓镜膐ffer署咽。回顧最近面試的經(jīng)歷嗜价,突然萌生了一個想法艇抠。就是,不管你有沒有跳槽的想法久锥,可以每年集中時間去面試幾次,一是看看現(xiàn)在市場的需求异剥,而是檢驗一下自己水平瑟由。聽起來有點不厚道,但我覺得無傷大雅冤寿,你說呢歹苦?
作為一個開發(fā)者,有一個學(xué)習(xí)的氛圍跟一個交流圈子特別重要這是一個我的iOS交流二群:131915142(一群已滿)督怜,不管你是小白還是大牛歡迎入駐 殴瘦,分享BAT,阿里面試題、面試經(jīng)驗号杠,討論技術(shù)蚪腋, 大家一起交流學(xué)習(xí)成長!
文章出處:https://blog.csdn.net/gang544043963/article/details/79610300