2021 最新一次 Java 面试,快手三面一轮游,如今已拿意向书
ArrayList 和 linkedList 的区别?
堆是怎么存储的,插入是在哪里?
HashMap 和 HashTable 的区别?讲一下 hashMap 原理。hashMap 可以并发读么?并发写会有什么问题?
集合类存放于 Java.util 包中, 主要有几种接口?
Array 与 ArrayList 有什么不一样?简单介绍下 ArrayList 怎么实现,加操作、取值操作,什么时候扩容?
说说 ConcurrentHashMap?头插法还是尾插法?扩容怎么做?
集合在迭代的过程中,插入或删除数据会怎样?
3 并发
notify()和 notifyAll()有什么区别?
volatile 是什么?可以保证有序性吗?
为什么 wait, notify 和 notifyAll 这些方法不在 thread 类里面?
SynchronizedMap 和 ConcurrentHashMap 有什么区别?
什么是线程安全?Vector 是一个线程安全类吗?
线程进程和线程的区别?并行和并发的区别?了解协程么?进程间如何通信:进程 A 想读取进程 B 的主存怎么办?线程间通信?线程的生命周期有哪些状态?怎么转换?wait 和 sleep 有什么区别?什么情况下会用到 sleep?怎么停止线程?怎么控制多个线程按序执行?
说说自己是怎么使用 synchronized 关键字,在项目中用到了吗?synchronized 关键字最主要的三种使用方式
为什么要用 join()方法?
什么是多线程中的上下文切换?
死锁与活锁的区别,死锁与饥饿的区别?
Java 中用到的线程调度算法是什么?
什么是原子操作?在 Java Concurrency API 中有哪些原子类(atomic classes)?
什么是阻塞队列?阻塞队列的实现原理是什么?如何使用阻塞队列来实现生产者-消费者
模型?
AQS 了解 AQS 么?讲讲底层实现原理 AQS 有那些实现?讲讲 AtomicInteger 的底层实现
为什么我们调用 start()方法时会执行 run()方法,为什么我们不能直接调用 run()方
法?
Java 中你怎样唤醒一个阻塞的线程?
什么是线程组,为什么在 Java 中不推荐使用?
4 IO
IO 这块我不熟,没有多讲
了解 NIO 么?讲讲
NIO 与 BIO 有什么区别?
了解 Netty 原理么
JVM
1 内存与 GC
GC 是什么?为什么要有 GC?
jvm 内存区域分布?gc 发生在哪些部分?
你能保证 GC 执行吗?
怎么获取 Java 程序使用的内存?堆使用的百分比?
介绍一下垃圾回收过程。
垃圾回收算法的了解。现在用的什么回收算法?
什么时候会触发 FullGC
现在使用的什么垃圾回收器?知道哪些?讲讲 G1
容器的内存和 jvm 的内存有什么关系?参数怎么配置?
2 异常与调优
线上有什么 jvm 参数调整?
oom 问题排查思路
线上问题排查,突然长时间未响应,怎么排查,oom
cpu 使用率特别高,怎么排查?通用方法?定位代码?cpu 高的原因?
频繁 GC 原因?什么时候触发 FGC?
怎么获取 dump 文件?怎么分析?
3 类加载器
怎么实现自己的类加载器?
类加载过程?
初始化顺序?
Spring
不同版本的 Spring Framework 有哪些主要功能?
讲一下 ioc、aop
ioc 怎么防止循环依赖
aop 的实现原理、动态代理过程
区分 BeanFactory 和 ApplicationContext?
spring bean 容器的生命周期是什么样的?
@Autowired 注解有什么用?
使用 Spring 访问 Hibernate 的方法有哪些?
Spring 处理请求的过程?
Redis
为什么要用 redis /为什么要用缓存(高性能、高并发)
redis 常见数据结构以及使用场景分析(String、Hash、List、Set、Sorted Set)
Redis 常见异常及解决方案(缓存穿透、缓存雪 《一线大厂 Java 面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》无偿开源 威信搜索公众号【编程进阶路】 崩、缓存预热、缓存降级)
分布式环境下常见的应用场景(分布式锁、分布式自增 ID)
Redis 集群方案应该怎么做?都有哪些方案?
Redis 集群的主从复制模型是怎样的?
redis 持久化机制(怎么保证 redis 挂掉之后再重启数据可以进行恢复)
如何解决 Redis 的并发竞争 Key 问题?
如何保证缓存与数据库双写时的数据一致性?
redis 的 zset 的使用场景?底层实现?为什么要用跳表?
MySQL
事务的并发?事务隔离级别,每个级别会引发什么问题,MySQL 默认是哪个级别?
MySQL 的 MyISAM 与 InnoDB 两种存储引擎在,事务、锁级别,各自的适用场景?
有哪些锁(乐观锁悲观锁),select 时怎么加排它锁?
sql 查询语句确定创建哪种类型的索引?如何优化查询?
什么是临时表,临时表什么时候删除?
mysql 脏页?
分库分表有哪些策略?怎么保证 id 唯一?
非关系型数据库和关系型数据库区别,优势比较?
数据库的读写分离、主从复制,主从复制分析的 7 个问题?
MySQL 都有什么锁,死锁判定原理和具体场景,死锁怎么解决?
数据库崩溃时事务的恢复机制(REDO 日志和 UNDO 日志)?
对 uuid 的理解?知道哪些 GUID、Random 算法?
主键选随机 id、uuid 还是自增 id?为什么?主键有序无序对数据库的影响?
主从复制的过程?复制原理?怎么保证强一致性?
Kafka
生产者和消费者的命令行是什么?
Kafka 怎么保证数据可靠性?
讲讲 kafka 维护消费状态跟踪的方法
为什么需要消息系统,mysql 不能满足需求吗?
Kafka 判断一个节点是否还活着有那两个条件?
Kafka 与传统 MQ 消息系统之间有三个关键区别?
kafka 分布式(不是单机)的情况下,如何保证消息的顺序消费?
kafka 如何不消费重复数据?比如扣款,我们不能重复的扣
网络
--
tcptcp 有哪些机制确保可靠性?拥塞控制怎么实现?close_wait 太多怎么处理?为什么会出现这种情况?
讲讲三次握手,四次挥手?
keepalive 有什么用?Https 原理?知道哪些 http 状态码有哪些?http 有哪些请求方法?put、post 实现上有什么区别?
前后端分离与不分离的区别?各有什么优缺点?
常见 web 攻击有哪些?了解 csrf 攻击么?
nginx 达到上限了怎么办?怎么对 nginx 负载均衡?dns?
nginx 负载均衡有哪些算法?各自有什么优缺点?
restful 的作用?有哪些优点和缺点?
什么是 cdn?header 中涉及到缓存的字段有哪些?cookie session 介绍一下 html 页面,怎么与后端交互?流程是什么?涉及到哪些组件?http 协议,报文格式?
设计模式
什么是设计模式?你是否在你的代码里面使用过?
Java 中什么叫单例设计模式?请用 Java 写出线程安全的单例模式
在 Java 中,什么叫观察者设计模式?
举一个用 Java 实现的装饰模式(decorator design pattern) ?它是作用于对象层次还是类层次?
评论