Java面试知识点路线
2023-04-11 19:12:58 0 举报
AI智能生成
自我复习
作者其他创作
大纲/内容
基础
I/O<br>
IO 密集=NCPU*2 是怎么计算出来?
I/O 模型有哪几种?
I/O 多路复用实现方式有哪些?
集合
Map
HashMap 的扩容机制是怎样的?
HashMap 的底层数据结构是怎样的 ?
ConcurrentHashMap 的存储结构是怎样的?
用过ConcurrentHashMap,讲一下他和 HASHTABLE 的不同之处?
ConcurrentHashMap 1.7 与 1.8 区别?
ConcurrentHashMap线程安全的具体实现方式是怎样的?
HashMap 的长度为什么是 2 的幂次方?
HashMap 和 ConcurrentHashMap 的区别
如果使用 OBJECT 作为 HashMap 的 KEY,应该怎么办呢?
为什么 HashMap 中 String、Integer 这样的包装类适合作为 K?
HashMap 结构,线程不安全举个例子?
SynchronizedMap 和 ConcurrentHashMap 有什么区别?
List
ArrayList和 LinkedList 的区别在哪里?
Array 和 ArrayList 有何区别?<br>
Arrays.asList 获得的 List 应该注意什么?
CopyOnWriteArrayList 可以用于什么应用场景?
Set
HashSet 如何检查重复?
TreeMap 和 TreeSet 在排序时如何比较元素?Collections 工具类中的 SORT()方法如何比较元素?
比较 HashSet、LinkedHashSet 和 TreeSet 三者的异同
如何选用集合?
说说 LIST, SET, QUEUE, MAP 四者的区别?<br>
Comparable 和 Comparator 的区别?
无序性和不可重复性的含义是什么
什么是哈希冲突?<br>
你知道 FAIL-FAST 和 FAIL-SAFE 吗?
试比较 QUEUE 与 DEQUE 的区别<br>
HashMap 和 HashTable 的区别?
COLLECTION 和 COLLECTIONS 有什么区别?
JAVA 常用集合及特点?
线程池
线程池大小如何设置?
什么是线程池? 为什么要使用它?
创建线程的三个方法是什么?
线程池有哪几种创建方式?
线程池参数有哪些?
线程池拒绝策略有哪些?
你认为对线程池的核心参数实现自定义可配置,三个核心参数是?
ThreadpoolExecutor线程池,CorepoolSize=5, MaximumPoolSize=10,Queuecapacity=10,有 20 个耗时<br>任务 交给这个线程池执行,线程池会如何执行这 20 个任务?
线程/进程
多线程
什么时候用多线程、为什么要设计多线程?
多线程越多效率越高吗?
多线程会产生哪些并发问题 ?
JAVA 怎么获取多线程的返回值?
多线程越多效率越高吗?
多线程会产生哪些并发问题 ?
什么是多线程中的上下文切换?
线程与进程的区别?
描述 ThreadLocal(线程本地变量)的底层实现原理及常用场景。
了解线程 & 进程的区别吗?
JAVA 进程间的几种通信方式?
请描述线程的生命周期,它们之间如何切换?
什么情况线程会进入 WAITING 状态?
孤儿进程和僵尸进程有什么区别?
在 JAVA 中守护线程和本地线程区别?
什么是线程组,为什么在 JAVA 中不推荐使用?
为什么我们调用 START()方法时会执行 RUN() 方法,为什么我们不能直接调用 RUN()方法?<br>
Notify()和 Notifyall()有什么区别?
JAVA 如何实现多线程之间的通讯和协作?
一个线程运行时发生异常会怎样?
如何在两个线程间共享数据?
Lambda
Lambda 表达式是啥?优缺点?
讲一下Lambda的表达式作用域
异常
简述下 JAVA 的异常体系。
EXCEPTION 和 ERROR 有什么区别
代理
静态代理和动态代理的区别,什么场景使用?
动态代理是基于什么原理
并发
为什么使用 Executor 框架?<br>
Executor 和 Executors 的区别?<br>
什么是原子操作?在 JAVA CONCURRENCY API 中有哪些原子类(ATOMIC CLASSES)?
Java Concurrency API 中的 Lock 接口(Lock InterFace)是什么?对比同步它有什么优势?
什么是阻塞队列?阻塞队列的实现原理是什么?如何使用阻塞队列来实现生产者-消费者模型?
什么是 Callable 和 Future?
什么是并发容器的实现?<br>
多线程同步和互斥有几种实现方法,都是什么?
什么是竞争条件?你怎样发现和解决竞争?
什么是不可变对象,它对写并发应用有什么帮助?
Volatile 有什么用?能否用一句话说明下 Volatile 的应用场景?
什么叫线程安全?Servlet 是线程安全吗?
什么是 ThreadLocal 变量?
反射
说说你对 JAVA 反射的理解。<br>
泛型
谈谈你对泛型的理解?
JAVA 中实现多态的机制是什么?<br>
如何将一个 JAVA 对象序列化到文件里?<br>
说说你对 JAVA 注解的理解。<br>
String 为什么要设计成不可变的?<br>
数组和链表的区别?当数组内存过大时会出现什么问题?链表增删过多会出现的什么问题?
说下类加载器与类加载?加载的类信息放在哪个区域?<br>
Final、Finally、Finallize?Finally 是在 Return 之前执行还是之后?Finally 块里的代码一定会执行吗?
哈希算法解决哈希冲突方式有哪些?
什么是双亲委派机制,它有什么作用?
锁
乐观锁和悲观锁的理解及如何实现,有哪些实现方式?
互斥锁(MUTEX)和自旋锁(SPINLOCK)分别在什么场景使用?
什么是可重入锁( ReentrantLock)?
一个对象的两个方法加Synchronized,一个线程进去 Sleep,另一个线程可以进入到另一个方法吗?
描述 Synchronized、ReentrantLock的区别 ?
死锁与活锁的区别,死锁与饥饿的区别?
怎么检测一个线程是否拥有锁?
Jvm
请问 JDK 与 JVM 有什么区别?
OracleJDK 与 OpenJDK 有什么区别?
开发中使用哪个版本的 JDK?生产环境呢? 为什么这么选?<br>
什么是 JAVA 字节码?<br>
字节码文件中包含哪些内容?<br>
什么是常量?<br>
你怎么理解常量池?<br>
JVM 的运行时数据区有哪些?<br>
什么是堆内存?<br>
堆内存包括哪些部分?<br>
什么是非堆内存?<br>
什么是内存溢出?<br>
什么是内存泄露?
两者有什么关系?
常用的 JVM 启动参数有哪些?<br>
设置堆内存 XMX 应该考虑哪些因素?<br>
假设物理内存是 8G,设置多大堆内存比较合适?<br>
设置的值与 JVM 进程所占用的内存有什么关系?<br>
怎样开启 GC 日志?<br>
使用过哪些 JVM 相关的工具?<br>
查看 JVM 进程号的命令是什么?<br>
怎么查看剩余内存?<br>
查看线程栈的工具是什么?<br>
你碰到过哪些 JVM 问题?
栈和队列,举个使用场景例子?
JVM 如何加载类的?
栈帧的大小什么时候确定?
栈会溢出吗?什么时候溢出?方法区会溢出吗?
垃圾回收
JAVA8 默认使用的垃圾收集器是什么?
JAVA11 的默认垃圾收集器是什么?<br>
常见的垃圾收集器有哪些?<br>
什么是串行垃圾收集?<br>
什么是并行垃圾收集?<br>
什么是并发垃圾收集器?<br>
什么是增量式垃圾收集?<br>
G1 收集器有哪些特点?
什么是年轻代?<br>
什么是 GC 停顿(GC PAUSE)?<br>
GC 停顿与 STW 停顿有什么区别?
你有哪些手段来排查 OOM 的问题?
哪些情况下的对象会被垃圾回收机制处理掉?
数据库
Mysql
三大范式
存储引擎
MYISAM 与 INNODB 区别
MYISAM 表类型将在哪里存储,并且还提供其存储格式?
MYSQL 为什么 INNODB 是默认引擎?
索引
MYISAM 索引与 INNODB 索引的区别?<br>
什么是索引?
索引有哪些优缺点?<br>
索引有哪几种类型?
创建索引时需要注意什么?
使用索引查询一定能提高查询的性能吗?为什么?
什么是最左前缀原则?什么是最左匹配原则
什么是聚簇索引?何时使用聚簇索引与非聚簇索引
MYSQL 索引底层结构为什么使用 B+树?
B+ 树的叶子节点链表是单向还是双向?
索引失效的情况有哪些?
锁
MYSQL 中有哪几种锁?
事务
MYSQL 中 INNODB 支持的四种事务隔离级别名称,以及逐级之间的区别?
MVCC 是什么?它的底层原理是什么?
UNDO LOG 具体怎么回滚事务 ?
Binlog
Mysql的 Binlog有有几种录入格式?分别有什么区别?
数据
CHAR 和 VARCHAR 的区别?
主键和候选键有什么区别?<br>
MYSQL 里记录货币用什么字段类型好?
百万级别或以上的数据如何删除
如何查询慢 SQL 产生的原因?
什么是散列表? SELECT * 和 SELECT 1?
MYSQL 的主从复制了解吗?
幻读是什么,用什么隔离级别可以防止幻读?
介绍下 MYSQL 的主从复制原理?产生主从延迟的原因?
Oracle
MongoDB
Redis
什么是 Redis?
Redis的数据类型?
使用 REDIS 有哪些好处?<br>
Redis 相比 MEMCACHED 有哪些优势?
Redis是单进程单线程的?<br>
Redis的持久化机制是什么?各自的优缺点?<br>
Redis常见性能问题和解决方案<br>
Redis过期键的删除策略?<br>
Redis 的回收策略(淘汰策略)?<br>
为什么Redis需要把所有数据放到内存中?
Redis的同步机制了解么?<br>
PIPELINE 有什么好处,为什么要用 PIPELINE?<br>
是否使用过Redis 集群,集群的原理是什么?<br>
Redis集群方案什么情况下会导致整个集群不可用?<br>
Redis支持的 JAVA 客户端都有哪些?官方推荐用哪个?<br>
JEDIS 与 REDISSON 对比有什么优缺点?<br>
说说Redis希槽的概念?<br>
Redis集群的主从复制模型是怎样的?<br>
Redis集群会有写操作丢失吗?为什么?<br>
Redis集群之间是如何复制的?<br>
Redis集群最大节点个数是多少?<br>
Redis集群如何选择数据库?<br>
怎么理解Redis事务?<br>
Redis事务相关的命令有哪几个?<br>
Redis KEY 的过期时间和永久有效分别怎么设置?<br>
Redis 如何做内存优化?<br>
Redis 回收进程如何工作的?<br>
都有哪些办法可以降低Redis的内存使用情况呢?<br>
Redis的内存用完了会发生什么?<br>
一个 Redis实例最多能存放多少的 KEYS? LIST、SET、SORTED SET 他们最多能存放多少元素?
MYSQL 里有 2000W 数据,Redis 中只存 20W 的数据,如何保证 Redis 中的数据都是热点数据?Redis 内存数<br>据集大小上升到一定大小的时候,就会施行数据淘汰策略。 相关知识:Redis 提供 6 种数据淘汰策略<br>
Redis 最适合的场景?<br>
假如Redis 里面有 1 亿个 KEY,其中有 10W 个 KEY 是以某个固定的已知的前缀开头的,如果将 它们全部找<br>出来?<br>
如果有大量的 KEY 需要设置同一时间过期,一般需要注意什么?<br>
使用过 Redis 做异步队列么,你是怎么用的?<br>
使用过 Redis分布式锁么,它是什么回事
谈一谈缓存穿透、缓存击穿和缓存雪崩,以及解决办法?
LRU 是什么?如何实现?
memcache
MEMCACHE 与Redis的区别都有哪些?
其他问题
谈谈你对 SQL 注入式攻击的理解?
大数据
HBase
消息队列
RabbitMQ
RabbitMQ 如何保证消息不丢失 ?
RocketMQ
Kafka
Kafka的架构说一下?
怎么保证消息是有序的?<br>
怎么保证消息不丢失?<br>
怎么解决重复消费?
为什么有 TOPIC 还要用 Patition?
为什么使用消息队列?
消息队列有什么优点和缺点?
Kafka、ActiveMQ、RabbitMQ、RocketMQ 都有什么区别,以及适合哪些场景?
如何保证消息不被重复消费?
如何保证消息消费的幂等性?<br>
如何保证消息的可靠性传输?(如何处理消息丢失的问题)
如何解决消息队列的延时以及过期失效问题?
消息队列满了以后该怎么处理?
如何保证高可用的?
如何保证顺序消费?
网络
七层网络协议
描述下 TCP 连接 4 次挥手的过程?为什么要 4 次挥手?
TCP 和 UDP 区别?
TCP/IP 协议涉及哪几层架构?<br>
客户端和服务器之间最多能建立多少个连接 ?
框架
Springcloud
Springboot
什么是Springboot?
Springboot有哪些优点?
使用Springboot 开发分布式微服务时,我们需要关注哪些问题?
Mybatis
Mybatis 如何将对象转换成 SQL?
Spring
什么是 SPRING?
AOP 底层原理
什么是 IOC 容器?
Spring 中有多少种 IOC 容器?
列举 IOC 的一些好处
什么是依赖注入?<br>
可以通过多少种方式完成依赖注入?
区分构造函数注入和 SETTER 注入
什么是 Aspect?
什么是切点
什么是通知
BEAN 容器的生命周期是什么样的?
Spring框架事务注解用什么注解?使用该注解的失效场景?
区分 BeanFactory 和 ApplicationContext
Spring 提供了哪些配置方式?
Netty
为什么要用 Netty 呢?
Netty有哪些应用场景?
Netty的优势有哪些?
Netty核心组件有哪些?分别有什么作用?
EventLoopGroup了解么?和 Eventloop啥关系?
请说下对 bootstrap和 severbootstrop的了解?
请说下 Netty线程模型?
什么是 TCP 粘包/拆包? .<br>
如何在 Netty 中解决 TCP 粘包问题?
TCP 长连接和短连接了解么?<br>
为什么需要心跳机制?Netty 中心跳机制了解么?
讲讲 Netty的零拷贝
Netty和 Tomcat的区别?
Netty发送消息有几种方式?
微服务
你对微服务是怎么理解的?
说说微服务架构的优势。
微服务有哪些特点?
单体应用、SOA 和微服务架构有什么区别?
在使用微服务架构时,你面临的挑战是什么?
服务注册和发现是什么意思?
负载平衡的意义什么?
什么是Hystrix?
什么是Netflix feign?它的优点是什么?
Springcloud断路器的作用
场景
如果 CPU 使用率突然飙升,你会怎么排查?
在生产环境 LINUX 服务器上,发现某台运行 JAVA 服务的服务器的 CPU100%,不借助任何可视化工具,怎么<br>进行问题的定位?
如果系统响应变慢,你会怎么排查?<br>
系统性能一般怎么衡量?<br>
1 亿个数据取出最大前 100 个有什么方法?
LIMIT 1000000 加载很慢的话,你是怎么解决的呢?
分布式
分布式锁
常见分布式锁的几种实现方式?
分布式服务接口的幂等性如何设计?
分布式系统中的接口调用如何保证顺序性?
说说 ZOOKEEPER 一般都有哪些使用场景?<br>
说说你们的分布式 SESSION 方案是啥?怎么做的?<br>
分布式事务了解吗?
请讲一下你对 CAP 理论的理解<br>
请讲一下你对 BASE 理论的理解<br>
请讲一下 BASE 理论的三要素<br>
请说一下对两阶段提交协议的理解
分布式与集群的区别是什么?<br>
设计模式
算法
常见排序算法和分别的复杂度?
项目管理
代码管理
Git
Svn
项目管理
maven
Gradle
Bug管理
禅道
Jira
领歌
收藏
0 条评论
下一页