天天看點

Java進階程式員面試經曆

    我80年出生,05年畢業到現在已經快12年了,如果一直在技術上辛勤耕耘,足夠的努力,加上多年的技術經驗累積,這個年紀混到架構師級、技術總監甚至CTO還是有可能的。不過因為我自己的經曆有點特别,2011年初離開深圳,之後就很少接觸程式設計了,是以水準基本上停留在那個年代,Java進階程式員的水準都沒有達到。自己不僅沒有達到這個級别,甚至去面試的時候,還要和九零後一起競争。實際上很難遇到比我年紀更大的面試者了。重新回到深圳,見下老同學,有和别人一起開公司的,以技術身份作為合夥人加入的,有公司元老,分得股權的。到這個年紀,事業上總得有點成就了。但于我而言,一切都得重新開始。

    說起來,作為程式員脫離這個行業6年之久,對很多新湧現出來的技術一無所知。重新找工作,自己心裡真是沒底。為了找工作,自己花了兩個月的時間來複習java基礎知識(基礎文法、資料結構及算法、設計模式、進階主題,包括多線程并發、IO體系結構、集合類、Java文法新特性、JVM虛拟機記憶體管理、Java類加載加載等)。當我在複習這些技術的時候,自己真的感到汗顔。畢業後,上班環境非常輕松,下班後隻顧享受,一副無所事事的樣子,是以05年畢業,一直到10年底辭職離開程式員這個職業,感覺自己的知識技術水準幾乎沒有任何提高。直到最近我才詳細了解java裡面的IO、集合類這樣的整體架構。對于一個java開發人員來說,這應該是最基本不過的了。是以,這次的經曆告訴我,想要在某件事情上取得成功,你必須付出比别人多的汗水。

    在不到兩個月的時間裡,我也快速的學習了Spring、Hibernate、Struts這些web開發架構,快速浏覽前端JavaScript相關的一些技術。因為也想做金融開發相關的工作,在看到網上有招Android前端開發的,我也快速學習了Android開發,另外學習了SQL,對于特定資料庫自己感覺時間上不太夠,是以就沒有更多的深入。在離開程式員之前在一家做搜尋引擎的技術公司,隻知道一個Lucene搜尋引擎架構,其他的技術很少用到,項目組連SQL都沒有用到,自己也沒有主動去學習。最後的結果就是孤陋寡聞!作為一個技術人員,除了要精通自己使用的開發技術外,應該對自己有些要求,就是了解和學習最新的技術。這不僅可以提升自己的知識面,更重要的是,在實際開發中,對問開發中遇到的問題可以提供寬泛的解決方案。隻不過,我認識比較晚而已。不過人的一生,想要做某件事情的時候,任何時候都不晚,隻要你不喪失信心,隻要你足夠努力。

    除了學習,自己也在網上收集了一些有關面試、筆試的經驗,如《面試總結——Java進階工程師》系列的幾篇文章。随着自己準備的推進,自己的信心也在增強。在網上投履歷的時候,我寫填寫上10年以上開發經驗。我相信這個“10年”足以吸引很多HR的眼球。對于一些公司來說,他們需要這樣有經驗的開發人員。但是當他們看到我的履歷經曆上的項目經驗的時候,隻有寥寥的幾條。雖然我也很想去編造一些項目經驗,這樣就可以獲得更高的關注度,但是我最終沒有這麼做。我想告訴自己,自己能行。也幸好沒有亂編,因為現在很多面試都是在這些項目經驗上展開話題和讨論的。

    第一個面試,2月24日(周五)上午履歷剛發上去不到半小時,就有一個電話打過來,後來也是這個電話讓我拿到了第一份offer。下午有一個技術人員,給我第一輪技術面試,聊了下我之前做搜尋引擎的一些技術。主要是工作中用到的Lucene架構、搜尋引擎分詞技術,還有資料處理hadoop(這在我離開公司時,還隻是剛引進的實驗技術,而且還不是我的項目組在用)。因為對hadoop隻是了解一點,在面試的時候,差點露餡。不過我從hadoop把話題轉移到了當時處理這些資料在搜尋引擎裡面是幹什麼用的,而不是一直糾結于hadoop怎麼處理這些資料的。面試官也是比較nice,一邊就我的話題聊了下,同時給我介紹了一些新的技術Spark、Storm等,正好這些我也都是在最近簡單了解了下。面試過程不到二十分鐘,感覺不錯,至少自己并沒有緊張。面試官說,他把我推薦上去,還有第二輪面試。我禮貌的表示感謝!到下個星期二上午,第二輪面試居然也是電話面試。這次面試稍微深一些,主要問工作中的問題怎麼解決,分詞系統怎麼實作的。這些都還好說,這些确實有項目經驗,話題也好展開。但提到一些新的搜尋引擎技術如:ElasticSearch,我居然都沒有聽過,這就有些尴尬了。畢竟,如果是做搜尋引擎,而且是基于Lucene的,怎麼可能不知道它。但是,好在面試官并沒有太過追究。整個面試過程也不算太長,讓我感到吃驚的是,這期間沒有提到“Java”這個詞。面試結束後,面試官告訴我,HR那邊會很快通知我。聽其語氣,感覺應該是成了。果然沒錯,下午HR那邊就打電話通知我,通過了面試。然後問我薪資方面,除了之前說的,還有什麼要求。最初HR給我打電話的時候,我說的最低應該是18K,但這次因為二面通過,我說其他的公司面試我要求都是20K。HR說可以争取,最後公司那邊給到了21K,這已經達到了自己的要求。因為多年沒有工作,心裡沒底,最初是想能夠達到15K就算是達成目标,然後通過一段時間的學習提高,快速恢複狀态。

    周三一整天,參加了四個面試,其中有兩家因為項目不比對,直接第一輪就淘汰,他們主要做企業ERP、WEB開發,而我這方面相對還是比較弱的。有一個面試,第二輪是華為面試官。面試官比較嚴肅,問的問題也比較廣和深。基本上是看到你履歷上寫了什麼項目,然後就此開展,一步一步深入。先是介紹項目情況,架構,技術等,然後中間會提問遇到的問題,應該怎麼解決。這個确實是考驗一個人的工作經驗,以及解決問題的能力。有不少問題,我想出來的解決方案都不理想,面試官發現其中的弱點之後,我就不知道怎麼做了。有點小尴尬,但整體過程也還不是太糟糕。自己心裡想,就當是學習了。另一個面試,他們的項目也是EPR和WEB開發的,面試官年紀稍大。這次面試并沒有第一輪就把我淘汰,面試官比較nice。面試過程同樣是根據履歷上的項目經驗、技術展開。這次面試官的面試重點是偏技術的。比如算法的考察,面試官問,如果有一些無序的數字,應該怎麼快速地讓它們變成有序的。我說可以可以用快速排序法。接着就問,快速排序法怎麼實作,我把快速排序的基本思路說了。接着提問,那麼如果在實際環境中,給你這些數字,你打算自己寫一份快速排序的代碼去完成這個任務嗎。我當時想,可以在網上找快速排序的代碼,自己再封裝成工具,就可以使用了。後來想,既然封裝,那是不是已經有封裝好的工具呢,我想到了Java的集合類,裡面有一些排序的功能。我說可以用Java集合類的排序接口來實作,面試官表示認同。後來問我,是哪個接口,我一時說不上來,不過他說我應該是知道,隻是一時想不起來,沒有繼續追問。之後,問了一下設計模式,工作中常用的。我講了幾個,比如單例模式、代理模式、MVC模式等。接着問單例模式有幾種,我說主要有懶加載和啟動時加載。接着問代理模式是怎麼實作,把基本的類關系說下。我簡單的描述了代理類要引用被代理類,在代理類中提供接口給客戶類,而代理類接口的具體實作細節是由其引用的被代理類來實作,被代理類于客戶類而言是不看見的。又問Spring架構實作什麼模式,我說主要有工廠模式(Ioc容器)、MVC(Spring MVC)和代理模式(AOP程式設計)。設計模式的問題問完,問Javascript問題,這個我就更是弱項了,因為從來沒做過web開發,最近才學習了解前端開發技術Javascript,有不少答不上來的,一些問題說了自己的想法。面試官覺得我可能隻是用得少,記不住了,基本思路還是可以。面試官給我的評價也還是不錯,說java基礎技術紮實,說等下又第二輪面試。第二輪面試,則重點在項目經驗上,主要還是講項目上的問題,以及解決思路。面試完了,問我對他們項目有什麼想了解的還有薪資方面的問題。因為之前已經有一個offer,是以我這次直接說了20K以上。第二天,這家公司HR打電話更我确認,我說期望在20-23K之間,HR和公司上司溝通後,說可以滿足我的要求,月薪是23K。感覺自己還是不錯的,松口氣。

    周四,面試一家,基本過程差不多,不過面試官跟我是同歲的。其實我這個年紀來面試,很多面試官都和我差不多了。後來打電話說問願不願去他們項目組,不過他們項目組可能給不起那個工資要求。如果有意向,也可以把我推薦給其他項目組,有些項目組工資高些。不過在我看來,因為都差不多,也就拒絕了。

    周六,平安科技的專場面試。其實首輪面試,我感覺回答的還是不錯的,問了JVM虛拟機的問題,Spring架構原理,還有如果自己去實作Spring架構應該怎麼做(參考了黃勇《架構探險——從零開始寫WEB架構》裡面的思路)。不過有一個問題,面試官居然也是非常了解搜尋引擎技術的,問我在公司用的Lucene是什麼版本,我說1.6,結果面試官說,Lucene都5.x(實際情況是已經6.x了),你們還在用這麼舊的版本啊。終于露餡了!面試官說他們項目要求的比較高,建議我去他們公司其他項目組看看,我拿着履歷走了,因為沒興趣了。

    其實面試,跟公司項目方向、面試官等都有很大的關系。比如我說的周三的面試,有兩家做的内容差不多,但是一家直接在第一輪面試就把我pass掉了,另一家我就成了。是以說,面試失敗不代表自己水準不行。沒必要感到垂頭喪氣。但是面試之前,自己還是要有準備的,JAVA基礎肯定要牢固,而且進階工程師面試的主要内容都是與工作和項目經驗有關的,重點考察一個人解決問題的思路。

    工資上可能對于某些程式設計大牛來說,并不具備優勢,但是也基本上是普通Java進階工程師的薪資水準了。如果過于糾結于工資,工作可能也不會開心。盡管第二份offer每個月多出了2K,而且試用期是21K,比起第一家80%隻有17K左右高出不少,我最後還是選擇去了第一份提供offer的公司。放松心情,重新開始,這才是我這次找工作的重點。明白自己努力的目标,這樣也會讓自己的行為更有效。