1. 程式人生 > >Java後端和Java web面試時如何展示自己非技術方面的能力

Java後端和Java web面試時如何展示自己非技術方面的能力

這篇文章的適用範圍其實不僅限於Java後端或Java Web,不過其中有些是拿這方面舉例的,在其它方面,大家可以舉一反三,應該也能得到些啟示。

我們在面試時,會發現有些候選人技術不錯,比如在Java Web後端方面,Spring MVC框架也做過,資料庫方面不僅有經驗,而且還有調優能力,Java Core方面的一些問題也能回答非常好。但由於他們在團隊合作或責任心或其它綜合能力方面有所欠缺,導致他們的綜合競爭力甚至低於一些技術還比他們差的人,進而導致他們落選。

而且在我們的觀察到的不少程式設計師中,會技術但缺乏其它綜合能力的情況不在少數,在這篇文章裡,本人不想探究原因,而是會給出些面試時的注意點。而且大家還可以在平時,根據本文給出的一些建議來提升自己的綜合能力。

開場白結束,以下是正文。

小編是一個有著5年工作經驗的java程式設計師,對於java,自己有做資料的整合,一個完整學習java的路線,學習資料和工具,相信這裡有很多學習java的小夥伴,我創立了一個2000人學習扣群,479121291。每晚都有java的直播課程。無論是初級還是進階的小夥伴小編我都歡迎!

第一部分,如何描述你在專案裡的作用?別單說你僅僅coding。

一般這種問題是:“你在專案裡幹了什麼”,或者類似的問題。

回答的時候可以適當誇張,但要量力而行,一般專案裡有如下角色。

①需求調研,除非是內部專案,否則一般是專案經理做的,調研的時候會寫一些需求和設計文件,也會用UML之類的工具畫點圖。

你可以說,在專案經理的帶領下了解需求;也可以適當說寫了一些文件,繪製過一些UML圖;也可以說,如果在開發過程中遇到不清晰的業務,會及時和專案經理或相關人員確認。

②設計,包括文件上的設計和程式碼上框架的設計以及資料表的設計。一般是比較資深的人做的。你可以在瞭解各細節的基礎上,說參與過部分設計。

③開發,這個就不說了。

④測試,你自己的模組需要你自己測試,此外還有專職的Test人,如果你瞭解一些黑盒、白盒以及自動化測試工具,或者是JUNIT等技術,可以說出來。

⑤部署上線,包括打包上傳發布到Linux之類的工作,這個很考驗一個人的動手能力,你可以去專門瞭解這方面的技術,比如怎麼寫Ant,怎麼deploy到Tomcat,websphere,怎麼到Linux上執行,然後可以根據你的專案情況適當準備一下。

除了寫程式碼,程式設計師在專案裡或多或少會做些其他的事情,比如測試或者部署上線,但我們在面試別人的時候,不少人真就說他只參與了編碼工作。對此我們一般會深入提問,比如會繼續問,你是否參與了設計、測試等。如果他在我們提問後能準確說出還做了其它事情,那麼不會有什麼不好的影響。但萬一你遇到一個不大擅長挖掘候選人能力的面試官,而且你只說會coding,那他就真會寫上“專案中除了coding基本沒幹過其他事”這樣的評語。

這種評語的潛臺詞是,除了寫程式碼,你沒有單元測試、資料庫設計、模組設計、系統釋出等各種其它的經驗,大家可以自己比較下其中的後果。

第二部分,一定要找機會說出你的團隊合作能力

面試過程中,我們一般會隨口問一些和專案相關的情況,比如這個專案有多少人?都是做什麼的?然後再進一步問,如果你在開發的時候遇到問題怎麼辦?不管問題是什麼,其實我們想了解的內容用大白話說出來就是:“你是不是能和別人一起協作開發,會不會是刺頭,遇到問題你是積極主動地解決還是消極地得過且過”。

很多人都會漫不經心隨口回答,但一般來說,面試官在得不出候選人團隊合作能力之前,是不會終止提問的,因為在軟體開發裡,不可能一人把什麼事情都做了。

我們也遇到過一些人,在回答這類問題時過於簡單,實在沒法得出結論,就只能寫“溝通和理解能力有待提升(因為你總沒法理解我們提的問題,或者未表達出你的意思),沒法考查團隊合作精神”。如果技術可以,即使他進下一輪面試,也會因為這個原因出局。

下面列出一些關於團隊合作方面需要大家展示出的能力,其實這些能力大家應該在談吐中展示,因為這方面沒什麼太多的問題。

我們在招聘的時候,如果某個專案比較著急,或者是某個人員流動比較多的專案,或者在招聘的淡季,往往會降低技術上標準,比如本來要對Spring MVC很熟悉的,現在只要做過就行,但不論怎麼降低要求,團隊協作能力不會降。也就是說,即使你能力稍微欠缺些,但很擅長和別人一起協作開發,機會就要比技能很強但溝通協作有問題的人要多得多。

第三部分當問專案週期規模和技術時,是在考查你值多少錢

我們往往會隨口問,XX專案你做了多久,多少人做,或者是,你專案裡用到了什麼新技術?

這時請大家注意,一旦你有大專案經驗,或者用到某個新技術,你的身價會適當往上漲一些,但如果你不注意這方面的回答,讓面試官感覺你只有小作坊、小團隊的經驗,則很可能會給你一個比較低的工資,因為某些技術、經驗只有從大專案中才能得到。下面列出一些大專案的常用標準。

①客戶是比較知名的銀行保險等大公司。

②外派到某個著名大公司。

③展現出在專案裡用到一些比較值錢的軟體,比如IBM的WebSphere、Oracle之類的,而不是用免費的,因為大的專案能負擔得起比較大的軟體花費。

④一般在知名公司做的專案都可以理解成大專案。

如果你實在沒有,可以往“長專案”上靠,比如一個專案大概10個人規模(別多說,不是大專案,人多了別人未必信,而且10個人我們都嫌多,可以說在7個人左右),做了8個月以上,你是從需求分析開始做起的,一直做到上線和維護,畢竟這樣你還能深入瞭解軟體開發的週期,而且在專案裡做長了你積累也多,這個時候你在談價格的時候也有底氣。

如果我們在面試的時候,別人告訴我,他不斷換專案,每個專案都做不長,比如三個月到半年,而且做的專案客戶背景總換,我們就沒法寫上“有大專案經驗”,或者是“做一個比較長的完整專案”這種評語了。

第四部分想盡辦法展示你的責任心和學習能力

責任心和學習能力看上去都是虛的,似乎沒法衡量,但在面試的時候,我們會通過一些問題旁敲側擊地問出來,相信有經驗的其他面試官也都會做到這點。

下面列下學習能力方面你需要展示的能力。

這些方面其實是考查一個人的潛力,如果公司對候選人要求不高,只想招個初級的,其實也知道人和人之間差別不會太大。若這些方面你表現得很好,那麼你入職的機會就會大很多。

第五部分總結(外帶講述提升這方面能力的技巧)

在本文裡,我列出了一些說辭和技巧,但這總是有窮盡的。在平時,大家可以通過如下的途徑來提升自己的綜合能力。

第一,一定得認真參加專案組的會,在其中得認真聽專案經理如何分析專案的需求,如何劃分任務,如何制定進度。

第二,平時在專案裡,多和業務人員、測試和實施等做非coding的人接觸,觀察下他們在做什麼,怎麼做。

第三,平時一定得多和別人溝通。我就見過一個人,剛畢業,開始很內向,表達能力也不算好,往往詞不達意。但我就逼著他多說話,多表達,別怕丟臉別怕別人笑,也是就1個月,他的溝通能力大大改善,經過半年後,甚至能力能趕上和客戶打交道的人了。

第四,別怕加班,別推諉事情,多做事情就相當於讓自己多鍛鍊。

最後我推薦下我自己建的Java學習群:479121291,歡迎初學和進階中的Java小夥伴進群學習。

第五,如果你的專案組確實很難呆,比如專案經理或組員很難打交道,你儘量忍,至少在這個專案組裡呆上半年。因為一方面社會上各種人都有,大家得學會和不同的人打交道,另一方面,如果你在一個專案的時間少於半年,後繼面試官大多數會認為是你個人的問題。