滴滴java开发面试题_滴滴java面试重点汇总
java基礎
集合
集合分為兩大塊:java.util包下的非線程安全集合和java.util.concurrent下的線程安全集合。
List
ArrayList與LinkedList的實現和區別
Map
HashMap: 了解其數據結構、hash沖突如何解決(槌表和紅黑樹)、擴容時機、擴容時避 免rehash的優化 LinkedHashMap: 了解基本原理、哪兩種有序、如何用它實現LRU TreeMap: 了解數據結構、了解其key對魚為什么必須要實現Compare接口、如何用它實 現一致性哈希
Set
Set基本上都是由對應的map實現,簡單看看就好
常見問題hashmap如何解決hash沖突,為什么hashmap中的鏈表需要轉成紅黑樹?
hashmap什么時候會觸發擴容?
jdk1.8之前并發操作hashmap時為什么會有死循環的問題?
hashmap擴容時每個entry需要再計算一次hash嗎?
hashmap的數組長度為什么要保證是2的幕?
如何用 LinkedHashMap 實現 LRU?
如何用TreeMap實現一致性hash?
線程安全的集合
Collections.synchronized
了解其實現原理
CopyOnWriteArrayList
了解寫時復制機制、了解其適用場景、思考為什么沒有ConcurrentArrayList
ConcurrentHashMap
了解實現原理、擴容時做的優化、與HashTable對比。
BlockingQueue
了解LinkedBlockingQueue. ArrayBlockingQueuex DelayQueue. SynchronousQueue
常見問題ConcurrentHashMap是如何在保證并發安全的同時提高性能?
ConcurrentHashMap是如何讓多線程同時參與擴容?
LinkedBlockingQueuex DelayQueue是如何實現的?
CopyOnWriteArrayList是如何保證線程安全的?
并發
synchronized
了解偏向鎖、輕量級鎖、重量級鎖的概念以及升級機制、以及和ReentrantLock的區別
CAS
了解Atomiclnteger^現原理、CAS適用場景、如何實現樂觀鎖
AQS
了解AQS內部實現、及依SSAQS的同步類比如ReentrantLock. Semaphore. CountDownLatch、CyclicBarrier等的實現
ThreadLocal
了解ThreadLocal^用場景和內部實現
Thread Pool Executor
了解線程池的工作原理以及幾個重要參數的設置
常見問題synchronized 與 ReentrantLock 的區別?
樂觀鎖和悲觀鎖的區別?
如何實現一個樂觀鎖?
AQS是如何喚醒下一個線程的?
ReentrantLock如何實現公平和非公平鎖是如何實現?
CountDownLatch和CyclicBarrier的區別?各自適用于什么場景?
適用ThreadLocal時要注意什么?比如說內存泄漏?
說一說往線程池里提交一個任務會發生什么?
紋程池的幾個參數如何設置?
紋程池的非核心線程什么時候會被釋放?
如何排查死鎖?
引用
了解Java中的軟引用、弱引用、虛引用的適用場景以及釋放機制
常見問題軟引用什么時候會被釋放
弱引用什么時候會被釋放
類加載
了解雙親
常見問題雙親委派機制的作用?
Tomcat 的 classloader 結構
如何自己實現一個classloader打破雙親委派
IO
了解BIO和NIO的區別、了解多路復用機制
常見問題同步阻塞、同步非阻塞、異步的區別?
select、polk eopl啲區別?
java NIO與BIO的區別?
reactor線程模型是什么?
JVM
GC
垃圾回收基本原理、幾種常見的垃圾回收器的特性、重點了解CMS (或G1)以及一些重要 的參數
內存區域
能說清jvm的內存劃分
常見問題CMS GC回收分為哪幾個階段?分別做了什么事情?
CMS有哪些重要參數?
Concurrent Model Failure和ParNcw promotion failed什么情況下會發生?
CMS的優缺點?
有做過哪些GC調優?
為什么要劃分成年輕代和老年代?
年輕代為什么被劃分成eden、survivorg域?
年輕代為什么釆用的是復制算法?
老年代為什么采用的是標記清除、標記整理算法
什么情況下使用堆外內存?要注意些什么?
堆外內存如何被回收?
jvm內存區域劃分是怎樣的?
中間件、存儲、以及其他框架
Spring
bean的生命周期、循環依賴問題、spring cloud (如項目中有用過)、AOP的實現、 spring事務傳播
常見問題java動態代理和cglib動態代理的區別(經常結合spring一起問所以就放這里了)
spring中bean的生命周期是怎樣的?
屬性注入和構造器注入哪種會有循環依賴的問題?
Dubbo (或其他Rpc框架)
了解一個常用RPC框架如Dubbo的實現:服務發現、路由、異步調用、限流降級、失敗重試
常見問題Dubbo如何做負載均衡?
Dubbo如何做限流降級?
Dubbo如何優雅的下線服務?
Dubbo如何實現異步調用的?
RocketMq (或其他消息中間件)
了解一個常用消息中間件如RocketMq的實現:如何保證高可用和高吞吐、消息順序、重復 消費、事務消息、延遲消息、死信隊列
常見問題RocketMq如何保證高可用的?
RocketMq如何保證高吞吐的?
RocketMq的消息是有序的嗎?
RocketMq的消息局部順序是如何保證的?
RocketMq事務消息的實現機制?
RocketMq會有重復消費的問題嗎?如何解決?
RocketMq支持什么級別的延退消息?如何實現的?
RocketMq是推模型還是拉模型?
Consumer的負載均衡是怎么樣的?
Redis (或其他綏存系統)
redis工作模型、redis持久化、redis過期淘汰機制、redis分布式集群的常見形式、分布式 鎖、緩存擊穿、緩存雪崩、緩存一致性問題
常見問題redis性能為什么高?
單線程的redis如何利用多核epu機器?
redis的緩存淘汰策略?
redis如何持久化數據?
redis有哪幾種數據結構?
redis集群有哪幾種形式?
有海量key和value都比較小的數據,在redis中如何存儲才更省內存?
如何保證redis和DB中的數據一致性?
如何解決緩存穿透和緩存雪崩?
如何用redis實現分布式鎖?
Mysql
事務隔離級別、鎖、索引的數據結構、聚簇索引和非聚簇索引、最左匹配原則、查詢優化 (explain等命令)
常見問題Mysql(innondb下同)有哪幾種事務隔離級別?
不同事務隔高級別分別會加哪些鎖?
mysql的行鎖、表鎖、間隙鎖、意向鎖分別是做什么的?
說說什么是最左匹配?
如何優化慢查詢?
mysql索引為什么用的是b+ tree而不是b tree.紅黑樹
分庫分表如何選擇分表鍵
分庫分表的情況下,查詢時一般是如何做排序的?
zkzk大致原理(可以了解下原理相近的Raft算法)、zk實現分布式鎖、zk做集群master選舉
常見問題
如何用zk實現分布式鎖,與redis分布式鎖有和優缺點
HBase
HBase適用的場景、架構、merge和split、查寫數據的流程。
Storm
Storm與Map Reduce. Spark、Flink的比較。Storm高可用、消息ack機制
總結
以上是生活随笔為你收集整理的滴滴java开发面试题_滴滴java面试重点汇总的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: openjdk platform bin
- 下一篇: python入门与实践在线阅读_Pyth