全部面试题总结
所有应该掌握的后端面试题
目录
前言
来自2022年3月的最后一天,因为已经3个月没有工作了,最近1个月整个人非常焦虑,甚至怀疑自己得了抑郁症,明明有2年多的工作经历,却因为各种原因属于失业状态,痛恨自己为什么如此害怕去面试,为什么荒废时间,晚上失眠非常严重,控制不住自己去胡思乱想。
痛定思痛,不破不立,因为每次看面试题,做项目,都只是去看,完后就容易忘得一干二净,从今天开始每天都写博客,记录我的学习,记录我的面试,也记录我的一些日常和鸡汤,从基础开始,到学完分布式的知识。
目标在我28岁生日的那一天,彻底告别抑郁,学会弹吉他,找到一份满意的工作,和我的家人去感受生活,找到一群志同道合的朋友和他们一起happy,并找到一个我爱的人。我坚信,击不倒我的,终将会使我更加强大,也希望各位珍惜时光,努力过好每一天。
一、JAVA SE基础
对多态的理解
抽象类和接口相关
Object类的方法
重写和重载
子父类构造方法、代码块和静态代码块
String、StringBuilder、StringBuffer
ArrayList和LinkedList
HashMap、HashSet和TreeSet
泛型、类型擦除
try…return…catch…finally执行顺序问题
错误和异常相关
Java8新特性
二、集合(容器)
Collection和Collections
List、Set、Map主要实现类,底层数据结构
ArryaList扩容机制
Stack和Queue
PriorityQueue的实现
三、多线程
进程和线程的区别
创建线程的方式
sleep、wait、yield、join
AQS是什么
Synchronized的理解
Volatile的理解,特性及原理
Synchronized和Lock
自旋
线程池的使用
ThreadPoolExecutor构造方法的参数
CountDownLatch、Semaphore、CyclicBarrier
三、IO流
IO流的分类
BIO、NIO、AIO
Socket编程
四、JVM
JVM分区
堆的分区、垃圾回收机制
栈中存放什么
GC算法
常见垃圾收集器
如何判断对象已经死亡(可以被回收)
对象创建过程
类加载过程
双亲委派模型
Minor GC和Full GC
内存溢出和内存泄漏,如何排查
五、设计模式
单例模式
工厂模式
代理模式
适配器模式
模板模式
原型模式
六、Spring
IOC和AOP概念、核心原理、实现
BeanFactory类
XML配置,标签
Spring解析XML的方式
配置Bean的方式
Bean的线程安全问题
属性注入的方式
Bean的作用域
ByName和ByType注入bean
@Resource和@AutoWired
Spring事务管理
Spring事务隔离级别
Spring事务传播机制
七、Spring MVC
MVC模型
Spring MVC工作流程
八、Mybatis
#{}和${}的区别
常用标签、动态sql
底层实现原理
延迟加载
九、Spring boot
常用注解
参数校验
自动装配原理
如何兼容老的Spring项目
如何兼容老的Spring项目
配置文件加载顺序
十、Mysql
ACID特性
两个引擎MyISAM和InnoDB
索引分类
索引算法,Hash、B-Tree、B+Tree
sql语句优化
并发事务带来的问题
事务隔离级别
提升数据库响应速度,分布式、读写分离、分库分表
十一、Redis
应用场景
五中数据结构
数据删除策略
内存淘汰机制
持久化机制,RDB和AOF
缓存穿透、缓存雪崩
数据库与缓存数据不一致问题
十二、消息队列
应用场景
为什么要使用消息队列
消息幂等性
消息堆积
十三、Zookeeper
应用场景
选举机制
十四、Dubbo
RPC框架
十五、Spring Cloud Alibaba
组件
为什么要使用微服务
十六、算法
数组
链表
树
排序
动态规划
总结
暂时先把这些想到的写上,后续遇到的都会补上。
目标把这些面试题彻底搞懂,理解原理,最后找到一个自己满意的offer。
每日一首歌,感谢每个夜晚还有音乐陪我入睡。
hello
hello,爸爸妈妈