面試歸來
原諒我是一個後知後覺的人,已經在新的崗位工作了兩個月,才寫這篇文章。 本文會先講述博主一個月的面試經歷,梳理一下技術面試,淺述關於程序員職業生涯的一些看法。
從創業到再就業
大概4個月以前,終止創業已經成為逃不開的事實。
本來以為即使散夥,也會有比較充裕的時間找工作,所以並沒有做過任何投遞簡歷和面試。但是現實卻緊張的多,實際留給我們的時間只有一個月。
所以開始有些慌,畢竟太久沒有面試過,很多知識也沒有來得及梳理,同時遠離市場有點久,不知道自己應該是一個什麼級別(什麼高級,資深云云),值年薪多少。掛了獵聘和拉鉤,也有一些獵頭打電話給我,我也接受了一個獵頭的安排,面試過兩家初創公司,但是感覺一點都不靠譜,獵頭的態度有一種趕鴨子上架的感覺,讓我十分反感,從此以後便再也沒有接過獵頭電話。
我也開始了對自己的思考,下一份工作到底要去創業公司還是大公司,自己應該到底屬於什麼級別。因為面試過兩家初創公司,給我的感覺是,短期遇到一個靠譜的初創公司其實很難,加入初創公司最好的姿勢是被挖過去做持股的核心。這個難度不亞於找女朋友,要聊的久才能知道是不是有感覺。如果選擇不慎,就是從一個坑跳到另一個坑。那麼大公司盤點一下上海就那麼幾個廠,螞蟻金服,百度,愛奇藝,餓了么。
目標明確後,通過朋友或者拉鉤找相應的職位,因為我還是想繼續深入做一段時間技術和技術決策,所以投遞的職位基本是架構師、技術專家這樣的職位。
當然除了上面列舉的四個廠,中途還面試了上海唯品會和杭州的網易考拉(因為去杭州看了個演唱會就順便去面了,這個理由很......)那段時間真的很忙,因為每次面試都激發你思考很多,除了技術也有職業生涯的規劃。然後回去想很多,梳理很多,面試到最後,也總結了好多面試題,反覆翻看了好幾本書,這些樓主在後面會詳細說一些。
在臨近那一個月的終止,開始陸陸續續收到Offer,最後拿到了餓了么和考拉的架構師,愛奇藝P7b,這幾個算是相似級別的吧。螞蟻金服的HR一直拿我沒BAT背景和工作年限(那時候三年半)說事,最後給我資深開發。百度說社招名額要等一個月後再談,所以就不等了。
關於Offer的選擇也沒什麼糾結的,不去杭州,因為房子,妹子都在上海,所以上海愛奇藝和餓了么二選一。去餓了么面試覺得技術氛圍很好,對崗位從事的內容更感興趣,可以彌補我機器學習領域的空白,所以就接了餓了么。
社招面試的準備聽了前面的故事,社招面試肯定是大家更關注的。畢竟我是創業散夥到再就業,時間有些倉促,找工作開始對市場,職位都不了解。
我覺得如果你在一個穩定的坑裡,通過社招跳槽的步驟應該是
- 自我定位首先第一個自我定位應該是當前環境下的自我反思。一般思考換工作的同學,往往也是對當前環境有諸多不滿。那麼應該是思考一下問題在哪裡,如果是自己的問題能否改善做到更好。你加入這個公司的這段時間,有沒有充分學習到公司的技術,如果沒有,也不急於離開。每一段職業經歷,都要有所收穫,這樣才能往更高的位置走,如果在每個環境都是混混日子,基本跳了幾次就到瓶頸了。 然後想想下一份工作想做什麼,堅持技術還是轉做技術管理,既然決定換一次工作,那就做點自己想做的,不是么。一般來說,如果技術轉管理,需要一些技術的積累,可能意味著你在技術上做到一定級別轉起來會容易一些,因為程序員都有些「驕傲不馴」,如果你技術很菜,就很難管理團隊,也不能很好的做技術成本評估。當然也可以換行做別的,畢竟人生那麼長,如果自己不喜歡做開發,就別和bug較勁了。
- 長期準備——乾貨在此 如果你在自我定位中,已經決定不幹技術,那請跳過後面的所有部分,如果繼續做技術,那麼這部分將是自我提升和準備面試的乾貨。不過這部分內容可能更適合Java相關的互聯網從業者,這也是體量最大的互聯網技術從業者。首先是編程語言本身和語言生態相關的,這裡Java為例,虛擬機原理,你會發現可能被問的最多的就是垃圾回收相關議題,可以搞一本 《深入理解java虛擬機》認真研讀一下;多線程場景的知識,線程池,鎖的原理等,可以研讀 《Java並發編程的藝術》,Java8相關議題,Spring包括IOC,AOP也各種問,推薦《Spring技術內幕》,當然NIO,Netty這些裡面有經常出鏡。 互聯網系技術通常還是用各種中間件,可以閱讀官方文檔,也可以找到一些《XX權威指南》之類的書,做閱讀。如果公司場景有使用,那最好,如果沒有,這些東西自己搭建都不費事。下面舉例說一些吧,例如常用的解決高並發場景的讀問題的緩存中間件Redis,Memcache等;用於解耦的消息隊列中間件,Rabbit MQ, Kafka等;用於分散式環境下一致性數據的Zookeeper;Mysql分表分庫的Cobar等;通用搜索引擎Elastic Search。還有好多領域,每個領域都有好多產品。 存儲本身也是一個很深的話題,Mysql為代表的關係型資料庫,Nosql代表的MongoDB,Cassandra。他們的使用場景,優缺點。 架構方面,其實感覺最主流的架構還是SOA,推薦讀一讀《分散式服務框架原理與實踐》,我面試前並沒有看到這本書,很多議題包括熔斷,降級之類都沒有想過,導致前面幾次面試提到相關議題都有些懵懵懂懂。 當然學無止境,如果想都了解可能要花幾年時間。有針對性的了解很重要,如果你眼下就要找工作,那麼就挑著公司用的相關技術深挖,這樣面試比較好說。
- 職位投遞先說說職位,關於公司對員工的定位,參考我公司的評級標準,對於P5-7這個級別要求如下: P5(高級開發)-能夠在基本沒有指導的情況下獨立開發小模塊 P6(資深開發)—能夠獨立設計和開發一個核心模塊 P7(架構師,專家)— 一個產品工程的全局設計 更高級別的沒有在列出之內,因為核心實施就在這3個級別,這是阿里系公司P系列級別的定義,不同的公司級別差別會比較大,不過很多公司在招聘的時候,都會以阿里系做參考和對標。所以針對自己的求職目標投遞簡歷,這樣會避免一些烏龍,後面還會提到不同級別的面試。
- 面試流程和內容4.1 流程很多公司都說,先面試後定級,不過很多情況都是你投什麼職位就會被定在什麼職位區間。例如標記為高級/資深XX工程師,那面試流程就是按照P5-P6這個來,這個級別的面試一般只是組內技術面試官,組老大(可能是總監),HR面一下就決定了。 如果是面架構師/專家(P7),流程會不一樣,一般是組內架構師/專家面,然後會是高級架構師/專家面,總監面,CTO/技術VP面,HR面。 所以不要隨意投職位,如果你定位自己是專家,就不要投高級和資深的崗位。4.2 內容 面試的內容無非是你做過什麼,你會什麼,你能做什麼關於做過什麼,當然就是你陳述自己做過的項目,實現了那些部分,有那些貢獻等等。這些內容,應該是參與面試之前就自己梳理好,如果工作認真,工作過程經常思考,並且有優化的習慣,這部分內容很容易講,畢竟是自己做的。 簡歷上也可以附上可以幫助你表述自己工作成果的東西,例如圖或者表格,這些看起來很簡單的東西,對於你和面試官交流,激發他發問都非常有幫助。例如博主就把自己創業期間架構的伺服器後台用彩頁附加在簡歷上,很多面試官對這個架構圖特別感興趣,基本從最上面到最下面過一遍,再深入剖析幾個技術點和場景,一輪面試就愉快的結束了。這個圖如下(有些內容表述的不夠專業,我也漸漸意識到了)
你會做什麼,就是技術水平面試了,面試官可能是在你講述項目的時候,從某個地方為切入點,一點一點的深入問。例如先問你有沒有做過並發,如果你說是,可能繼續問,是否用過線程池,如果你說是,可能繼續問,線程池的核心原理是怎樣的,如果你能解釋一堆,接下來可能還會繼續問,有幾類線程池,適合什麼不同場景。
這個可能會扣很細很細,螞蟻金服面試的時候,那個面試官估計有40-50歲,書卷氣很濃,Java真是刨根問底問了好多好多內容。只有平時深入積累才可能知道,如果只是泛泛的使用,沒有想過如何優化和了解更多底層原理,根本不知道面試官在說啥。這個部分內容可以參考前面的長期準備內容。
你能做什麼,就當這部分是開放式問題吧,這個題目通常沒有標準答案,考察你解決問題的能力。我遇到的一個比較多問題是,設計秒殺系統,解決分散式系統中的數據一致問題,特別是分散式一致性問題,本來就是業界難題,拋出來給你應該也就是看你在平時工作的時候有沒有思考過這個問題,有沒有嘗試過在工作中,儘可能小的避免這種情況的出現。
5. 談Offer這裡我沒有什麼技巧,因為不喜歡和人討價還價,我可能更看重工作內容,氛圍這些,沒有嘗試過和HR討價還價。不過基本上決定你薪水的是,你面試的級別薪資範圍,你之前的薪水,你其他Offer的薪水。所以如果準備一次面試,也不妨多看看機會,至少其他Offer可以成為你衡量自己和談薪資的參考。
工程師的職業生涯這個問題其實對於我依然也沒有答案,生涯這種事,似乎只是過來人才有資格談的,對於我這個入職場還不滿四年,做過的大項目還能用一隻手數過來的人,只能表達一些我看法。
1. 成為技術專家
我覺得,能成為技術專家也和你的工作內容關係很大,如果是從事雲平台,基礎架構組件相關的工作,比較容易朝著這個方向走。例如你做消息中間件,SOA框架開放,DRC多活這些,因為日常工作解決就是純技術問題,並且在高並發場景下,這些問題真的很有價值,伴隨公司從小到大,用心積累的人,也順理成章的變成了專家。
當然還有一種,也是大多數工程師,做了很多業務開發,好像什麼都懂,但是在某個領域卻找不到絕對優勢。那麼選擇技術,選擇這麼多中間件,搭建一套高可用的系統,能洞悉系統評價,知道怎麼改善,這同樣是核心競爭力,這樣應該算朝著架構師的方向前行了。
對於喜歡專研技術,不喜歡和人撕逼,喜歡安安靜靜研究東西的人來說,這是一個不錯的方向,並且懂核心技術的人整個市場都不多,根本不用擔心失業,如果公司解散或者裁員,你的薪水應該只會更高。
2. 技術管理
伴隨你經驗的提高,公司隊伍的壯大,同樣也會空缺出一些管理崗,很多工程師也順利成章的走到管理的崗位。如果你對找bug已經有點厭倦,想多和人打交道,不妨可以朝著這個方向走。
對於從事管理,我覺得有幾個技能應該很早積累起來。
1. 表達自己
對於一個基層工程師而言,大多數的時候,都是聽別人,聽產品經理需求,聽Learder管,聽資深技術的傳道。但是慢慢你會發現,有一天,你可以和他們討論了,再後來,你需要對他們表達你自己了。這也是伴隨著你資歷和級別提升後,溝通姿態的轉變。
所以流暢的表達自己很重要,表達思路要清晰,對不同背景的人,選擇合適他們的語言(不要和產品經理說什麼解耦),善於利用輔助的工具,例如PPT,善於抽象和總結信息,例如濃縮成圖或者表格和別人闡述。
2. 善於分配和獲取資源
很多人會覺得,分配和獲取資源已經是從事了管理崗位的人才有資格做的事情。其實不然,每個組都有不少你有資格Own的小項目,有時候你會有資格帶1-2個資歷淺的工程師或者實習生一起完成項目。這個過程中,也免不了有一些外部依賴,要和一些人對接。如果你很享受這個過程並且做的不錯,那你的性格里,是有成為管理者的品質的。抓住這樣很多小的機會,提高自己經驗的同時,也問問自己,你喜歡不喜歡這樣的事情,總比將來胡亂跳到一個管理崗位讓後自己各種suffer強吧。
寫在最後以前聽過一個關於孩子教育的故事,結論說,不要讓孩子處於物質太優越的環境下,他將失去做選擇的機會,而做選擇本身最能激發人思考和成長。找工作也正是如此,或許比找到一個合適的工作更重要的是,你在這個過程中,更好的認識了自我。希望各位讀者在當前的崗位上有所收穫,如果你在找工作,也希望你一切順利。
推薦閱讀:
※艾·穴位丨歸來穴:治療腹痛、疝氣、月經不調、閉經!
※朴樹:願你歷盡千帆,歸來賊特么有錢
※千古名篇,無可奈何花落去,似曾相識燕歸來
※上海種牙歸來
※相思難表,夢魂無據,惟有歸來是