1. 程式人生 > >高階Java工程師要求

高階Java工程師要求

####最近在面試高階Java工程師,想談談我心中高階Java工程師的樣子:

  • 簡歷部分:
    不知道為什麼拿到的絕大部分的工程師的簡歷是沒有照片的,我不知道為什麼,難道認為公司主要看能力而照片會分散注意力麼,那為什麼還要寫性別,民族,籍貫什麼的,這些都工作價值很大麼,那就只能說明不夠重視,所以說一張整潔大方的照片是加分項,至少在我面前是這樣的,郵箱不要用QQ郵箱,不要問為什麼。不同階段簡歷肯定不同,應屆生的簡歷應該突出基礎能力,例如資料機構演算法,網路基礎,Java Web基礎原理和主流框架的熟練程度,程式設計基礎能夠決定是否要你,工程應用能力決定能達到什麼高度。工作兩年以上,我希望能看到在某一方面有十分深入的理解,例如併發,資料庫,框架原始碼級別,或是JVM等等。
  • 關於面試部分:

面試後端題目
自我介紹:
專案情況:
1.主要的職責
2.主要的貢獻
3.解決的難點
4.心得
基礎:
1.資料結構演算法
2.多執行緒模型
3.servlet原理
4.JDBC原理
5.spring特點
中高階特性:
1.併發包
2.類載入機制
3.GC原理與調優
4.設計模式與框架原始碼
5.spring IOC AOP原理與優點
資料庫:
1.複雜SQL與優化
2.事務機制
3.spring事務應用
4.索引原理
架構能力:
1.用過哪些中介軟體
2.zookeeper作用
3.分散式事務解決
4.快取
5.CAP和BASE和ACID的理解
溝通和學習能力職業規劃:
1.平時怎麼學習
2.喜歡逛什麼社群
3.未來打算如何
4.對公司看法,有什麼想問的

####以上這些要點是我在十分鐘內羅列的,沒有參考任何資料,這些要點是我的經驗和各種專案和整個業界對高階工程師的期望。
####接下來談談我考察這些部分的理由吧。
####自我介紹和專案介紹,能夠對面試者有個整體的印象瞭解,例如表達溝通能力和大概工作背景,因為是社會招聘,不僅要看專案經驗,更要看你在專案中所扮演的角色,解決的難點,穿插當中的問題可以考察工程應用能力。甚至會讓畫出架構圖。
####然後瞭解了專案之後我會進入技術能力的考察,如果我對專案介紹滿意,Java基礎部分我會選擇性問一問,我是比較喜歡連環炮的,例如問資料結構演算法,我會問陣列和連結串列區別,然後問jdk中執行緒的類的是實現,然後問及相關的資料結構,然後問到實現細節,然後執行緒安全與否等等,一條線能夠問到很深入。如果中途遇到你不太熟悉的程度我會紀錄一下,然後問向其他部分,多來幾個連環炮,基本上就能知道一個人的能力了,當然如果有必要,我會讓現場寫程式碼,例如我今天上午就讓一個面試者寫一個死鎖的例子。接下來我來模擬幾個連環炮:

  1. 多執行緒模型 - > 各種狀態之間轉換 -> jdk常見的併發類 -> 如何保證執行緒安全 -> volatile實現原理 -> 執行緒池與佇列 -> 調優
  2. spring 特點 -> AOP原理 -> 代理種類 -> 實現細節 -> CGLib侷限 -> 效能如何
  3. JVM組成 -> 記憶體模型 -> 垃圾收集演算法 -> 類載入 -> 收集器型別 -> 如何調優
  4. spring MVC 組成 - > 怎麼對映控制器 -> 控制器單例否 -> 攔截器應用
  5. 使用過MySQL -> 資料庫引擎區別 -> 事務控制 - > 隔離級別 -> 加鎖種類區別 -> spring事務傳播 -> 區別
  6. 分散式和叢集區別 -> 服務發現和負載均衡 -> 中介軟體 -> 分散式事務處理 -> 快取設計
    ####前4個能答好是關鍵,第5個不熟悉沒關係,畢竟才進來不可能讓去你考慮架構。
    ####以上連環炮能扛住,我就會問問平時怎麼學習,畢竟我覺得能回答好上面的人都不簡單,如何學習的對我也是一個啟發,也能看出對方是否充滿激情,未來的追求,能夠了解面試者是架構師路線合適技術管理路線。
    ####技術部落格能體現一個人學習分享的慾望,如果開源賬號和部落格平時並沒怎麼更新,還不如不要寫出來,反而給面試官感覺並不好。
    ####最後一般會讓面試者給面試官提問的機會,這個時候你可以問一些職位相關的問題,表示你是在認真考慮這份工作,這個看個人。