1.请你说说Java的集合有哪几种?请你说说常用集合类的底层原理
2.抽象类与接口有什么区别?工作中你怎么使用的
3.谈谈设计模式,你工作中用到的设计模式有哪些?
4.浏览器请求一个url,整个流程发生什么?请你谈谈这个流程中DispatcherServlet的作用
5.请你谈谈堆AOP的理解?
6.在Spring中IOC(控制反转)的作用?
7.解释一下bean的生命周期?
8.Spring是怎么解决循环依赖的?为什么要三级缓存,二级可以吗?
9.说说事物的隔离级别?
10.@Transactionoal失效的场景?Spring 事务实现方式 ?
@transaction应用在非public修饰的方法上
@Transactional 注解属性 propagation 设置错误:
@Transactional 注解属性 rollbackFor 设置错误
同一个类中方法调用,导致 @Transactional 失效
11.MyBatis中,#{}和${}的区别是什么 ?
12.MyBatis Plus你用过吗?与MyBatis有什么不同
13.Xml映射文件你用过哪些标签?若查询指定多个id的数据需要使用什么标签,或批量插入数据时使用的标签
14.请你说说Spring,SpringBoot,Spring Cloud的区别?
15.请你讲讲@SpringBootApplication核心注解
16.SpringBoot如何实现全局异常处理?
@ControllerAdvice + @ExceptionHandler
17.MySQL数据库引擎有哪些?说说InnoDB与MyISAM的区别
18.数据库的四大特性?
19.请你讲讲MySQL索引的数据结构?为什么用B+树作为索引
20.讲讲索引的最左匹配原则?索引失效的情况
21.在系统中发现有慢sql,你应该从哪几些地方优化?
explain查看执行计划,是否正常走索引
是不是表数据量过大,要不要进行表的拆分或分库
是不是表的关联查询过多,一般最多三四个表做关联查询
22.sql优化的手段有哪些?
23.大表的分页查询你会怎么实现?
24.在设计时,什么情况下会使用索引?
25.请你讲讲JVM的内存模型?
26.什么时候会触发Major GC?
27.JVM中类的加载机制?有哪几类加载器?
类加载器包括:根加载器(BootStrap)、扩展加载器(Extension)、系统加载器(System)和用户自定义类加载器(java.lang.ClassLoader的子类)
28.JVM垃圾回收时,是怎么判断哪些对象需要回收的?
29.你知道哪些垃圾收集算法?
标记 -清除算法、复制算法、标记-压缩算法
我们常用的垃圾回收器一般都采用分代收集算法:“分代收集”(Generational Collection)算法,把Java堆分为新生代和老年代,这样就可以根据各个年代的特点采用最适当的收集算法
30.JVM重用的调优工具有哪些?
jdk自带监控工具:jconsole和jvisualvm,第三方有:MAT(Memory Analyzer Tool)、GChisto
31.你知道哪些JVM性能调优参数?
[堆栈内存相关]
[垃圾收集器相关]
[辅助信息相关]
32.什么是逃逸分析? 对象一定分配在堆中吗?
不一定的,JVM通过「逃逸分析」,那些逃不出方法的对象会在栈上
分配。
逃逸分析的好处:
33.什么是STW?
34.说一说JVM有哪些垃圾收集器?
35.volatile关键字的作用?是怎么保证可见性、防止指令重排的
36.怎么保证多线程的原子性?
37.原子包装类是怎么保证原子性的?
CAS -> Unsafe -> CAS底层思想 -> ABA -> 原子引用更新 -> 如何规避ABA问题->时间戳原子引用AtomicStampedReference
关键字:CAS:unsafe+内存偏移量offset
38.怎么保证多线程情况下单例模式是线程安全的?
39.ArrayList集合线程不安全问题的解决方案?
40.请你讲讲synchronized关键字与ReentrantLock的区别?
41.怎么实现线程间的通信?
42.创建线程有几种方式?Runable接口与Callable接口的区别,怎么使用Callable接口创建线程,在Thread构造方法中,有Runable参数,而没有Callable参数来创建线程?
关键字:Runable接口有实现类FutureTask(Callable callable)
43.为什么要用线程池?请你讲讲创建线程池ThreadPoolExecutor的7大参数,有几大拒绝策略?
44.请你讲讲JUC的辅助类?
45.sleep()和wait()的区别?
sleep():Thread类,cpu阻塞
wait():Object类,失去cpu执行权
46.线程池中submit()和execute()方法的区别?
47.请你讲讲对乐观锁与悲观锁的理解?并用在工作中遇到的锁进行举例
48.工作中你使用过Redis吗?为什么要用Redis,Redis有哪些优点?
49.Redis持久化方式有哪些?它们有什么区别?
RDB机制:数据集快照,某个时间点持久化
AOF机制:所有的命令行记录以 Redis 命令请求协议的格式完全持久化存储
50.Redis有哪5大数据类型?它们有哪些使用场景
51.讲讲缓存穿透、缓存雪崩、缓存击穿?以及怎么避免这些问题
52.在工作中,你是怎么实现分布式锁的?
53.你知道哪些分布式事务解决方案?
54.分布式ID生成有哪些方案?
55.说说TCP/IP的网络模型
56.请你讲一讲TCP协议的三次握手与四次挥手?为什么要三次握手,两次不行吗?
57.TCP是如何保证可靠性的?
58.Linux你熟悉吗?你常用的命令有哪些?
59.Nacos、Eureka和zookeeper都可以提供服务注册与发现的功能,请说说三个的区别?
60.什么是服务熔断?什么是服务降级?
61.Sentinel怎么做流量控制?
62.为什么要使用MQ?Kafka、ActiveMQ、RabbitMQ、RocketMQ 都有什么区
别?
63.如何保证消息的可靠传输?如果消息丢了怎么办?
64.如何解决消息队列的延时以及过期失效问题?消息队列满了以后该怎么处理?有几百万消息持续积压几小时,说说怎么解决?
1.你用过Vue.js吗?请你简单说说它的MVVM思想
2.你了解Vue页面加载的大概的一个生命周期吗?
3.父子组件怎么传值?
4.怎么实现对象或数组的深拷贝?
5.让两个div按比例显示在同一行怎么实现?
6.怎么阻止点击事件向上冒泡?
7.v-if与v-show有什么区别?
8.vue中如何实现同步请求?