面试 4 个月,最终入职大厂经验分享!
在18年底到19年3月,陸續(xù)面試了幾家公司,有成有不成的,最終進(jìn)了一家比較滿意的知名外企。在本文里,我將介紹我這段時間里更新簡歷和面試的相關(guān)經(jīng)歷。
可能面試相關(guān)的一些方法,大家能從我之前的博文里看到,但在本文里,大家更能從相關(guān)實戰(zhàn)性的例子中進(jìn)一步體會到面試技巧的使用方法。
1 剛開始一定得通過一些小公司練手
我打算要換工作,就更新了簡歷,這時就有不少獵頭來找我,剛開始,我不敢面大公司,只是去些規(guī)模小的互聯(lián)網(wǎng)公司。因為一方面,當(dāng)時我很久不面試了,面試實戰(zhàn)技能難免有些荒廢,另一方面,離我之前的面試畢竟過了一陣,我不知道當(dāng)前市面上哪些技術(shù)比較值錢。
而且,我在面試前會準(zhǔn)備一些針對項目和值錢技術(shù)的說辭,這些說辭總要經(jīng)過實戰(zhàn)來演練下。事實上,在和小公司溝通的過程中,進(jìn)一步提升了我的相關(guān)表述能力和相關(guān)話術(shù),相當(dāng)于用小公司來踩坑。相反,如果用大公司的面試失敗來換得這些進(jìn)步,就未免有些可惜了。
所以,我和獵頭明說,我想去大公司,但之前,你得讓我到一些小公司去練練手,同時,我面試好以后,會告訴你這些小公司的面試題和相關(guān)技巧。這樣一些獵頭就肯先推薦我去小公司了。
2 投簡歷前,微調(diào)簡歷描述的技巧
1 公司A在職位介紹里,提到對分布式組件有要求,尤其是負(fù)載均衡集群。這塊技術(shù)我在通用版簡歷中只是籠統(tǒng)寫了下,有nginx+lvs實際經(jīng)驗,既然這個公司有類似要求,我就在簡歷中細(xì)化了這塊:用到了lvs+keepalive集群和nginx,它們分別工作在4層和7層,(后省略相關(guān)技術(shù)使用點描述),最后介紹下效果:用了這個負(fù)載均衡組件外,我們系統(tǒng)承受住了xx的并發(fā)量。
2 在公司B的職位介紹里,提到了高并發(fā)的需求,那么我就著重寫了我壓測的相關(guān)經(jīng)驗,包括壓測環(huán)境怎么部署,用到哪些組件,再同時列了些壓測后改善系統(tǒng)性能的若干方法。
3 公司C比較小,需要一位比較資深的能帶團(tuán)隊的架構(gòu)師,那么我在簡歷中除了介紹技術(shù)外,還著重寫了帶團(tuán)隊的若干經(jīng)驗。
對大家來說,其實面試任何一家公司,它們的職位要求絕對不可能一樣。這時大家最好是微調(diào)下簡歷。這種微調(diào),絕對不是胡亂編寫,比如上個項目干的是測試,簡歷中改成開發(fā)。而是挖掘下側(cè)重點。
就像我之前給出的案例,對于分布式技術(shù),我上個項目確實用過,但簡歷中篇幅有限,我不可能面面俱到地寫,但既然你們公司有要求,那么我就針對性地詳細(xì)介紹。
其實這塊談不上是面試技巧,而是語文技巧。首先是審題,理解職位介紹的主要內(nèi)容,然后再像寫作文那樣,詳細(xì)擴(kuò)展下上個項目里相關(guān)技術(shù)點。甚至這只是中考語文的考點而不是高考的,但我自己的體會是,在這段時間里針對每份職位介紹我都做了微調(diào),所以基本上是投一份簡歷就能得到一次面試機(jī)會。
3 在換工作前,需要定下預(yù)期目標(biāo),同時要觀察公司的情況
我見過不少人,面試成了就進(jìn)去了,結(jié)果雖然錢達(dá)到預(yù)期,但工作環(huán)境和行業(yè)背景都不是自己想要的,對自己未來發(fā)展很不利。
目前不少公司的情況,比如行業(yè)背景(比如金融保險電商等)還有工作強(qiáng)度(加班情況)在網(wǎng)上都能查到,用什么技術(shù)(比如分布式技術(shù)還是云還是AI)通過打聽也能問到。
互聯(lián)網(wǎng)是萬能的,甚至如果仔細(xì)些,一些離職率,每年工資的增長幅度,甚至這個公司是第幾輪融資,一般也能看到。
而且,大家在面試的時候,可以通過現(xiàn)場觀察以及和面試官交流,旁敲側(cè)擊地打探到上述情況。在這個基礎(chǔ)上,大家需要結(jié)合自己當(dāng)前的需求和未來3到5年的發(fā)展方向,找若干類適合自己的公司,下面就給些我個人的和我所見到的例子。
1 (這是我個人的觀點)比如我不大愿意進(jìn)創(chuàng)業(yè)型公司,也比較排斥長時間的996,所以這類公司我只是拿來練手。
2 有段時間,不少P2P金融公司踩雷,所以哪怕面試時,這類公司的面試官會說得天花亂墜(很少有說自己不好的),但這類公司得慎重。
3 有次我到一個現(xiàn)場去面試,發(fā)現(xiàn)公司規(guī)模不大,是在一個園區(qū)里占1個樓層,且大多是業(yè)務(wù)人員,開發(fā)的不多,而且人事總會說自己公司正在融資,那么這個公司就有可能不穩(wěn)定,在有其它選項時,我就沒去。
4 我認(rèn)識一個人,他想在Java分布式這塊有所發(fā)展,他5年后的目標(biāo)是架構(gòu)師,在面試過程中,他就詳細(xì)問了未來新進(jìn)組的技術(shù)棧,等確定可以了再入職。
換工作是個折騰人的事情,雖然沒有十全十美的事情,進(jìn)新公司后一定會發(fā)現(xiàn)和當(dāng)初的預(yù)期有所不同,但如果事先不調(diào)查,那么入職后后悔這還是小事,耽擱自己的發(fā)展才是大事。
4 面試前,我總要查看職位介紹,以此準(zhǔn)備項目介紹
在上文里,我一直介紹的是準(zhǔn)備簡歷和定目標(biāo),從這部分開始,將介紹準(zhǔn)備面試。在之前的博文里,我一直強(qiáng)調(diào)項目介紹的重要性,所以當(dāng)我自己出去面試的時候,這塊絕對重視。在準(zhǔn)備項目介紹前,我還是會通讀應(yīng)聘職位的技術(shù)介紹,然后按如下的步驟來準(zhǔn)備。
1 介紹項目的基本情況,比如這個項目是干嘛的,有哪些模塊流程是什么,自己做了哪些,持續(xù)了多久,有多少個人參與。這塊切記,可以談下業(yè)務(wù),但別深入,因為面試官不熟悉,也不想熟悉候選人的業(yè)務(wù),這塊時間控制在1分鐘之內(nèi)。
2 通過介紹項目用到的軟件,以及項目的管理方式,來進(jìn)一步驗證項目的真實性,否則很難和培訓(xùn)班給出的項目有差別。
我介紹的時候,就說,項目管理用Maven,部署用jenkins,靜態(tài)掃描用Sonar,任務(wù)管理和bug管理用jira,平時采用敏捷的項目迭代方式,每天有站會,大約1月一個迭代版本。這塊大家可以根據(jù)自己的情況來介紹,時間也別太長,估計用1分鐘也就夠了。
關(guān)注微信公眾號:Java技術(shù)棧,在后臺回復(fù):maven,可以獲取我整理的 N 篇最新 Maven 教程,都是干貨。
3 這塊最重要,是結(jié)合業(yè)務(wù),拋出項目用到的技術(shù),但別展開。
比如我見過一個職位介紹,里面寫到需要有數(shù)據(jù)庫優(yōu)化的經(jīng)驗,那么我就說,項目里我用過MyCat作為分庫分表,(不展開技術(shù)),結(jié)果上線后,我們數(shù)據(jù)庫能承受住每秒2000個并發(fā)請求(說下用好的結(jié)果)。
又如一個JD里說要用到微服務(wù)技術(shù),那么我就說,項目里用到了Spring Cloud框架,用到了Ribbon,Eureka等組件,容器是Docker。用好以后,在發(fā)布時會發(fā)現(xiàn),各模塊之間的調(diào)用耦合性大大降低。
關(guān)注微信公眾號:Java技術(shù)棧,在后臺回復(fù):spring,可以獲取我整理的 N 篇最新 Spring Boot/Cloud 教程,都是干貨。
這塊為什么不用展開?第一,當(dāng)前還在介紹項目,如果展開技術(shù),就會主次不分,面試官會對你的邏輯思路產(chǎn)生質(zhì)疑。第二,由于在JD里有要求,面試官一定會深入來問,別人問你說總比自己自吹自擂要好。第三,就好比之前考文科內(nèi)容,當(dāng)前在介紹項目時,先應(yīng)當(dāng)把所有的點說出來,面上自有機(jī)會發(fā)揮。
5 準(zhǔn)備項目介紹時,我是如何準(zhǔn)備值錢技術(shù)的
這塊其實和介紹項目經(jīng)驗時密不可分,這里就拿我介紹過的Netty組件來說明。
1 準(zhǔn)備如何過渡到相關(guān)技術(shù)的說辭。
這里一定別讓面試官感覺你在自說自話。比如我準(zhǔn)備的方案1是,在介紹好項目背景后,如果面試官沒打斷,我就詢問,能否介紹其中的Netty細(xì)節(jié)?得到允許后再說。
方案2是把這些技術(shù)關(guān)聯(lián)到面試官可能會問的問題上,比如問及網(wǎng)絡(luò)通訊時介紹Netty,這個事先我會整理一個問題列表,遇到此類問題,我會拋出Netty說辭。對于其他技術(shù)也可以照此準(zhǔn)備。
2 結(jié)合業(yè)務(wù)需求點,說下為什么要用這個技術(shù),以及用了有什么好處。
比如為了優(yōu)化網(wǎng)絡(luò)通訊協(xié)議,所以用基于TCP協(xié)議的Netty,我業(yè)務(wù)模塊里的xxx功能是用到netty,再稍微結(jié)合業(yè)務(wù)和Netty展開下。這樣的話,面試官就會感覺這個技術(shù)你不是僅僅在學(xué)習(xí)中用到,而且在項目業(yè)務(wù)里用到。
3 準(zhǔn)備下這個技術(shù)里我踩過的坑。
比如通訊過程中我遇到了半包和粘包問題,對此我更是深入了底層代碼說明,還有Netty里的堆外內(nèi)存管理問題,我準(zhǔn)備了一個由于管理不善而導(dǎo)致的OOM問題的排查和解決過程(這類問題網(wǎng)上相關(guān)的也很多)。
4 我再準(zhǔn)備了用了這個技術(shù)后對項目的幫助。
比如Netty是基于TCP協(xié)議的,它要比Http協(xié)議要輕,所以通訊性能高,且Netty內(nèi)部的Reactor線程模型對系統(tǒng)的IO幫助很大。
其實準(zhǔn)備到這個程度,一般的面試官就不怎么再問了,哪怕面試官再問了一個我不知道的問題,我也可以理直氣壯地說不知道了,畢竟我之前已經(jīng)介紹了不少底層代碼,再精通Netty的人也未必能面面俱到地在脫稿的情況下回答出任何問題。
但為了以防萬一,我更準(zhǔn)備了“源于項目但高于項目”的說辭,一方面證明我平時還會不斷專研,另一方面進(jìn)一步證明我熟悉并能合理使用Netty的底層代碼。這方面我準(zhǔn)備了如下的內(nèi)容:
1 Netty的重要組件以及一個請求過來時各模塊工作的時序圖。
2 Netty內(nèi)部零拷貝的原理和好處,對此還專門準(zhǔn)備了代碼。
3 Netty讀寫索引的工作方式。
4 Netty異步處理的機(jī)制。
大家可以想象下,如果在面試中,大家很自信地邊寫底層代碼邊解釋問題,面試官會對大家有什么評價?其實這些都是可以準(zhǔn)備的,我一直沒明白,為什么有些人面試前不做任何準(zhǔn)備?這些準(zhǔn)備的素材又不是找不到。
下面我再略講下我MyCAT的準(zhǔn)備要點。
1 還是講下業(yè)務(wù)背景,為什么要用?
2 如何使用,無非是設(shè)置分庫規(guī)則,改寫SQL語句等。
3 準(zhǔn)備下踩到的坑,比如自增長主鍵在每臺機(jī)器上都要保證唯一。
4 然后再結(jié)合些底層代碼,準(zhǔn)備下一條SQL語句是如何分發(fā)到對應(yīng)的分庫上的,然后執(zhí)行好以后又如何返回的。
基本上我面試時說到這個程度后,面試官就不怎么問了。
6 事前評估好自己的薄弱點,想辦法讓面試官忽略
哪怕事先再準(zhǔn)備,我們也不能保證自己一定能達(dá)到職位介紹里的要求,這時候就得準(zhǔn)備一個自己薄弱技術(shù)的列表,然后想辦法在面試中繞過去,如果繞不過去,就找些替代方案。
關(guān)注微信公眾號:Java技術(shù)棧,在后臺回復(fù):面試,可以獲取我整理的 N 篇最新面試題,都是干貨。
比如我對消息通訊組件不熟悉,在面試前我哪怕看代碼看文檔也無法進(jìn)一步理解,我就在面試中,故意不提這個環(huán)節(jié),拋出其它值錢技術(shù),引誘面試官來問,一般交流一個技術(shù)點大約耗時10分鐘(邊畫圖邊介紹再提問),所以面試過程中詳細(xì)交流到的最多也就5個點,少的話就3個,在不少面試?yán)锞透緵]涉及到這塊。
有兩場面試,技術(shù)面試官問及到了,我就說項目里用過,同時多介紹些使用場景,比如用Kafka進(jìn)行異步消息通知,通過消息中間件來保證交易的冪等性。這樣面試官聽到我介紹了應(yīng)用場景,就至少會認(rèn)為我用過。只有一場面試,面試官在kafka方面問得很細(xì),問到如何集群內(nèi)防止消息重發(fā)的細(xì)節(jié),我就沒回答上。
也就是說,我通過刻意回避外加介紹業(yè)務(wù)應(yīng)用場景,很大程度上隱藏了我了解不深的技術(shù)。相反,如果我在簡歷中大大咧咧地寫上用過kafka,那么可能每場面試都會被問到,畢竟在面試中被問倒不是件好事。
又如,我對分布式集群里的失效轉(zhuǎn)移底層細(xì)節(jié)始終沒理解透徹,那么在相關(guān)問題上就得非常小心。
有一場面試?yán)?#xff0c;我被問到dubbo+zk集群,這塊如果細(xì)問,一定會問到失效轉(zhuǎn)移的選舉算法,我對此不熟,那么我就先說dubbo的通訊協(xié)議,序列化方式以及通過設(shè)置超時時間實現(xiàn)服務(wù)降級的思路,然后再說zk的部署。最終面試官果然問到選舉算法,但之前我已經(jīng)結(jié)合業(yè)務(wù)談了dubbo底層代碼和zk的相關(guān)部署,所以不理解選舉算法并沒有產(chǎn)生太大的影響。
這里用到的技巧是“偷換概念”,一個問題有多個回答方向,你先讓面試官感覺到你在很多領(lǐng)域非常熟悉,那么在個別領(lǐng)域不熟悉就無傷大雅了。
7 和獵頭和人事的溝通要點
1 獵頭和我們是一伙的,我們成了獵頭也能拿到提成,所以和獵頭談時一定得坦誠,把你優(yōu)點和弱點都說,獵頭會幫忙想辦法(比如問面試題)或者是幫忙優(yōu)化簡歷。
2 面試前,一定和獵頭談次,或者問下對這家公司該說什么話,以及之前人的成功失敗經(jīng)驗,如果問題,去問下面試題(包括筆試題和口頭技術(shù)問題)。
3 面試后,一定第一時間和獵頭溝通,這時個人直接去問不合適。而且還可以通過獵頭說,哪怕這個崗位沒面上,還可以嘗試這個公司的其它崗位。
4 談工資時一定得先聽獵頭的建議,不少人對當(dāng)前行情不了解,或者信心不足,工資沒要足,這時讓獵頭談是比較合適的,因為獵頭就干這個的。一般來說,跳槽后,工資大約有20%到50%的漲幅,有些公司會要前家公司的收入證明,相關(guān)問題也可以問獵頭。
但和人事談,就要小心了,畢竟人事是公司開工資的。
1 人事會問之前公司的離職原因,這時千萬別讓人事感覺出你不穩(wěn)定,你可以說為了進(jìn)一步提升自己的能力,此類問題網(wǎng)上太多,大家可以自己查。
2 在談發(fā)展方向時,別和JD上的背離。比如JD上是招個技術(shù)開發(fā)人才,你卻和人事說,干了1年后想轉(zhuǎn)Team leader管理崗位,或者說同時想做測試,那么人事就會感覺到,你未來的發(fā)展規(guī)劃和公司想要的不匹配。
總之,面試時人事會非常nice地和你交流,有時候甚至是套話,看你是否穩(wěn)定,是否能很好地和團(tuán)隊協(xié)作,能否加班,我就見過有人卡在人事這關(guān),甚至還不知道為啥被拒。
而且一般你在和人事談工資前,最好向獵頭打探下這個職位的工資范圍,在此基礎(chǔ)上,如果你感覺面試非常好,或者他們著急要人,或者你感覺加班會很多,可以適當(dāng)多要些,相反如果你非常想進(jìn)這個公司,那么就自己斟酌。
8 總結(jié):不能常跳槽,但得經(jīng)常更新自己的技能
在上文里,我通過最近換工作的經(jīng)歷,向大家介紹了相關(guān)經(jīng)驗,比起我的兩本書,Java Web輕量級開發(fā)面試教程和Java核心技術(shù)及面試指南,自認(rèn)為本文介紹的技巧更有實戰(zhàn)性。
我不推薦經(jīng)常換工作,比如一年換個兩家,那么公司會質(zhì)疑穩(wěn)定性,但對于我們做IT的人來說,如果手頭技術(shù)停滯不前,那么自己的競爭高工資的能力也會大大降低。
那么目前該了解哪些技術(shù)?以及在這個技術(shù)方面我當(dāng)前掌握得如何?這固然可以通過工作來檢驗,但工作中接觸到的技術(shù)畢竟是有限的,這時就可以通過面試來檢驗自己當(dāng)前的學(xué)習(xí)情況,同時也可以通過面試題去了解自己的努力方向。
作者:hsm_compute
來源:cnblogs.com/JavaArchitect/p/10720897.html
總結(jié)
以上是生活随笔為你收集整理的面试 4 个月,最终入职大厂经验分享!的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 分享一次 Java 内存泄漏的排查
- 下一篇: 两个线程如何交替执行,一个输出偶数一个输