春招失利,狂刷200+面試題,最終斬獲頭條,拼多多,阿里Java崗offer~ (文檔分享)

本篇面試專題共包含:ActiveMQ、Dubbo、JVM、Kafka、Linux、memcached、MongoDB、MyBatis、MySQL、Netty、Nginx、RabbitMQ、Redis、Spring Cloud、Spring Boot、Spring MVC、Spring、SQL、Tomcat、zookeeper、併發編程、多線程、開源框架、設計模式、微服務共計25類知識點的面試真題java

1、ActiveMQ篇

  • 1.什麼是 ActiveMQ?
  • ActiveMQ 服務器宕機怎麼辦?
  • 丟消息怎麼辦?
  • 持久化消息很是慢
  • 消息的不均勻消費
  • 死信隊列
  • ActiveMQ 中的消息重發時間間隔和重發次數嗎?

2、MySQL篇

  • 一張表,裏面有 ID 自增主鍵,當 insert 了 17 條記錄以後,刪除了第 15,16,17 條記錄,再把 Mysql 重啓,再 insert 一條記錄,這條記錄的 ID 是 18 仍是 15 ?
  • Mysql 的技術特色是什麼?
  • Heap 表是什麼?
  • Mysql 服務器默認端口是什麼?
  • 如何區分 FLOAT 和 DOUBLE?
  • 區分 CHAR_LENGTH 和 LENGTH
  • 請簡潔描述 Mysql 中 InnoDB 支持的四種事務隔離級別名稱,以及逐級之間的區別
  • 在 Mysql 中 ENUM 的用法是什麼?
  • 如何定義 REGEXP?
  • CHAR 和 VARCHAR 的區別?
  • 列的字符串類型能夠是什麼?
  • 如何獲取當前的 Mysql 版本?
  • Mysql 中使用什麼存儲引擎?
  • Mysql 驅動程序是什麼?
  • TIMESTAMP 在 UPDATE CURRENT_TIMESTAMP 數據類型上作什麼?
  • 主鍵和候選鍵有什麼區別?
  • 如何使用 Unix shell 登陸 Mysql?
  • myisamchk 是用來作什麼的?
  • MYSQL 數據庫服務器性能分析的方法命令有哪些?
  • 如何作 mysql 的性能優化?
  • 如何控制 HEAP 表的最大尺寸?

3、Dubbo篇

  • Dubbo 支持哪些協議,每種協議的應用場景,優缺點?
  • Dubbo 超時時間怎樣設置?
  • Dubbo 有些哪些註冊中心?
  • Dubbo 是什麼?
  • Dubbo 的主要應用場景?
  • Dubbo 的核心功能?
  • Dubbo 的核心組件?
  • Dubbo 服務註冊與發現的流程?
  • Dubbo 的架構設計?
  • Dubbo 的服務調用流程?
  • Dubbo 中 zookeeper 作註冊中心,若是註冊中心集羣都掛掉,發佈者和訂閱者之間還能通訊麼?
  • Dubbo 服務負載均衡策略
  • Dubbo 在安全機制方面是如何解決的?
  • Dubbo 鏈接註冊中心和直連的區別
  • Dubbo 通訊協議 dubbo 協議爲何採用異步單一長鏈接
  • RMI 協議
  • Hessian 協議

4、JVM篇

  • 說一下 jvm 的主要組成部分?及其做用?
  • 說一下 jvm 運行時數據區?
  • 說一下堆棧的區別?
  • 隊列和棧是什麼?有什麼區別?
  • 什麼是雙親委派模型?
  • 說一下類加載的執行過程?
  • 怎麼判斷對象是否能夠被回收?
  • java 中都有哪些引用類型?
  • 說一下 jvm 有哪些垃圾回收算法?
  • 說一下 jvm 有哪些垃圾回收器?
  • 詳細介紹一下 CMS 垃圾回收器?
  • 新生代垃圾回收器和老生代垃圾回收器都有哪些?有什麼區別?
  • 簡述分代垃圾回收器是怎麼工做的?
  • 說一下 jvm 調優的工具?
  • 經常使用的 jvm 調優的參數都有哪些?

5、Kafka篇

  • kafka 能夠脫離 zookeeper 單獨使用嗎?爲何?
  • kafka 有幾種數據保留的策略?
  • kafka 同時設置了 7 天和 10G 清除數據,到第五天的時候消息達到了 10G,這個時候 kafka 將如何處理?
  • 什麼狀況會致使 kafka 運行變慢?
  • 使用 kafka 集羣須要注意什麼?
  • Kafka 的設計時什麼樣的呢?
  • Kafka 存儲在硬盤上的消息格式是什麼?
  • Kafka 高效文件存儲設計特色
  • kafka 的 ack 機制

6、Linux篇

  • Linux 中的用戶模式和內核模式是什麼含意?
  • 怎樣申請大塊內核內存?
  • 用戶進程間通訊主要哪幾種方式?
  • Linux 中主要有哪幾種內核鎖?
  • 經過夥伴系統申請內核內存的函數有哪些?
  • 對文件或設備的操做函數保存在那個數據結構中?
  • 建立進程的系統調用有那些?
  • 調用 schedule()進行進程切換的方式有幾種?
  • Linux 調度程序是根據進程的動態優先級仍是靜態優先級來調度進程的?
  • Linux 中有哪幾種設備?
  • 如何惟一標識一個設備?
  • Linux 中的浮點運算由應用程序實現仍是內核實現?

memcached篇

  • memcached 是怎麼工做的?
  • memcached 最大的優點是什麼?
  • memcached 和 MySQL 的 query cache 相比,有什麼優缺點?
  • memcached 和服務器的 local cache(好比 PHP 的 APC、mmap 文件等)相比,有什麼優勢?
  • memcached 的 cache 機制是怎樣的?
  • memcached 如何實現冗餘機制?
  • memcached 如何處理容錯的?
  • 如何將 memcached 中 item 批量導入導出?
  • 我須要把 memcached 中的 item 批量導出導入,怎麼辦?
  • memcached 是如何作身份驗證的?
  • memcached 的多線程是什麼?如何使用它們?
  • memcached 能接受的 key 的最大長度是多少?
  • memcached 對 item 的過時時間有什麼限制?
  • 爲何單個 item 的大小被限制在 1M byte 以內?

7、MongoDB篇

  • 你說的 NoSQL 數據庫是什麼意思?NoSQL 與 RDBMS 直接有什麼區別?爲何要使用和不使用NoSQL 數據庫?說一說 NoSQL 數據庫的幾個優勢?
  • NoSQL 數據庫有哪些類型?
  • MySQL 與 MongoDB 之間最基本的差異是什麼?
  • 你怎麼比較 MongoDB、CouchDB 及 CouchBase?
  • MongoDB 成爲最好 NoSQL 數據庫的緣由是什麼?
  • 32 位系統上有什麼細微差異?
  • journal 回放在條目(entry)不完整時(好比恰巧有一箇中途故障了)會遇到問題嗎?
  • 分析器在 MongoDB 中的做用是什麼?
  • 名字空間(namespace)是什麼?
  • 如何執行事務/加鎖?
  • 什麼是 master 或 primary?
  • 數據在何時纔會擴展到多個分片(shard)裏

8、MyBatis篇

  • mybatis 中 #{}和 ${}的區別是什麼?
  • mybatis 有幾種分頁方式?
  • RowBounds 是一次性查詢所有結果嗎?爲何?
  • mybatis 邏輯分頁和物理分頁的區別是什麼?
  • mybatis 是否支持延遲加載?延遲加載的原理是什麼?
  • 說一下 mybatis 的一級緩存和二級緩存?
  • mybatis 和 hibernate 的區別有哪些?
  • mybatis 有哪些執行器(Executor)?
  • mybatis 分頁插件的實現原理是什麼?
  • mybatis 如何編寫一個自定義插件?

9、Netty篇

  • NIO 和 AIO 的區別?
  • NIO 的組成?
  • Netty 的特色?
  • TCP 粘包/拆包的緣由及解決方法?
  • 瞭解哪幾種序列化協議?
  • 如何選擇序列化協議?
  • Netty 的零拷貝實現?
  • Netty 的高性能表如今哪些方面?
  • NIOEventLoopGroup 源碼?

10、Nginx篇

  • 請解釋一下什麼是 Nginx?
  • 請列舉 Nginx 的一些特性
  • 請列舉 Nginx 和 Apache 之間的不一樣點
  • 請解釋 Nginx 如何處理 HTTP 請求
  • 在 Nginx 中,如何使用未定義的服務器名稱來阻止處理請求?
  • 使用「反向代理服務器」的優勢是什麼?
  • 請列舉 Nginx 服務器的最佳用途
  • 請解釋 Nginx 服務器上的 Master 和 Worker 進程分別是什麼?
  • 請解釋你如何經過不一樣於 80 的端口開啓 Nginx?
  • 請解釋是否有可能將 Nginx 的錯誤替換爲 502 錯誤、503?
  • 在 Nginx 中,解釋如何在 URL 中保留雙斜線
  • 請解釋 ngx_http_upstream_module 的做用是什麼?
  • 請解釋什麼是 C10K 問題?
  • 請陳述 stub_status 和 sub_filter 指令的做用是什麼?
  • 解釋 Nginx 是否支持將請求壓縮到上游?
  • 解釋如何在 Nginx 中得到當前的時間?

11、RabbitMQ篇

  • rabbitmq 的使用場景有哪些?
  • rabbitmq 有哪些重要的角色?
  • rabbitmq 有哪些重要的組件?
  • rabbitmq 中 vhost 的做用是什麼?
  • rabbitmq 的消息是怎麼發送的?
  • rabbitmq 怎麼保證消息的穩定性?
  • rabbitmq 怎麼避免消息丟失?
  • 要保證消息持久化成功的條件有哪些?
  • rabbitmq 持久化有什麼缺點?
  • rabbitmq 有幾種廣播類型?
  • rabbitmq 怎麼實現延遲消息隊列?
  • rabbitmq 集羣有什麼用?
  • rabbitmq 節點的類型有哪些?
  • rabbitmq 每一個節點是其餘節點的完整拷貝嗎?爲何?
  • rabbitmq 集羣中惟一一個磁盤節點崩潰了會發生什麼狀況?
  • rabbitmq 對集羣節點中止順序有要求嗎?
  • rabbitmq 集羣搭建須要注意哪些問題?

12、Redis篇

  • redis 是什麼?都有哪些使用場景?
  • redis 有哪些功能?
  • redis 和 memecache 有什麼區別?
  • redis 爲何是單線程的?
  • 什麼是緩存穿透?怎麼解決?
  • redis 支持的數據類型有哪些?
  • redis 和 redisson 有哪些區別?
  • 怎麼保證緩存和數據庫數據的一致性?
  • redis 持久化有幾種方式?
  • redis 怎麼實現分佈式鎖?
  • redis 分佈式鎖有什麼缺陷?
  • redis 如何作內存優化?
  • redis 淘汰策略有哪些?
  • redis 常見的性能問題有哪些?該如何解決?

十3、Spring Cloud/Boot篇

  • 什麼是 spring boot?
  • 爲何要用 spring boot?
  • spring boot 核心配置文件是什麼?
  • spring boot 配置文件有哪幾種類型?它們有什麼區別?
  • spring boot 有哪些方式能夠實現熱部署?
  • jpa 和 hibernate 有什麼區別?
  • 什麼是 spring cloud?
  • spring cloud 斷路器的做用是什麼?
  • spring cloud 的核心組件有哪些?

十4、Spring/Spring MVC篇

  • 爲何要使用 spring?
  • 解釋一下什麼是 aop?
  • 解釋一下什麼是 ioc?
  • spring 有哪些主要模塊?
  • spring 經常使用的注入方式有哪些?
  • spring 中的 bean 是線程安全的嗎?
  • 96.spring 支持幾種 bean 的做用域?
  • spring 自動裝配 bean 有哪些方式?
  • spring 事務實現方式有哪些?
  • 說一下 spring 的事務隔離?
  • spring mvc 有哪些組件?
  • @RequestMapping 的做用是什麼?
  • @Autowired 的做用是什麼?

十5、SQL篇

  • 一張表,裏面有 ID 自增主鍵,當 insert 了 17 條記錄以後,刪除了第 15,16,17 條記錄,再把 Mysql 重啓,再 insert 一條記錄,這條記錄的 ID 是 18 仍是 15 ?
  • Mysql 的技術特色是什麼?
  • Heap 表是什麼?
  • Mysql 服務器默認端口是什麼?
  • 與 Oracle 相比,Mysql 有什麼優點?
  • 如何區分 FLOAT 和 DOUBLE?
  • 區分 CHAR_LENGTH 和 LENGTH?
  • 請簡潔描述 Mysql 中 InnoDB 支持的四種事務隔離級別名稱,以及逐級之間的區別?
  • 在 Mysql 中 ENUM 的用法是什麼
  • 如何定義 REGEXP?
  • CHAR 和 VARCHAR 的區別?
  • 列的字符串類型能夠是什麼?

十6、Tomcat篇

  • Tomcat 的缺省端口是多少,怎麼修改?
  • Tomcat 有哪幾種 Connector 運行模式(優化)?
  • Tomcat 有幾種部署方式?
  • Tomcat 容器是如何建立 servlet 類實例?用到了什麼原理?
  • Tomcat 如何優化?
  • 內存調優
  • 垃圾回收策略調優
  • 共享 session 處理
  • 添加 JMS 遠程監控
  • 關於 Tomcat 的 session 數目
  • 監視 Tomcat 的內存使用狀況
  • 打印類的加載狀況及對象的回收狀況
  • Tomcat 一個請求的完整過程
  • Tomcat 工做模式

十7、zookeeper篇

  • ZooKeeper 是什麼?
  • ZooKeeper 提供了什麼?
  • Zookeeper 文件系統
  • 四種類型的 znode
  • Zookeeper 通知機制
  • Zookeeper 作了什麼?
  • zk 的命名服務(文件系統)
  • zk 的配置管理(文件系統、通知機制)
  • Zookeeper 集羣管理(文件系統、通知機制)
  • Zookeeper 分佈式鎖(文件系統、通知機制)

十8、併發編程篇

  • Synchronized用過嗎,其原理是什麼 ?
  • 你剛纔提到獲取對象的鎖,這個「鎖」是什麼?如何肯定對象的鎖?
  • 什麼是可重入性?爲何說Synchronized是可重入鎖?
  • JVM對Java的原生鎖作了哪些優化?
  • 爲何說Synchronized是非公平鎖?
  • 什麼是鎖消除和鎖粗化?
  • 爲何說Synchronized是一個悲觀鎖?樂觀鎖的實現原理又是什麼?
  • 什麼是CAS,它有什麼特性?
  • 樂觀鎖必定就是好的嗎?
  • 跟Synchronized相比,可重入ReentrantLock其實現原理有什麼不一樣?
  • 請談談AQS框架是怎麼回事
  • 請儘量詳盡地對比下Synchronized和ReentrantLock的異同
  • ReentrantLock是如何實現可重入性的?
  • 除了ReentrantLock,你還接觸過JUC中的哪些併發工具?
  • 請談談ReadWriteLock和StampedLock
  • 如何讓Java的線程彼此同步?你還了解過哪些同步器?請分別介紹一下
  • CyclicBarrier和CountDownLatch看起來很類似,請對比一下
  • Java中的線程池是如何實現的?
  • 建立線程池的幾個核心構造參數
  • 線程池中的線程是怎麼建立的?是一開始就隨着線程池的啓動建立好的嗎?
  • 既然提到能夠經過配置不一樣參數建立不一樣的線程池,那麼Java中默認實現好的線程池又有哪些?請比較它們的異同
  • 如何在Java線程池中提交線程?
  • 什麼是Java的內存模型,Java中各個線程是怎麼彼此看到對方的變量的?
  • 請談談Volatile有什麼特色,它爲何能保證變量對全部線程的可見性?
  • 既然Volatile能保證縣城見的變量可見性,是否是就意味着基於Volatile變量的運算就是併發安全的?
  • 請對比下Volatile和Synchronized的異同
  • 請談談RhreadLocal是怎麼解決併發安全的?
  • 不少人都說要慎用TheadLocal,談談你的理解,使用TheadLocal須要注意些什麼?

十9、多線程篇

  • 如今有 T一、T二、T3 三個線程,你怎樣保證 T2 在 T1 執行完後執行,T3 在 T2 執行完後執行?
  • 用 Java 寫代碼來解決生產者——消費者問題
  • 用 Java 編程一個會致使死鎖的程序,你將怎麼解決?
  • 什麼是原子操做,Java 中的原子操做是什麼?
  • Java 中的 volatile 關鍵是什麼做用?怎樣使用它?在 Java 中它跟 synchronized 方法有什麼不一樣?
  • 你將如何使用 threaddump?你將如何分析 Thread dump?
  • 爲何咱們調用 start()方法時會執行 run()方法,爲何咱們不能直接調用 run()方法?
  • Java 中你怎樣喚醒一個阻塞的線程?
  • 在 Java 中 CycliBarriar 和 CountdownLatch 有什麼區別?
  • 你在多線程環境中遇到的常見的問題是什麼?你是怎麼解決它的?

二10、開源框架篇

  • BeanFactory 和 ApplicationContext 有什麼區別?
  • Spring Bean 的生命週期
  • Spring IOC 如何實現?
  • 說說 Spring AOP
  • Spring AOP 實現原理
  • 動態代理(cglib 與 JDK)
  • Spring 事務實現方式
  • Spring 事務底層原理
  • 如何自定義註解實現功能
  • Spring MVC 運行流程
  • Spring MVC 啓動流程
  • Spring 的單例實現原理
  • Spring 框架中用到了哪些設計模式
  • 爲何選擇 Netty
  • 說說業務中,Netty 的使用場景
  • 原生的 NIO 在 JDK 1.7 版本存在 epoll bug
  • 什麼是 TCP 粘包/拆包
  • TCP 粘包/拆包的解決辦法
  • Netty 線程模型
  • 說說 Netty 的零拷貝
  • Netty 內部執行流程

二11、設計模式篇

  • 請列舉出在 JDK 中幾個經常使用的設計模式?
  • 什麼是設計模式?你是否在你的代碼裏面使用過任何設計模式?
  • Java 中什麼叫單例設計模式?請用 Java 寫出線程安全的單例模式
  • 使用工廠模式最主要的好處是什麼?在哪裏使用?
  • 舉一個用 Java 實現的裝飾模式(decorator design pattern)?它是做用於對象層次仍是類層次?
  • 在 Java 中,爲何不容許從靜態方法中訪問非靜態變量?
  • 設計一個 ATM 機,請說出你的設計思路?
  • 在 Java 中,何時用重載,何時用重寫?
  • 舉例說明什麼狀況下會更傾向於使用抽象類而不是接口?

二12、微服務篇

  • 先後端分離是如何作的
  • 微服務哪些框架
  • 說說 RPC 的實現原理
  • 說說 Dubbo 的實現原理

讀者福利

本文爲你們整理了25類面試題,同時還整理了一些學習資料。node

若是須要獲取本文面試題答案和學習資料的小夥伴能夠關注我以後見下圖
mysql

 

 

 

 

 

 

 

 

相關文章
相關標籤/搜索