面試整體事項
- 簡歷要準備好,聯系方式一定要正確清晰醒目,項目經歷按照時間倒序闡述,注意描述自己在項目中承擔的職責,簡歷的模板盡量選擇簡潔的,畢竟程序員大部分還是喜歡簡單明了的。
- 推薦boss直聘,我覺得很好用(不是廣告)。
- 一般的整體面試流程都是電面->現場面->HR面->等著。
- 不要覺得HR說讓你回去等消息就是GG了,他們也要跟你之前的面試官討論,再向領導匯報,如果說不急可能還要和其他候選人比較,所以HR讓你回去等消息絕對不是說明你完蛋了。
- 面試前準備好自我介紹,1分鐘左右就可以,可以寫在紙上,電面可以照著念,等你到了現場面了基本也都快背下來你的自我介紹了。
- 準備好扎實的基礎,這是一切的根源,沒實力怎么都沒用的。
- 面試中你可以把你的面試官往你會的知識上引導(我遇到過你會什么他不問什么的)。
- 遇到了設計類題目不要著急,面試官不是為了讓你幾分鐘設計一個高并發高可用設計模式完美的架構,只是想看看你的思路,看看你應變的能力,然后給你些提示看看你能否迅速的調整。
- offer都會有的,不要著急,把面試當成一個交流的過程。
需要準備的知識
以下為在近期面試中比較有印象的問題,也就不分公司了,因為沒什么意義,大致分類記錄一下,目前只想起這么多,不過一定要知道這些問題只是冰山一角,就算都會了也不能怎么樣,最最重要的,還是堅實的基礎,清醒的頭腦。
說到這里順便給大家推薦一個Java架構方面的交流學習群:650385180,里面會分享一些資深架構師錄制的視頻錄像:有Spring,MyBatis,Netty源碼分析,高并發、高性能、分布式、微服務架構的原理,JVM性能優化這些成為架構師必備的知識體系。還能領取免費的學習資源和前輩的面試經驗和面試題,相信對于已經工作和遇到技術瓶頸的碼友,在這個群里會有你需要的內容。
Java基礎
- HashMap的源碼,實現原理,JDK8中對HashMap做了怎樣的優化。
- HaspMap擴容是怎樣擴容的,為什么都是2的N次冪的大小。
- HashMap,HashTable,ConcurrentHashMap的區別。
- 極高并發下HashTable和ConcurrentHashMap哪個性能更好,為什么,如何實現的。
- HashMap在高并發下如果沒有處理線程安全會有怎樣的安全隱患,具體表現是什么。
- java中四種修飾符的限制范圍。
- Object類中的方法。
- 接口和抽象類的區別,注意JDK8的接口可以有實現。
- 動態代理的兩種方式,以及區別。
- Java序列化的方式。
- 傳值和傳引用的區別,Java是怎么樣的,有沒有傳值引用。
- 一個ArrayList在循環過程中刪除,會不會出問題,為什么。
- @transactional注解在什么情況下會失效,為什么。
數據結構和算法
- B+樹
- 快速排序,堆排序,插入排序(其實八大排序算法都應該了解
- 一致性Hash算法,一致性Hash算法的應用
JVM
- JVM的內存結構。
- JVM方法棧的工作過程,方法棧和本地方法棧有什么區別。
- JVM的棧中引用如何和堆中的對象產生關聯。
- 可以了解一下逃逸分析技術。
- GC的常見算法,CMS以及G1的垃圾回收過程,CMS的各個階段哪兩個是Stop the world的,CMS會不會產生碎片,G1的優勢。
- 標記清除和標記整理算法的理解以及優缺點。
- eden survivor區的比例,為什么是這個比例,eden survivor的工作過程。
- JVM如何判斷一個對象是否該被GC,可以視為root的都有哪幾種類型。
- 強軟弱虛引用的區別以及GC對他們執行怎樣的操作。
- Java是否可以GC直接內存。
- Java類加載的過程。
- 雙親委派模型的過程以及優勢。
- 常用的JVM調優參數。
- dump文件的分析。
- Java有沒有主動觸發GC的方式(沒有)。
多線程
- Java實現多線程有哪幾種方式。
- Callable和Future的了解。
- 線程池的參數有哪些,在線程池創建一個線程的過程。
- volitile關鍵字的作用,原理。
- synchronized關鍵字的用法,優缺點。
- Lock接口有哪些實現類,使用場景是什么。
- 可重入鎖的用處及實現原理,寫時復制的過程,讀寫鎖,分段鎖(ConcurrentHashMap中的segment)。
- 悲觀鎖,樂觀鎖,優缺點,CAS有什么缺陷,該如何解決。
- ABC三個線程如何保證順序執行。
- 線程的狀態都有哪些。
- sleep和wait的區別。
- notify和notifyall的區別。
- ThreadLocal的了解,實現原理。
數據庫相關
- 常見的數據庫優化手段
- 索引的優缺點,什么字段上建立索引
- 數據庫連接池。
- durid的常用配置。
計算機網絡
- TCP,UDP區別。
- 三次握手,四次揮手,為什么要四次揮手。
- 長連接和短連接。
- 連接池適合長連接還是短連接。
設計模式
- 觀察者模式
- 代理模式
- 單例模式,有五種寫法,可以參考文章單例模式的五種實現方式
- 可以考Spring中使用了哪些設計模式
分布式相關
- 分布式事務的控制。
- 分布式鎖如何設計。
- 分布式session如何設計。
- dubbo的組件有哪些,各有什么作用。
- zookeeper的負載均衡算法有哪些。
- dubbo是如何利用接口就可以通信的。
緩存相關
- redis和memcached的區別。
- redis支持哪些數據結構。
- redis是單線程的么,所有的工作都是單線程么。
- redis如何存儲一個String的。
- redis的部署方式,主從,集群。
- redis的哨兵模式,一個key值如何在redis集群中找到存儲在哪里。
- redis持久化策略。
框架相關
- SpringMVC的Controller是如何將參數和前端傳來的數據一一對應的。
- Mybatis如何找到指定的Mapper的,如何完成查詢的。
- Quartz是如何完成定時任務的。
- 自定義注解的實現。
- Spring使用了哪些設計模式。
- Spring的IOC有什么優勢。
- Spring如何維護它擁有的bean。
一些較新的東西
- JDK8的新特性,流的概念及優勢,為什么有這種優勢。
- 區塊鏈了解
- 如何設計雙11交易總額面板,要做到高并發高可用。
一些小建議
- 可以去leetcode上刷題換換思路。
- 八大排序算法一定要手敲一遍(快排,堆排尤其重要)。
- 了解一些新興的技術。
- 面試之后面試官都會問你有沒有什么問題,千萬不要沒問題,也別傻乎乎的問一些敏感問題。
- 了解你要面試的公司的產品及競爭產品。
結尾
這不止是一份面試清單,更是一種”被期望的責任“,因為有無數個待面試者,希望從這篇文章中,找出通往期望公司的”鑰匙“,所以上面每道選題都是結合我自身的經驗于千萬個面試題中經過艱辛的兩周,一個題一個題篩選出來再次對好答案和格式做出來的,面試的答案也是再三斟酌,深怕誤人子弟是小,影響他人仕途才是大過,也希望您能把這篇文章分享給更多的朋友,讓他幫助更多的人,幫助他人,快樂自己,最后,感謝您的閱讀。
資料領取方式:戳這里免費獲取
式做出來的,面試的答案也是再三斟酌,深怕誤人子弟是小,影響他人仕途才是大過,也希望您能把這篇文章分享給更多的朋友,讓他幫助更多的人,幫助他人,快樂自己,最后,感謝您的閱讀。
資料領取方式:戳這里免費獲取
由于細節內容實在太多啦,在這里我花了兩周的時間把這些答案整理成一份文檔了,在這里只把部分知識點截圖出來粗略的介紹,每個小節點里面都有更細化的內容!