基础
String、StringBuilder、StringBuffer
1、三个之间的区别
2、哪些是线程安全的
3、String为什么线程安全。内部实现
HashMap
1、扩容机制
2、多线程安全
3、HashTable、ConcurrentHashMap
深拷贝 VS 浅拷贝
1、之间的区别
- 浅拷贝:基本类型值拷贝,引用类型地址拷贝
- 深拷贝:基本类型值拷贝,引用类型,新建类,并复制值
2、深拷贝实现方式
- 序列化
- 重写clone实现 深拷贝
多线程
1、synchronized和ReentrantLock的区别
2、volatile关键字 是否能具有原子性
3、Java的内存模型
缓存一致性
1、最终一致性
2、强一致性
事务的四大特性(ACID)
并发会带来哪些问题
Explain :分析优化sql语句的关键词
最左前缀匹配原则,非常重要的原则,mysql会一直向右匹配直到遇到范围查询(>、<、between、like)就停止匹配
@RestController vs @Controller
使用哪些什么设计模式
Spring中的bean的作用域有哪些?
1.singleton:唯一bean实例,Spring中的bean默认都是单例的。
2.prototype:每次请求都会创建一个新的bean实例。
3.request:每一次HTTP请求都会产生一个新的bean,该bean仅在当前HTTP request内有效。
4.session:每一次HTTP请求都会产生一个新的bean,该bean仅在当前HTTP session内有效。
5.global-session:全局session作用域,仅仅在基于Portlet的Web应用中才有意义,Spring5中已经没有了。Portlet是能够生成语义代码(例如HTML)片段的小型Java Web插件。它们基于Portlet容器,可以像Servlet一样处理HTTP请求。但是与Servlet不同,每个Portlet都有不同的会话。
{}和${}的区别
${}:静态文本替换
{} :SQL参数占位符,会进行预编译,解析为?
rabbitMq
它常用来实现:异步处理、服务解耦、流量控制(削峰)。
如何保证消息的可靠性?
消息到MQ的过程中搞丢,MQ自己搞丢,MQ到消费过程中搞丢。
- 生产者到RabbitMQ:事务机制和Confirm机制,注意:事务机制和 Confirm 机制是互斥的,两者不能共存,会导致 RabbitMQ 报错。
- RabbitMQ自身:持久化、集群、普通模式、镜像模式。
- RabbitMQ到消费者:basicAck机制、死信队列、消息补偿机制。
消息在什么时候会变成Dead Letter(死信)?
(1)消息过期;
(2)消息超过队列长度或容量;
(3)消息被拒绝并且未设置重回队列。
Redis有哪几种数据淘汰策略?
noeviction:返回错误当内存限制达到并且客户端尝试执行会让更多内存被使用的命令(大部分的写入指令,但DEL和几个例外)
allkeys-lru: 尝试回收最少使用的键(LRU),使得新添加的数据有空间存放。
volatile-lru: 尝试回收最少使用的键(LRU),但仅限于在过期集合的键,使得新添加的数据有空间存放。
allkeys-random: 回收随机的键使得新添加的数据有空间存放。
volatile-random: 回收随机的键使得新添加的数据有空间存放,但仅限于在过期集合的键。
volatile-ttl: 回收在过期集合的键,并且优先回收存活时间(TTL)较短的键,使得新添加的数据有空间存放
其他问题
线程池变量
网络问题
linux命令
nginx