心智圖資源庫 JAVA面試題-2
這是一篇關於JAVA面試題-2的心智圖,有助於求職者可以有系統地回顧和鞏固JAVA的基礎知識。乾貨滿滿,有需要的朋友趕快收藏吧!
編輯於2024-03-07 14:55:06This is a mind map about bacteria, and its main contents include: overview, morphology, types, structure, reproduction, distribution, application, and expansion. The summary is comprehensive and meticulous, suitable as review materials.
This is a mind map about plant asexual reproduction, and its main contents include: concept, spore reproduction, vegetative reproduction, tissue culture, and buds. The summary is comprehensive and meticulous, suitable as review materials.
This is a mind map about the reproductive development of animals, and its main contents include: insects, frogs, birds, sexual reproduction, and asexual reproduction. The summary is comprehensive and meticulous, suitable as review materials.
This is a mind map about bacteria, and its main contents include: overview, morphology, types, structure, reproduction, distribution, application, and expansion. The summary is comprehensive and meticulous, suitable as review materials.
This is a mind map about plant asexual reproduction, and its main contents include: concept, spore reproduction, vegetative reproduction, tissue culture, and buds. The summary is comprehensive and meticulous, suitable as review materials.
This is a mind map about the reproductive development of animals, and its main contents include: insects, frogs, birds, sexual reproduction, and asexual reproduction. The summary is comprehensive and meticulous, suitable as review materials.
JAVA面試題
JAVA基礎
基礎語法
01-什麼是物件導向程式設計 ?
02-物件導向三大特性
03-什麼是多態機制 ?
04-Jdk和Jre和JVM的區別
05-Java的基本資料型別有哪些 ?
06-什麼是方法簽名 ?
07-JAVA中訪問修飾符有哪些 ?
08-&和&&的差別 ?
09-final 有什麼用 ?
10-final finally finalize區別 ?
11-this和super關鍵字
12-break ,continue ,return 的區別及作用 ?
13-抽象類別能使用 final 修飾嗎?
14-static修飾的方法能呼叫非static修飾的變數與方法嗎 ?
15-局部內部類別和匿名內部類別存取局部變數的時候,為什麼變數必須加上final?
16-重載(Overload)和重寫(Override)的區別
17-構造器(constructor)是否可重寫(override)
18- == 和 equals 的差別是什麼
19-hashCode 方法的作用
20-什麼是反射機制?
21-反射機制優缺點
22-反射機制的應用場景有哪些?
23-Java獲取反射的三種方法
24-Java中創建物件的方式有哪些 ?
25-String s = new String(“xyz”);建立了幾個字串對象
26- String str="i"與 String str=new String(“i”)一樣嗎?
27-String和StringBuffer、StringBuilder的差別是什麼?
28-Integer a= 127 與 Integer b = 127相等嗎 ?
資料結構
01-什麼是鍊錶 ?
02-鍊錶的優點 ?
03-什麼是紅黑樹 ?
JDK1.8新特性
Lambda
Stream流
foreach : 遍歷循環 , 傳入Consumer類型對象
filter : 過濾
map : 轉化
flatMap : 流的扁平化處理
skip : 跳過N個元素
limit : 截取N個元素
sorted : 排序 , 傳入comparator
Collectors : 收集器, 將流中的資料收集成績和 toList , toMap等
summaryStatistics : 統計方法
count : 統計元素數量
concat : 合併2個流
Optional
集合
01-常用的集合類別有哪些?
02-哪些集合類別是線程安全的?
03-Vector如何實現線程安全
04-HashTable如何實現線程安全 ?
05-遍歷一個 List 有哪些不同的方式?
06-說一下 ArrayList 的優缺點 ?
07-如何實作陣列和 List 之間的轉換?
08-ArrayList 和 LinkedList 的差別是什麼?
09-如何把一個線程不安全的集合轉換成線程安全集合 ?
10-說一下 HashSet 的實現原理?
11-HashSet如何檢查重複? HashSet是如何保證資料不可重複的?
12-說一下HashMap的實作原理?
13-HashMap是如何解決hash衝突
14-HashMap在JDK1.7和1.8有什麼差別
15-HashMap的put方法的具體流程?
16-HashMap是如何擴容的 ?
17-為什麼HashMap的初始長度是16 ?
18- 為什麼鍊錶的長度為8是變成紅黑樹?
19-HashMap 每次擴容的長度為什麼是2的冪次方
20-HashMap 和 ConcurrentHashMap 的差別 ?
21-ConcurrentHashMap 和 Hashtable 的差別?
22-什麼是TreeMap ?
23-comparable 和 comparator的差別?
24-如何實現對集合資料排序
IO
01-java中有幾種類型的流?
02-談談Java IO裡面的常見類別,位元組流,字元流、介面、實作類別、方法阻塞
03-如何將位元組流轉換為字元流 ?
04-什麼是Java序列化,如何實現Java序列化?
05-什麼是同步和非同步 ?
06-什麼是阻塞和非阻塞 ?
07-同步阻塞、同步非阻塞和非同步非阻塞又代表什麼意思呢?
08-什麼是BIO (Blocking I/O)
09-什麼是NIO
10-什麼是AIO (Asynchronous I/O)
5種IO模型介紹
多執行緒
執行緒基礎
01. 線程的狀態有幾種, 分別是什麼 ?
02-創建一個線程的方式有哪些 ?
03-runnable 和 callable 有什麼差別 ?
04-線程的 run()和 start()有什麼差別?
05-常用的執行緒同步以及執行緒調度相關的方法
06-如何喚醒一個阻塞的執行緒?
07-在 Java 程式中怎麼保證多執行緒的運作安全?
08-執行緒的常用API有哪些
09-執行緒之間如何通訊及執行緒之間如何同步
10-說說自己是怎麼使用 synchronized 關鍵字,在專案中用到了嗎 ?
11-單例模式了解嗎?給我解釋一下雙重檢驗鎖定方式實作單例模式!
懶漢式
餓漢式
雙重檢查鎖
12-什麼是原子類別 , 對Java的JUC框架了解嘛
13-新建 T1、T2、T3 三個線程,如何保證它們按順序執行?
14-什麼是線程死鎖 ?
15-形成死鎖的四個必要條件是什麼 ?
16-如何避免線程死鎖 ?
17-線程 B 怎麼知道線程 A 修改了變數
執行緒池
01-什麼是執行緒池?使用線程池有哪些好處?
02-創建線程池的參數有哪些
03- 如何建立執行緒池
04-線程池的執行流程
05-如何合理分配線程池大小?
06-執行緒池啟動執行緒 submit()和 execute()方法有什麼不同?
07-如果你提交任務時,執行緒池佇列已滿,這時會發生什麼
鎖
01-多執行緒中 synchronized 鎖升級的原理是什麼?
02-什麼是 CAS ?
03-CAS 的會產生什麼問題?
04-什麼是偏向鎖 ?
05-什麼是輕量級鎖 ?
06-什麼是重量級鎖
07-什麼是自旋鎖 ?
08-自旋鎖存在什麼問題 ?
09-synchronized 和 Lock 有什麼差別?
10-volatile 關鍵字的作用
ThreadLocal
01-ThreadLocal的底層原理
02-專案中哪裡使用的ThreadLocal
03-使用ThreadLocal可能會產生什麼問題?如何解決 ?
JVM
01-JVM由那些部分組成,運行流程是什麼?
02-說一下 JVM 運行時資料區
03-能不能聊聊你對Java堆的理解 ?
04-能不能聊聊對Java方法區的理解
05-知道直接內存嗎?
06-堆疊的差別是什麼?
07-知道深拷貝和淺拷貝嘛 ?
08-強引用、軟引用、弱引用、虛引用的差別?
09-有沒有了解GC ?
10-垃圾回收器的原理是什麼?有什麼辦法手動進行垃圾回收?
11-知不知道FullGC ?
12-講新生代、老年代、永久代的差別
13-Minor GC、Major GC、Full GC是什麼 ?
14-物件什麼時候可以被垃圾器回收 ?
15-JVM 垃圾回收演算法有哪些?
16-JVM中的永久代中會發生垃圾回收嗎?
17-什麼是類別載入器,類別載入器有哪些?
18-說一下類別裝載的執行過程?
19-知道什麼事雙親委派嘛 ?
20-如何打破雙親委派 ?
21-有接觸過JVM調優嘛 ?
22-常用的JVM調優參數有哪些 ?
23-JVM 調優的參數可以在那設定參數值
JAVAWEB
Servlet
01-什麼是servlet?
02-Tomcat的預設埠是多少,怎麼修改?
03-Servlet生命週期知道嘛 ?
04- 知道轉發和重定向嘛 ?
05- 什麼是cookie?什麼是session?
06-Cookie和Session有什麼差別 ?
07- Tomcat是如何建立servlet類別實例?用到了什麼原理
08-Servlet是單例的還是多例的 ?
09-說一下過濾器,攔截器,監聽器的差別 ?
MYSQL
基礎語法
DDL : 資料定義語言 , 例如 : create ,drop等控制資料庫表結構的
DCL : 資料庫控制語言 , GRANT和REVOKE 等對資料庫進行控制的
DML : 資料管理語言 ,常用的就是INSERT、UPDATE、DELETE等對資料庫的資料做一些操作
DQL : 資料查詢語言 ,資料擷取語句,用於從表格中取得資料。通常最常用的為保留字SELECT,並且常與FROM子句、WHERE子句組成查詢SQL查詢語句
基礎的語法順序 : Select [字段,...] From 表名 [Where 條件] [group by 字段] [having 條件][Order By 字段 順序 ]
SQL排序 : Order By欄位 順序
SQL分組 : Group By 分組字段
SQL去重
Distinct
Group by
SQL分頁 : Limit [start ] size
SQL函數
目前時間 : now()/sysdate
字串拼接 : concat
截取空格 : TRIM
替換字串 : REPLACE
字串截取 : SUBSTRING
字串反轉 : REVERSE
取得當前年 :Year
取得當前月 :Month
取得當前週 : week
時間計算 : DATE_ADD
條件判斷 : IF(expr,v1,v2) / IFNULL(v1,v2)
多表查詢
內連接
隱式內連線 : select * from A,B where 連線條件
明確內連線 : select * from A inner join B on連線條件
外連接
左外連接
select * from A left join B on連線條件
右外連接
select * from A right join B on連線條件
儲存引擎
最佳化
設計
選擇合適的儲存引擎 , 適當的欄位類型 , 遵循範式(反範式設計)
功能:索引,緩存,分庫分錶。
架構:主從複製,讀寫分離,負載平衡。 mycat / shardingjdbc
合理SQL: 測試,經驗
MYSQL超大分頁怎麼處理 ?
索引
01-知道MYSQL索引嘛 ?
02-你所知道的Mysql有哪些索引 ?
03-索引的優點和缺點 知道嘛 ?
04-索引怎麼儲存的知道嘛 ?
05-B樹和B 樹有什麼差別 ?
06-知道什麼是非聚集索引 (非聚集索引)嘛 ?
主鍵索引
普通索引
07-知道什麼是聚集索引(叢集索引)嘛 ?
主鍵索引
輔助索引
08-在一個非主鍵欄位上建立了索引, 想要根據該欄位查詢到資料, 需要查詢幾次 ?
09-使用UUID作為資料庫的主鍵, 是否合適 ?
10-知道什麼是回表查詢嘛 ?
11-知道什麼是覆蓋索引嘛 ?
12-知道什麼是左前綴原則嘛 ?
13-什麼情況下索引會失效 ?
14-如果一條SQL語句執行很慢 , 如何找到慢的原因 ?
15-Explain查看SQL執行計劃有哪些常用參數 ?
id
select_type
table
type
key
Extra
…
16-你們使用索引是越多越好嘛 ?
鎖
01-什麼是鎖? MySQL 中提供了幾類鎖?
02-什麼是死鎖 , 什麼情況下會產生死鎖 ?
03-如何處理死鎖 ?
04-如何查看死鎖 ?
05-如何避免死鎖?
06-InnoDB 預設是如何對待死鎖的?
07-什麼是全域鎖?它的應用場景有哪些?
08-什麼是共享鎖?
09-什麼是排它鎖?
10-InnoDB 儲存引擎有幾種鎖定演算法?
11-你在開發過程中有對MYSQL加鎖嘛 ?
事務
01-事務的ACID知道嘛 ?
02-事務有哪幾種隔離等級呢?可以詳細談談嗎?
03-不考慮事務的隔離等級會有什麼問題
04-MYSQL的預設隔離等級是什麼知道嘛 , 如何調整隔離等級 ?
05-什麼是MVCC?
06-MVCC原理知道嘛 ?
07-MySQL 事務實作原理是什麼?
SSM框架
Spring
01-什麼是Spring框架?
02-談談自己對Spring IOC的認識
03-談談自己對AOP的理解
04-Spring AOP和AspectJ AOP有什麼差別?
05-Spring中的單例bean的線程安全問題了解嗎?
06-Spring中的bean生命週期?
07-Spring 框架中都用到了哪些設計模式?
08-你用到Spring中的哪些註解 ?
@Controller : 作用在控制器上
@Service : 作用在業務層類別上
@Repository : 作用在資料存取層類別上
@Componet : 作用在類別上
@Bean : 作用在方法上宣告Bean對象
@Scope : 聲明@Bean的作用範圍 (單例/多例)
@Autowired : 按類型注入Bean
@Resource : 按名稱注入Bean
@Qualifier : 多個類型相同情況下, 指定按名稱注入的名稱
@PropertiesSource : 載入設定文件
@Import : 匯出其他的設定類
@Configration : 標註在組態類別上
@ConfigrationProperties : 批次載入設定檔配置
@Transational : 事務支撐
@EnableGlobalTransational : 開啟事務支撐
@EnableAspectJProxy : 開啟代理程式支持
@Aspect : 聲明切面
@Before : 標註前通知
@After : 標註最終通知
@Around : 標註環繞通知
@AfterThrowing : 標註異常通知
@AfterReturing : 標註後置通知
@PointCut : 標註方法, 宣告切入點表達式
09-Spring事務管理的方式有幾種?
10-Spring事務中的隔離等級有哪幾種?
11-Spring中什麼時候 @Transactional會失效
12-說一下Spring的事務傳播行為 ?
13-Spring中的事務是如何實現的 ?
14-使用@Autowired註解的自動組裝過程是怎樣的?
15-spring 自動組裝 bean 有哪些方 式?
16-Spring支援的幾種bean的作用域 Scope ?
SpringMVC
01-什麼是Spring MVC ?簡單介紹下你對springMVC的理解?
02-描述SpringMVC的工作流程
03-Spring MVC常用的註解有哪些?
@RestController : @Controller和@ResponseBody的組合註解
@RequestMapping : 介面請求映射
@GetMapping : GET請求方式映射
@PutMapping : PUT請求方式映射
@PostMapping : PUT請求方式映射
@DeleteMapping : DELETE請求方式映射
@RequestBody : 接收請求體資料,JSON會自動轉對象
@ResponseBody : 回應資料自動轉JSON
@RequestParam : 接收請求參數
@Cookie : 接收請求中的cookie
@RequestHeader : 接收請求頭
@PathVariable : 宣告路徑變數
04-在瀏覽器輸入地址到伺服器回應資料 , 整個過程知道嘛 ?
Mybatis
01-有沒有了解Mybatis的工作原理 ?
02-#{}和${}有什麼差別 ?
03-在mapper中如何傳遞多個參數 ?
04-mybatis映射檔中用到哪些標籤
select : 查詢標籤
update : 更新標籤
delete : 刪除標籤
insert : 插入標籤
where : 類似SQL語句的where
if : 動態SQL對條件進行判斷
foreach : 遍歷迴圈 , 拼接SQL , 一般用於批次處理
set : 類似SQL語句中 的set關鍵字
resultMap : 結果集映射標籤
05-mybatis如何實作多表查詢 ?
06-foreach標籤哪些屬性
collection : 指定遍歷的集合, 如果遍歷的是陣列就是array , 遍歷的是list集合就是list , 遍歷的是物件或Map的集合屬性就是物件屬性名稱或map的key
item : 遍歷的每一項
index : 遍歷過程中的索引
open : 字串拼接前綴
separator : 分隔符
close : : 字串拼接後
07-Mybatis如何取得產生的主鍵
08-當實體類別中的屬性名稱和表格中的欄位名稱不一樣 ,怎麼辦
09-使用MyBatis的mapper介面呼叫時有哪些要求?
10-Dao介面裡的方法,參數不同 時,方法能重載嗎 ?
11-Mybatis是如何進行分頁的?分頁插件的原理是什麼?
12-Mybatis是否支援延遲載入?如果支持,它的實現原則是什麼?
13-Mybatis的一級、二級快取 ?
Mybatis-Plus
01-使用Mybatis-Plus的過程中多表查詢如何做 ?
02-Mybatis是如何實作實體類別和資料庫表映射的 ?
03-Mybatis-Plus自動填入用過嘛 ?
微服務
SpringBoot
01-SpringBoot自動配置的原理是什麼?
02-SpringBoot 配置載入順序?
03-spring boot初始化環境變數流程?
04-運行 SpringBoot 有哪幾種方式?
05-SpringBoot 常用的 Starter 有哪些?
spring-boot-starter-web
spring-boot-starter-jdbc
mybatis-spring-boot-starter
spring-boot-starter-test
mybatis-plus-spring-boot-starter
spring-boot-starter-data-redis
spring-boot-starter-data-elasticsearch
spring-boot-starter-data-mongodb
spring-boot-starter-amqp
spring-cloud-starter-openfeign
spring-cloud-starter-alibaba-nacos-discovery
.....
06-SpringBoot、Spring MVC和Spring有什麼差別?
07-Spring Boot的核心註解是哪一個?他由哪幾個註解組成的?
08-Spring Boot 支援哪些日誌框架?推薦和預設的日誌框架是哪個?
09-Spring Boot 提供了哪些核心功能?
10-Spring Boot 有哪些配置方式?
11-Spring Boot 有哪幾種讀取配置的方式?
12-Jetty 伺服器用過嘛 , 如何將內嵌伺服器換成 Jetty ?
SpringCloud
01-什麼是 Spring Cloud ?
02-你們專案中使用的SpringCloud和SpringCloudAlibaba是什麼版本
03-你們專案中用到Spring Cloud 有哪些元件?
註冊中心/配置中心 Nacos
負載平衡 Ribbon
服務調用 Feign
服務保護 sentinel
服務網關 Gateway
.....
04-你知道Spring Cloud 和 Spring Boot 的差別和關係嗎?
Nacos
01-Nacos作為配置中心的原理了解嘛 ?
02-Nacos如何實現環境隔離 , namespace知道嘛 ?
03-什麼是Nacos服務分級儲存模型 ?
04-Nacos如何實現服務的權重配置 ?
05-Nacos中註冊的服務實例類型有哪些 ?
06-你知道Eureka嘛 ? Nacos和Eureka有什麼差別 ?
07-你們專案中的設定檔如何管理的 ?
08-專案啟動的時候是先載入本地檔案還是Nacos中的檔案 ?
09-如何實現配置的熱更新 , 配置改變的情況下不修改源碼即可實現配置的更新 ?
Ribbon
01-Ribbon是如何實現負載平衡的 ?
02-Ribbon支援的負載平衡策略有哪些 ?
03-Ribbon預設的負載平衡策略是哪一個 ? 如何修改Ribbon的負載平衡策略 ?
04-了解如何自訂負載平衡策略嘛 ?
Feign
01-什麼是Feign?
02-Feign的服務呼叫和Dubbo有什麼差別 ?
03-使用Feign呼叫服務過程中超時怎麼辦 ?
04-使用Feign進行遠端呼叫, 如何實現負載平衡 ?
05-如何提高Feign的服務呼叫效率 ?
Gateway
01-在你們的專案中用到了網關的哪些功能 ?
路由
跨域
鑑權
限流
02-你在開發過程中常使用的路由斷言有哪些 ?
Path : 根據請求路徑匹配
Before/After : 依時間路由 , 一般用於新版本上線
Header : 根據請求頭路由, 一般用戶灰階發布
03-你們在開發中常用到的過濾器有哪些 ?
AddRequestHeader : 新增請求頭 , 使用者sentinel黑白名單
RequestRateLimiter : 限流配置
StripPrefix : 取消路徑前綴
04-有沒有使用過網關的全域過濾器 ?
Sentinal
01-了解服務雪崩嘛 ?
02- 你有了解如何解決雪崩問題嗎 ?
03-了解Hystrix嘛, Sentinal和Hystrix有什麼差別 ?
04-你們專案中是如何使用Sentinal的 ?
05-sentinel支撐的流控模式有哪些 ?
06-sentinel支援的流控效果有哪些 ?
07-sentinel是否可以實現對指定熱點資料存取限流 ?
08-sentinel中如何對一個普通的方法限流 ?
09-sentinel斷路器知道嘛 ? 他是怎麼工作的 ?
10-sentinel什麼情況下會觸發熔斷降級 ?
11-sentinel限流底層是透過什麼機制實現的 ?
12-sentinel如何實現對存取來源的控制 ?
13-sentinel中配置的規則是如何儲存的 ? 重啟之後還生效嘛 ?
Redis
01-Redis中有哪些資料結構(類型) ?
02-Redis 和 Memcached 的差別有哪些?
03-為什麼 Redis 單線程模型也能效率這麼高?
04-Redis 有幾種持久化方式?如何選擇 ?
05-Redis支援事務嗎 ?
06-Redis 有幾種數據「過期」策略?
07-Redis 有哪幾種數據「淘汰」策略?
08-如果有大量的 key 需要設定同一時間過期,一般需要注意什麼?
09-Redis 叢集都有哪些方案?
10-什麼是 Redis 主從同步?
11-說說 Redis 哈希槽的概念?
12-Redis Cluster 的主從複製模型是怎樣的?
13-Redis Cluster 會有寫入操作遺失嗎?為什麼?
14-Redis 有哪些重要的健康指標?
15-假如 Redis 裡面有 1 億個 key,其中有 10w 個 key 是以某個固定的已知的前綴開頭的,如果將它們全部找出來?會有聲明問題
16-使用Redis統計網站的UV(獨立訪客數),該怎麼做?
17-Redis中的大key怎麼處理?
18-緩存雪崩(快取失效)了解嘛 ?
19-緩存穿透了解嘛 ?
20-緩存擊穿了解嘛 ?
21-快取並發了解嘛 ?
ElasticSearch
原理
查詢方式
分片
路由
腦裂
深度搜尋
RabbitMQ
RabbitMQ工作模式
死信交換機
延遲隊列
惰性隊列
可靠性保證
Kafka
工作流程
相關概念
可靠性保證
其他
xxl-job
fastdfs
環信
阿里雲盾安全