帝都三年Java,說說我的求職之路

weixin_34007291發表於2017-08-26

好久沒有寫文章了,最近一直在忙著找工作,現在這輪跳槽也接近尾聲了,想寫篇文章說說自己的感受。

今年是我參加工作的第三年,也深切的感受到程式設計師三年一個坎,五年一個坎的道理。
之前畢業一年的時候跳槽過一次,那時比較匆忙,也不懂事,只聊了個別幾家公司,拿到offer就直接答應然後入職了,沒有進行公司間的橫向比較,薪資漲幅很少。
這次跳槽想看看自己的技術水平達到什麼程度,是否對得起這三年的工作時長,於是決定大規模面試一輪,一線二線網際網路公司,創業公司都有去聊,結果還算比較順利,基本全部拿了offer。

離職原因

這個問題每個人應該都不盡相同,這已經是我第二次跳槽了,第一次很簡單,就是覺得自己所在團隊負責的業務跟技術實力有限,繼續待下去技術上面不會有太大提升,同時又有一些工作內容比較噁心,實在想甩掉就直接走人了。
這次離職就大不同了,自己想的比較清楚,為什麼要走?想到什麼地方?
我自己這次想離開的原因主要是這幾點:
一是公司有較大的調整,自己不太喜歡,說白了就是影響了自己的利益。
二是系統做的太久了,感到膩煩了。
三是錢少了。
具體哪個原因佔比最多其實不好說,我自己心裡也很矛盾,感覺各方面都不合適,就決定走了。
馬雲說離職不外乎兩種原因,一是錢沒給夠,二是心裡委屈了,現在看來這兩點我都佔了。

面試過程

  1. 投遞環節:
    現在關於網際網路技術招聘的網站或者App很多,根據個人喜好選擇就可以了,我自己使用的是拉勾,感覺還不錯,崗位資源很多,響應速度也快。

  2. 約面環節:
    這裡公司都是HR跟你電話聯絡,有些HR是通過手機號跟你聯絡的,嚇得我一度以為是騙子。。。
    在約我面試的時候發現有些公司會讓你自帶簡歷,自帶筆,關於這點仁者見仁智者見智吧,雖然說自己去面試帶上簡歷沒什麼,不過說實話我不是很喜歡。

  3. 筆試環節:
    有個別公司會給求職者準備筆試題,差不多三四頁紙,估計是出於招聘成本的考慮,寫完筆試題以後面試官來了就可以直接根據你筆試題的作答情況進行鍼對性提問。
    不過我還是認為社招沒有必要有筆試,如果想節約招聘成本可以提前電話簡單溝通幾個問題,合適再現場面,單就這點來說我比較認可阿里的流程。
    不過身邊也有人吐槽不進行面對面交流無法發揮出自己真正的水平。所以這點也僅僅是我個人的觀點。

  4. 面試環節:
    社招面試一般最少三輪,四輪五輪常見。不過基本上最關鍵的就是前兩輪技術面試。

  • 自我介紹
    基本上按照時間順序,把自己的公司跟工作內容簡單講一下就好。我個人覺得這個環節雖然拖沓,但卻可以緩解面試的緊張氛圍,同時也有時間讓面試官看看你的簡歷。

  • 聊聊專案
    這個環節一般是挑一個專案來說,選一個自己最熟悉的專案,從業務邏輯,系統架構,未來規劃方面展開說就可以,面試官可能會在這個環節問一些問題,或者讓你講一些技術難點之類的東西。不過老實說,我本人是做業務系統的,每次說到技術難點感覺真的很難挖掘,每次只能硬著頭皮說幾個,還經常被面試官鄙視,(⊙﹏⊙)b。
    三年工作經驗,公司一般要求你達到高階工程師的水平,未來的工作很有可能是你獨立負責一個系統,所以對現有系統的瞭解情況能很大程度說明你是不是能夠勝任未來的工作,建議這裡好好準備下。

  • 基礎知識
    這裡就簡單了,我自己Java基礎還不錯,這個環節基本都能對答如流。Java類庫原始碼,JVM知識,線上問題排查,開源框架等等都有涉獵。稍微不好的地方也就是開源框架了。快取,訊息等中介軟體雖然常用,這些東西也都略知一二,但有時候一些細節或者使用過程中的坑沒有面試官掌握的深入,細緻。會有答不上來的情況。
    關於知識點的提問我這裡舉個例子:
    面試官:說說Java的HashMap吧。
    我:首先HashMap是由陣列+連結串列的方式實現的,是無序,非執行緒安全的資料結構。
    如果想使用有序的Map,可以使用TreeMap跟LinkedHashMap,其中TreeMap使用紅黑樹實現,排序規則由重寫compare方法決定。LinkedHashMap則是維護了一個連結串列,根據構造引數選擇在put或者get操作的時候進行順序調整。
    如果想使用執行緒安全的Map,可以使用HashTable跟ConcurrentHashMap,由於HashTable效能較低,重點說下ConcurrentHashMap。ConcurrentHashMap在Java7跟Java8中實現方式有較大不同。
    Java7三要素:Segment,Lock,HashEntry。
    Java8三要素:Node,CAS,Synchronized。
    然後可以根據面試官要求或者面試時間具體說說實現原理,這樣這道題就算結束了。
    技術面試就跟我們上學的時候考試一樣,每個面試官其實只會聊少數幾個知識點,但面試者必須掌握足夠多的知識才能保證不被面試官問的啞口無言。只有非常努力才能看上去毫不費力!

  • 寫個演算法
    這一般是最後一個環節,也基本可以說是必有環節,起碼第一面是常有的。我應聘的是Java工程師,對演算法瞭解確實不多,面試過程中被問到的演算法大部分都答不出來。。。(⊙﹏⊙)b。還好一般情況下面試官不會對開發工程師太強調演算法能力,如果你之前工程方面的問題回答的很好,那麼面試官通常不會在這裡卡你,就算演算法題沒有思路也有很大概率通過。當前北京網際網路圈裡最火的兩家公司頭條快手也是這樣(或許是我運氣太好了,剛好遇到這種面試官),對於開發工程師來說,演算法是加分項,不是必須項。

面試難度

說到各個公司的面試,很多人最關心的應該就是難度了,其實就我自己的經驗來看(本人經過這次面試洗禮,應該算是經驗豐富了),面試難度公司佔一些,但很大程度其實跟面試官本人的水平有很大關係,有些不起眼的創業公司有時候面試難度超乎想象,各種細節,原理步步緊逼,實在痛快。也有一些一線大廠面試難度卻非常一般,草草了事。

面試心態

我自己對面試的看法是相互選擇。我喜歡跟面試官平等的交流,雖然作為求職者,面試官在考察我的專業能力,但同時我也在看面試官的水平。個人建議最好不要把面試當成單方面的提問回答,要有交流,表達自己的觀點,不然容易把自己搞的很緊張,發揮失常。單說對技術的理解,就Java來說本來就有很多知識點每個人理解是不一樣的,可能是你錯,也可能是面試官錯,也有可能大家都錯,或者都對,只是角度不同。很幸運我這次遇到的面試官都很nice,交流很順暢,有時候自己表達一些觀點,面試官會直接說自己也沒考慮到這一層,這樣的面試過程是我喜歡的。另外既然是交流,我不介意加一些題外話,比如上午10點去面試,我會直接開玩笑跟面試官說是不是為我起了個大早。有時候面試官帶我去會議室的路上我會聊聊公司辦公環境等無關緊要的話題,緩和一下氛圍。

面試運氣

說句心裡話,面試真的是有運氣成分在的。因此我往往會勸我身邊面試失敗的人不要過分妄自菲薄。選拔通常是多維度的,可能只是Leader跟你的氣場不和,或者hc不夠了,就技術而言也有很大程度可能是你跟面試官沒對上,他會的東西你剛好不會,你會的他剛好沒問等等。當然了,如果三年Java經驗,連volatile也說不清楚那還是需要好好沉澱一下。


寫在最後:
這次跳槽接近尾聲了,接下來就是橫向對比下各個offer,選擇下家公司了。整體來看都還不錯,目前也還在糾結中。
個人感覺三年工作經驗是成為高階工程師的時間點,由於後面的工作可能是需要你一個人維護一個系統,所以確實需要對一些常用技術的實現原理有一定程度的認識,對系統的設計優化也有一些自己的觀點。

不管最後選擇哪家公司,接下來的兩年時間都還需要懷著敬畏之心,如履薄冰,加緊學習,爭取在達到五年經驗的時間點擁有架構師的技術實力。

最後祝所有程式設計師工作順利,跳槽順利,與諸君共勉。

相關文章