BAT最新Java面試題彙總:併發程式設計+JVM+Spring+分散式+快取等!

JAVA架構發表於2019-06-03

前言

 


作為一個開發人員,你是否面上了自己理想的公司,薪資達到心中理想的高度?


面試:如果不準備充分的面試,完全是浪費時間,更是對自己的不負責。


今天給大家分享下我整理的Java架構面試專題及答案,其中大部分都是大企業面試常問的面試題,可以對照這查漏補缺,當然了,這裡所列的肯定不可能覆蓋全部方式,不過也希望能對即將找工作的朋友起到一些幫助!在這由於文字很多,我總結了java面試所涉及到的常問範圍及架構面試專題和答案和架構影片資料免費分享給大家,文末有領取!


面試題如下(答案這裡獲取):


 


併發程式設計:

 


什麼是多執行緒併發和並行?


什麼是執行緒安全問題?


什麼是共享變數的記憶體可見性問題?


什麼是Java中原子性操作?


什麼是Java中的CAS操作,AtomicLong實現原理?


什麼是Java指令重排序?


Java中Synchronized關鍵字的記憶體語義是什麼?


Java中Volatile關鍵字的記憶體語義是什麼?


什麼是偽共享,為何會出現,以及如何避免?


什麼是可重入鎖、樂觀鎖、悲觀鎖、公平鎖、非公平鎖、獨佔鎖、共享鎖?


講講ThreadLocal 的實現原理?


ThreadLocal 作為變數的執行緒隔離方式,其內部是如何做的?


說說InheritableThreadLocal 的實現原理?


InheritableThreadLocal 是如何彌補 ThreadLocal 不支援繼承的特性?


CyclicBarrier內部的實現與 CountDownLatch 有何不同?


隨機數生成器 Random 類如何使用 CAS 演算法保證多執行緒下新種子的唯一性?


ThreadLocalRandom 是如何利用 ThreadLocal 的原理來解決 Random 的侷限性?


Spring 框架中如何使用 ThreadLocal 實現 request scope 作用域 Bean?


併發包中鎖的實現底層(對AQS的理解)?


講講獨佔鎖 ReentrantLock 原理?


談談讀寫鎖 ReentrantReadWriteLock 原理?


StampedLock 鎖原理的理解?


談下對基於連結串列的非阻塞無界佇列 ConcurrentLinkedQueue 原理的理解?


ConcurrentLinkedQueue 內部是如何使用 CAS 非阻塞演算法來保證多執行緒下入隊出隊操作的執行緒安全?


基於連結串列的阻塞佇列 LinkedBlockingQueue 原理。


阻塞佇列LinkedBlockingQueue 內部是如何使用兩個獨佔鎖 ReentrantLock 以及對應的條件變數保證多執行緒先入隊出隊操作的執行緒安全?


分析下JUC 中倒數計數器 CountDownLatch 的使用與原理?


CountDownLatch 與執行緒的 Join 方法區別是什麼?


講講對JUC 中迴環屏障 CyclicBarrier 的使用?


CyclicBarrier內部的實現與 CountDownLatch 有何不同?


Semaphore 的內部實現是怎樣的?


併發元件CopyOnWriteArrayList 是如何透過寫時複製實現併發安全的 List?


 


JVM

 


Java 記憶體分配?


Java 堆的結構是什麼樣子的?


什麼是堆中的永久代(Perm Gen space)?


說說各個區域的作用?


Java 中會存在記憶體洩漏嗎,簡述一下?


Java 類載入過程?


描述一下 JVM 載入 Class 檔案的原理機制?


什麼是類載入器?


類載入器有哪些?


什麼是tomcat類載入機制?


類載入器雙親委派模型機制?


什麼是GC? 為什麼要有 GC?


簡述一下Java 垃圾回收機制?


如何判斷一個物件是否存活?


垃圾回收的優點和原理,並考慮 2 種回收機制?


垃圾回收器的基本原理是什麼?


垃圾回收器可以馬上回收記憶體嗎?有什麼辦法主動通知虛擬機器進行垃圾回收?


深複製和淺複製?


System.gc() 和 Runtime.gc() 會做些什麼?


什麼是分散式垃圾回收(DGC)?它是如何工作的?


序列(serial)收集器和吞吐量(throughput)收集器的區別是什麼?


在 Java 中,物件什麼時候可以被垃圾回收?


簡述Minor GC 和 Major GC?


Java 中垃圾收集的方法有哪些?


講講你理解的效能評價及測試指標?


常用的效能最佳化方式有哪些?


說說分散式快取和一致性雜湊?


同步與非同步?阻塞與非阻塞?


什麼是GC調優?


常見非同步的手段有哪些?


 


Spring

為什麼需要代理模式?


講講靜態代理模式的優點及其瓶頸?


對Java 介面代理模式的實現原理的理解?


如何使用 Java 反射實現動態代理?


Java 介面代理模式的指定增強?


談談對Cglib 類增強動態代理的實現?


怎麼理解面向切面程式設計的切面?


講解OOP與AOP的簡單對比?


講解JDK 動態代理和 CGLIB 代理原理以及區別?


講解Spring 框架中基於 Schema 的 AOP 實現原理?


講解Spring 框架中如何基於 AOP 實現的事務管理?


談談對控制反轉的設計思想的理解?


怎麼理解 Spring IOC 容器?


Spring IOC 怎麼管理 Bean 之間的依賴關係,怎麼避免迴圈依賴?


對Spring IOC 容器的依賴注入的理解?


說說對Spring IOC 的單例模式和高階特性?


BeanFactory 和 FactoryBean 有什麼區別?


BeanFactory 和 ApplicationContext 又有什麼不同?


Spring 在 Bean 建立過程中是如何解決迴圈依賴的?


談談Spring Bean 建立過程中的設計模式?


 


資料庫

MySQL 有哪些儲存引擎啊?都有什麼區別?


Float、Decimal 儲存金額的區別?


Datetime、Timestamp 儲存時間的區別?


Char、Varchar、Varbinary 儲存字元的區別?


對比一下B+樹索引和 Hash索引?


MySQL索引型別有?


如何管理 MySQL索引?


對Explain引數及重要引數的理解?


索引利弊是什麼及索引分類?


聚簇索引和非聚簇索引的區別?


B+tree 如何進行最佳化?索引遵循哪些原則?


索引與鎖有什麼關係?


還有什麼其他的索引型別,各自索引有哪些優缺點?


談談對Innodb事務的理解?


說說資料庫事務特點及潛在問題?


什麼是MySQL隔離級別?


有多少種事務失效的場景,如何解決?


一致性非鎖定讀和一致性鎖定讀是什麼?


Innodb如何解決幻讀?


講講Innodb行鎖?


死鎖及監控是什麼?


自增長與鎖 ,鎖的演算法,鎖問題,鎖升級是什麼?


樂觀鎖的執行緒如何做失敗補償?


高併發場景(領紅包)如何防止死鎖,保證資料一致性?


談談MySQL的鎖併發?


查詢最佳化的基本思路是什麼?


說說MySQL讀寫分離、分庫分表?


表結構對效能有什麼影響?


淺談索引最佳化?


說說Sql最佳化的幾點原則?


MySQL表設計及規範?


說說MySQL幾種儲存引擎應用場景?


MySQL常用最佳化方式有哪些?


MySQL常用監控?


MySQL瓶頸分析?


 


快取

redis資料結構有哪些?


Redis快取穿透,快取雪崩?


如何使用Redis來實現分散式鎖?


Redis的併發競爭問題如何解決?


Redis持久化的幾種方式,優缺點是什麼,怎麼實現的?


Redis的快取失效策略?


Redis叢集,高可用,原理?


Redis快取分片?


Redis的資料淘汰策略?


redis佇列應用場景?


分散式使用場景(儲存session)?


 


網路程式設計

TCP建立連線和斷開連線的過程?


HTTP協議的互動流程,HTTP和HTTPS的差異,SSL的互動流程?


TCP的滑動視窗協議有什麼用?


HTTP協議都有哪些方法?


Socket互動的基本流程?


講講tcp協議(建連過程,慢啟動,滑動視窗,七層模型)?


webservice協議(wsdl/soap格式,與restt辦議的區別)?


說說Netty執行緒模型,什麼是零複製?


TCP三次握手、四次揮手?


DNS解析過程?


TCP如何保證資料的可靠傳輸的?


 


分散式

什麼是CAP定理?


說說CAP理論和BASE理論?


什麼是最終一致性?最終一致性實現方式?


什麼是一致性Hash?


講講分散式事務?


如何實現分散式鎖?


如何實現分散式 Session?


如何保證訊息的一致性?


負載均衡的理解?


正向代理和反向代理?


CDN實現原理?


怎麼提升系統的QPS和吞吐?


Dubbo的底層實現原理和機制?


描述一個服務從釋出到被消費的詳細過程?


分散式系統怎麼做服務治理?


訊息中介軟體如何解決訊息丟失問題?


Dubbo的服務請求失敗怎麼處理?


對分散式事務的理解?


如何實現負載均衡,有哪些演算法可以實現?


Zookeeper的用途,選舉的原理是什麼?


講講資料的垂直拆分水平拆分?


zookeeper原理和適用場景?


zookeeper watch機制?


redis/zk節點當機如何處理?


分散式叢集下如何做到唯一序列號?


用過哪些MQ,怎麼用的,和其他mq比較有什麼優缺點,MQ的連線是執行緒安全的嗎?


MQ系統的資料如何保證不丟失?


列舉出能想到的資料庫分庫分表策略?


寫在最後

針對於上面的面試題我總結出了網際網路公司java程式設計師面試涉及到的絕大部分面試題及答案做成了文件和架構影片資料免費分享給大家(包括Dubbo、Redis、Netty、zookeeper、Spring cloud、分散式、高併發等架構技術資料),這裡獲取,希望能幫助到您面試前的複習且找到一個好的工作,也節省大家在網上搜尋資料的時間來學習,也可以關注我以後會有更多幹貨分享。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69912582/viewspace-2646608/,如需轉載,請註明出處,否則將追究法律責任。

相關文章