1. 程式人生 > >經過這麼多次java面試,我明白了這麼多道理

經過這麼多次java面試,我明白了這麼多道理

最近3個月一口氣面了十幾家公司的Java開發崗,大大小小的面試筆試加起來快20場,收穫很多。本人畢業快2年了,畢業時在學校所在的2線省會城市找了家開發公司做java的開發,前前後後做了1年半,感覺公司對技術沒有啥追求,做的專案翻來覆去就是SSM那些東西,左思右想辭了職,當了北漂,把自己包裝成2年工作經驗開始了苦逼的求職之路。

之所以面了這麼多公司,是因為剛開始面試時發現自己掌握的東西與這邊流行的技術有些代差,所以一邊面試一邊總結,3個月也學到了很多,至少將一些基礎的東西加深了不少,所以後面有了底氣去面試一些大公司。感覺這邊面試時問的東西明顯和原來所在的城市不一樣,所以總結了一下給有需要的朋友參考吧。

一、筆試常見的問題?

  • 寫SQL很常考察group by、內連線和外連線。

  • 手寫程式碼:手寫程式碼一般考單例、排序、執行緒、消費者生產者。我建議排序演算法除了氣泡排序,最好還能手寫一種其他的排序程式碼。試想:如果一般面試者都寫的氣泡排序,而你寫的是快速排序/堆排序,肯定能給面試官留下不錯的印象。

二、面試流程

  • 讓你自我介紹

  • 問Java基礎知識

  • 問專案

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

  • 你有什麼想問面試官的

三、面試常問的知識點

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(無鎖技術)。

  • volatile關鍵字的作用和原理。

  • 什麼是ThreadLocal。

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

  • ThreadPoolExecutor的內部工作原理。

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

3)JVM相關問題

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

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

  • 類載入的過程。

  • 雙親委派模型。

  • 有哪些類載入器。

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

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

  • 先問你熟悉哪些設計模式

  • 然後再具體問你某個設計模式具體實現和相關擴充套件問題

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

  • 給題目讓你手寫SQL。

  • 有沒有SQL優化經驗。

  • Mysql索引的資料結構。

  • SQL怎麼進行優化。

  • SQL關鍵字的執行順序。

  • 有哪幾種索引。

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

  • Explain包含哪些列。

6)框架相關問題

  • Hibernate和Mybatis的區別

  • Spring MVC和Struts2的區別

  • Spring用了哪些設計模式

  • Spring中AOP主要用來做什麼

  • Spring注入bean的方式

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

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

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

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

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

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

7)其他遇到問題

  • 介紹下棧和佇列

  • IO和NIO的區別

  • 介面和抽象類的區別

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

  • 常量池相關問題

  • ==和equals的區別

  • 過載和重寫的區別

  • String和StringBuilder、StringBuffer的區別

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

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

  • 介紹下B樹、二叉樹

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

  • xml全稱是什麼

  • 分散式鎖的實現

  • 分散式session儲存解決方案

  • 常用的linux命令

四、一些經驗

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

  • 不熟悉的技術不要主動提

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

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

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

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

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

  • 儘量少通過電話面試,效果不好

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

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

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

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

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

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

                                                                                                                                                                                                              如果你想成為一名優秀的java架構師,想學習Java高階技術基礎、框架技術的原始碼級分析、linux、SpringBoot、SpringCloud、阿里微服務框架Dubbo、Docker構建微服務或者在工作中遇到瓶頸,想跳槽加薪,面試不過, 碰到難題等等一系列問題,可以加我的架構師群:862039307,這裡有專業的人為你排憂解難,有最新的學習資源免費為你共享。