談談.NET架構師面試及如何設計面試題
上星期:應老東家的要求,幫其面試.NET架構師。
於是:老東家進行了一星期的簡歷收集;
終於:在一堆簡歷裡,精挑細選了四個;
約了:週末上午下午各兩個。
面試者年齡:在30-35歲左右,差不多10年.NET經驗。
畢竟收人錢財替人消災,所以我特意在面試前的晚上稍為準備了一下:
想看看網上有什麼可參考的,
於是:網上搜搜:.NET 架構師面試題
發現:這塊內容幾乎一片空白,悲哀啊〜〜〜一首“涼涼”送給微軟。
偶爾有一兩條連結,裡面的題都是.NET面試題,套上了架構的名頭,坑誰啊。
看來只能自己設計了,考慮到:
時間:大約只有1個半小時左右的面試時間。 崗位:.NET 架構師。
這樣的時間,這樣的崗位,我設計的問題必須直指核心,全面且有效的評估面試者的能力。
大約花了兩小時左右,就設計好了面試的大體內容。
下面就和大夥分享我設計的面試過程或內容:
1、現場編碼。
要求寫出:快取類+SqlHelper類(30分鐘內,然後由程式碼引向面象物件或設計模式)。
2、資料庫。
問了兩點:索引的壞處,事務的級別,分散式事務的原理。
3、發散思維題一。
題目:電商,瞬時搶購的方案,你會如何設計。
4、發散思維題二。
題目:4G記憶體的電腦,如何讀取8G的日誌檔案進行分析,彙總資料成報表。
5、迴歸基礎題。
題目:說說 陣列、連結串列、Hash表的缺點。
6、IIS。
題目:應用程式池的整合模式和經典模式的區別。
7、發散性問題:安全
題目:說說你認為的安全都有涉及到哪些地方?
8、發散性問題:效能
題目:說說你認為的效能都體現在哪些地方?
9、發散性問題:分散式
題目:說說叢集、故障轉移、負載均衡、分散式都有哪些不同?
10、Http 協議
題目:
1:說說301,302,304這三個狀態碼的用處; 2:協議版本1.0/1.1/2.0,有哪些變化你關注到了?
11、TCP、UDP 協議
題目:說說穿透或打洞的原理。
12、ASP.NET 的基本
題目:聊聊.NET的管道和.NET Core的中介軟體。
問題或方向可以很多,只挑了這些,感覺已經夠聊幾個小時了,
且大多數是發散性思維題,沒有固定答案,
只要你會聊,每個題都能引出一堆知識點,
但若是基礎不穩,回答不了,或一瞎扯馬上就能聽出來〜
架構師是什麼?
網上有很多定義,但讀取起來都很抽象,
這裡,我想用更直白的方式來形容。
架構師=(.NET)語言的熟練開發 + 領悟( 超越語言本身的技術原理+全面的技術體系 )+ X。
如果你認為能熟練的把各種框架組合在一起,搭建一套框架,就是架構師,那你也too洋吐Simple了。
因為有這種能力的,一抓一大把,每個能熟練開發的,基本都能做的到。
有些人10年了,學了很多的框架用法,也只是把熟練開發階段再寬一點;
再給10年,也許能領悟出吧,但國內的人生幾乎容不下另一個10年開發了。
所以,在5-7年這個核心階段,不領悟出後者,入架構師的門就很渺茫了。
當然也有些僅靠熟練開發階段就在公司當架構師的,只能說lucky了。
老東家的面試結果與總結:
要面試一箇中級程式設計師和一個高階程式設計師的能力差別,也許有點難。
但要面試一個高階程式設計師和架構師的差別,卻很容易。
面試的結果很慘淡,全都停留在熟練開發,不求甚解的階段,
可悲的是,這不是個別現象,而是群體現象。
在這框架群出的時代,能因緣領悟走向架構師的已如鳳毛麟角。
若沒有相應的架構師人才,除了少數公司,
最後的結局,大多數公司架構師這職位大概會慢慢消失。
特別是.NET領域。
所以:
準備試點為.NET的未來培訓點架師。
目前報名的有七八個,不過基本都被我拒了,因為:
年紀太大,職位太高:有技術總監,有專案經理,有技術創業者。
經驗不太足:只有1-2年左右的經驗
按我的設想,3-7年的最合適,離架構師也最近,培訓完還能推薦到給有需要的公司。
一段讓你思考的對話:
今有個87年的網友問了我這個問題,讓我想起了兩年前,
也有個10年經驗的問了我差不多的問題:秋天,你和我的技術差距在哪裡呢?
這種問題的潛在答案就是:
在熟練開發階段,好像你和我並沒有什麼不同,一般的系統你能開發的我也能開發。
的確,在這個階段,是沒有大不同,
不同的是領悟的部分,而這個部分是由大量碎片化的經驗組成的,
很抽象不好解釋,
而單獨的表達某一個碎片化的知識時,更說明不了什麼問題:因為一說完,他就能知道。
最後除了說:我能寫框架,你寫不出來,這就是差別,然後呵呵,還能怎麼表達〜〜〜
不過看完今天的這篇文章,他大概會明白一些吧,若再不明白就真老了。
到熟練開發階段,是很自然而然的事,而且沒有門檻,
可怕的是,多數人的心態在這裡就止步了,
一停留就五六七年,醒來時卻晚了。
最後,願本文,能讓迷茫、停留在熟練開發階段的人有所幫助。
PS:有興趣的可以關注本文的上一篇文章,有驚喜。