8年經驗面試官詳解 Java 面試祕訣
簡歷中應包含的要素
|
目的
|
基本資訊,比如姓名,性別,年齡,目前所在城市,是否在職,手機和電郵等。
|
1 讓招聘方瞭解候選人的基本資訊。
2 以便招聘方通過手機等方式能聯絡到候選人。
|
按時間倒敘寫教育背景,一般只需要包含高中以上,初中高中等不必寫,但需包含專業和學歷學位資訊。
|
用專業和學歷學位等資訊向招聘方證明自己的技術背景。
|
總結性地列出自己所掌握的技能。比如:
1 有3年Java經驗,有2年Spring MVC經驗。
2有3年Oracle經驗,有2年Oracle調優經驗。
等等
|
一般這些總結點是和職務需求是一致的,這樣能讓招聘方直接地感受到該候選人的匹配度。
在這基礎上,可以適當列些能成功幫到自己的總結點。
|
按倒敘列出工作過的公司,並列出在這些公司裡的專案經驗,這部分的技能下文會詳細描述。
|
在專案經驗描述裡,能通過專案用到的技術經驗等,具體地給出自己“匹配”該崗位的證明。
|
可以列出和應聘崗位相關的培訓經歷和得到過的獎勵
|
這些屬於加分項,同等情況下能優先錄用
|
用少量篇幅列出自己的興趣和自我總結
|
讓招聘公司進一步瞭解候選人
|
|
你
|
面試官
|
對你以前的專案和技能
|
很瞭解
|
只能聽你說,只能根據你說的內容做出判斷
|
在面試過程中的職責
|
在很短的時間內防守成功即可
|
如果找不出漏洞,就只能算你以前做過
|
準備時間
|
面試前你有充足的時間準備
|
一般在面試前用30分鐘閱讀你的簡歷
|
溝通過程
|
你可以出錯,但別出關鍵性的錯誤
|
不會太為難你,除非你太差
|
技巧
|
你有足夠的技巧,也可以從網上找到足夠多的面試題
|
其實就問些通用的有規律的問題
|
提問方式
|
目的
|
讓你描述工作經驗和專案(極有可能是最近的),看看你說的是否和簡歷上一致
|
看你是否真的做過這些專案
|
看你簡歷上專案裡用到的技術,比如框架、資料庫,然後針對這些技術提些基本問題
|
還是驗證你是否做過專案,同時看你是否瞭解這些技術,為進一步提問做準備
|
針對某個專案,不斷深入地問一些技術上的問題,或者從不同側面問一些技術實現,看你前後回答裡面是否有矛盾
|
深入核實你的專案細節
|
針對某技術,問些專案裡一定會遇到的問題,比如候選人說做過資料庫,那麼就會問索引方面的問題
|
通過這類問題,核實候選人是否真的有過專案經驗(或者還僅僅是學習經驗)
|
-
反向代理方面,nginx的基本配置,比如如何通過lua語言設定規則,如何設定session粘滯。如果可以,再看些nginx的底層,比如協議,叢集設定,失效轉移等;
-
遠端呼叫dubbo方面,可以看下dubbo和zookeeper整合的知識點,再深一步,瞭解下dubbo底層的傳輸協議和序列化方式;
-
訊息佇列方面,可以看下kafka或任意一種元件的使用方式,簡單點可以看下配置,工作組的設定,再深入點,可以看下Kafka叢集,持久化的方式,以及傳送訊息是用長連線還是短攔截。
-
SQL高階方面,比如group by, having,左連線,子查詢(帶in),行轉列等高階用法;
-
建表方面,你可以考慮下,你專案是用三正規化還是反正規化,理由是什麼?
-
尤其是優化,你可以準備下如何通過執行計劃檢視SQL語句改進點的方式,或者其它能改善SQL效能的方式(比如建索引等);
-
如果你感覺有能力,還可以準備些MySQL叢集,MyCAT分庫分表的技能。比如通過LVS+Keepalived實現MySQL負載均衡,MyCAT的配置方式。同樣,如果可以,也看些相關的底層程式碼。
-
String a = "123"; String b = "123"; a==b的結果是什麼?這包含了記憶體,String儲存方式等諸多知識點;
-
HashMap裡的hashcode方法和equal方法什麼時候需要重寫?如果不重寫會有什麼後果?對此大家可以進一步瞭解HashMap(甚至ConcurrentHashMap)的底層實現;
-
ArrayList和LinkedList底層實現有什麼差別?它們各自適用於哪些場合?對此大家也可以瞭解下相關底層程式碼;
-
volatile關鍵字有什麼作用?由此展開,大家可以瞭解下執行緒記憶體和堆記憶體的差別;
-
CompletableFuture,這個是JDK1.8裡的新特性,通過它怎麼實現多執行緒併發控制?
-
JVM裡,new出來的物件是在哪個區?再深入一下,問下如何檢視和優化JVM虛擬機器記憶體;
-
Java的靜態代理和動態代理有什麼差別?最好結合底層程式碼來說。
-
能通過less命令開啟檔案,通過Shift+G到達檔案底部,再通過?+關鍵字的方式來根據關鍵來搜尋資訊;
-
能通過grep的方式查關鍵字,具體用法是, grep 關鍵字 檔名,如果要兩次在結果裡查詢的話,就用grep 關鍵字1 檔名 | 關鍵字2 --color。最後--color是高亮關鍵字;
-
能通過vi來編輯檔案;
-
能通過chmod來設定檔案的許可權。
-
ArrayList,LinkedList的底層程式碼裡,包含著基於陣列和連結串列的實現方式,如果大家能以此講清楚擴容,“通過列舉器遍歷“等方式,絕對能證明自己;
-
HashMap直接對應著Hash表這個資料結構,在HashMap的底層程式碼裡,包含著hashcode的put,get等的操作,甚至在ConcurrentHashMap裡,還包含著Lock的邏輯。我相信,如果大家在面試中,看看而言ConcurrentHashMap,再結合在紙上邊說邊畫,那一定能征服面試官;
-
可以看下靜態代理和動態代理的實現方式,再深入一下,可以看下Spring AOP裡的實現程式碼;
-
或許Spirng IOC和MVC的底層實現程式碼比較難看懂,但大家可以說些關鍵的類,根據關鍵流程說下它們的實現方式。
-
職位介紹裡提到的技能要點,比如職位介紹裡有提到Mybatis,那麼面試官一定會問相關問題;
-
你在專案介紹時丟擲的技術關鍵字,比如你在面試過程中介紹專案時提到了Redis,那麼在介紹完專案後,面試官就會問,“你專案裡是如何使用Redis的?”,類似的,簡歷中你寫的技術,也有可能會被問到;
-
Java核心,資料庫,Spring框架,專案管理等基礎問題,這些就不用說了,不過如果你引導得當的話,面試官會花費很多時間問你提到的技術,這塊會問得比較少;
-
必要的演算法題,比如排序等,其實面試官感覺你技術可以的話,這塊就不怎麼會問了,但準備的時候需要看這個,有備無患。
-
問用法,比如直接提問,專案裡你netty怎麼用的?這塊大家可以結合專案準備說辭;
-
問流程,比如結合業務,講下nginx負載均衡的用法?這也可以結合專案和網上搜到的資料準備說辭;
-
問原因,比如為什麼要用netty?這塊就要結合專案說明了;
-
問技術點, 比如netty裡零拷貝怎麼回事?對此,需要對簡歷上提到的每個技術點,以及面試過程中將要提到的每個技術點,搜相關面試問題,並結合業務說明;
-
問基礎知識,比如finally從句的用途,這就可以通過刷題來獲取了。
-
斟酌面試時丟擲的技能,逐一準備說辭;
-
針對技術,網上搜尋問題,比如搜Spring IOC面試題,結合網上的參考答案准備說辭;
-
準備技術的實施要點,比如做了哪些配置檔案,你在專案裡踩過哪些坑?
-
最好結合底層程式碼說明。
-
準備業務背景,為什麼要用?比如我們專案資料庫併發壓力大,需要用MyCat作為分庫分表;
-
如何使用,無非是設定分庫規則,改寫SQL語句等;
-
準備下踩到的坑,比如自增長主鍵在每臺機器上都要保證唯一;
-
然後再結合些底層程式碼,準備下一條SQL語句是如何分發到對應的分庫上的,然後執行好以後又如何返回的;
-
再可以準備些只有做過才知道的細節,比如釋出上線和清洗資料的流程;
-
網上找些MyCAT的面試題,準備相關說辭。
-
結合業務需求點,說下為什麼要用這個技術,怎麼用的,以及用了有什麼好處? 比如為了優化網路通訊協議,所以用基於TCP協議的Netty,業務模組裡的xxx功能是用到netty;
-
準備下踩到的坑,比如在某業務場景裡,我遇到了半包粘包問題,我是通過除錯底層程式碼解決的;
-
用了Netty對專案的幫助。比如Netty是基於TCP協議的,它要比Http協議要輕,所以通訊效能高,且Netty內部的Reactor執行緒模型對系統的IO幫助很大;
-
基於零拷貝、讀寫索引和非同步處理機制,準備些底層程式碼,在面試裡說明;
-
順帶再準備下Netty的元件,工作流程等問題,這能搜到問題和相關說辭。
技術方面
|
可以說的亮點
|
Java集合物件
|
1 能根據專案的需求選用合適的集合物件,比如知道ArrayList和LinkedList的差異,並能合理選用。
2 能在合適的場合選用WeakHashMap。
3 可以適當講一些集合的JDK底層實現程式碼。
|
異常處理方面
|
能在finally從句裡寫釋放資源的程式碼
|
JDBC方面
|
1 能通過PreparedStatement的預處理方法來防止SQL隱碼攻擊。
2 能通過批處理來提升操作效能。
3 能通過例項講述事務隔離級別的含義
|
多執行緒方面
|
1 會結合專案使用執行緒池
2 能通過鎖或訊號量等手段正確地處理多執行緒併發時的資料一致性。
3 熟悉各種併發元件
|
表 資料庫方面可以準備的亮點
技術方面
|
可以說的亮點
|
建表
|
建表時需要根據專案的資料情況,考慮是採用三正規化或是反正規化。
|
SQL調優
|
1 可以通過檢視日誌等方式看哪些SQL需要調優。
2 可以通過執行計劃檢視SQL的所消耗的代價,並據此調優。
3 可以通過建索引,建分割槽等手段來優化SQL效能。
|
事務
|
1 可以說下JDBC或Spring裡是如何管理事務的。
2 可以說下Spring裡的宣告式事務的做法和優點。
3 可以舉例說明事務隔離級別和事務傳播機制的用法。
|
分散式資料庫
|
1 可以通過MyCAT進行分庫分表,從而減輕對單表訪問所需要的代價。
2 可以通過叢集等方式來承擔對資料庫的過量的訪問請求。
|
NoSQL和Hadoop
|
這兩個本身就是個亮點,如果大家用過,可以結合專案來說明。
|
表Java Web框架方面可以準備的亮點
技術方面
|
可以說的亮點
|
Spring MVC/Boot架構
|
1 可以說下Spring的IOC和AOP是如何優化專案結構的。
2 可以說下攔截器等Spring元件對專案的幫助。
3 可以說下Spring Boot對專案的幫助
|
ORM,比如Mybatis
|
使用這種ORM技術時,如何優化訪問和運算元據庫的效能。
|
Spring和Mybatis等的整合
|
可以講下整合框架的細節,並可以舉例說明整合後的框架能很好地適應需求的變更。
|
表 分散式元件方面可以準備的亮點
技術方面
|
可以說的亮點
|
元件應用
|
1 結合配置檔案等,說明怎麼用的
2 結合業務,說下具體的效果,比如限流後有什麼好處。
|
如何應對高併發的場景
|
1 如何達到負載均衡
2 如何進行失效轉移
|
定位排查和解決問題
|
1 如何通過分析log定位問題
2 問題的根源和解決方法
|
健康檢查和線上監控
|
1 如何通過健康檢查確定系統正常執行
2 出了問題,如何發出警告
|
由此大家能看到,其實很多事先可以準備的點,其實是你沒有想到,但你專案裡一定用過。你據此準備,在通過上述技巧在面試中合理地找機會說出來,你面試成功的可能性一定會大大增加。
【End】
熱 文 推 薦
☞
相關文章
- 偽經驗;不稱職面試官的面試經面試
- 面試官十年面試經驗總結面試
- 一位前BAT面試官,詳聊進入BAT的面試經驗BAT面試
- 面試流程——谷歌資深面試官經驗總結面試谷歌
- Java面經 面試經驗 網際網路公司面試經驗 後端面試經驗Java面試後端
- 阿里JAVA面試分享經驗阿里Java面試
- 【對線面試官】Java註解面試Java
- 「不能說的祕密」BAT資深面試官整理Java架構面試題BATJava架構面試題
- JavaScript經典面試題詳解JavaScript面試題
- Java 面試-吊打面試官系列 Redis 基礎Java面試Redis
- 華為面試經驗面試
- JAVA一年經驗的面試集Java面試
- 跳槽!3年Java面試經驗總結Java面試
- 【對線面試官】Java NIO面試Java
- 想入職阿里的Java開發者必看,阿里巴巴面試官實戰經驗分享!阿里Java面試
- linux面試經驗Linux面試
- 請問面試經驗?面試
- Java核心內容面試題詳解Java面試題
- 面試官:說說Java 原子類面試Java
- 如何面試你的面試官面試
- 面試經驗之教訓面試
- 一年經驗Java開發0713面試Java面試
- 唯品會java技術崗面試經驗分享Java面試
- 2年Java開發工作經驗面試總結Java面試
- 面試官:五年經驗,我不問問反射說不過去吧?面試反射
- java經典面試題Java面試題
- 谷歌面試官經典作品(CTCI)目錄谷歌面試
- 面試官:你瞭解Webpack嗎?面試Web
- AsyncTask面試詳解面試
- Java 面試(二)| 詳細的MySql面試部分Java面試MySql
- 100道Java高頻面試題(阿里面試官整理)Java面試題阿里
- 奉啟玉將經驗融於生活,談論成功祕訣!
- Java類載入機制詳解【java面試題】Java面試題
- 分享net面試題和經驗面試題
- 程式設計師面試經驗程式設計師面試
- 國企&銀行面試經驗面試
- 【乾貨】BAT面試經驗分享BAT面試
- 後臺開發面試經驗面試