从最开始的面试者变成现在的面试官,工作多年以及在面试中,我经常能体会到,有些面试者确实是认真努力工作,但坦白说表现出的能力水平却不足以通过面试,通常是两方面原因:
1、“知其然不知其所以然”。做了多年技术,开发了很多业务应用,但似乎并未思考过种种技术选择背后的逻辑。坦白说,我并不放心把具有一定深度的任务交给他。
2、知识碎片化,不成系统。在面试中,面试者似乎无法完整、清晰地描述自己所开发的系统,或者使用的相关技术。平时可能埋头苦干,或者过于死磕某个实现细节,并没有抬头审视这些技术。
前人已经掉过的坑,后来的同学就别再“前仆后继”了!给大家整理一份2023Java架构师面试核心知识考点,由于内容较多,以下只展示了部分面试题
这份总结内容涵盖极广,包含了7个模块14个技术栈:
JVM
JAVA集合
Java多线程并发
Java基础
spring原理
微服务
Netty 与 RPC
网络
日志
Zookeeper
Kafka
RabbitMQ
Hbase
MongoDB
Cassandra
设计模式
负载均衡
数据库
一致性算法
Java算法
数据结构
加密算法
分布式缓存
Hadoop
Spark
Storm
YARN
机器学习
云计算
JVM篇
简述一下JVM的内存模型
说说堆和栈的区别
知道类的生命周期吗?
如何判断对象可以被回收?
JVM的永久代中会发生垃圾回收么?
你知道哪些垃圾收集算法
调优命令有哪些?
对象一定分配在堆中吗?有没有了解逃逸分析技术?
多线程&并发篇
说说Java中实现多线程有几种方法
如何停止一个正在运行的线程
notify()和notifyAll()有什么区别?
volatile 是什么?可以保证有序性吗?
Thread 类中的start() 和 run() 方法有什么区别?
为什么wait, notify 和 notifyAll这些方法不在thread类里面?
Spring篇
Autowired和Resource关键字的区别?
说说你对Spring MVC的理解
谈谈你对Spring的AOP理解
Spring AOP和AspectJ AOP有什么区别?
解释一下spring bean的生命周期
解释Spring支持的几种bean的作用域?
MyBatis篇
什么是MyBatis
说说MyBatis的优点和缺点
#{}和${}的区别是什么?
当实体类中的属性名和表中的字段名不一样 ,怎么办 ?
Mybatis是如何进行分页的?分页插件的原理是什么?
Mybatis是如何将sql执行结果封装为目标对象并返回的?都有哪些映射形式?
MySQL篇
MySQL数据库引擎有哪些
说说InnoDB与MyISAM的区别
数据库的事务
索引是什么
分库分表之后,id 主键如何处理?
Redis篇
为什么要用缓存
使用 Redis 有哪些好处?
为什么 使用Redis而不是用Memcache呢?
为什么Redis单线程模型效率也能那么高?
说说Redis的线程模型
分布式篇
分布式幂等性如何设计?
简单一次完整的 HTTP 请求所经历的步骤?
说说你对分布式事务的了解
你知道哪些分布式事务解决方案?
什么是二阶段提交?
什么是三阶段提交?
文档太多了,就不一一展示了