- 相關(guān)推薦
關(guān)于如何面試IOS工程師
關(guān)于IOS工程師,很多人都可能認(rèn)為自己能做基本的IOS開發(fā)工作就行了,殊不知這遠(yuǎn)遠(yuǎn)不夠。那么IOS工程師該如何面試?下面小編教教你。
正文
參加了內(nèi)部面委會的一個分享,結(jié)合我自己的方式,說說怎樣面試一個普通的 iOS 工程師。
一般我傾向的考察分兩個主要的部分,第一是在簡歷里提到的項目經(jīng)歷中找挖掘點(diǎn),第二是基礎(chǔ)知識考察。另外也會看情況做一些軟實力的考察和性格特征的判斷。
項目經(jīng)歷
如果順利的話這第一步占的比例會很大,因為每個程序員都不會方方面面知識都熟悉,但至少他寫在簡歷上的做過的項目是熟悉的,講自己熟悉的東西容易讓他進(jìn)入狀態(tài),展示好的一面。這里主要考察兩方面,一是有沒有在某些點(diǎn)上有過深入研究。二是對項目整體了解如何。
深入研究
在中大型的公司里比較注重工程師有深入研究的能力,如果能把一個功能講得很清晰是比較好的加分項,這里會問實現(xiàn)的思路,通過追問去了解候選人在這塊深入的程度,從思路到方法,從上層 API 調(diào)用到框架流程再到底層實現(xiàn)。如果候選人在講述時有一條邏輯主線,例如講述業(yè)界普遍是怎么做的,自己在業(yè)界方案基礎(chǔ)上做了什么改進(jìn),怎樣做到更好,進(jìn)一步改進(jìn)的思路是怎樣,這是最好的。如果還能把解決問題的方法歸納起來運(yùn)用在其他地方,能舉一反三,包裝成通用解決方案,或者做開源貢獻(xiàn),就更好了。
一般會問候選人哪一個項目技術(shù)點(diǎn)最能體現(xiàn)自己的技術(shù),然后不停追問技術(shù)細(xì)節(jié),例如做了一個相冊項目,覺得列表優(yōu)化是最能體現(xiàn)技術(shù)點(diǎn)的,會問這里優(yōu)化的思路是什么,怎樣評估,遇到過什么困難,怎么解決的,如果用到圖片緩存開源項目,說說它具體做了什么事,緩存策略是什么,從下載到顯示的整個流程是怎樣的,還有沒有更好的方案,追問到一定程度后也會發(fā)散去問跟這個話題相關(guān)聯(lián)的問題,例如如果有部分用戶反饋圖片顯示不了,你會怎樣排查問題,排查修復(fù)后怎樣監(jiān)控,就會過度到一些網(wǎng)絡(luò)和運(yùn)營監(jiān)控方面的內(nèi)容,也會順便問到一些基礎(chǔ)知識。
整體了解
問完自己職責(zé)范圍內(nèi)的功能技術(shù)點(diǎn)后,還會看看對項目里其他的實現(xiàn)有沒有了解,特別是項目的大致架構(gòu)和核心功能,最好能畫出項目大致結(jié)構(gòu),看情況問問網(wǎng)絡(luò)層和數(shù)據(jù)層是怎樣實現(xiàn)的,為什么這樣實現(xiàn),項目最核心功能是怎樣實現(xiàn)的,例如做讀書的至少要知道項目里的排版引擎的大致實現(xiàn)方式,做 QQ 的要知道消息收發(fā)的機(jī)制,如果不知道,也可以說說如果自己實現(xiàn)會怎么做。這里主要看看有沒有技術(shù)好奇心,會不會積極主動了解項目里已有的非職責(zé)范圍內(nèi)的技術(shù)點(diǎn),主動和好學(xué)這兩點(diǎn)是很重要的。
基礎(chǔ)知識
如果項目經(jīng)歷里能問出大部分東西,這部分比例就會比較少了,這是比較好的情況,否則就按套路去多考察一些基礎(chǔ)知識,包括 iOS 開發(fā)的基礎(chǔ)和計算機(jī)基礎(chǔ),像內(nèi)存 / 網(wǎng)絡(luò) / 存儲 / 線程等,例如 ARC 是怎樣做到自動管理內(nèi)存的,跟 java/js 的垃圾回收的區(qū)別,網(wǎng)絡(luò) http 協(xié)議是怎樣的,用過什么數(shù)據(jù)庫框架,db 索引是什么,多線程開發(fā)要注意什么,跟 runloop 的關(guān)系是什么等等,這類問題在網(wǎng)上都有很多,就不多說了。數(shù)據(jù)結(jié)構(gòu)和算法在筆試時會涉及,面試會比較少,如果問算法的話只會問問思路,一般我覺得如果項目經(jīng)歷方面不太好,才會考慮考考算法作為輔助判斷。
軟實力
一些通用能力像邏輯思維能力,溝通能力,自我驅(qū)動能力等都可以在上面那些問題的交流中表現(xiàn)出來,另外像團(tuán)隊協(xié)作能力、抗壓能力和性格特征這些也會看情況考察一下,例如問問如果產(chǎn)品讓你做個需求,你覺得不靠譜,會怎樣做,設(shè)計讓你做個很難實現(xiàn)的效果,你會怎樣評估?或者問個低級問題,故意說個錯誤的答案,看看他的反應(yīng)是怎樣,是表現(xiàn)出嘲笑和攻擊性,還是懷疑自己,還是細(xì)心求證?箟耗芰Φ目疾煊行┤吮容^喜歡,我是覺得面試還是輕松一點(diǎn)好。軟實力方面的考察在一面會比較少,或者不會涉及,實際上這方面我也沒太多經(jīng)驗,也在摸索中。
其他
作為程序員,如果有 GitHub 開源項目是最好的,直接可以看到代碼風(fēng)格,代碼質(zhì)量,處理 issue 和 PR 的方式,如果有技術(shù)博客也是很好的,可以提前看到平時的一些技術(shù)積累,省了很多事。但如果 GitHub 內(nèi)容是培訓(xùn)班的那種仿寫 APP,博客內(nèi)容是摘抄文章什么的就是負(fù)分了。
以上是正常套路,若候選人有特殊經(jīng)歷或技能,例如牛 X 大學(xué)畢業(yè),ACM 冠軍,通讀 linux 源碼,php 源碼貢獻(xiàn)者之類,會另當(dāng)別論,針對性進(jìn)行面試,這不是唯一的標(biāo)準(zhǔn)。另外針對不同的工作年限也有不同的問法和要求,工作年限越高要求越高。
最后
其實面試就是想低成本找到合適在團(tuán)隊里一起工作的人,因為如果通過一起工作一段時間去判斷是否合適成本太高。這種低成本的代價就是會誤判,有些工程師是理論型,有些是實踐型,面試的方式會對實踐型的人不利,盡管他們?nèi)绻羞M(jìn)來會是適合的人,而且人會在不同環(huán)境下會有不同的表現(xiàn),只根據(jù)過去的經(jīng)歷去判斷有時是不準(zhǔn)確的。只能盡量采取一些措施去減少誤判的概率,例如提高面試官的判斷能力,或多幾輪面試。一般如果不是急招,策略都會是寧殺錯不放過,所以其實就算面試被否了,也不一定代表能力不行。
另外每個面試官可能都有自己摸索出來的一種判斷方式,并隨著面試經(jīng)驗的豐富不斷改進(jìn),達(dá)到更準(zhǔn)的判斷概率,這只是我個人在目前有限的經(jīng)驗里的一點(diǎn)小總結(jié),僅供參考。
【如何面試IOS工程師】相關(guān)文章:
ios基礎(chǔ)面試題08-07
ios面試常見問題08-04
如何準(zhǔn)備機(jī)器學(xué)習(xí)工程師的面試 ?08-09
面試技巧:面試如何敲門?11-21
面試如何答問的面試技巧08-07
如何讓面試事半功倍09-25
如何克服面試緊張09-26
如何應(yīng)對競聘面試08-06
如何預(yù)知面試結(jié)果?09-25
普通文憑如何面試?08-05