【面試題】java面試題整理(有空再貼答案)

面試題+基礎java

各家的面試題其實都大同小異, 掌握基礎和原理,走到哪都不怕。mysql

基礎git

leetcode上有一些總結,star數很是高了。貼上urlgithub

https://github.com/CyC2018/CS-Notes面試

https://github.com/Snailclimb/JavaGuideredis

這兩個大概只是個提綱,若是是高級職位,深度可能不夠,具體的還得看書。算法

另外強烈推薦 http://www.iocoder.cn/ 芋道,個人面試題不少都是從上面找的。平時對提升也有幫助。spring

 

reidssql

redis的話,我推薦《Redis深度歷險:核心原理和應用實踐》 和《redis設計與實現》數據庫

 

知道redis嗎,redis是如何作持久化的
redis數據庫都是存放在內存中的,若是沒票配置持久化,服務器重啓以後數據所有丟失了,因而須要開啓reidis持久化功能,將數據保存在磁盤上,redis重啓後能夠從磁盤中恢復數據。分爲2種方式,1 RDB持久化,定時經過一部方式保存到磁盤上,也成爲半持久化。實際操做過程是fork一個子進程,先將數據集寫入臨時文件,寫入成功後,再替換以前的文件,用二進制壓縮存儲。;2 AOF Appen only file就是講操做日誌追加的方式寫入文件,以日誌的形式記錄服務器所處理的每個寫、刪除操做,查詢操做不會記錄,以文本的方式記錄,能夠打開文件看到詳細的操做記錄。。

介紹下redis的特色,redis的基本數據結構,數據持久化方式,主從之間如何同步;
5種數據類型就是string(字符串)、list(列表)、set(集合)、hash(散列)、zset(有序集合)
從服務器會向主服務器發出SYNC指令,當主服務器接到此命令後,就會調用BGSAVE指令來建立一個子進程專門進行數據持久化工做,也就是將主服務器的數據寫入RDB文件中。在數據持久化期間,主服務器將執行的寫指令都緩存在內存中。
在BGSAVE指令執行完成後,主服務器會將持久化好的RDB文件發送給從服務器,從服務器接到此文件後會將其存儲到磁盤上,而後再將其讀取到內存中。這個動做完成後,主服務器會將這段時間緩存的寫指令再以redis協議的格式發送給從服務器。

致使redis性能瓶頸的操做
redis有哪些接口
Redis的實現模式;
redis爲何這麼快?

 

java-core

基礎的話主要看源碼吧, collection和juc裏面的。 而後就是《java編程思想》和《java核心技術 卷1.2》(有不少過期的章節直接跳過便可)

一、List 和 Set 的區別
二、HashSet 是如何保證不重複的
三、HashMap 是線程安全的嗎,爲何不是線程安全的(最好畫圖說明多線程環境下不安全)?
四、HashMap 的擴容過程
五、HashMap 1.7 與 1.8 的 區別,說明 1.8 作了哪些優化,如何優化的?
六、final finally finalize
七、強引用 、軟引用、 弱引用、虛引用
八、Java反射
九、Arrays.sort 實現原理和 Collection 實現原理
十、LinkedHashMap的應用十一、cloneable接口實現原理
十二、異常分類以及處理機制
1三、wait和sleep的區別
1四、數組在內存中如何分配

 

java-併發

我推薦《java併發編程藝術》 我以爲比 《java併發編程實戰》更好理解一點。

 

一、synchronized 的實現原理以及鎖優化?
二、volatile 的實現原理?
三、Java 的信號燈?
四、synchronized 在靜態方法和普通方法的區別?
五、怎麼實現全部線程在等待某個事件的發生纔會去執行?
六、CAS?CAS 有什麼缺陷,如何解決?
七、synchronized 和 lock 有什麼區別?
八、Hashtable 是怎麼加鎖的 ?
九、HashMap 的併發問題?
十、ConcurrenHashMap 介紹?1.8 中爲何要用紅黑樹?
十一、AQS
十二、如何檢測死鎖?怎麼預防死鎖?
1三、Java 內存模型?
1四、如何保證多線程下 i++ 結果正確?
1五、線程池的種類,區別和使用場景?
1六、分析線程池的實現原理和線程的調度過程?
1七、線程池如何調優,最大數目如何確認?
1八、ThreadLocal原理,用的時候須要注意什麼?
1九、CountDownLatch 和 CyclicBarrier 的用法,以及相互之間的差異?
20、LockSupport工具
2一、Condition接口及其實現原理
2二、Fork/Join框架的理解
2三、分段鎖的原理,鎖力度減少的思考
2四、八種阻塞隊列以及各個阻塞隊列的特性
單機上一個線程池正在處理服務,若是突然斷電了怎麼辦(正在處理和阻塞隊列裏的請求怎麼處理)?
爲何要使用線程池?
線程池有什麼做用?
說說幾種常見的線程池及使用場景。
線程池都有哪幾種工做隊列?
怎麼理解無界隊列和有界隊列?
線程池中的幾種重要的參數及流程說明。

JVM

JVM應該就一本《深刻理解JVM虛擬機》 就夠了, 可是我買的版本比較老,1.8之後內存區域作了一些改動,本身的得知道。

 

一、詳細jvm內存模型
二、講講什麼狀況下回出現內存溢出,內存泄漏?
三、說說Java線程棧
四、JVM 年輕代到年老代的晉升過程的判斷條件是什麼呢?
五、JVM 出現 fullGC 很頻繁,怎麼去線上排查問題?
六、類加載爲何要使用雙親委派模式,有沒有什麼場景是打破了這個模式?
七、類的實例化順序
八、JVM垃圾回收機制,什麼時候觸發MinorGC等操做
九、JVM 中一次完整的 GC 流程(從 ygc 到 fgc)是怎樣的
十、各類回收器,各自優缺點,重點CMS、G1
十一、各類回收算法
十二、OOM錯誤,stackoverflow錯誤,permgen space錯誤
說一下對jvm的理解,jvm的組成部分,各個部分的存儲內容以及常見的jvm的問題排查步驟。
對JVM熟不熟悉?簡單說說類加載過程,裏面執行的那些操做?
JVM方法區存儲內容 是否會動態擴展 是否會出現內存溢出 出現的緣由有哪些。
介紹介紹CMS。
介紹介紹G1。
爲何jdk8用metaspace數據結構用來替代perm?
簡單談談堆外內存以及你的理解和認識。
JVM的內存模型的理解,threadlocal使用場景及注意事項?
JVM老年代和新生代的比例?
jstack,jmap,jutil分別的意義?如何線上排查JVM的相關問題?
Java虛擬機中,數據類型能夠分爲哪幾類?
怎麼理解棧、堆?堆中存什麼?棧中存什麼?
爲何要把堆和棧區分出來呢?棧中不是也能夠存儲數據嗎?
在Java中,什麼是是棧的起始點,同是也是程序的起始點?
爲何不把基本類型放堆中呢?
Java中的參數傳遞時傳值呢?仍是傳引用?
Java中有沒有指針的概念?
Java中,棧的大小經過什麼參數來設置?
一個空Object對象的佔多大空間?
對象引用類型分爲哪幾類?
講一講垃圾回收算法。
如何解決內存碎片的問題?
如何解決同時存在的對象建立和對象回收問題?
講一講內存分代及生命週期。
什麼狀況下觸發垃圾回收?
如何選擇合適的垃圾收集算法?
JVM中最大堆大小有沒有限制?
堆大小經過什麼參數設置?
JVM有哪三種垃圾回收器?
吞吐量優先選擇什麼垃圾回收器?響應時間優先呢?
如何進行JVM調優?有哪些方法?
如何理解內存泄漏問題?有哪些狀況會致使內存泄露?如何解決?

 

Spring

spring的話,感受如今問的少了, spring cloud會問的比較多, 應該算在微服務/分佈式的知識點裏面。

一、BeanFactory 和 FactoryBean?
二、Spring IOC 的理解,其初始化過程?
三、BeanFactory 和 ApplicationContext?
四、Spring Bean 的生命週期,如何被管理的?
五、Spring Bean 的加載過程是怎樣的?
六、若是要你實現Spring AOP,請問怎麼實現?
七、若是要你實現Spring IOC,你會注意哪些問題?
八、Spring 是如何管理事務的,事務管理機制?
九、Spring 的不一樣事務傳播行爲有哪些,幹什麼用的?
十、Spring 中用到了那些設計模式?
十一、Spring MVC 的工做原理?
十二、Spring 循環注入的原理?
1三、Spring AOP的理解,各個術語,他們是怎麼相互工做的?
1四、Spring 如何保證 Controller 併發的安全?

Netty

我不會

 

分佈式相關

主要考察對cap和base的理解吧, 我沒有系統學習過,主要靠平時的積累。

一、Dubbo的底層實現原理和機制
二、描述一個服務從發佈到被消費的詳細過程
三、分佈式系統怎麼作服務治理
四、接口的冪等性的概念
五、消息中間件如何解決消息丟失問題
六、Dubbo的服務請求失敗怎麼處理
七、重連機制會不會形成錯誤
八、對分佈式事務的理解
九、如何實現負載均衡,有哪些算法能夠實現?
十、Zookeeper的用途,選舉的原理是什麼?
十一、數據的垂直拆分水平拆分。
十二、zookeeper原理和適用場景
1三、zookeeper watch機制
1四、redis/zk節點宕機如何處理
1五、分佈式集羣下如何作到惟一序列號
1六、如何作一個分佈式鎖
1七、用過哪些MQ,怎麼用的,和其餘mq比較有什麼優缺點,MQ的鏈接是線程安全的嗎
1八、MQ系統的數據如何保證不丟失
1九、列舉出你能想到的數據庫分庫分表策略;分庫分表後,如何解決全表查詢的問題
20、zookeeper的選舉策略
2一、全局ID

 

mysql:

《Mysql技術內幕-innodb存儲引擎》就夠了。

mysql索引的實現原理Innodb中,什麼是彙集索引,非彙集索引,他們是什麼關係插入一條記錄時,彙集索引和非彙集索引是如何修改的創建索引的標準是什麼查看 SQL 是否是使用了索引?(有什麼工具)SQL 索引的順序,字段的順序MySQL 分頁查詢語句,mysql分頁有什麼優化

相關文章
相關標籤/搜索