? ? 我在博客園里乃至其它地方看到有不少對培訓班出身的程序員的評價,其實至少在我面試時汽摹,培訓班出來的程序員沒有原罪李丰。
? ? 我也面試不少程序員苦锨,從高級開發(fā)到初級開發(fā)都有逼泣,有985和211名校出身的,也有大專學習通過培訓班積累IT經(jīng)驗的舟舒。我見過有候選人正大光明地把培訓經(jīng)歷寫在簡歷上拉庶,也見過候選人千方百計地想把培訓經(jīng)驗掩飾成項目經(jīng)驗。對我來說(相信其它大多數(shù)技術面試官都一樣)秃励,我只需要考量候選人的以往商業(yè)項目經(jīng)驗和實際技能氏仗,看下是否匹配本崗位。
? ? 至于候選人的技能來來自哪里夺鲜?說句笑話皆尔,如果候選人面試時不露破綻,把培訓項目說成商業(yè)項目币励,我真無法鑒別慷蠕。在本文里,我第一將從面試角度食呻,糾正當前對培訓班的一些觀點流炕,第二從培訓班的角度澎现,來分享下我如何在面試時甄別商業(yè)項目的方法。
? ? 在開篇前每辟,我引用兩段俗語剑辫,第一,外行看熱鬧渠欺,內行看門道妹蔽。第二,一力降十會挠将。至于為什么要引用讹开?本人絕非空穴來風,請大家自行體會捐名。?
1 培訓項目如果被看穿旦万,是會被扣去這段時間的項目經(jīng)驗
? ? 目前大多數(shù)培訓學校都會把學習項目包裝成商業(yè)項目,因為他們也知道商業(yè)項目的含金量更高镶蹋。如果我在面試時判斷出候選人的項目是從培訓班里得到的成艘,我會給出如下的判斷。?
? ? 第一贺归,候選人掌握對相應的技術淆两,比如Spring MVC,也能通過學習項目加深了對此的了解拂酣,這是不用質疑的秋冰。
? ? 第二,這段時間的項目經(jīng)驗婶熬,不能算是商業(yè)項目經(jīng)驗剑勾,這對候選人來說是相當不利的。
? ? 因為不少職位是有硬性的項目年限標準赵颅,比如2年虽另,而且最近半年最好是在用相關的技術。如果候選人被發(fā)現(xiàn)最近半年的項目是從培訓學校里學到的饺谬,可能有些公司會不在乎捂刺,但至少我會被要求詳細寫下這一情況,如果該候選人沒有其它補償優(yōu)勢(一般都不會有)募寨,那么面試就結束了族展。而且,不少從培訓班里出來的候選人拔鹰,有實戰(zhàn)性的項目經(jīng)驗或許只限于此仪缸,那么再被扣除后,就真的沒有商業(yè)項目經(jīng)驗了格郁。
? ? 如下是我對培訓班出身的程序員給出的比較客觀的看法腹殿,如果你從培訓班里出來后独悴,也有多年的開發(fā)經(jīng)驗了,這些商業(yè)項目經(jīng)驗達到了職位的客觀標準锣尉,那么一切都好說刻炒,至少我了解到的面試官不會因此卡候選人,但如果沒實際項目經(jīng)驗自沧,比如從培訓班出來后第一份工作坟奥,那么如果被卡,絕非是你的培訓班出身拇厢,而是缺乏商業(yè)項目經(jīng)驗爱谁。
2 簡歷中哪些項目看上去像學習項目
? ? ?第一類,我最近在面試中孝偎,發(fā)現(xiàn)有不少簡歷上描述的項目非常高大全访敌,比如項目里用到了Spring Cloud里的所有組件,什么Eureka,Ribbon衣盾,Zuul等都用了一遍寺旺,或者在項目里,大數(shù)據(jù)分析的势决,分布式組件相關的技術也都用了一遍阻塑。而候選人的工作年限就3年。
? ? 或者果复,有候選人會在一個項目里陈莽,把分布式組件全都用一遍,比如Dubbo, nginx虽抄,kafka等走搁,但從項目的需求上來看,無需用那么多的組件极颓。
? ? 第二類朱盐,比如xx電商系統(tǒng)群嗤,xx財務軟件菠隆,xx教學管理軟件,xx圖書館管理軟件狂秘。汗顏骇径,其實我當年也這樣寫過。當然者春,我也列不全破衔,但大家都做過畢業(yè)設計項目,凡是看上去像畢業(yè)設計的項目钱烟,一般真就有可能是學習項目晰筛。
? ? 而且我往往會見到這樣的情況:在一個時間段里嫡丙,從獵頭等途徑得到一批項目經(jīng)驗很相似的簡歷,比如都電商項目读第,需求和描述以及技術用得基本相似曙博,但公司名不同,這種情況往往大家心知肚明怜瞒。?
? ? 第三類父泳,候選人在項目里,干了非常多的模塊吴汪。我們知道惠窄,哪怕是資深開發(fā),在項目里漾橙,能把一兩個模塊做精就夠可以了杆融,但我就見過不少候選人,在項目里霜运,用了短短兩三個月擒贸,就做了很多模塊,這樣的工作效率和開發(fā)情況非常不符觉渴,這一般也會被列入懷疑對象介劫。
? ? 遇到這類項目,我不會武斷地立即給出定論案淋,而是會通過下面的盤問方式座韵,來把候選人繞暈,以此來甄別是哪類項目踢京。
4 遇到疑似學習項目誉碴,我通常的質疑方式
? ? 其實候選人應該比面試官更熟悉項目以及其中用到的技術,所以如果真的是商業(yè)項目經(jīng)驗瓣距,應該對各方面能自圓其說黔帕,至少不能相互矛盾。
? ? 所以遇到疑似學習項目蹈丸,我一般會有如下的詢問方式成黄。
? ? 方式1:,詢問技術是否和項目背景匹配逻杖。比如某簡歷中提到用Kafka奋岁,我就會問。
? ? ? ? ? ? 第一荸百,你是否了解kafka的細節(jié)闻伶?如果了解,先問些基本問題够话,以此來確認是否用過蓝翰。
? ? ? ? ? ? 第二光绕,kafka用在項目里哪個模塊里,具體是實現(xiàn)哪個業(yè)務畜份?一般來說奇钞,哪怕是學習項目,這也能說清楚漂坏。
? ? ? ? ? ? 第三景埃,關鍵點在這里,詢問使用kafka的必要性顶别。我會問谷徙,xx需求點,確實是實現(xiàn)了消息通訊的功能驯绎,但實際通訊量并不高完慧,用一般的Dubbo調用足以應對,那為什么還要大費周章地用kafka?甚至還要用kafka集群剩失?或者我干脆提問屈尼,kafka是消息中間件,但xx需求里并沒有發(fā)消息通訊的需求拴孤,為什么要用脾歧?
? ? 通過這種提問,一般簡歷中是學習項目演熟,候選人可能會了解kafka技術細節(jié)鞭执,但由于沒在項目里配過,所以很難講清楚為什么要用這個技術芒粹,這樣就露餡了兄纺。 ?
? ? 方式2,一般候選人把學習項目放入簡歷化漆,往往比較難搞清楚一些技術細節(jié)估脆,或者沒真實配置過,所以我會問些配置部署方面的問題座云。
? ? 比如某簡歷中有dubbo疙赠,我就會問,項目里是如何配置dubbo疙教,具體來說棺聊,你為了讓遠端能調到dubbo,一般會在哪些配置文件里做什么配置贞谓?或者,你提供的dubbo服務葵诈,如果設置超時等待時間和重試次數(shù)裸弦。
? ? 根據(jù)面試結果祟同,一般在學習項目里,能實現(xiàn)功能即可理疙,候選人一般不會注意這些配置方面的細節(jié)晕城,而這些加恰恰是商業(yè)項目里一定會用到的,所以通過這個問窖贤,往往一抓一個準砖顷。
? ? 方式3,詢問項目的商業(yè)價值赃梧。比如滤蝠,我見過不少候選人做過xx物流系統(tǒng),xx電商系統(tǒng)授嘀,xx人事管理系統(tǒng)物咳。
? ? 遇到這類系統(tǒng),我就會問:目前市面上這類大型網(wǎng)站夠多了蹄皱,這些系統(tǒng)如果做成上線后览闰,如何同現(xiàn)有的競爭?候選人往往說不知道巷折。我會進一步問压鉴,這個系統(tǒng)有沒有上線?網(wǎng)址是什么锻拘?客戶是誰晴弃?開發(fā)周期有多少?凡是涉及到這類項目細節(jié)了逊拍,候選人往往就會漏洞百出上鞠,比如業(yè)務10個人月即可完成的,會被說成20個芯丧,或者干脆推說不知道芍阎。
? ? 遇到這種情況,而且候選人其它問題再回答不好缨恒,那么我真能確信是學習項目了谴咸。
? ? 方式4:就問一些矛盾的技術細節(jié)。比如候選人列出某項目里用到一些分布式技術骗露,比如同時用到nginx和spring cloud里的zuul以及Ribbon岭佳。我們知道,在項目里萧锉,nginx和ribbon都能實現(xiàn)負載均衡珊随,但往往就用一套,但真有候選人會寫兩個都用。類似的叶洞,候選人在寫項目時鲫凶,由于往往是東拼西湊的,所以未必對技術了解很透徹衩辟,所以出現(xiàn)矛盾的地方會很多螟炫。
? ? 所以我往往就說:在你項目里,xx和xx技術并存了艺晴,它們是實現(xiàn)同一套功能昼钻,你們?yōu)槭裁磿脙商祝客蜻x人就無法自圓其說了封寞。? ? ?
5?準備商業(yè)項目的要點(尤其經(jīng)歷過培訓班)
? ? 其實我自認為在上部分的質疑并不苛刻然评,或者是對簡歷中項目描述里的矛盾點提出疑問,或者就問些只要做了項目就一定能了解的非吃啃牵基本的點沾瓦,但就這些比較簡單的質疑,真的排查出絕大多數(shù)的學習項目谦炒。
? ? 大家看了以后一定會非彻彷海慌,別怕宁改,這里我會列出商業(yè)項目的準備要點缕探。有人看了就會問了,如果根據(jù)這里的準備方式準備后來找我面試还蹲,能不能過爹耗?我一定回答是,不能過谜喊,因為我面試的技巧是潭兽,運用之妙,存乎一心斗遏,是無法用文字形容的山卦。而我給出的準備要點由于是落了文字,所以終屬下乘诵次。
? ? 那么看了我的技巧有什么幫助账蓉?第一遇到不那么專業(yè)的面試官,或者項目緊眼開眼閉的面試官逾一,就能過铸本,第二,我介紹面試技巧的博文多少也能給出些實用技巧遵堵。所以一定能幫助大家提升面試成功率箱玷。好了,言歸正傳,下面列些準備商業(yè)項目的要點汪茧。
? ? 1 尤其是經(jīng)歷過培訓班的同學椅亚,可能大家對技術把控不怎么深限番,所以在簡歷中舱污,應當只列你熟悉的技術。比如你項目里就列了1個亮點弥虐,而且你能說清楚扩灯,那么這是個加分項,但你如果列了3個霜瘪,只講清楚2個珠插,1個被問倒了,面試官會進一步質疑你在項目里是否用到這個技術颖对,再進一步會質疑你項目的真實性捻撑。
? ? 而且,你列好了以后缤底,可以請你的培訓老師或者比較資深的朋友幫忙把把關顾患,看下技術是否有矛盾點,而且針對每個技術个唧,你要和實際項目結合起來江解,能講清楚為什么要用這個技術?遇到需要大費周章的分布式集群徙歼,你還得能說有什么需求(往往是性能要求)要值得你配置集群犁河。
? ?2 從項目的盈利角度再回顧下,目前很多項目不是從頭開始做魄梯,比如做個在線購物桨螺,這一定虧,如果面試官從這點來質疑你酿秸,你很難自圓其說灭翔。但如果你做的是維護項目,比如維護一個歷史項目允扇,或者干脆維護歷史項目里的一個模塊缠局,而不是什么都從頭做起,那么可信度就大大提升了考润。
? ?3 別說你在項目里只做開發(fā)狭园。一般來說,你在項目里糊治,除了做開發(fā)之外唱矛,還會適當做自測或數(shù)據(jù)庫部署或項目部署等工作,如果你說在項目里還通過ant或maven等方式打包項目,或或通過jenkins部署過程序绎谦,或者再加上通過看日志排查過問題管闷,那么你說這個項目是商業(yè)項目,這可信度就大大提升窃肠。?
? ? 4 這點其實我原本不想列上的包个,即所謂“哪怕吹牛也要打草稿”。這里我倒不是鼓勵大家自己編造項目經(jīng)驗(事實上我更反對)冤留,但我真見過不少候選人在描述項目背景碧囊,項目持續(xù)時間和在哪個公司里做的項目這些關鍵因素時,和簡歷有沖突纤怒,而且在我質疑時也說不清楚糯而。還是這句話,你做的項目你自己都說不清楚泊窘,那么我真有足夠的理由來懷疑這個是學習項目熄驼,而不是商業(yè)項目。?
其實烘豹,在我寫的JavaWeb輕量級開發(fā)面試教程和Java核心技術及面試指南這兩本書里瓜贾,列了更多準備項目描述的經(jīng)驗。
6?再論通過描述技術提升項目可信度的方式
上述四點里吴叶,關鍵是第一點阐虚,即準備項目里用到的技術,以此來提升項目的可信度蚌卤。其實我在最近面試java后端開發(fā)的感受:如果就以平時項目經(jīng)驗來面試实束,通過估計很難——再論面試前的準備這篇博文里已經(jīng)講過相關技巧,這里再深入講解些準備技巧逊彭。
? ? 1 準備技術使用的必要性咸灿,要讓面試官感覺確實有必要使用這個技術。
? ? 我見過不少候選人對技術準備比較好侮叮,但忽視了“實用必要性”的說辭避矢。尤其在些培訓班里,項目是老師給的囊榜,學生確實也已經(jīng)理解审胸,而且理解很透徹,但在培訓班的項目里無法模擬高并發(fā)的場景卸勺,所以我用“必要性”真就排查出不少培訓項目砂沛。
? ? 比如在項目里用到了分布式消息通訊中間件kafka,但如果你的項目只部署在一臺服務器上曙求,那么這就屬于沒必要用碍庵,或者模塊間的通訊量不多映企,用單機版的kafka即可,也無需用集群静浴。但如果你說堰氓,應用訪問量足夠大,或者模塊以微服務的形式部署在不同機器上苹享,且模塊間通訊量大双絮,有必要用消息中間件異步來處理,那么說用到kafka富稻,這才能說得過去偿乖。
? ?2 不僅要準備理論知識秘蛔,更要適當準備實踐類問題掘譬。
? ?我自己也知道杖狼,如果候選人通過看資料桥状,或者上培訓班融蹂,可以對使用性技術了解很深灶伊,真就可以以假亂真该编。所以我往往會通過一些配置方面的問題來提問向抢。比如我就問认境,使用nginx時,你在配置文件里配置過哪些元素挟鸠?這類問題只要做過叉信,一定能說得上。對此艘希,你在介紹項目時甚至不該等面試官來問硼身,主動說些配置環(huán)境,設置數(shù)據(jù)庫索引覆享,設置Linux里JVM參數(shù)等方式佳遂,再不濟你可以說下項目是如何打成jar包部署到服務器上的,這樣一定能增加項目的可信度撒顿。
? ? 3 相比前兩點丑罪,這點就比較好準備。我在面試的時候凤壁,見到大多數(shù)的候選人吩屹,對于比較值錢的技術,比如Spring Cloud里的負載均衡組件拧抖,只會簡單地使用煤搜,而不知道原理。對此徙鱼,我給出的評價是宅楞,了解xx技術针姿,但只會簡單使用。相比之下厌衙,你可以看些底層的實現(xiàn)距淫,或者畫出基于分布式的框架圖,這樣婶希,我的評語就會升級到“在項目里用過xx技術榕暇,而且了解底層,對xx技術有一定的了解”喻杈。
? ? 4 這點我在其它博文里也反復提到彤枢,由于重要,所以這里再重復一次筒饰,你要講清楚這個技術對項目有什么幫助缴啡,具體來說,在性能上或部署上有什么幫助瓷们,比如你說用到了jenkins业栅,通過它的“一點即可部署”功能可以實現(xiàn)自動化部署,或者谬晕,通過用到了數(shù)據(jù)庫集群碘裕,能應對高并發(fā)的場景,或者用到了JVM監(jiān)控和優(yōu)化攒钳,能解決項目因OOM而導致的性能下降帮孔。如果你能有條理地說,因為我項目里有xx問題不撑,所以我們用了xx技術文兢,而且講清楚這個技術是如何解決實際問題的,哪怕就憑這點燎孟,我就能相信這個項目是商業(yè)項目禽作,而非學習項目。?
7 培訓班出來后的第一份工作應當以積累經(jīng)驗為主
? ? 我身邊有不少朋友就是從培訓班出來的揩页,現(xiàn)在也發(fā)展得不錯旷偿。不過,如果從培訓班出來后第一份工作就找大廠爆侣,比如大的互聯(lián)網(wǎng)公司或者大型外企或者知名公司萍程,這類先例不是沒有,但很難兔仰,畢竟培訓項目要包裝成商業(yè)項目經(jīng)驗茫负,這總是有破綻的,況且不少同學在進培訓班之前沒有相關經(jīng)驗乎赴。
? ? 所以建議大家從培訓班后忍法,找個一般的公司潮尝,積累些實戰(zhàn)經(jīng)驗,這絕非難事饿序,畢竟一般公司里的普遍面試要求是“能干活即可”勉失,不過話說回來,培訓班經(jīng)歷外加2到3年的實際項目經(jīng)驗原探,這真就和科班出身的程序員沒什么差別了乱凿。說句不該說的話,這時你把兩三年前培訓班的學習經(jīng)驗改成項目經(jīng)驗咽弦,這真能蒙混過不少面試官了徒蟆,但別來蒙我。
? ? 我見到過發(fā)展途徑是型型,培訓班后第一份工作很苦段审,尤其是試用期階段更得996,但堅持過半年后输莺,能立足戚哎,這個階段開始刷題外加準備分布式高并發(fā)的技術點,外帶積累項目經(jīng)驗嫂用,過了3年,如果能力一般就可以通過外派的形式進大廠丈冬,如果能力可以嘱函,真就能進BAT了。?
8 總結
? ? 在本文里埂蕊,我列了些作為面試官甄別商業(yè)項目經(jīng)驗的技巧往弓,在此基礎上也給出了準備面試時商業(yè)項目經(jīng)驗的方式。其實本文對大多數(shù)做IT的朋友多少有些幫助蓄氧,但我自認為函似,對培訓班出身想從事程序開發(fā)的朋友幫助更大。
? ? 本人最近工作比較忙喉童,也在趕新的Python方面的書撇寞,盡管如此,我還是利用各種碎片時間寫成本文堂氯,所以請大家多多支持蔑担,如果感覺本文可以,請盡量通過點擊下面的按鈕來推薦文本咽白,如果大家想進一步聽本文中的某個話題啤握,也請通過評論的方式來告訴我。