金九銀十如何應對面試缚陷,12W字包含基礎适篙、JVM、多線程&并發(fā)箫爷、Spring嚷节、MyBatis、SpringBoot虎锚、MySQL丹喻、SpringCloud、Dubbo翁都、Nginx碍论、MQ、數據結構與算法柄慰、Linux鳍悠、Zookeeper、Redis坐搔、分布式藏研、網絡、設計模式概行、maven蠢挡、ElasticSearch。
**12W字226頁的Java面試寶典(答案)
基礎篇
- Java語言有哪些特點
- 面向對象和面向過程的區(qū)別
- 八種基本數據類型的大小,以及他們的封裝類
- 標識符的命名規(guī)則业踏。
- instanceof關鍵字的作用
- Java自動裝箱與拆箱
- 重載和重寫的區(qū)別
- equals與==的區(qū)別
- Hashcode的作用
- String禽炬、String StringBuffer和StringBuilder的區(qū)別是什么?
- ArrayList和linkedList的區(qū)別
- HashMap和HashTable的區(qū)別
- Collection包結構,與Collections的區(qū)別
- Java的四種引用勤家,強弱軟虛
- 泛型常用特點
- Java創(chuàng)建對象有幾種方式?
- 有沒有可能兩個不相等的對象有相同的hashcode
- 深拷貝和淺拷貝的區(qū)別是什么?
- final有哪些用法?
- static都有哪些用法?
- 3*0.1==0.3返回值是什么
- a=a+b與a+=b有什么區(qū)別嗎?
- try catch finally, try里有return, finally還執(zhí)行么?
- Excption與Error包結構
- OOM你遇到過哪些情況腹尖,SOF你遇到過哪些情況
- 簡述線程、程序伐脖、進程的基本概念热幔。以及他們之間關系是什么?
- Java序列化中如果有些字段不想進行序列化,怎么辦?關系
- 說說Java中I0流
- Java 10與NIO的區(qū)別(補充)
- java反射的作用與原理
- 說說List,Set,Map三者的區(qū)別?
- Object有哪些常用方法?大致說一下每 個方法的含義
- Java創(chuàng)建對象有幾種方式?
- 獲取一個類Class對象的方式有哪些?
- ArrayList和LinkedList的區(qū)別有哪些?
- 用過ArrayList嗎?說一下它有什么特點?
- 有數組了為什么還要搞個ArrayList 呢?
- 說說什么是fail-fast?
- 說說Hashtable與HashMap的區(qū)別
- HashMap中的key我們可以使用任何類作為key嗎?
- HashMap的長度為什么是2的N次方呢?
- HashMap與ConcurrentHashMap的異同
- 紅黑樹有哪幾個特征?
- 說說你平時是怎么處理Java異常的
- 說說深拷貝和淺拷貝?
JVM
- 說說類加載與卸載
- 簡述一下 JVM的內存模型
- 說說堆和棧的區(qū)別
- 什么時候會觸發(fā)FullIGC
- 什么是Java虛擬機?為什么Java被稱作是"平臺無關的編程語言"?
- Java內存結構
- 說說對象分配規(guī)則
- 描述- -下JVM加載class文件的原理機制?
- 說說Java對象創(chuàng)建過程
- 知道類的生命周期嗎?
- 簡述Java的對象結構
- 如何判斷對象可以被回收?
- JVM的永久代中會發(fā)生垃圾回收么?
- 你知道哪些垃圾收集算法
- 調優(yōu)命令有哪些?
- 常見調優(yōu)工具有哪些
- Minor GC與Full GC分別在什么時候發(fā)生?
- 你知道哪些JVM性能調優(yōu)參數? (簡單版回答)
- 對象一定分配在堆中嗎?有沒有了 解逃逸分析技術?
- 虛擬機為什么使用元空間替換了永久代?
- 什么是Stop The World ?什么是OopMap?什么是安全點?
- 說一下JVM的主要組成部分及其作用?
- 什么是指針碰撞?
- 什么是空閑列表?
- 什么是TLAB?
- 對象頭具體都包含哪些內容?
- 你知道哪些JVM調優(yōu)參數?
- 說一下JVM有哪些垃圾回收器?
- 如何選擇垃圾收集器?
- 什么是類加載器?
- 什么是tomcat類加載機制?
多線程&高并發(fā)
- 說說Java中實現多線程有幾種方法
- 如何停止一個正在運行的線程
- notify0和notifyAll()有什么區(qū)別?
- sleep0和wait(有什么區(qū)別?
- volatile是什么?可以保證有序性嗎?
- Thread類中的start(和run0方法有什么區(qū)別?
- 為什么wait, notify和notifyAll這些方法不在thread類里面?
- 為什么wait和notify方法要在同步塊中調用?
- Java中interrupted和isInterruptedd方法的區(qū)別?
- Java中synchronized和ReentrantLock有什么不同?
- 有三個線程T1,T2,T3,如何保證順序執(zhí)行?
- SynchronizedMap和ConcurrentHashMap有什么區(qū)別?
- 什么是線程安全
- Thread類中的yield方法有什么作用?
- Java線程池中submit(和execute(方法有什么區(qū)別?
- 說一說自己對于synchronized關鍵字的了解
- 說說自己是怎么使用synchronized關鍵字?
- 什么是線程安全? Vector是一 個線程安全類嗎?
- volatile關鍵字的作用?
- 常用的線程池有哪些?
- 簡述一下你對線程池的理解
- Java程序是如何執(zhí)行的
- 鎖的優(yōu)化機制了解嗎?
- 說說進程和線程的區(qū)別?
- 產生死鎖的四個必要條件?
- 如何避免死鎖?
- 線程池核心線程數怎么設置呢?
- Java線程池中隊列常用類型有哪些?
- 線程安全需要保證幾個基本特征?
- 說一下線程之間是如何通信的?
- CAS的原理呢?很多在問怎么進階Java架構師或者是提升自己的Java技能讼庇,這邊我推薦一個老師的 指導危號給你绎巨,你可以搜索找塔下,首先是:125 接著是:343 最后是是:1195 蠕啄,你連著數字就可以練習到了场勤!有Spring,MyBatis介汹,Netty源碼分析,高并發(fā)舶沛、高性能嘹承、分布式、微服務架構的原理如庭,JVM性能優(yōu)化叹卷、分布式架構等這些成為架構師必備的知識體系。還能領取免費的學習資源坪它,目前受益良多
- CAS有什么缺點嗎?
- 引用類型有哪些?有什么區(qū)別?
- 說說Threadl ocal原理?
- 線程池原理知道嗎?以及核心參數
- 線程池的拒絕策略有哪些?
- 說說你對JMM內存模型的理解?為什么需要JMM?
- 多線程有什么用?
- 說說CyclicBarrier和CountDownL atch的區(qū)別?
- 什么是AQS?
- 了解Semaphore嗎?
- 什么是Callable和Future?
- 什么是阻塞隊列?阻塞隊列的實現原理是什么?如何使用阻塞隊列來實現生產者消費者模型?
- 什么是多線程中的上下文切換?
- 什么是Daemon線程?它有什么意義?
- 樂觀鎖和悲觀鎖的理解及如何實現骤竹,有哪些實現方式?
Spring
- 什么是spring?
- 你們項目中為什么使用Spring框架?
- Autowired和Resource關鍵字的區(qū)別?
- 依賴注入的方式有幾種,各是什么?
- 講-下什么是Spring
- 說說你對Spring MVC的理解
- SpringMVC常用的注解有哪些?
- 談談你對Spring的AOP理解
- Spring AOP和Aspect AOP有什么區(qū)別? 在Spring AOP中往毡,關注點和橫切關注的區(qū)別是什么?什么是通知呢?有哪些類型呢?
- 說說你對Spring的IOC是怎么理解的?
- 解釋- -下spring bean的生命周期
- 解釋Spring支持的幾種bean的作用域?
- Spring基于xml注入bean的幾種方式?
- Spring框架中都用到了哪些設計模式?
- 說說Spring中ApplicationContext和BeanFactory的區(qū)別
- Spring框架中的單例Bean是線程安全的么?
- Spring是怎么解決循環(huán)依賴的?
- 說說事務的隔離級別
- 說說事務的傳播級別
- Spring事務實現方式
- Spring框架的事務管理有哪些優(yōu)點
- 事務三要素是什么?
- 事務注解的本質是什么?
Mybatis
- 什么是MyBatis
- 說說MyBatis的優(yōu)點和缺點
-
{}和$}的區(qū)別是什么?
- 當實體類中的屬性名和表中的字段名不一樣蒙揣,怎么辦?
- Mybatis是如何進行分頁的?分頁插件的原理是什么?
- Mybatis是如何將sql執(zhí)行結果封裝為目標對象并返回的?都有哪些映射形式开瞭?
- 如何執(zhí)行批量插入懒震?
- Xml映射文件中,除了常見的select|insert|updae|delete標簽之外嗤详,還有哪些標簽个扰?
- MyBatis實現一對一有幾種方式?具體怎么操作的?
- Mybatis是否支持延遲加載?如果支持,它的實現原理是什么?
- 說說Mybatis的緩存機制:
- JDBC編程有哪些步驟?
- MyBatis中見過什么設計模式?
- MyBatis 中比如 UserMapper.java 是接口葱色,為什么沒有實現類還能調用递宅?
Spring Boot
- 為什么要用SpringBoot
- Spring Boot的核心注解是哪個?它主要由哪幾個注解組成的?
- 運行Spring Boot有哪幾種方式?
- 如何理解Spring Boot中的Starters?
- 如何在Spring Boot啟動的時候運行一些特定的代碼?
- Spring Boot需要獨立的容器運行嗎?
- Spring Boot中的監(jiān)視器是什么?
- 如何使用Spring Boot實現異常處理?
- 你如何理解Spring Boot中的Starters?
- springboot常用的starter有哪些
- SpringBoot實現熱部署有哪幾種方式?
- 如何理解Spring Boot配置加載順序?
- Spring Boot的核心配置文件有哪幾個?它們的區(qū)別是什么?
- 如何集成Spring Boot和ActiveMQ?
MySQL
- 數據庫的三范式是什么
- MySQL數據庫引擎有哪些
- 說說InnoDB與MyISAM的區(qū)別
- 數據庫的事務
- 索引是什么
- SQL優(yōu)化手段有哪些
- 簡單說一說drop、 delete與truncate的區(qū)別
- 什么是視圖
- 什么是內聯接、左外聯接办龄、右外聯接?
- 并發(fā)事務帶來哪些問題?
- 務隔離級別有哪些?MySQL的默認隔離級別是?
- 大表如何優(yōu)化?
- 分庫分表之后,id主鍵如何處理?
- 說說在MySQL中一條查詢SQL是如何執(zhí)行的?
- 索引有什么優(yōu)缺點?
- MySQL 中 varchar 與 char 的區(qū)別烘绽?varchar(30) 中的 30代表的涵義?
- int(11) 中的 11 代表什么含義土榴?
- 為什么 SELECT COUNT(*) FROM table 在 InnoDB 比MyISAM 慢诀姚?
- 說說InnoDB與MyISAM有什么區(qū)別?
- MySQL索弓|類型有哪些?
- 什么時候不要使用索引?
- 說說什么是MVCC?
- MVCC可以為數據庫解決什么問題?
- 說說MVCC的實現原理
- MySQL事務隔離級別?
- 請說說MySQL數據庫的鎖?
- 說說什么是鎖升級?
- 說說悲觀鎖和樂觀鎖
- 怎樣盡量避免死鎖的出現?
- 使用MySQL的索弓|應該注意些什么?
- CHAR和VARCHAR的區(qū)別?
- 主鍵和候選鍵有什么區(qū)別?
- 主鍵與索弓|有什么區(qū)別?
- MySQL如何做到高可用方案?
Spring Cloud
- 什么是SpringCloud
- 什么是微服務
- SpringCloud有什么優(yōu)勢
- 什么是服務熔斷?什么是服務降級?
- Eureka和zookeeper都可以提供服務注冊與發(fā)現的功能,請說說兩個的區(qū)別玷禽?
- SpringBoot和SpringCloud的區(qū)別?
- 負載平衡的意義什么?
- 什么是Hystrix?它如何實現容錯?
- 什么是Hystrix斷路器?我們需要它嗎?
- 說說RPC的實現原理
- eureka自我保護機制是什么?
- 什么是Ribbon?
- 什么是feigin?它的優(yōu)點是什么?
- Ribbon和Feign的區(qū)別?
Dubbo
- 說說一次Dubbo服務請求流程?
- 說說Dubbo工作原理
- Dubbo支持哪些協(xié)議?
- 注冊中心掛了赫段,consumer 還能不能調用provider?
- 怎么實現動態(tài)感知服務下線的呢?
- Dubbo負載均衡策略?
- Dubbo容錯策略
- Dubbo動態(tài)代理策略有哪些?
- 說說Dubbo與Spring Cloud的區(qū)別?
- Zookeeper和Dubbo的關系?
Nginx
- 簡述一下什么 是Nginx,它有什么優(yōu)勢和功能?
- Nginx是如何處理一個HTTP請求的呢?
- 列舉一些Nginx的特性
- 請列舉Nginx和Apache之間的不同點
- 在Nginx中,如何使用未定義的服務器名稱來阻止處理請求?
- 請解釋Nginx服務器上的Master和Worker進程分別是什么?
- 請解釋代理中的正向代理和反向代理
- 解釋Nginx用途
MQ
- 為什么要使用MQ
- MQ有什么優(yōu)缺點
- Kafka矢赁、ActiveMQ糯笙、 RabbitMQ、 RocketMQ 都有什么區(qū)別?
- 如何保證高可用的?
- 如何保證消息的可靠傳輸?如果消息丟了怎么辦
- 如何保證消息的順序性
- 如何解決消息隊列的延時以及過期失效問題撩银?消息隊列滿了以后該怎么處理给涕?有幾百萬消息持續(xù)積壓幾小時,說說怎么解決额获?
- 讓你來設計一個消息隊列够庙,你會怎么設計
數據結構與算法篇
Linux篇
- 絕對路徑用什么符號表示?當前目錄抄邀、上層目錄用什么表示耘眨?主目錄用什么表示? 切換目錄用什么命令?
- 怎么查看當前進程?怎么執(zhí)行退出?怎么查看當前路徑?
- 查看文件有哪些命令
- 列舉幾個常用的Linux命令
- 你平時是怎么查看日志的?
Zookeeper
- 說說Zookeeper是什么?
- ZooKeeper有哪些應用場景?
- 說說Zookeeper的工作原理?
- 請描述一下Zookeeper 的通知機制是什么?
- Zookeeper對節(jié)點的watch監(jiān)聽通知是永久的嗎?
- Zookeeper集群中有哪些角色?
- Zookeeper集群中Server有哪些工作狀態(tài)?
- Zookeeper集群中是怎樣選舉leader的?
- Zookeeper是如何保證事務的順序一 致性的呢?
- ZooKeeper集群中個服務器之間是怎樣通信的?
- ZooKeeper分布式鎖怎么實現的?
- 了解Zookeeper的系統(tǒng)架構嗎?
- Zookeeper為什么要這么設計?
- 你知道Zookeeper中有哪些角色?
- 你熟悉Zookeeper節(jié)點ZNode和相關屬性嗎?
- 請簡述Zookeeper的選主流程
- 為什么Zookeeper集群的數目境肾,一般為奇數個?
- 知道Zookeeper監(jiān)聽器的原理嗎?
- 說說Zookeeper中的ACL權限控制機制
- Zookeeper有哪幾種幾種部署模式?
- Zookeeper集群支持動態(tài)添機器嗎?
- 描述一下ZAB協(xié)議
- ZAB和Paxos算法的聯系與區(qū)別?
- ZooKeeper宕機如何處理?
- 描述一下 ZooKeeper 的session 管理的思想?
- ZooKeeper負載均衡和Nginx負載均衡有什么區(qū)別?
- 說說ZooKeeper的序列化
- 在Zookeeper中Zxid是什么剔难,有什么作用?
- 講解一下 ZooKeeper的持久化機制
- Zookeeper選舉中投票信息的五元組是什么?
- 說說Zookeeper中的腦裂?
- Zookeeper腦裂是什么原因導致的?
- Zookeeper是如何解決腦裂問題的?
- 說說Zookeeper的CAP問題上做的取舍?
- watch監(jiān)聽為什么是一 次性的?
Redis
- 為什么要用緩存
- 使用Redis有哪些好處?
- 什么是Redis?
- 為什么使用Redis而不是用Memcache呢?
- 為什么Redis單線程模型效率也能那么高?
- 說說Redis的線程模型
- 為什么Redis需要把所有數據放到內存中?
- Redis的同步機制了解是什么?
- pipeline有什么好處,為什么要用pipeline?
- 說一下Redis有什么優(yōu)點和缺點
- Redis緩存刷新策略有哪些?
- Redis持久化方式有哪些?以及有什么區(qū)別?
- 持久化有兩種奥喻,那應該怎么選擇呢?
- 怎么使用Redis實現消息隊列?
- 說說你對Redis事務的理解
- Redis為什么設計成單線程的?
- 什么是bigkey?會存在什么影響?
- 熟悉哪些Redis集群模式?
- 是否使用過Redis Cluster集群偶宫,集群的原理是什么?
- Redis Cluster集群方案什么情況下會導致整個集群不可用?
- Redis集群架構模式有哪幾種?
- 說說Redis哈希槽的概念?
- Redis常見性能問題和解決方案有哪些?
- 假如 Redis 里面有 1 億個 key,其中有 10w 個 key 是以某個固定的已知的前綴開頭的环鲤,如果將它們全部找出來纯趋?
- 什么情況下可能會導致Redis阻塞?
- 緩存和數據庫誰先更新呢?
- 怎么提高緩存命中率?
- Redis如何解決key沖突?
- Redis報內存不足怎么處理?
- 說說Redis持久化機制
- 緩存雪崩、緩存穿透冷离、緩存預熱结闸、緩存更新、緩存降級等問題
- 熱點數據和冷數據是什么
- Memcache與Redis的區(qū)別都有哪些?
- 單線程的redis為什么這么快
- redis的數據類型酒朵,以及每種數據類型的使用場景
- redis的過期策略以及內存淘汰機制
- Redis為什么是單線程的
- Redis常見性能問題和解決方案?
- 為什么Redis的操作是原子性的桦锄,怎么保證原子性的?
- 了解Redis的事務嗎?
- Redis的數據類型及使用場景
分布式
- 分布式冪等性如何設計?
- 簡單一次完整的HTTP請求所經歷的步驟?
- 說說你對分布式事務的了解
- 你知道哪些分布式事務解決方案?
- 什么是二階段提交?
- 什么是三階段提交?
- 什么是補償事務?
- 消息隊列是怎么實現的?
- 那你說說Sagas事務模型
- 分布式ID生成有幾種方案?
- 冪等解決方法有哪些?
- 常見負載均衡算法有哪些?
- 你知道哪些限流算法?
- 說說什么是計數器(固定窗口)算法
- 說說什么是滑動窗算法
- 說說什么是漏桶算法
- 說說什么是令牌桶算法
- 數據庫如何處理海量數據?
- 如何將長鏈接轉換成短鏈接,并發(fā)送短信?
- 長鏈接和短鏈接如何互相轉換?
- 長鏈接和短鏈接的對應關系如何存儲?
- 如何提高系統(tǒng)的并發(fā)能力蔫耽?
網絡
- HTTP響應碼有哪些?分別代表什么含義?
- Forward和Redirect的區(qū)別?
- Get和Post請求有哪些區(qū)別?
- 說說TCP與UDP的區(qū)別结耀,以及各自的優(yōu)缺點
- 說一下HTTP和HTTPS的區(qū)別
- 說說HTTP留夜、TCP、 Socket 的關系是什么?
- 說一下HTTP的長連接與短連接的區(qū)別
- TCP為什么要三次握手图甜,兩次不行嗎?為什么?
- 說一下TCP粘包是怎么產生的?怎么解決粘包問題的?
- TCP如何保證可靠性
- OSI的七層模型都有哪些?
- 瀏覽器中輸入:“www.woaijava.com”之后都發(fā)生了什么碍粥?請詳細闡述
- 如何實現跨域?
- TCP為什么要三E次握手,兩次不行嗎?為什么?
- 說一下TCP粘包是怎么產生的?怎么解決粘包問題的?
- HTTP1.0黑毅、HTTP1.1嚼摩、 HTTP2.0的關系和區(qū)別
- 說說HTTP協(xié)議與TCP/IP協(xié)議的關系
- 如何理解HTTP協(xié)議是無狀態(tài)的?
- 什么是長連接和短連接?
- 長連接和短連接的優(yōu)缺點?
- 說說長連接短連接的操作過程
- 說說TCP三次握手和四次揮手的全過程
- OSI的七層模型都有哪些?
- OSl這樣分層有什么好處?
- 說說TCP/IP四層網絡模型
- 說說域名解析詳細過程?
- IP地址分為幾類,每類都代表什么矿瘦,私網是哪些?
- 說說TCP如何保證可靠性的?
設計模式
- 說說什么是單例模式
- 說說你對代理模式的理解
- 說說工廠模式
- 抽象工廠模式
- 裝飾器模式是什么
- 代理模式和裝飾器模式有什么區(qū)別?
- 模板方法模式
- 知道享元模式嗎?
- 元模式和單例模式的區(qū)別?
- 說說策略模式在我們生活的場景?
- 知道責任鏈模式嗎?
- 了解過適配器模式么?
- 知道觀察者模式嗎?
ElasticSearch
- 談談分詞與倒排索弓|的原理
- 說說分段存儲的思想
- 談談你對段合并的策略思想的認識
- 了解文本相似度TF-IDF嗎
- 能說說ElasticSearch寫索弓|的邏輯嗎?
- 熟悉ElasticSearch集群中搜索數據的過程嗎?
- 了解ElasticSearch深翻頁的問題及解決嗎?
- 熟悉ElasticSearch性能優(yōu)化
- ElasticSearch查詢優(yōu)化手段有哪些?
- elasticsearch是如何實現master選舉的?
- elasticsearch索引數據多了怎么辦枕面,如何調優(yōu),部署?
- 說說你們公司es的集群架構缚去,索弓|數據大小潮秘,分片有多少?
- 什么是ElasticSearch?
- ElasticSearch中的集群、節(jié)點易结、索引枕荞、文檔、類型是什么?
- ElasticSearch中的分片是什么?
- ElasticSearch中的副本是什么?
- ElasticSearch中的分析器是什么?
- 什么是ElasticSearch中的編譯器?
- 什么是ElasticSearch中的過濾器?
- 啟用屬性搞动,索弓|和存儲的用途是什么?
tomcat
- Tomcat的缺省端口是多少躏精,怎么修改?
- tomcat有哪幾種Connector運行模式(優(yōu)化)?
- Tomcat有幾種部署方式?
- tomcat容器是如何創(chuàng)建servlet類實例?用到了什么原理?
- tomcat如何優(yōu)化?
- 熟悉tomcat的哪些配置?
- Tomcat是什么?
- 什么是Servlet呢?
- 什么是Servlet規(guī)范?
- 為什么我們將tomcat稱為Web容器或者Servlet容器?
- tomcat是如何處理Http請求流程的?
- tomcat結構目錄有哪些?
軟實力(面試)
- 為什么說簡歷很重要?
- 先從面試來說
- 再從面試說起
- 必知必會的幾點
- 必須了解的兩大法則
- 項目經歷怎么寫
- 專業(yè)技能怎么寫
- 排版注意事項
- 其他一些小tips
- 你對我們公司有什么想問的嗎?
- 很多人都倒在自我介紹上
- 如何與HR交談,如何談薪水
- HR最喜歡問程序員的20個問題
- 面試中的禮儀與舉止