免费高清特黄a大片,九一h片在线免费看,a免费国产一级特黄aa大,国产精品国产主播在线观看,成人精品一区久久久久,一级特黄aa大片,俄罗斯无遮挡一级毛片

分享

怎么面試架構(gòu)師

 昵稱10504424 2015-06-15

  其實(shí)本文想說的是:當(dāng)面試一個(gè)架構(gòu)師的時(shí)候,我們應(yīng)該問什么問題?我覺得,問什么樣的問題,體現(xiàn)了 team leader 更加看重架構(gòu)師的哪些特點(diǎn)。

  我一直認(rèn)為,做技術(shù)就跟練武一樣,在練武的不同階段,分招式和心法。技術(shù)也一樣,在不同的階段,也分招式和心法。另外,就我個(gè)人而言,經(jīng)常忘記招式,一方面可以說十二年來,我用過的招式很多,到了現(xiàn)在也不記得幾個(gè)。另一方面我自己也不會(huì)特意去記。事實(shí)上,十二年代碼寫下來,我反而越來越不關(guān)注招式,而是越來越關(guān)注如何解決問題,也就是心法。所以我作為 team leader 的時(shí)候,我會(huì)更加看重這個(gè)架構(gòu)師候選人是不是有一套屬于自己的心法。

  上面說的聽著很玄,下面我就直接回到正題:我們面試架構(gòu)師候選人時(shí),應(yīng)該問什么樣的問題?

  大致會(huì)有幾種類型的問題:

  1. 當(dāng)前技術(shù)領(lǐng)域中的一些技術(shù)細(xì)節(jié)
  2. 算法和數(shù)據(jù)結(jié)構(gòu)
  3. 方案設(shè)計(jì)思路

  第一類:當(dāng)前技術(shù)領(lǐng)域的技術(shù)細(xì)節(jié)類問題

  針對(duì)第一類問題,我認(rèn)為是很有必要問的,架構(gòu)師對(duì)技術(shù)細(xì)節(jié)的理解,是很能夠影響他做架構(gòu)時(shí)的設(shè)計(jì)思路的。畢竟每一個(gè)領(lǐng)域都有不同,了解不同領(lǐng)域的差異,以及特定領(lǐng)域的技術(shù)細(xì)節(jié),很影響架構(gòu)時(shí)的設(shè)計(jì)思路和實(shí)現(xiàn)手段。

  然而,這并不是鼓勵(lì)大家去挖出各種細(xì)節(jié)的問題,然后去考察架構(gòu)師候選人,這里需要有一個(gè)度。舉個(gè)例子:

  你如何去把一個(gè) view 的所有 subview 清空?

  1. 如果知道 NSArray 有 makeObjectsPerformSelector 這個(gè)方法的人,他們能夠說出直接使用這個(gè)方法,然后在 selector 里面寫 removeFromSuperView 的 selector,就好了,而且很省事,一句話就搞定。

  2. 如果知道 NSArray 有 enumerator 方法的人,他們會(huì)說出使用這種方法枚舉每一個(gè) subview,在 block 里把 removeFromSuperView 調(diào)用起來,也差不多兩三行的事兒。

  3. 不知道 NSArray 有上面這些方法的人,他會(huì)說用 for...in... 的方法遍歷,然后取到這每一個(gè) subview,讓他們執(zhí)行 removeFromSuperView??赡芤ㄙM(fèi)大概四五行。


  這幾種答案誰的更好?在我看來一樣好。為什么?

  因?yàn)檫@個(gè)問題其實(shí)考察的是這個(gè)人知不知道某個(gè)方法,當(dāng)然你可以說他知道這個(gè)方法是因?yàn)樗屑?xì)看過文檔或者頭文件。但除了這個(gè)以外,這個(gè)問題對(duì)判斷這個(gè)人是不是一個(gè)合格的架構(gòu)師沒有任何意義。架構(gòu)師的任務(wù)在于使用合理的手段完成架構(gòu)的任務(wù),上面三種做法都是合理的手段,只不過是實(shí)現(xiàn)技巧上的不同而已。

  這樣的問題還可以拓展開來:你完全可以問一個(gè)架構(gòu)師候選人某一個(gè)領(lǐng)域的這種類似問題,而恰好你比他熟悉,如果候選人答不上來,你會(huì)認(rèn)為他可能在這方面花的時(shí)間還不夠,這方面的理解不夠深,導(dǎo)致減分。但如果答上來了,有可能加分有可能不加分。

  然而,這一切并沒有什么卵用。如果角色對(duì)調(diào),讓候選人來面試你,他完全可以問出各種這樣類似的問題,一樣讓你抓耳撓腮百思不得其解。那么該如何考察一個(gè)架構(gòu)師候選人對(duì)自己領(lǐng)域中技術(shù)細(xì)節(jié)的理解呢?我們來看下面這些問題:

  1. 你覺得 block 當(dāng)初是為了解決什么樣的問題而設(shè)計(jì)的?你如何區(qū)分何時(shí)使用 block,何時(shí)不使用?
  2. 你覺得 ReactiveCocoa 當(dāng)初是為了解決什么樣的問題而設(shè)計(jì)的?你何時(shí)會(huì)考慮使用 RAC,何時(shí)不用?
  3. 你覺得 MVVM 這樣的思想是為了解決什么樣的問題而產(chǎn)生的?

  答案在本文不是重點(diǎn),當(dāng)然如果各位對(duì)答案感興趣,可以在評(píng)論區(qū)問一下,我在評(píng)論區(qū)回答。在我遇到的各種面試官中,我從來沒遇到過能問出這樣類似問題的面試官 。我面試別人的時(shí)候,我問過這種比較側(cè)重對(duì)某一項(xiàng)技術(shù)的理解的問題,有人能答好有人答不好,然后從招進(jìn)來的人看,當(dāng)初答好這種問題的人,后來都在團(tuán)隊(duì)中起到了頂梁柱的作用。答不好這樣問題的人,但是他們因?yàn)橹篮芏嗉夹g(shù)細(xì)節(jié),也還是招進(jìn)來了,雖然也能很好地完成需求和任務(wù),但是代碼結(jié)構(gòu)、設(shè)計(jì)思路都會(huì)有或多或少的缺陷,寫出來的組件在使用上也會(huì)感覺怪怪。

  所以,考察一個(gè)架構(gòu)師候選人在某一領(lǐng)域的技術(shù)時(shí),通用的技術(shù)細(xì)節(jié)的問題可以問一下,偏門的技術(shù)細(xì)節(jié)問出來就很沒有意義。一個(gè)架構(gòu)師最關(guān)鍵的是他對(duì)技術(shù)的理解深度,理解深刻的人,才能寫出簡(jiǎn)單易用易拓展的架構(gòu)。然后面試官需要區(qū)分好問題,有些問題是屬于“知道、不知道”,有些問題是屬于“理解、不理解”,對(duì)于面試一個(gè)高級(jí)工程師來說,可能會(huì)比較偏向前者,因?yàn)樗枰雷銐蚨?,然后完成需求的速度才快,不需要總是?Google。但對(duì)于面試一個(gè)架構(gòu)師來說,其實(shí)大部分基礎(chǔ)知識(shí)應(yīng)該是已經(jīng)具備了的,不至于寫個(gè) TableView 還要去翻 Google。但在做 SDK 的時(shí)候,是會(huì)遇到一些偏門問題的,是需要去 Google 的。但架構(gòu)師跟高級(jí)工程師的區(qū)別就在于,架構(gòu)師知道該往哪個(gè)方向去 Google,能夠把握住問題的實(shí)質(zhì)去解決問題。所以對(duì)于考察架構(gòu)師而言,應(yīng)該更加偏向后者,理解和不理解。

  回想一下,其實(shí)有很多類似知道、不知道的問題,你是在 code review 中,其他人的博客中,文檔中就能學(xué)到的。但是那些理解、不理解的問題,其實(shí)大部分都是你多年代碼的經(jīng)驗(yàn)思考出來的,即便你去看了博客看了文檔,該不理解的還是不理解。而作為一名架構(gòu)師,真正要考察的就是理解、不理解的問題。所以你明白,為什么當(dāng)初那些技術(shù)細(xì)節(jié)答不上來的人,但是對(duì)技術(shù)理解很深刻的人能成為頂梁柱,成為架構(gòu)師。而技術(shù)細(xì)節(jié)知道很多,但技術(shù)理解不深刻的人還是只能做高級(jí)工程師的原因了吧?

  算法和數(shù)據(jù)結(jié)構(gòu)類問題

  第二類問題,算法和數(shù)據(jù)結(jié)構(gòu)相關(guān)的問題。這種問題也是很需要問的,但似乎現(xiàn)在在社招的時(shí)候會(huì)問這種問題的面試官不太多,只有在面試比較初級(jí)的人或者應(yīng)屆生的時(shí)候才會(huì)拿來問。

  我覺得面試官即便在面試架構(gòu)師的時(shí)候,還是要問這樣的問題的,只是要注意考察側(cè)重點(diǎn)。一個(gè)架構(gòu)師如果不了解數(shù)據(jù)結(jié)構(gòu)和算法,那他真的很難做出靠譜的架構(gòu),畢竟很多 SDK 底下充斥著各種各樣的數(shù)據(jù)結(jié)構(gòu),而且有經(jīng)驗(yàn)的人都很清楚,對(duì)于一類數(shù)據(jù)而言,不同的結(jié)構(gòu)設(shè)計(jì)或表達(dá)方式,很影響最終實(shí)現(xiàn)的方案的優(yōu)雅程度。所以我們面試架構(gòu)師時(shí),側(cè)重點(diǎn)在于,對(duì)于某個(gè)問題,你如何去選擇合適的數(shù)據(jù)結(jié)構(gòu),合適的算法來解決這樣的問題。

  但是,在面試應(yīng)屆生時(shí),我們問算法和數(shù)據(jù)結(jié)構(gòu)問題時(shí),其實(shí)更加關(guān)注的是他的動(dòng)手能力,給一個(gè)很簡(jiǎn)單的問題,然后讓他把代碼寫出來,或白板,或 IDE。就國(guó)內(nèi)大部分公司招聘的情況和其公司自身的情況來看,如果你學(xué) facebook/google 那樣出算法題,你基本上招不到人。因?yàn)闀?huì)這些題目的人,都在 facebook/google 那兒排隊(duì)呢。

  然后算法和數(shù)據(jù)結(jié)構(gòu)相關(guān)的問題第二個(gè)考察點(diǎn)在于,候選人的思考是否足夠細(xì)密。這個(gè)不管是對(duì)架構(gòu)師候選人,還是對(duì)應(yīng)屆生還是對(duì)社招的高級(jí)工程師而言,重要程度都是一樣的。這個(gè)就不多說了。

  你讓一名架構(gòu)師候選人在面試的時(shí)候做一個(gè)華容道算法,在你而言其實(shí)是對(duì)他的一種鄙視,在他而言他也很有可能寫不出。但如果你讓一名架構(gòu)師候選人在面試時(shí)候展示他對(duì)各數(shù)據(jù)結(jié)構(gòu)的理解,不同場(chǎng)景下如何設(shè)計(jì)合理的數(shù)據(jù)結(jié)構(gòu)和算法,如何權(quán)衡時(shí)間與空間的取舍,這才是對(duì)他的一種重視。

  方案設(shè)計(jì)思路類問題

  第三類問題,方案設(shè)計(jì)思路。大概一年以前我在面試攜程的時(shí)候,遇到過面試官問我這種問題,其它我就沒有遇到過了,一般都是我在自我介紹的時(shí)候主動(dòng)挑一個(gè)去講。我在面試別人的時(shí)候,我也會(huì)問這樣的問題,比如說:

  • 對(duì)于一個(gè) app 的網(wǎng)絡(luò)層,你在設(shè)計(jì)時(shí),你會(huì)考慮哪些問題?
  • 對(duì)于一個(gè) app 的持久層,如果讓你直接用 sqlite,你如何設(shè)計(jì)版本遷移方案?
  • 工作中,你會(huì)采用哪些手段來做解耦?

  嚴(yán)格來說,大部分面試官也會(huì)問這樣的問題,但是是看到你簡(jiǎn)歷上寫過你有這個(gè)經(jīng)驗(yàn),然后直接問這個(gè)方案你是怎么做的,而不是問這個(gè)方案你是怎么設(shè)計(jì)的。在我看來,大部分方案的實(shí)現(xiàn)其實(shí)沒有什么技術(shù)含量,真正有技術(shù)含量的地方在于,拿到這個(gè)問題時(shí),你是如何思考的。就比如數(shù)據(jù)庫版本遷移方案,設(shè)計(jì)的過程是很艱苦的,但設(shè)計(jì)完畢實(shí)現(xiàn)的時(shí)候,就是碼代碼,不能說完全沒有技術(shù)含量,只能說實(shí)現(xiàn)的時(shí)候所需要耗費(fèi)的腦力跟設(shè)計(jì)時(shí)候比,差太遠(yuǎn)了,在我看來屬于沒有什么技術(shù)含量。

  說到技術(shù)含量的事情,我也遇到過特別多的面試官喜歡問這個(gè)問題:過去你解決了哪些比較有技術(shù)含量的問題?我一般不會(huì)拿這個(gè)問題去問候選人,因?yàn)槲矣X得真的到了代碼層面,是基本上不存在技術(shù)含量的概念的,碼代碼這個(gè)工作本身,就是用計(jì)算機(jī)能懂的方式告訴計(jì)算機(jī)應(yīng)該怎么做事,其實(shí)就是一件很沒技術(shù)含量的事情。

  所以我認(rèn)為的技術(shù)含量是,你如何去設(shè)計(jì)一個(gè)靠譜的解決方案,這個(gè)解決方案足夠周密,思考足夠長(zhǎng)遠(yuǎn),提供的 API 很好看,代碼很容易閱讀,很好維護(hù)。

  還有就是逃不掉的 23 種設(shè)計(jì)模式。設(shè)計(jì)模式這種東西早年被業(yè)界說了很多,都說爛了,但我不否認(rèn)的是,這種對(duì)設(shè)計(jì)方法的總結(jié),是每個(gè)架構(gòu)師的起步和入門。如果一個(gè)架構(gòu)師連什么場(chǎng)合使用設(shè)么設(shè)計(jì)模式都分不清楚,各種設(shè)計(jì)模式他的設(shè)計(jì)初衷和希望解決的問題都不知道,那他算是不合格的架構(gòu)師。然而面試官也很少會(huì)去問這樣的問題,一方面可能覺得問這種問題很 low,另一方面其實(shí)也有少部分面試官對(duì)設(shè)計(jì)模式僅僅處在了解和知道的情況,不敢隨便拿出來問。

  總結(jié)

  面試架構(gòu)師其實(shí)是一件不容易的事情,能考察架構(gòu)師候選人實(shí)力的面試官,首先自己就已經(jīng)對(duì)架構(gòu)本身有了很好的理解,就應(yīng)該是一個(gè)合格的架構(gòu)師,其次是需要足夠務(wù)實(shí),有合理的手段合理的問題,通過面試來了解候選人是不是一個(gè)適合做架構(gòu)師的人。最后,要有足夠識(shí)人的眼光以及合適的判斷標(biāo)準(zhǔn),通過候選人的回答,對(duì)候選人進(jìn)行篩選。從我對(duì)目前面試的情況來看,對(duì)這個(gè)我持悲觀態(tài)度。大部分面試官給候選人的感覺更多的是:我問你一個(gè)這個(gè)問題,看你知不知道?而不是:我問你一個(gè)這個(gè)問題,看你怎么去思考?

  所以各家公司如果要想找到合理靠譜的架構(gòu)師,還是很不容易的。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多