一、前言
一場突如其來的疫情打亂了很多人的計劃,起初沒有人在意,直到這場災難和每個人息息相關。
企業停工,招聘也随之縮減,别說招聘,有些企業甚至開始了裁員;這個時候。很多人并不願意冒險離職去尋求新的工作機會,這也會導緻招聘市場上放出的崗位很少。
從二月初開始關注招聘市場,在java工程師這塊的深圳招聘數目并不多。但逆境中總有機遇,就像巴菲特所說“衆人貪婪時我恐懼,衆人恐懼時我貪婪”。
二月初開始準備,曆時近一個月,面試十餘家公司,曆經數十輪面試。最終收到6個offer,綜合對比,去了最滿意的公司。
寫這篇文章一來是這麼多次面試算是一個總結,二來正值金三銀四也給有需要找java開發崗位的朋友複習的思路。
二、我的備戰
不打無準備的仗,一旦準備跳槽,就要着手開始複習,萬事開頭難,列出合理的複習計劃又是最為重要的環節,我的整體規劃如下:
1、優化履歷,并在各大平台更新履歷
2、java基礎的複習
3、資料結構和算法複習
4、架構複習
5、高并發和分布式
6、已做項目的總結歸納
下面會就具體環境詳細講解注意的地方。
貼出一些複習時做的筆記,以及面試的題目總結,都是公司實戰面試題目(ps:筆記過多,不全貼出,需要的可以加我vx,或者背景私信我,給發壓縮包,包括面試的視訊、履歷模闆以及複習的pdf文檔)

三、優化并更新履歷
在準備複習之前,需要對履歷做一個優化,履歷可以大概分為以下七個部分:
1、個人資訊
這個必須放在第一位或者最顯眼的地方,hr篩選履歷第一眼看的是個人資訊是否符合,比如學曆資訊,工作年限等,也友善面試官聯系到你。
個人資訊應至少包含以下方面:
- 姓名
- 性别
- 年齡
- 學曆
- 籍貫
- 聯系電話
- 目前城市
- 大學
- 電子郵件
- 工作經驗
2、求職意向
工作性質、目标地點、目标職能、目标薪資
3、部落格技術網站
這塊是非必須的,但是可以作為一個加分項,很多面試官看到我這塊的時候,都有去看我的部落格,并就部落格和開源網站問一些問題,這也可以表明你平時業餘的時間有很大一部分是在技術部落格開源網站論壇上面,側面反應了你對技術的熱愛,僅是一個加分項,主要還是要看技術棧和項目經驗。
這裡我主要寫了我的
csdn部落格,
個人網站 GitHub開源項目,微信公衆号(蒼何之旅)
4、工作經曆
工作經曆按照就近的一份工作在前,按照時間倒序的原則。寫一下公司名稱,職位名稱,任職年限以及工作職責即可
5、專業技能
這部分是很重要的一部分内容,需按實填寫,因為面試官拿到你履歷問題的很大一部分來源都是根據你寫的來的,有很多人把眼下最火的技術全部都寫了,不得不說在HR履歷篩選時有更大的機會能進入面試,但是面試官一問,沒做過的确實很難能答的很好,建議按實寫。
6、項目經曆
這部分主要針對社招生,社招需要你有一定的項目經驗,而且面試官很大程度上就圍繞你寫的項目來問,是以這是最為重要的環節,其中有幾個必須項需要優化表述:
- 項目名稱
- 項目所用技術
- 開發時間/開發周期:
- 項目描述
- 責任描述
- 技術描述
一定要對自己項目很熟悉很熟悉,這裡需要花點時間好好總結一下你的開發項目,用到哪些技術,遇到哪些問題以及是怎麼解決的,有沒有進行優化等等等。
優化完了履歷在各大招聘網站可以更新自己的履歷,比如boss和拉勾網等,我主要在boss上找。接下來就可以邊挂着履歷邊進行技術面試的準備環節了。
四、面試之自我介紹準備
不得不說,我之前恐懼面試的很大一部分原因是因為我害怕去自我介紹,總覺得自己沒什麼可介紹的,一兩句話就說完了,經過女朋友的一番鼓勵以及方法支援,我不但克服了恐懼,在自我介紹時不僅自信從容還能随機應變就不同的面試官進行不同的介紹。
1、HR關心的是你這個人整體的個人素質,小夥子能不能吃苦,能不能有自己的規劃,對技術是不是熱愛這些,這個就要多展示一下你的個人優秀品質,少或者不加技術或者項目經驗在裡面。
2、技術面試官關心的是你的技術水準,很多公司技術分兩輪,分為技術初面和複面,初面是你能不能進入接下來面試的重要一環,技術水準必須到位,是以自我介紹必須多講一些項目和技術棧的東西,技術複面除了技術初面的介紹外,要讓面試官覺得你對一項技術除了會用還要有自己的了解,當然這個平時的時候一定要注意,不要停留在僅僅會用的程度,對底層代碼邏輯要很熟悉。
3、boss終極面試,有些公司會最後一輪老闆面試,自我介紹時一定要帶上對公司的一個了解,老闆希望看到積極陽光、很大意向想進這家公司并且願意和公司共同進步的人。
五、面試之技術準備
技術準備不用說,必然是重中之重。
我在面試中常被問到的問題,我做了一個總結,但是沒有列出答案,我在筆記上寫了答案,如果有需要我筆記的可以私信發你。
1、hashmap相關
- JDK8中的hashmap有哪些改動
- 為何JDK8中的hashmap要使用紅黑樹
- hashmap的擴容機制以及JDK7和JDK8的差別
- hashmap是線程安全的嘛
- 使用hashmap的注意點
2、volatile的了解
3、JDK7和8JVM的變化
4、Linux常用指令
5、zookeeper的了解
- 是什麼
- zookeeper提供了什麼
- ZAB協定
- 如何保證事務一緻性的
- zk的當機如何處理zk負載均衡和Nginx差別
- zk應用場景
6、Mysql碎銀
- 索引底層實作原理和優化
- 什麼情況下索引無法使用
7、SQL優化
結合項目談一下你是怎麼進行sql優化的
8、資料庫引擎有什麼差別
9、資料庫鎖
10、反射
11、java讀取資料庫時如何保證同一時刻隻有一個線程修改資料庫的某一條記錄
12、union和union all的差別
13、具體的sql模拟測試
14、動态代理
15、java常見的設計模式
16、HTTP協
17、TCP協定
18、map的幾個實作類以及差別
19、講一下棧
20、如何讓多個域名對應同一個IP
21、spring的AOP原理
22、java中動态代理的兩種方式
23、mysql分頁查詢500萬條資料,limit查最後一頁很慢怎麼優化
24、分布式事務
25、事務的隔離級别
26、多線程的狀态,阻塞和非阻塞的差別
27、共享鎖、互斥鎖、讀寫鎖
28、IO和NIO的差別
29、java垃圾回收機制(GC)
- JAVA記憶體
- GC主要任務
- 如何鑒别一個對象是垃圾對象并被GC處理以及用到的算法
- 垃圾回收算法
- 開發中容易造成記憶體洩露的操作
- JVM記憶體優化
30、java基本資料類型
31、方法重載和重寫的差別
32、==和equals的差別
33、stringbuffer和stringbuilder的差別
34、java常見的異常
35、mybatis中的#和$的差別以及什麼時候使用
36、mybatis索引失效怎麼辦
37、如何建立索引
38、笛卡爾積
39、Redis相關問題
- 什麼是redis有什麼用
- redis的五種資料類型
- redis持久化機制
- 緩存redis如何擴容
- redis key的過期時間和永久有效分别怎麼設定
- 過期資料怎麼處理
- redis如何做記憶體優化
- redi事務
- redis哨兵模式
- redis分布式鎖
- 緩存雪崩
- 緩存穿透
- 緩存擊穿
- 緩存預熱
- 緩存降級
- redis用到的算法
40、JVM相關
- 說一下JVM主要組成部分以及作用
- 說一下JVM運作時資料區
- 深拷貝和淺拷貝,以及具體你項目中怎麼使用
- 堆棧差別說一下
- 隊列和棧是什麼,有什麼差別
- 保證線程安全的兩種方式
- java的記憶體洩露
- 如何判斷對象是否可悲回收jvm垃圾回收算法
- 垃圾收集器
- 記憶體配置設定政策描述JVM加載class檔案原理機制
- 雙親委證模型
41、springmvc相關
- 描述springmvc工作流程
- mvc是什麼
- springmvc怎麼設定重定向和轉發
42、為什麼需要預編譯
43、動态sql常用标簽
六、offer篩選,去到心儀公司
面試本身就是一個雙向選擇的過程,手頭有一個offer不要立馬就去入職這家公司,拒絕也是一種選擇,有些公司可能會給你多加錢,這個時候就要各種對比,薪資是一方面,最重要的是個人的發展和公司的前景。