不管對(duì)于招聘和應(yīng)聘來(lái)說(shuō),面試都是很重要的一個(gè)環(huán)節(jié),特別對(duì)于開(kāi)發(fā)者來(lái)說(shuō),面試中的技術(shù)問(wèn)題環(huán)節(jié)不僅是企業(yè)對(duì)應(yīng)聘者技能和積累的考察,也是一個(gè)開(kāi)發(fā)者自我檢驗(yàn)的好機(jī)會(huì)。對(duì)于iOS和Mac開(kāi)發(fā)來(lái)說(shuō),因?yàn)楸臼逻€算比較新,企業(yè)對(duì)于這方面的開(kāi)發(fā)者需求也比較大,所以面試時(shí)的要求可能并不是很高,一般能知道一些Cocoa和OC的基本知識(shí)也就認(rèn)為可以了。但是對(duì)于一個(gè)希望擁有技術(shù)力基礎(chǔ)的企業(yè)的iOS或者M(jìn)ac開(kāi)發(fā)來(lái)說(shuō),兩到三個(gè)頂尖的熟練技術(shù)人員,帶領(lǐng)一些還較為初級(jí)的開(kāi)發(fā)者,共同完成項(xiàng)目應(yīng)該是比較常見(jiàn)的構(gòu)成。
Cocoa特別是CocoaTouch的開(kāi)發(fā),上手可以說(shuō)十分容易,但是背后隱藏的細(xì)節(jié)和原理卻很豐富。一方面對(duì)于基礎(chǔ)不夠熟練和清晰(比如從一個(gè)AppDelegate開(kāi)始用代碼構(gòu)建ViewController,或者清晰地說(shuō)明棧和堆之類的概念),另一方面對(duì)于更進(jìn)階的開(kāi)發(fā)知之甚少(比如多線程、網(wǎng)絡(luò)異步處理或者Core開(kāi)頭的各種框架等等)。這些內(nèi)容十分重要,但是可能現(xiàn)在一般的iOS開(kāi)發(fā)者或多或少都在這些問(wèn)題上存在薄弱。在這里我整理了一份面向于較高層級(jí)的iOS開(kāi)發(fā)者的面試題目的問(wèn)題清單,列出了十個(gè)應(yīng)聘Leader級(jí)別的高級(jí)Cocoa/CocoaTouch開(kāi)發(fā)工程師所應(yīng)該掌握和理解的技術(shù)。這份列表沒(méi)有提供標(biāo)準(zhǔn)答案,因?yàn)檫@些問(wèn)題本身就沒(méi)有標(biāo)準(zhǔn)答案。隨每個(gè)人對(duì)這些內(nèi)容的認(rèn)識(shí)的不同和理解的差異,可以有不一樣的答案。但是最基本地,如果面對(duì)的是一名資深的Cocoa開(kāi)發(fā)者,至少期望能得到的答案都是“接觸過(guò)”,并且能結(jié)合自己的經(jīng)驗(yàn)說(shuō)個(gè)七七八八,達(dá)到互相能明白意圖和方法的地步。能夠在其中兩三個(gè)領(lǐng)域有不錯(cuò)的見(jiàn)解和具體的闡述的話,那是更好。這種對(duì)于知識(shí)覆蓋面和深度的考察很能真實(shí)反映出開(kāi)發(fā)者的技術(shù)水平。如果清單里的很大部分內(nèi)容都是完全沒(méi)接觸過(guò)和沒(méi)聽(tīng)過(guò)的話,那可能距離資深Cocoa開(kāi)發(fā)這樣一個(gè)階段還尚有距離了。
那么,面試開(kāi)始。
1.你使用過(guò)Objective-C的運(yùn)行時(shí)編程(Runtime Programming)么?如果使用過(guò),你用它做了什么?你還能記得你所使用的相關(guān)的頭文件或者某些方法的名稱嗎?
2.你實(shí)現(xiàn)過(guò)多線程的Core Data么?NSPersistentStoreCoordinator,NSManagedObjectContext和NSManagedObject中的哪些需要在線程中創(chuàng)建或者傳遞?你是用什么樣的策略來(lái)實(shí)現(xiàn)的?
3.Core開(kāi)頭的系列的內(nèi)容。是否使用過(guò)CoreAnimation和CoreGraphics。UI框架和CA,CG框架的聯(lián)系是什么?分別用CA和CG做過(guò)些什么動(dòng)畫(huà)或者圖像上的內(nèi)容。(有需要的話還可以涉及Quartz的一些內(nèi)容)
4.是否使用過(guò)CoreText或者CoreImage等?如果使用過(guò),請(qǐng)談?wù)勀闶褂肅oreText或者CoreImage的體驗(yàn)。
5.NSNotification和KVO的區(qū)別和用法是什么?什么時(shí)候應(yīng)該使用通知,什么時(shí)候應(yīng)該使用KVO,它們的實(shí)現(xiàn)上有什么區(qū)別嗎?如果用protocol和delegate(或者delegate的Array)來(lái)實(shí)現(xiàn)類似的功能可能嗎?如果可能,會(huì)有什么潛在的問(wèn)題?如果不能,為什么?(雖然protocol和delegate這種東西面試已經(jīng)面爛了…)
6.你用過(guò)NSOperationQueue么?如果用過(guò)或者了解的話,你為什么要使用NSOperationQueue,實(shí)現(xiàn)了什么?請(qǐng)描述它和G.C.D的區(qū)別和類似的地方(提示:可以從兩者的實(shí)現(xiàn)機(jī)制和適用范圍來(lái)描述)。
7.既然提到G.C.D,那么問(wèn)一下在使用G.C.D以及block時(shí)要注意些什么?它們兩是一回事兒么?block在ARC中和傳統(tǒng)的MRC中的行為和用法有沒(méi)有什么區(qū)別,需要注意些什么?
8.您是否做過(guò)異步的網(wǎng)絡(luò)處理和通訊方面的工作?如果有,能具體介紹一些實(shí)現(xiàn)策略么?
9.對(duì)于Objective-C,你認(rèn)為它最大的優(yōu)點(diǎn)和最大的不足是什么?對(duì)于不足之處,現(xiàn)在有沒(méi)有可用的方法繞過(guò)這些不足來(lái)實(shí)現(xiàn)需求。如果可以的話,你有沒(méi)有考慮或者實(shí)踐過(guò)重新實(shí)現(xiàn)OC的一些功能,如果有,具體會(huì)如何做?
10.你實(shí)現(xiàn)過(guò)一個(gè)框架或者庫(kù)以供別人使用么?如果有,請(qǐng)談一談構(gòu)建框架或者庫(kù)時(shí)候的經(jīng)驗(yàn);如果沒(méi)有,請(qǐng)?jiān)O(shè)想和設(shè)計(jì)框架的public的API,并指出大概需要如何做、需要注意一些什么方面,來(lái)使別人容易地使用你的框架。
以上10個(gè)問(wèn)題對(duì)于初級(jí)或者剛接觸iOS的開(kāi)發(fā)者來(lái)說(shuō),肯定是過(guò)于難了。想要答出全部問(wèn)題,可能需要至少兩到三年的Cocoa/CocoaTouch開(kāi)發(fā)經(jīng)驗(yàn)。而如果想要有所見(jiàn)地的回答,可能需要更長(zhǎng)的時(shí)間和經(jīng)驗(yàn)。這些問(wèn)題對(duì)于技術(shù)的積累會(huì)是一個(gè)很好的考察,因?yàn)槿绻麤](méi)有對(duì)這些問(wèn)題中涉及的內(nèi)容有過(guò)實(shí)際使用和體會(huì)的話,是很難較完整和全面回答這些問(wèn)題的。同時(shí),因?yàn)檫@些問(wèn)題并不像ABCD的客觀題有標(biāo)準(zhǔn)答案,表現(xiàn)的是應(yīng)聘者的理解,所以提問(wèn)者也必須具備必要的材料或者知識(shí),以應(yīng)對(duì)可能的討論。
在為團(tuán)隊(duì)尋求高級(jí)別的開(kāi)發(fā)工程師或者Leader類的職位時(shí),這些問(wèn)題的回答會(huì)是對(duì)應(yīng)聘者技術(shù)深度和廣度的一個(gè)有效的考察。同樣地,如果你的團(tuán)隊(duì)在Cocoa/CocoaTouch上比較偏重,但是技術(shù)團(tuán)隊(duì)的No.1的工程師卻不能很好地回答這些問(wèn)題的話,可能也會(huì)是需要檢討技術(shù)層的一個(gè)信號(hào)。
-
工程師
+關(guān)注
關(guān)注
59文章
1590瀏覽量
69490 -
iOS
+關(guān)注
關(guān)注
8文章
3399瀏覽量
153075
發(fā)布評(píng)論請(qǐng)先 登錄


硬件工程師看了只會(huì)找個(gè)角落默默哭泣#硬件工程師 #MDD #MDD辰達(dá)半導(dǎo)體 #產(chǎn)品經(jīng)理 #軟件工程師

(仰天長(zhǎng)嘯)為什么受傷的總是硬件工程師...#MDD#MDD辰達(dá)半導(dǎo)體 #電子工程師

長(zhǎng)沙怎么這么難招硬件工程師呀
Allegro工程師能力升級(jí)建議 工程師技能如何升級(jí)進(jìn)階



硬件工程師的終極幻想:焊板子焊上人生巔峰!#半導(dǎo)體器件 #硬件工程師 #MDD辰達(dá)半導(dǎo)體

不同時(shí)期的硬件工程師,最怕發(fā)生的事 #電子工程師 #硬件工程師 #內(nèi)容過(guò)于真實(shí) #YXC晶振 #揚(yáng)興科技

當(dāng)你的工程師朋友失聯(lián)時(shí),別氣,ta真的是在忙工作 #搞笑 #電子愛(ài)好者 #硬件工程師 #晶振 #揚(yáng)興科技

硬件工程師VS軟件工程師|硬件工程師看到這都淚目了!#硬件設(shè)計(jì) #硬件工程師 #電子工程師 #軟件工程師
FPGA算法工程師、邏輯工程師、原型驗(yàn)證工程師有什么區(qū)別?


評(píng)論