【Java高級開發工程師】近一個月的面試總結 - 皮斯特勞沃 - 博客頻道 - CSDN.NET http://blog.csdn.net/pistolove/article/details/73610588
時隔兩年,再一次的面臨離職找工作,這一次換工作有些許的不舍,也有些許的無奈。個人所在的技術團隊不錯,兩年時間成長了很多,也很不舍這個團隊。但是,由于公司的某些原因和對于自身未來發展的綜合考慮,又不得不得離去,去尋找更合適的地方成長和發展。相比于兩年前,現在找工作沒有那么的著急,也沒有那么的迫切,也沒有特別想去的公司,反正去大廠互聯網公司基本都是加班加點的。也許,這是工作三年的我即將面臨的一個坎吧。對于未來的選擇和考慮,對于未來的恐懼吧。也許我是杞人憂天,也許是上天注定我將去某一家公司,不管怎樣,堅持做最好的自己!不停進步,不停成長!
下面將最近面試遇到的一些題目進行匯總如下,希望對現在正在找工作的同學和現在面臨畢業找工作的同學有所幫助。
1、常用設計模式
單例模式:懶漢式、餓漢式、雙重校驗鎖、靜態加載,內部類加載、枚舉類加載。保證一個類僅有一個實例,并提供一個訪問它的全局訪問點。
代理模式:動態代理和靜態代理,什么時候使用動態代理。
適配器模式:將一個類的接口轉換成客戶希望的另外一個接口。適配器模式使得原本由于接口不兼容而不能一起工作的那些類可以一起工作。
裝飾者模式:動態給類加功能。
觀察者模式:有時被稱作發布/訂閱模式,觀察者模式定義了一種一對多的依賴關系,讓多個觀察者對象同時監聽某一個主題對象。這個主題對象在狀態發生變化時,會通知所有觀察者對象,使它們能夠自動更新自己。
策略模式:定義一系列的算法,把它們一個個封裝起來, 并且使它們可相互替換。
外觀模式:為子系統中的一組接口提供一個一致的界面,外觀模式定義了一個高層接口,這個接口使得這一子系統更加容易使用。
命令模式:將一個請求封裝成一個對象,從而使您可以用不同的請求對客戶進行參數化。
創建者模式:將一個復雜的構建與其表示相分離,使得同樣的構建過程可以創建不同的表示。
抽象工廠模式:提供一個創建一系列相關或相互依賴對象的接口,而無需指定它們具體的類。
2、基礎知識
Java基本類型哪些,所占字節和范圍
Set、List、Map的區別和聯系
什么時候使用Hashmap
什么時候使用Linkedhashmap、Concurrenthashmap、Weakhashmap
哪些集合類是線程安全的
為什么Set、List、map不實現Cloneable和Serializable接口
Concurrenthashmap的實現,1.7和1.8的實現
Arrays.sort的實現
什么時候使用CopyOnArrayList
volatile的使用
synchronied的使用
reentrantlock的實現和Synchronied的區別
CAS的實現原理以及問題
AQS的實現原理
接口和抽象類的區別,什么時候使用
類加載機制的步驟,每一步做了什么,static和final修改的成員變量的加載時機
雙親委派模型
反射機制:反射動態擦除泛型、反射動態調用方法等
動態綁定:父類引用指向子類對象
JVM內存管理機制:有哪些區域,每個區域做了什么
JVM垃圾回收機制:垃圾回收算法 垃圾回收器 垃圾回收策略
jvm參數的設置和jvm調優
什么情況產生年輕代內存溢出、什么情況產生年老代內存溢出
內部類:靜態內部類和匿名內部類的使用和區別
Redis和memcached:什么時候選擇redis,什么時候選擇memcached,內存模型和存儲策略是什么樣的
mysql的優化策略有哪些
mysql索引的實現 B+樹的實現原理
什么情況索引不會命中,會造成全表掃描
java中bio nio aio的區別和聯系
為什么bio是阻塞的 nio是非阻塞的 nio是模型是什么樣的
Reactor模型和Proactor模型
http請求報文結構和內容
http三次握手和四次揮手
rpc相關:如何設計一個rpc框架,從io模型 傳輸協議 序列化方式綜合考慮
Linux命令 統計,排序,前幾問題等
StringBuff 和StringBuilder的實現,底層實現是通過byte數據,外加數組的拷貝來實現的
cas操作的使用
內存緩存和數據庫的一致性同步實現
微服務的優缺點
線程池的參數問題
ip問題 如何判斷ip是否在多個ip段中
判斷數組兩個中任意兩個數之和是否為給定的值
樂觀鎖和悲觀鎖的實現
synchronized實現原理
你在項目中遇到的困難和怎么解決的
你在項目中完成的比較出色的亮點
消息隊列廣播模式和發布/訂閱模式的區別
生產者消費者代碼實現
死鎖代碼實現
線程池:參數,每個參數的作用,幾種不同線程池的比較,阻塞隊列的使用,拒絕策略
Future和ListenableFuture 異步回調相關
算法相關:判斷能否從數組中找出兩個數字和為給定值,隨機生成1~10000不重復并放入數組,求數組的子數組的最大和,二分查找算法的實現及其時間復雜計算
3、其它
算法:常用排序算法,二分查找,鏈表相關,數組相關,字符串相關,樹相關等
常見序列化協議及其優缺點
memcached內存原理,為什么是基于塊的存儲
搭建一個rpc需要準備什么
如果線上服務器頻繁地出現full gc ,如何去排查
如果某一時刻線上機器突然量變得很大,服務扛不住了,怎么解決
LUR算法的實現
LinkedHashMap實現LRU
定義棧的數據結構,請在該類型中實現一個能夠找到棧最小元素的min函數
海量數據處理的解決思路
reactor模型的演變
阻塞、非阻塞、同步、異步區別
Collection的子接口
jvm調優相關
zookeeper相關,節點類型,如何實現服務發現和服務注冊
nginx負載均衡相關,讓你去實現負載均衡,該怎么實現
linux命令,awk、cat、sort、cut、grep、uniq、wc、top等
壓力測試相關,怎么分析,單接口壓測和多情況下的壓測
你覺得你的有點是什么,你的缺點是什么
spring mvc的實現原理
netty底層實現,IO模型,ChannelPipeline的實現和原理
緩存的設計和優化
緩存和數據庫一致性同步解決方案
你所在項目的系統架構,談談整體實現
消息隊列的使用場景
ActiveMQ、RabbitMQ、Kafka的區別
以上內容為近期的面試總結。后續如有新的內容,會持續更新。
如果感興趣可以參看兩年前我寫的一篇面試總結:[http://blog.csdn.net/pistolove/article/details/46753275](http://blog.csdn.net/pistolove/article/details/46753275)