美團offer已拿,我心飛揚。分享我總結的大廠高階工程師面試126題彙總:並行+JVM+框架+分散式+資料庫

2020-09-28 09:09:51

前言

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

今天給大家分享下我整理的BATJava架構面試專題及答案,其中大部分都是大企業面試常問的面試題,可以對照這查漏補缺,當然了,這裡所列的肯定不可能覆蓋全部方式,不過也希望能對即將找工作的朋友起到一些幫助!

面試題以及分類整理如下:

Java基礎:

  • 介面與抽象類的區別?
  • Java中的異常有哪幾類?分別怎麼使用?
  • 常用的集合類有哪些?比如List如何排序?
  • ArrayList和LinkedList內部的實現大致是怎樣的?他們之間的區別和優缺點?
  • 記憶體溢位是怎麼回事?請舉一個例子?
  • ==和equals的區別?
  • hashCode方法的作用?
  • NIO是什麼?適用於何種場景?
  • HashMap實現原理,如何保證HashMap的執行緒安全?
  • JVM記憶體結構,為什麼需要GC?
  • NIO模型,select/epoll的區別,多路複用的原理
  • Java中一個字元佔多少個位元組,擴充套件再問int, long, double佔多少位元組
  • 建立一個類的範例都有哪些辦法?
  • final/finally/finalize的區別?
  • Session/Cookie的區別?
  • String/StringBuffer/StringBuilder的區別,擴充套件再問他們的實現?
  • Servlet的生命週期?
  • 如何用Java分配一段連續的1G的記憶體空間?需要注意些什麼?
  • Java有自己的記憶體回收機制,但為什麼還存在記憶體洩露的問題呢?
  • 什麼是java序列化,如何實現java序列化?(寫一個範例)?
  • String s = new String("abc");建立了幾個String Object?

多執行緒/並行:

  • 如何建立執行緒?如何保證執行緒安全?
  • 如何實現一個執行緒安全的資料結構
  • 如何避免死鎖
  • Volatile關鍵字的作用?
  • HashMap在多執行緒環境下使用需要注意什麼?為什麼?
  • Java程式中啟動一個執行緒是用run還是start?
  • 什麼是守護執行緒?有什麼用?
  • 什麼是死鎖?如何避免
  • 執行緒和程序的差別是什麼?
  • Java裡面的Threadlocal是怎樣實現的?
  • ConcurrentHashMap的實現原理是?
  • sleep和wait區別
  • notify和notifyAll區別
  • volatile關鍵字的作
  • ThreadLocal的作用與實現
  • 兩個執行緒如何序列執行
  • 上下文切換是什麼含義
  • 可以執行時kill掉一個執行緒嗎?
  • 什麼是條件鎖、讀寫鎖、自旋鎖、可重入鎖?
  • 執行緒池ThreadPoolExecutor的實現原理?

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系統的資料如何保證不丟失?
  • 列舉出能想到的資料庫分庫分表策略?

由於面試題題目及答案的內容太多,不能全部展示出來。

我這裡已經全部整理成面試專題檔案還有一份大廠面試場景pdf,有想獲取到參考的朋友:點贊+關注後,私信回覆【面試】即可(一定要記得關注我,不然沒辦法回覆陌生人私信)。希望大家都能夠拿到一個心怡的offer。

大廠面試場景檔案總結