Java面试提纲

项目介绍

  • 明确项目是做什么的
  • 明确项目的价值
  • 明确项目的功能
  • 项目的整体架构
  • 明确项目的技术
  • 个人在项目中承担的角色
  • 项目的优缺点
  • 项目重构的建议
  • 在项目中的技术成长

Java基础

List和Set的区别

HashSet如何保证不重复

反射机制

异常的分类和处理机制

多线程和并发

线程的几种状态

wait和sleep的区别

synchronized的实现原理以及锁优化

在静态方法与对象方法的区别

我们怎么得到所需要的信息?

HashMap是否线程安全

HashTable如何加锁

线程池的种类,区别和使用场景?

分析线程池的实现原理和线程的调度过程?

ThreadLocal原理,用的时候需要注意什么?

JVM

内存模型

从内存模型的角度解释方法调用时,

引用传递与值传递的区别

什么情况下会内存溢出

JVM垃圾回收机制

何时触发MinorGC等操作

一次完整的 GC 流程(从 ygc 到 fgc)是怎样的

各种回收算法

类的实例化顺序

数据库

mysql分页有什么优化

  • mysql的索引分类:B+,hash;什么情况用什么索引
  • 组合索引,最左原则

悲观锁、乐观锁

mysql 的表锁、行锁

事务的特性和隔离级别

排序算法

冒泡的过程,复杂度

快速排序的过程,复杂度

是否有现成的排序可以直接用

Arrays.sort实现原理和Collection实现原理

红黑树

Spring

IoC的初始化过程

Spring Bean的生命周期

Spring 如何管理事务

不同事务的传播行为有哪些

Spring 中用了哪些设计模式

还另外了解哪些设计模式

Spring 循环注入的原理

Spring 如何保证Controller并发的安全

Dubbo

Dubbo的底层实现原理和机制

Dubbo的服务请求失败怎么处理

描述一个服务从发布到被消费的详细过程

接口的幂等性的概念

zookeeper的选举策略

缓存

Redis用过哪些数据实现

Redis缓存穿透,缓存雪崩

Redis的缓存失效策略

Redis的并发竞争问题如何解决

Redis持久化的几种方式

优缺点是什么,怎么实现的

Redis集群,高可用,原理

Redis缓存分片

Redis的数据淘汰策略

Spring Boot

分布式

对分布式事务的理解

分布式系统怎么做服务治理

消息中间件如何解决消息丢失问题

列举出你能想到的数据库分库分表策略

分库分表后,如何解决全表查询的问题

Linux

Nginx

Netty

BIO、NIO和AIO

Netty 的各大组件

Netty的线程模型

TCP 粘包/拆包的原因及解决方法

前端

ajax同步异步

get vs post

Tomcat 处理的区别

jQuery dom 操作

ajax 跨域