1. 程式人生 > >java兩年開發工作經驗面試總結

java兩年開發工作經驗面試總結

深入學習

在看面試題的過程,你會遇到一些自己沒接觸過的或者以前沒深入學習過的知識,例如最常問的HashMap內部實現原理,這就促使你得開始去看jdk的原始碼或者是學習一些新的東西。看原始碼是很重要的一步,起步很難,但是會讓你收益良多,看原始碼的過程如果碰到無法理解的地方,可以百度看下別人的理解。我學習原始碼的過程中,看過幾個人的關於原始碼的文章寫的很不錯,如下:

五月的倉頡

佔小狼

zhangshixi的Core java系列

熟悉專案

找出自己工作以來開發過的最叼的功能,將整個功能的流程和涉及的東西吃透。專案是面試中必問的環節,一般是以一個功能點為基礎展開問,因此你必須對這個功能有很深的認識,不能有模糊的地方。如果有時間,能把涉及到的知識點也搞懂最好。

做面試題

有不少公司是有面試的,如果你沒有準備過,很容易在各種小地方犯錯,建議去一些面試題網站多做些題目,我自己是用的牛客網。

學習記錄

把自己每天的學習時間和學習內容記錄下來,可以讓自己更有動力的學習,學習是一個枯燥的過程,你必須讓自己時刻保持有動力。

投簡歷、約面試環節

在哪些網站投?

拉勾網、BOSS直聘、獵聘網。

是否該海投?

投簡歷分為兩個情況。

1)沒有社招面試經驗:建議採取海投的方式,只要職位要求跟自己比較匹配都可以投,累計面試經驗。這個環節可以把投簡歷的網站增加兩家:智聯和無憂。

2)自認為社招面試經驗已經足夠:投那些職位匹配、公司滿意的職位。公司評價可以去看準網、百度、知乎等查詢。

一天約幾家面試合適?

最理想的情況為2家面試,上午一般在10點左右,下午一般在2點左右。建議把理想的公司放下午,因為下午的時間比較充足,可以讓公司更充分的瞭解你。我開始面的時候,每次都是上午面的不好,下午面的不錯。

投簡歷經常沒下文?

我當初也沒想到簡歷篩選這關有這麼難,可能是我的簡歷確實亮點不多,再者HR很多都不是行內人,因此他們看得最直接的就是你上家的公司和你畢業的學校,如果你不是從牛逼的公司/學校出來,可能會碰到和我一樣的情況,應對的辦法就是多投。

是否該裸辭?

我一開始是邊上班邊投,然後利用調休時間,或者請假去面試。後來,面試機會越來越多,請假太頻繁了,自己都不好意思了,並且自己也已經有足夠的信心,這個時候我選擇了裸辭。裸辭還有一個原因是,在面試過程中你會發現,有的公司要人要的緊,如果你的辭職流程過長可能會導致你錯過這個公司。

注意事項

1)面試前一天把路線和時間算好,最好別遲到。

2)背個書包,帶好簡歷、充電寶、紙巾、雨傘。

面試環節

筆試常見的問題?

面試常見的問題上面給的面試題連結基本都有。我只提幾點:1)寫SQL:寫SQL很常考察group by、內連線和外連線。2)手寫程式碼:手寫程式碼一般考單例、排序、執行緒、消費者生產者。我建議排序演算法除了氣泡排序,最好還能手寫一種其他的排序程式碼。試想:如果一般面試者都寫的氣泡排序,而你寫的是快速排序/堆排序,肯定能給面試官留下不錯的印象。

面試流程?

1)讓你自我介紹

2)問Java基礎知識

3)問專案

4)情景問題,例如:你的一個功能上了生產環境後,伺服器壓力驟增,該怎麼排查。

5)你有什麼想問面試官的

面試常問的知識點?

1)集合相關問題(必問):

HashMap、LinkedHashMap、ConcurrentHashMap、ArrayList、LinkedList的底層實現。

HashMap和Hashtable的區別。

ArrayList、LinkedList、Vector的區別。

HashMap和ConcurrentHashMap的區別。

HashMap和LinkedHashMap的區別。

HashMap是執行緒安全的嗎。

ConcurrentHashMap是怎麼實現執行緒安全的。

2)執行緒相關問題(必問):

建立執行緒的3種方式。

什麼是執行緒安全。

Runnable介面和Callable介面的區別。

wait方法和sleep方法的區別。

synchronized、Lock、ReentrantLock、ReadWriteLock。

介紹下CAS(無鎖技術)。

什麼是ThreadLocal。

建立執行緒池的4種方式。

ThreadPoolExecutor的內部工作原理。

分散式環境下,怎麼保證執行緒安全。

3)JVM相關問題:

介紹下垃圾收集機制(在什麼時候,對什麼,做了什麼)。

垃圾收集有哪些演算法,各自的特點。

類載入的過程。

雙親委派模型。

有哪些類載入器。

能不能自己寫一個類叫java.lang.String。

4)設計模式相關問題(必問):

先問你熟悉哪些設計模式,然後再具體問你某個設計模式具體實現和相關擴充套件問題。

5)資料庫相關問題,針對Mysql(必問):

給題目讓你手寫SQL。

有沒有SQL優化經驗。

Mysql索引的資料結構。

SQL怎麼進行優化。

SQL關鍵字的執行順序。

有哪幾種索引。

什麼時候該(不該)建索引。

Explain包含哪些列。

Explain的Type列有哪幾種值。

6)框架相關問題:

Hibernate和Mybatis的區別。

Spring MVC和Struts2的區別。

Spring用了哪些設計模式。

Spring中AOP主要用來做什麼。

Spring注入bean的方式。

什麼是IOC,什麼是依賴注入。

Spring是單例還是多例,怎麼修改。

Spring事務隔離級別和傳播性。

介紹下Mybatis/Hibernate的快取機制。

Mybatis的mapper檔案中#和$的區別。

Mybatis的mapper檔案中resultType和resultMap的區別。

Mybatis中DAO層介面沒有寫實現類,Mapper中的方法和DAO介面方法是怎麼繫結到一起的,其內部是怎麼實現的。

7)其他遇到問題:

介紹下棧和佇列。

IO和NIO的區別。

介面和抽象類的區別。

int和Integer的自動拆箱/裝箱相關問題。

常量池相關問題。

==和equals的區別。

過載和重寫的區別。

String和StringBuilder、StringBuffer的區別。

靜態變數、例項變數、區域性變數執行緒安全嗎,為什麼。

try、catch、finally都有return語句時執行哪個。

介紹下B樹、二叉樹。

ajax的4個字母分別是什麼意思。

xml全稱是什麼。

分散式鎖的實現。

分散式session儲存解決方案。

常用的linux命令。

一些經驗:

1.先投一些普通公司,等面出了心得再去投理想的公司。

2.不熟悉的技術不要主動提。

3.對於那種實習期6個月還打8折的公司,除非你沒有其他選擇了,否則不要去。

4.小公司喜歡在薪水上壓你,開的時候適當提高。

5.不要去參加招聘會,純粹是浪費時間。

6.把面試當作一次技術的交流,不要太在意是否能被錄取。

7.公司一般面完就決定是否錄取了,讓你回去等訊息這種情況一般沒戲,無論你自己覺得面的有多好。

8.儘量少通過電話面試,效果不好。

9.在面試的日子裡,要保持每天學習,無論是學習新東西還是複習舊東西。

10.拿到offer了,問問自己這個公司讓自己100%滿意了嗎,如果不是,請繼續努力找更好的。

11.通過面試官可以大概判斷這家公司的情況。

12.拉勾投的簡歷很多會被篩掉,但是拉勾還是面試機會的最主要來源。

13.理想的公司可以多投幾次,我有好幾次都是第一次投被篩掉,多投幾次就過的經驗。

14.問到自己有深入研究過的知識,抓住機會好好表現,不要輕易放過。