網(wǎng)絡(luò)技術(shù)分享】【第一彈】華為云VPN服務(wù)----輕松部署跨地域互聯(lián)">【華為云網(wǎng)絡(luò)技術(shù)分享】【第一彈】華為云VPN服務(wù)----輕松部署跨地域互聯(lián)
975
2022-05-30
原文:www.enginego.org 封面圖:unsplash
剛開始參加工作的時(shí)候,我對(duì)面試總是很恐懼,既擔(dān)心簡(jiǎn)歷無法通過初篩,也擔(dān)心即使簡(jiǎn)歷通過篩選,因?yàn)槊嬖嚱?jīng)驗(yàn)不多以及基礎(chǔ)知識(shí)不扎實(shí)而導(dǎo)致發(fā)揮不好。我剛開始拿著普通的簡(jiǎn)歷(專業(yè)不是計(jì)算機(jī),作品也沒多少)也得到了一線大廠的面試機(jī)會(huì),但是因?yàn)楦緵]有準(zhǔn)備,也不知道怎么準(zhǔn)備。自然地,那次面試我表現(xiàn)得不好,也沒有得到 Offer。
恐懼也使我不想浪費(fèi)時(shí)間去面試不同類型的公司。我當(dāng)初并不知道對(duì)比其他求職者,自己的優(yōu)勢(shì)和劣勢(shì)在哪里,也不知道如何去準(zhǔn)備面試,面試官看重的是哪些方面,更不知道自己到底值多少錢?,F(xiàn)在回過頭看,我覺得當(dāng)初只是在欺騙自己,我真正擔(dān)心的是即使自己認(rèn)真準(zhǔn)備簡(jiǎn)歷和面試也對(duì)結(jié)果毫無影響,更不敢去想如果放棄某個(gè) Offer,找不到其他工作怎么辦。
工作了幾年,當(dāng)我有了越來越多的面試官的經(jīng)驗(yàn)之后,我越來越發(fā)現(xiàn)認(rèn)真準(zhǔn)備簡(jiǎn)歷和面試是非常重要的,因?yàn)楹翢o準(zhǔn)備就來面試的求職者真的太多了。而且互聯(lián)網(wǎng)公司招聘到合適的工程師實(shí)在非常難,有計(jì)算機(jī)基礎(chǔ)知識(shí),有項(xiàng)目經(jīng)驗(yàn),愿意學(xué)習(xí)而且愿意來這家公司,實(shí)在不好找。所以只要求職者能證明自己有一定的計(jì)算機(jī)水平并且愿意努力,市場(chǎng)上還是有非常多機(jī)會(huì)的。
這篇文章我把這幾年作為面試者和面試官身份的的經(jīng)驗(yàn)給大家,希望大家可以從中學(xué)到一些面試的技巧,找到心儀的工作。
1. 分析階段
我很喜歡 Google 前 CEO 施密特分享的一個(gè)故事,他剛到 Google 的時(shí)候,Google 還只是個(gè)小的創(chuàng)業(yè)公司。他一開始以為 Google 和其他公司沒什么兩樣,直到有一個(gè)周五,拉里佩奇在用谷歌搜索一些關(guān)鍵字的時(shí)候,他發(fā)現(xiàn)出現(xiàn)了一些不相干的廣告推薦(這個(gè)情況我們現(xiàn)在在國(guó)內(nèi)最大的搜索引擎也經(jīng)??吹剑?。施密特以為接下來就是開幾個(gè)會(huì)議,然后分到具體的工程師手上解決。但是拉里佩奇沒有這么做,他用紙條寫下”These Ads Suck!“,附上相關(guān)的截圖貼在布告欄上就回家了。接下來的 72 小時(shí)徹底改變了施密特的認(rèn)知。在周一凌晨 5點(diǎn),有幾位并不是負(fù)責(zé)廣告業(yè)務(wù)的工程師發(fā)來一份郵件,從頭到尾闡述了這個(gè)問題產(chǎn)生的原因,他們的解決方案,以及這個(gè)計(jì)劃對(duì)公司有什么影響。他們從公司的角度去思考,自愿自發(fā)地用周末的時(shí)間去解決并不屬于自己范疇的問題。
這樣的員工我想就是每個(gè)公司都需要的:
不錯(cuò)的技術(shù)能力,工作認(rèn)真負(fù)責(zé),可以及時(shí)解決問題,能給公司帶來實(shí)際效益
出色的團(tuán)隊(duì)合作精神,能與團(tuán)隊(duì)一起成長(zhǎng)
愿意自我學(xué)習(xí),投資自己
所以求職者的簡(jiǎn)歷與面試中必須能體現(xiàn)出這幾點(diǎn)品質(zhì)。舉個(gè)例子,要在簡(jiǎn)歷或者面試中展現(xiàn)自己喜歡學(xué)習(xí)計(jì)算機(jī)知識(shí),與其籠統(tǒng)地說:
熱愛計(jì)算機(jī),喜歡學(xué)習(xí)計(jì)算機(jī)系統(tǒng)的知識(shí)。
可以改為:
喜歡閱讀計(jì)算機(jī)系統(tǒng)的書籍,完成《深入理解計(jì)算機(jī)系統(tǒng)》80% 以上的習(xí)題。并在博客(鏈接)分享學(xué)到的知識(shí)。
面試官在篩選簡(jiǎn)歷看到的時(shí)候就會(huì)自然地打開博客,進(jìn)一步地了解求職者(恭喜你,擊敗了其他 80% 的求職者)。另外,一些軟技能,例如團(tuán)隊(duì)合作能力也是面試官非常注重的一點(diǎn),面試過程中如果被問到有沒有帶領(lǐng)團(tuán)隊(duì)的經(jīng)驗(yàn),即使沒有也不要簡(jiǎn)單地回答沒有,可以這樣回答:
“我在以往的項(xiàng)目中與團(tuán)隊(duì)成員都能融洽相處,并且每個(gè)月都會(huì)做定期的技術(shù)分享互相學(xué)習(xí),雖然沒有帶團(tuán)隊(duì)的機(jī)會(huì),但是相信自己能夠做到?!?/p>
當(dāng)然這些回答不可能一下子能想到,面試方面的技巧必須多練。重要的是在職期間定期找?guī)准夜久嬖嚲毦毷?,一方面能知道市?chǎng)的行情,找到其他更好工作機(jī)會(huì),另一方面本身自己就有工作,等于手拿一個(gè) Offer,面試的時(shí)候就能比較放松。未雨綢繆對(duì)于一位工程師尤為重要。等到離職再找工作就比較晚了。
找新工作之前,求職者需要先認(rèn)真思考下幾個(gè)問題,一份工作中你最看重的是哪些方面?
薪酬
公司名氣與規(guī)模
公司福利/工作環(huán)境 / 地點(diǎn)
工作方向(假如你要從技術(shù)轉(zhuǎn)向管理,這個(gè)崗位提供這樣的可能嗎?)
工程師文化
個(gè)人成長(zhǎng)
有時(shí)候薪酬遠(yuǎn)不及公司名氣與規(guī)模 / 工程師文化重要,有的公司能聚集一批優(yōu)秀的工程師,那么只要認(rèn)真待一兩年,進(jìn)步速度遠(yuǎn)比其他地方快,以后跳槽也會(huì)更加容易。有的廠則能提供大量隱性的福利(國(guó)內(nèi)可以參考騰訊)。求職者需要真正地去思考自己想要去怎么樣的公司。工作和找男女朋友一樣,找你喜歡的,而不是找你能找到的。前幾家公司的選擇對(duì)你的職業(yè)規(guī)劃會(huì)有很大的影響,大公司還是小公司,和你個(gè)人的性格或者職業(yè)規(guī)劃有直接的關(guān)系:
優(yōu)勢(shì)
入職薪酬較高,每年固定調(diào)薪,員工福利例如下午茶,文娛活動(dòng),年假都有保證。
通常都有大牛,而且工程師比較多,總能遇到一些志同道合的朋友。
跳槽到小公司比較容易,崗位也能得到提升。
劣勢(shì)
剛進(jìn)去的時(shí)候接手的可能都是比較枯燥的小項(xiàng)目。
可能需要維護(hù)幾年前的沒有文檔沒有測(cè)試的項(xiàng)目。(其實(shí)也能學(xué)習(xí)到很多)
比較容易安逸,缺乏學(xué)習(xí)的動(dòng)力。
優(yōu)勢(shì)
相對(duì)來說,條條框框沒那么多,偶爾遲到請(qǐng)假?zèng)]什么關(guān)系。
什么都能學(xué)到,從開發(fā)到運(yùn)維到測(cè)試。
項(xiàng)目可以加上自己的建議和想法,比較有成就感。
能直接向老板匯報(bào),升職速度比較快。
萬(wàn)一上市了呢?(中國(guó)每天有一萬(wàn)家公司注冊(cè),上市的嘛…)
劣勢(shì)
入職薪酬比較低,員工福利嘛,不能保證。
有大牛的可能比較少,除非你事先知道(所以面試問問題非常重要)。
加班壓力通常比較大,而且公司不一定會(huì)根據(jù)你的加班時(shí)間就漲薪。
跳槽到大公司比較難,除非你有非常好的簡(jiǎn)歷與能力。
在國(guó)內(nèi)來說,除了一些很 geek 的小公司,一般的小公司并沒有那么自由,加班也可能很多。所有我覺得一開始選擇大公司往往是不錯(cuò)的選擇,之后跳槽的選擇范圍也更多。了解自己的想法之后,求職者可以根據(jù)自己的著重點(diǎn),篩選公司,修改簡(jiǎn)歷,復(fù)習(xí)常見面試題以及準(zhǔn)備向面試官提問的問題。?最后這部分的提問非常重要,我常常期待求職者在面試結(jié)束后能問一些問題,但是很多求職者卻沒有,一方面怕面試官會(huì)覺得自己有很多要求,留下的印象不好,另一方面根本沒有想好要問什么。這點(diǎn)我覺得非常不明智,公司和員工就是互相選擇的,一定要多提問題,了解公司的文化以及崗位的職責(zé)。才不至于剛?cè)肼毦鸵驗(yàn)椴贿m應(yīng)而要離開。這點(diǎn)我們?cè)诿嬖囯A段會(huì)介紹。
仔細(xì)分析自己的優(yōu)勢(shì)是什么,然后在簡(jiǎn)歷以及面試過程中突出,優(yōu)勢(shì)可以從這幾點(diǎn)入手,后面是面試官的理解:
大廠或者大型項(xiàng)目的經(jīng)驗(yàn)?(能解決項(xiàng)目普遍出現(xiàn)的問題,技術(shù)水平靠譜)
作為主要參與者得過比賽名次(聰明,勇于嘗試)
畢業(yè)于不錯(cuò)的學(xué)校(學(xué)習(xí)努力,認(rèn)真)
維護(hù)優(yōu)秀的開源項(xiàng)目?(懂得團(tuán)隊(duì)協(xié)作,喜歡學(xué)習(xí),愿意了解項(xiàng)目原理)
發(fā)表過論文或者優(yōu)秀的博客文章(研究能力強(qiáng),分析能力強(qiáng))
數(shù)據(jù)結(jié)構(gòu)和算法基礎(chǔ)好,Leetcode 中等難度都能 bug free(基礎(chǔ)不錯(cuò),即使項(xiàng)目經(jīng)驗(yàn)少,培養(yǎng)起來也簡(jiǎn)單)
其中,必須根據(jù)自己的目標(biāo)崗位強(qiáng)調(diào)自己的優(yōu)勢(shì)。例如,如果求職者要面試的是開發(fā)工程師,就應(yīng)該突出項(xiàng)目經(jīng)驗(yàn)以及對(duì)框架的熟悉程度,如果面試的是研究崗位,那么論文與文章的數(shù)量就比較重要。
2. 準(zhǔn)備階段
隨時(shí)準(zhǔn)備并不是鼓勵(lì)頻繁地跳槽,而是要有隨時(shí)有跳出舒服圈的準(zhǔn)備,也許求職者已經(jīng)很滿意現(xiàn)在的工作,薪酬,覺得習(xí)慣而且安逸。不過如果公司突然倒閉,或者部門被裁減,還能找到這樣或者更好的工作嗎?我建議各位,每?jī)扇齻€(gè)月可以去面試一兩家公司,因?yàn)槟阋呀?jīng)有不錯(cuò)的工作了,所以可以帶著輕松的心態(tài)去面試,同時(shí)也可以增加面試的經(jīng)驗(yàn)。
基礎(chǔ)知識(shí)
基礎(chǔ)知識(shí)主要包括:算法基礎(chǔ),編程語(yǔ)言基礎(chǔ),計(jì)算機(jī)網(wǎng)絡(luò),操作系統(tǒng),數(shù)據(jù)庫(kù)。
算法基礎(chǔ)
基礎(chǔ)的算法題,大廠都會(huì)考。包括基本數(shù)據(jù)結(jié)構(gòu)了解/實(shí)現(xiàn),例如堆,棧,鏈表,隊(duì)列,二叉樹。刷算法題的時(shí)候,要把每道題都當(dāng)成面試題一樣按步驟完成,完成一題之后總結(jié)經(jīng)驗(yàn)。這樣遇到變形題也迎刃而解。這里我推薦 Leetcode 以及 Hackerrank。這里說一點(diǎn)題外話,可能有的同學(xué)有疑問,覺得這些平常工作都用不到,為什么還要花那么多時(shí)間在上面。其實(shí)不是的,第一,平常工作都能用到,無論從二分查找到復(fù)雜一點(diǎn)的前綴樹。開發(fā)的過程中如果你知道這些算法/數(shù)據(jù)結(jié)構(gòu),就能根據(jù)自己的業(yè)務(wù)來選擇最適合的算法/數(shù)據(jù)結(jié)構(gòu),減少整個(gè)項(xiàng)目的復(fù)雜度。?第二,數(shù)據(jù)結(jié)構(gòu)和算法鍛煉的是思維,刷算法題的時(shí)候,慢慢會(huì)學(xué)習(xí)到一些有趣的,巧妙的方法。它們能擴(kuò)展你的編程時(shí)思考的范圍。同時(shí)也要求你考慮到各種不同的邊界情況。即使你不準(zhǔn)備換工作,我也建議每天都刷一道算法題,日積月累,一年下來你的算法基礎(chǔ)一定能比同齡人高出不少。而且當(dāng)你真正理解算法題的知識(shí)之后,寫程序 debug 和花在 Stackoverflow 的時(shí)間就會(huì)大大減少,往往知道哪里可能有問題并且能大幅地增加工作效率。
編程語(yǔ)言基礎(chǔ)
這點(diǎn)根據(jù)包括你最熟悉的編程語(yǔ)言的運(yùn)行機(jī)制,實(shí)現(xiàn)原理。多線程/多進(jìn)程基礎(chǔ)實(shí)現(xiàn),一些容易犯錯(cuò)的地方,網(wǎng)絡(luò)上都有非常多資源,可以按需學(xué)習(xí)。
計(jì)算機(jī)網(wǎng)絡(luò)
主要考察?TCP/IP 與 HTTP?協(xié)議基礎(chǔ),如常見的狀態(tài)碼含義,常見的請(qǐng)求頭,響應(yīng)頭,其中隱藏的安全問題,三次握手,四次揮手的原理。TCP 擁堵如何解決等常見問題??梢酝ㄟ^《圖解 HTTP》《圖解 TCP/IP》來快速入門。
操作系統(tǒng)
包括操作系統(tǒng)的內(nèi)存虛擬化,進(jìn)程以及線程的基礎(chǔ)知識(shí)(進(jìn)程生命周期,進(jìn)程調(diào)度),內(nèi)核中斷機(jī)制,線程同步機(jī)制,鎖,互斥,信號(hào)量等。我推薦的是 Operating Systems: Three Easy Pieces(英文版),既學(xué)習(xí)到操作系統(tǒng)又能學(xué)習(xí)到英文寫作,一舉兩得 :D.
數(shù)據(jù)庫(kù)
常見的事務(wù)隔離等級(jí),Innodb的實(shí)現(xiàn)原理,索引類別以及優(yōu)劣,為什么使用B+樹結(jié)構(gòu),如何定位查詢的瓶頸以及優(yōu)化查詢,一本《高性能 MySQL》基本就夠了。?這樣看起來要學(xué)習(xí)的實(shí)在太多,的確,這是大學(xué)幾年下來的重要課程,所以先通過面試找出自己的弱項(xiàng)然后再進(jìn)行突擊復(fù)習(xí),效率會(huì)高得多。
公司的過往項(xiàng)目
國(guó)內(nèi)的技術(shù)公司,相對(duì)重視項(xiàng)目經(jīng)驗(yàn),所以在面試前,曾經(jīng)參與過的項(xiàng)目需要認(rèn)真回顧一遍,從技術(shù)選型,架構(gòu)設(shè)計(jì)(即使是中途加入項(xiàng)目也應(yīng)該對(duì)此有所了解),維護(hù)或者實(shí)現(xiàn)的功能細(xì)節(jié),過程中遇到的技術(shù)難點(diǎn),學(xué)到了什么知識(shí),都可能被問到,必須好好準(zhǔn)備。
開源項(xiàng)目
開源項(xiàng)目可以讓你和世界上頂級(jí)的工程師一起工作,學(xué)習(xí)軟件設(shè)計(jì)以及語(yǔ)言的高級(jí)使用方法。同時(shí)能讓你理解軟件是如何運(yùn)行 / 設(shè)計(jì)的。
參與較底層/偏向算法或研究的項(xiàng)目
如果求職者未來想從開發(fā)轉(zhuǎn)向研究的崗位,那么就可以閱讀一些相關(guān)學(xué)術(shù)論文,寫相關(guān)的文章分析與工具。
造輪子,實(shí)用工具
從學(xué)習(xí)的角度來說,造輪子可以說是最好的方法,不過要給自己一個(gè)期限,不能無止境地把時(shí)間花費(fèi)在程序的細(xì)節(jié)與優(yōu)化中。知道原理,能夠?qū)崿F(xiàn)就足夠了。嘗試實(shí)現(xiàn)平時(shí)常用的 Web 服務(wù)器,Web 框架開始,有時(shí)間的話可以延展到操作系統(tǒng)或者編程語(yǔ)言(我遇到過這樣的求職者)。自己寫完再看看別人是如何實(shí)現(xiàn)的,學(xué)習(xí)他的優(yōu)點(diǎn)。其實(shí)到最后,你會(huì)發(fā)現(xiàn)計(jì)算機(jī)是越學(xué)越容易的,如果你不了解同步異步,往往是因?yàn)槟悴恢?Web 服務(wù)器是如何實(shí)現(xiàn),不知道系統(tǒng)調(diào)用是如何實(shí)現(xiàn)的。當(dāng)你能自己去實(shí)現(xiàn)的時(shí)候,很多以前的問題也就迎刃而解了。
寫論文,分享文章
如何宣傳你的開源項(xiàng)目或者業(yè)余項(xiàng)目?寫一篇優(yōu)秀的文章介紹它。同理,要證明你有喜歡計(jì)算機(jī),有研究的能力,最好的方法也是寫一些優(yōu)秀的文章以及論文。
簡(jiǎn)歷準(zhǔn)備可以參考我們的另外一篇文章如何寫一份更好的簡(jiǎn)歷,我篩選過超過千份簡(jiǎn)歷,遇到太多太多千篇一律毫無重點(diǎn)的簡(jiǎn)歷,凡描述都是熟練精通xxx框架,凡個(gè)人項(xiàng)目經(jīng)驗(yàn)都是博客加爬蟲。而且面試官都知道,越優(yōu)秀的求職者,越重視自己的簡(jiǎn)歷。求職者需要從面試官的角度來思考與篩選簡(jiǎn)歷,幾個(gè)要點(diǎn)是要注意的:
簡(jiǎn)歷并不是越長(zhǎng)越好,最好的簡(jiǎn)歷長(zhǎng)度是一到一頁(yè)半,列出你最優(yōu)秀的項(xiàng)目經(jīng)驗(yàn)以及獎(jiǎng)項(xiàng)。至于語(yǔ)言或者框架,只是簡(jiǎn)單接觸過的話就不用寫上去了。面試官問你有沒有學(xué)過其他的時(shí)候才說出來。(假如你只是學(xué)過簡(jiǎn)單接觸過 Go 卻寫在簡(jiǎn)歷上,卻被一些基礎(chǔ)問題問倒了,這樣反而會(huì)給面試官留下不好的印象,他會(huì)認(rèn)為你對(duì)簡(jiǎn)歷中的其他你真正熟練的語(yǔ)言也不太了解。)常見的錯(cuò)誤寫法是:
精通 django 框架,熟悉 Python 語(yǔ)言
可以修改為:
精通 django 框架,是 django 的 Top100 代碼貢獻(xiàn)者。熟悉 Python 語(yǔ)言,理解 Python 垃圾回收,迭代器,裝飾器等常用對(duì)象的實(shí)現(xiàn)原理
多花幾分鐘的時(shí)間,就能在求職者的簡(jiǎn)歷里面脫穎而出了。
前期負(fù)責(zé)前后端API設(shè)計(jì),后期負(fù)責(zé)實(shí)時(shí)流消息處理應(yīng)用系統(tǒng)構(gòu)建和實(shí)現(xiàn)
面試官無法知道你做得怎么樣,建議根據(jù)“發(fā)生什么事”,“你做了什么”,“結(jié)果怎么樣”三個(gè)點(diǎn)來修改。同時(shí)這里必須出現(xiàn)數(shù)據(jù)作為參考,例如:
推動(dòng)團(tuán)隊(duì)轉(zhuǎn)用 Graphql 為新的 API 接口規(guī)范,從而減少?20%?的日均請(qǐng)求量,并節(jié)省了兩臺(tái)服務(wù)器資源。后期負(fù)責(zé)實(shí)現(xiàn)使用 RTSP 協(xié)議進(jìn)行實(shí)時(shí)流消息處理,經(jīng)過測(cè)試與優(yōu)化,接口請(qǐng)求響應(yīng)時(shí)間平均為 40ms,同時(shí)架構(gòu)了能支持 50萬(wàn) 日活量的緩存服務(wù)器與后臺(tái)服務(wù)器。
在項(xiàng)目中做的每一個(gè)選擇必然是有原因的,而且必然會(huì)對(duì)項(xiàng)目產(chǎn)生影響。而在簡(jiǎn)歷的項(xiàng)目經(jīng)驗(yàn)中就是要把你產(chǎn)生最大的影響那部分寫上去(刪庫(kù)就不用寫了)。如果只是想面試官問到的時(shí)候再回答吧,面試的時(shí)候緊張,很容易忘記具體的數(shù)字以及細(xì)節(jié)。如果項(xiàng)目經(jīng)驗(yàn)不多,可以把學(xué)校的專業(yè)排名(50?1000),員工考評(píng)(10?1000),優(yōu)秀員工這些指標(biāo)都加上去。不要覺得沒有用,這絕對(duì)是大多數(shù)求職者忽視但是重要的點(diǎn),這證明了你被學(xué)校 / 公司認(rèn)可,起碼比較靠譜。簡(jiǎn)歷中如果既有一些較新的技術(shù)(例如 Rust,Go,當(dāng)然你要真的了解),又有經(jīng)典的必備的技能,那么就一定能夠吸引到面試官的眼球。
其他能力就是團(tuán)隊(duì)協(xié)作能力以及解決問題的能力,如果你已經(jīng)在開源項(xiàng)目有不錯(cuò)的貢獻(xiàn),那么面試官就不用擔(dān)心團(tuán)隊(duì)協(xié)作能力。至于解決問題的能力,你可以在項(xiàng)目經(jīng)驗(yàn)中可以列出解決的比較復(fù)雜的問題,例如 “解決了服務(wù)端同時(shí)推送 10萬(wàn) 臺(tái)設(shè)備的的并發(fā)與資源占用過多問題”。這樣面試官就知道你既有團(tuán)隊(duì)協(xié)作能力又有解決難題的能力。面試題就不會(huì)出那么難了。?其實(shí)很多公司在面試的時(shí)候都會(huì)出一些非常難的題,并不要求面試者一定要解決,而是要看面試者在遇到難題的時(shí)候會(huì)怎么面對(duì),是思考一下就放棄,是尋求面試官提示,還是從多個(gè)角度去解決問題。如果在簡(jiǎn)歷中已經(jīng)體現(xiàn)了這一點(diǎn),那么面試的時(shí)候就能略微放松了。
這個(gè)大家可能接觸得比較少,如果你準(zhǔn)備去面試一家非常喜歡的公司,面試之前,你應(yīng)該先進(jìn)行模擬面試,模擬面試的意思是讓另外一名工程師充當(dāng)面試官,對(duì)你進(jìn)行面試,然后再把面試過程中的優(yōu)點(diǎn)和缺點(diǎn)反饋給你。模擬面試既可以讓你的朋友當(dāng)面試官來面試你,也可以去找?guī)准矣蓄愃茘徫坏墓尽R驗(yàn)楫?dāng)你本來就沒有一定要進(jìn)該公司的想法,那么心態(tài)自然就能放輕松,帶著輕松的心態(tài)去面試的話更能發(fā)揮好,給自己信心,同時(shí)也可以問問面試官自己哪里不足,可以加強(qiáng)的。經(jīng)過總結(jié)后,鍛煉自己面試的技巧,包括技術(shù)的基礎(chǔ),以及如何問問題。當(dāng)你面試得多了,會(huì)發(fā)現(xiàn)問題其實(shí)都差不多,下次遇到也知道怎么回答了。
3. 面試階段
當(dāng)你得到了面試的機(jī)會(huì),開始進(jìn)入重頭戲了,無論你的履歷如何出眾,都不能對(duì)面試掉以輕心。我遇過不少簡(jiǎn)歷不錯(cuò)但是面試一塌糊涂的求職者(很多公司都對(duì)偽造簡(jiǎn)歷零容忍),結(jié)果當(dāng)然沒有錄用他們。起碼翻轉(zhuǎn)二叉樹要會(huì)寫吧 :D,面試一般會(huì)有幾輪:
HR 會(huì)和你聊下天,確保你了解這個(gè)崗位的基本信息。也可能問幾個(gè)關(guān)于你簡(jiǎn)歷的問題,這輪只是考核下你的基礎(chǔ)信息是否正確,看看你的談吐是否正常(相信我,很多求職者如果不看自己的簡(jiǎn)歷,連自我介紹都做不到)這輪放輕松,實(shí)話實(shí)話就好。
這是技術(shù)面試的第一輪,可能會(huì)通過電話或者視頻問一些技術(shù)問題,也可能是通過把算法題目發(fā)在在線文檔,然后讓你去解決。一般都是算法,數(shù)據(jù)結(jié)構(gòu)的基礎(chǔ)問題。如果遇到難的也不需要擔(dān)心,提供解題的思路,即使最后不能 bug free,起碼也能向面試官證明你的實(shí)力。
這輪并不常見,有的公司會(huì)讓你實(shí)現(xiàn)一個(gè)小模塊或者小工具。主要考核你實(shí)際情況下的開發(fā)能力。這點(diǎn)就要靠平時(shí)積累了,如何設(shè)計(jì) API,使用什么設(shè)計(jì)模式,都有講究。維護(hù)好的 commit messages 以及文檔都很重要。平時(shí)多看看開源項(xiàng)目源碼就好。Python 的話我推薦看 Requests 源碼,常用而且簡(jiǎn)單易懂。
提問
測(cè)試用例
思考
闡述
偽代碼
代碼
檢查
面試官會(huì)根據(jù)簡(jiǎn)歷問一些項(xiàng)目上的問題,例如這個(gè)項(xiàng)目為什么要這么設(shè)計(jì),開發(fā)過程中遇到最大的困難是什么。大廠的話,算法題是跑不掉的,面試官會(huì)出幾道算法題寫在白紙或者白板上。我明白很多求職者不喜歡白板面試,也覺得白板面試沒什么意義。不過在我面試的求職者中,白板面試能力強(qiáng)的在實(shí)際工作中表現(xiàn)得也比較優(yōu)異。白板面試確實(shí)難,不但對(duì)于你,對(duì)于其他求職者也是。要是你能做到,別人做不到,你就能在眾多求職者中突圍而出。?簡(jiǎn)述一下解算法題的幾個(gè)步驟:
出個(gè)經(jīng)典題目 Two Sum:
Given an array of integers, return indices of the two numbers such that they add up to a specific target. You may assume that each input would have exactly one solution, and you may not use the same element twice.
給出一個(gè)整數(shù)數(shù)組和一個(gè)目標(biāo)數(shù),返回兩個(gè)索引值,它們對(duì)應(yīng)的數(shù)組元素的和等于目標(biāo)數(shù),只有一個(gè)答案。
例子:
Given?nums?=?[2,?7,?11,?15],?target?=?9,
Because?nums[0]?+?nums[1]?=?2?+?7?=?9,
return?[0,?1].
這階段的提問非常重要,因?yàn)槟阋?100% 地了解題目,才能解決題目。不要覺得提問得多顯得愚蠢,提問得多代表你在思考,沒有問題我反而會(huì)擔(dān)心求職者是不是之前做過這題,或者根本沒有思路。
這是一個(gè)有序數(shù)組嗎??不是(注意這里有個(gè)小陷阱,雖然在Example中給出的是一個(gè)有序數(shù)組,但是實(shí)際題目并沒說這是一個(gè)有序數(shù)組,所以要考慮無序以及為空等邊界條件)
數(shù)組可以包含負(fù)數(shù)嗎??不可以
如果數(shù)組為空或者只包含一個(gè)數(shù)字,是沒有答案嗎?對(duì)的
時(shí)間復(fù)雜度和空間復(fù)雜度有限制嗎?沒有
題目就轉(zhuǎn)變成
一個(gè)只包含正整數(shù)的無序數(shù)組,要求返回兩個(gè)不同的數(shù)組索引值,它們對(duì)應(yīng)的數(shù)組元素的和正好等于目標(biāo)數(shù),如果數(shù)組為空或者只包含一個(gè)數(shù)字的話沒有答案,其他情況有且只有一個(gè)答案。
這樣就能排除一些邊界情況了。然后寫測(cè)試用例
target?=?9
#?測(cè)試用例
[],
[1],
[2,?7],
[2,?5,?7],
[5,?4,?2],
空的,只有一個(gè)元素,正序,逆序,正常情況都寫下來,面試官會(huì)對(duì)你考慮到那么多情況而加分。
先想想會(huì)用什么數(shù)據(jù)結(jié)構(gòu),鏈表,哈希表,堆,棧,二叉樹,哪個(gè)結(jié)構(gòu)能解決這個(gè)問題?如果真的沒有思路的話,思考了之后,可以請(qǐng)面試官給點(diǎn)提示,這個(gè)其實(shí)也是團(tuán)隊(duì)合作的一種表現(xiàn),請(qǐng)求提示不一定面試官就覺得你能力不行。
邊思考邊向面試官說出你的思路,雖然你的思路可能比較亂。但是沒關(guān)系。要大聲肯定地說出自己的想法,同時(shí)可以向面試官提問,比看著題目 10分鐘 不知所措要好得多。我面試過幾位求職者,雖然他們沒有順利地完成算法題,但是能一直說出自己的思路,給我留下不錯(cuò)的印象。就像我之前說的,有些難題,面試官并不是期望你都能答對(duì),只不過想知道你遇到難題是如何思考的,所以闡述自己的想法是非常重要的。
如果數(shù)組長(zhǎng)度小于2,返回False
建立一個(gè)哈希表
遍歷數(shù)組每一個(gè)元素:
如果目標(biāo)值減去元素值在哈希表中
返回該索引與當(dāng)前索引
否則把當(dāng)前索引與值添加到哈希表中
時(shí)間復(fù)雜度為O(n),空間復(fù)雜度為O(n)
這題算簡(jiǎn)單:
class?Solution(object):
def?twoSum(self,?nums,?target):
#?如果數(shù)組長(zhǎng)度少于2的話,無解
if?len(nums)?<=?1:
return?False
tem_dict?=?{}
for?i?in?range(len(nums)):
#?檢測(cè)這個(gè)元素是否曾經(jīng)出現(xiàn)過
if?nums[i]?in?tem_dict:
return?[tem_dict[nums[i]],?i]
else:
tem_dict[target?-?nums[i]]?=?i
把測(cè)試用例帶進(jìn)去代碼中檢查,然后看看哪里可能會(huì)有問題,做出修改。
接下來面試官可能會(huì)問一些非技術(shù)的問題:
Q: 為什么選擇這家公司?
A: 面試之前對(duì)起碼要瀏覽過公司的網(wǎng)站,了解公司有什么產(chǎn)品,這樣既可以防止遇到皮包公司,或者小作坊欠薪拖薪。
Q: 你曾經(jīng)面臨最大的專業(yè)挑戰(zhàn)是什么?你是怎么戰(zhàn)勝它的?
A: 這個(gè)一定要準(zhǔn)備好,不能說沒什么挑戰(zhàn),沒什么挑戰(zhàn)代表你沒有認(rèn)真去思考,就算是最簡(jiǎn)單的增刪改查或者前端的動(dòng)效,背后的原理,網(wǎng)絡(luò)協(xié)議的原理,你都應(yīng)該去了解。對(duì)你在簡(jiǎn)歷中的每一個(gè)項(xiàng)目,你都應(yīng)該能說出里面最大的挑戰(zhàn),最有趣的部分是什么,這樣面試官才能真正理解你在項(xiàng)目中做了什么,學(xué)習(xí)到什么。
Q: 是什么為什么你選擇離開你現(xiàn)任公司?你從你上一家公司學(xué)到最重要的是什么?
A: 大多數(shù)求職者不喜歡這個(gè)問題,也不知道怎么回答。這個(gè)問題你能回答好的話就能拉出距離了。我覺得答案其實(shí)很簡(jiǎn)單,你們公司的項(xiàng)目有更好的發(fā)展前景/我想挑戰(zhàn)自己在這一方面的能力等等。至于說舊公司薪酬太低,工時(shí)太長(zhǎng),沒前途這些就免了。
Q: 你的長(zhǎng)期工作目標(biāo)是什么?
A: 這個(gè)看個(gè)人,轉(zhuǎn)管理的話可能會(huì)加一輪問管理方面的問題,轉(zhuǎn)資深工程師的話可以講下自己打算鉆研哪個(gè)方向,大數(shù)據(jù),人工智能,區(qū)塊鏈都可以。
這點(diǎn)非常重要,要預(yù)防你到了新公司之后,發(fā)現(xiàn)公司文化不適合你,再馬上找新工作的話就不好了。
Q: 你們新老員工的比例是多少?厲害的工程師有多少?研究生的比例有多少?
A: 這個(gè)問題其實(shí)揭示了公司的文化,如果新員工非常多,公司也不算新的話,那么代表流動(dòng)率很高,公司文化可能不是很好。第二個(gè)問題其實(shí)就是問有沒有大牛,有多少。有厲害的工程師總比沒有要好得多,進(jìn)步的速度也更快。一個(gè)公司如果有比較多優(yōu)秀的工程師的話,代表是不錯(cuò)的公司。
Q: 如果我入職的話,會(huì)有入職培訓(xùn)嗎?會(huì)被分到哪個(gè)項(xiàng)目組,項(xiàng)目組的成員構(gòu)成是怎樣?
A: 這個(gè)可以了解公司的架構(gòu)是不是清晰,個(gè)人職責(zé)劃分是否明確。如果面試官回答不了這個(gè)問題,或者支支吾吾的話。即使你進(jìn)去的話可能要兼顧幾個(gè)項(xiàng)目,維護(hù)老項(xiàng)目。這些都要問清楚,你才知道自己大概的工作量有多少。維護(hù)舊項(xiàng)目雖然頭疼,但是上線壓力不大。如果新舊一起來,就要考慮自己是否適合這樣的工作強(qiáng)度。
Q: 我入職的前三個(gè)月,要完成什么工作來證明我的能力呢?
A: 這個(gè)問題其實(shí)為下一個(gè)問題準(zhǔn)備,如果我工作表現(xiàn)優(yōu)秀的話,公司會(huì)不會(huì)有對(duì)應(yīng)的獎(jiǎng)勵(lì)?
Q: 多久進(jìn)行一次調(diào)薪,工作績(jī)效是如何計(jì)算的?是按項(xiàng)目收益,還是主管決定?
A: 這個(gè)也是了解公司有沒有實(shí)施獎(jiǎng)勵(lì)制度,通常回答準(zhǔn)備中的都要留個(gè)心眼,可能一年都不會(huì)調(diào)薪。
Q: 公司的五險(xiǎn)一金是按什么比例繳的,是按最低標(biāo)準(zhǔn)還是可以自己繳納更高比例?
A: 一般這個(gè)會(huì)問 HR,如果小公司的話,也可以直接問工程師。五險(xiǎn)一金看似沒多少,但是每個(gè)月累積下來就很多了,這個(gè)需要和面試官確認(rèn)。
Q: 我今天面試的表現(xiàn)怎樣,如果通過之后我還會(huì)經(jīng)過多少輪,怎樣的面試流程?
A: 首先可以了解自己的不足,積累經(jīng)驗(yàn)。也可以開始為下一輪復(fù)試做準(zhǔn)備
4. 總結(jié)階段
一次面試過來,可能筋疲力盡了?;叵胂伦约耗睦锟梢宰龅酶?,簡(jiǎn)歷哪里可以修改的。統(tǒng)計(jì)學(xué)告訴我們不要選擇第一家面試的公司,多面試幾家。不要欺騙自己,認(rèn)真去思考每家的優(yōu)點(diǎn)和缺點(diǎn),和你的好朋友聊聊,尋求他們的建議。如果沒有拿到 Offer 也沒關(guān)系,重復(fù)上面的步驟,繼續(xù)努力。兩年前我連想都不敢想到美國(guó)的大公司工作,而現(xiàn)在的我就在為 Google 的面試做準(zhǔn)備,就算我現(xiàn)在進(jìn)不了 Google 又有什么關(guān)系呢?我還是在準(zhǔn)備過程中學(xué)到很多知識(shí)。我很享受這段時(shí)間。相信自己,努力和汗水總會(huì)能得到回報(bào)的。
數(shù)據(jù)結(jié)構(gòu) 網(wǎng)絡(luò)
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。