高仙一面
对象一定是在堆上分配的吗?
G1和CMS垃圾回收器的区别?
线程有几种状态
加了synchronized的代码块一定会加锁吗?
Thread.sleep(0)有什么用?
分布式锁怎么实现?
不停机如何迁移数据?
如何保证数据库和缓存的一致性?
一知智能
MySQL的锁:排它锁、共享锁,适用场景
排它锁、共享锁,什么时候
MySQL行锁和表锁,update是行锁还是表锁
MySQL主从架构容灾机制,机器挂掉了是怎么处理,主从延迟了怎么处理
线上问题排查
CPU、内存过高,死循环,内存泄漏等等
Java锁的种类:悲观锁和乐观锁,以及使用场景
synchronized的原理
可重入锁的原理
探迹科技
创建线程池的方式
Jdk9、11新特性
JDK9默认G1垃圾回收器;新引入ZGC
Java内存模型
MQ如何设计能保证消息不丢失
从发送端(buffer)、服务端(acks机制、ISR机制)、消费端(关闭自动提交)
集群选举算法
RAFT协议、PAXOS协议、Zookeeper的FastLeaderElection算法
Redis选主用的什么算法?
Raft算法
订单表如何分库分表
限流算法有哪些
固定滑动窗口、动态滑动窗口、漏桶限流、令牌桶限流
探迹二面
- DDD和传统开发的区别
- 场景题:用户下单,下单成功会扣除余额和红包,如果失败了,如何保证数据一致性
- 对称加密和非对称加密的区别
茄子科技
服务可用性
redis使用什么集群,多少台机器;集群模式原理(CRC16)
500台机器有什么问题
实例之间通讯会有很大的开销,因为集群中每个节点都保存所有哈希槽与节点对应关系(Slot 映射到节点的表),以及自身的状态信息。
gossip协议广播方式,节点越多,广播风暴对于网络以及服务器压力也就越大。
虽然可以设置广播消息同步的超时时间,但是节点增多、超时时间变长之后,数据一致性的消息同步延时也会更大,出现元数据不一致的可能性也会增加。
redis 官方给的 Redis Cluster 的规模上限是 1000 个实例。
批量操作(例如mget等)成本变大
redis集群批量操作(如mget)会有什么问题?
遍历slot-node关系,依次执行,比较浪费性能
浅谈Redis集群下mget的性能问题 - SegmentFault 思否redis client和集群通讯过程
crc16(key) -> crc64
redis使用的哈希算法
hash slot
redis内存满了写入时会怎么样,默认淘汰策略是啥
redis宕机对服务有什么影响,如何解决
本地缓存+限流(hystrix),防止数据库被打爆
本地缓存和redis的一致性如何保证
etcd广播
redis如何通讯的,cluster模式
zookeeper和etcd的区别
如何保证服务可用度99.99%
mysql mvcc原理
为什么高并发时候推荐使用小事务
undolog占用;死锁
spring事务失效
aop失效、异步线程事务失效
仁弥科技
分库分表问题,什么时候分库分表,怎么分
微服务数据一致性
强一致性;最终一致性
redis集群模式,缓存较多的话?cluster单个节点可以做主从吗
MySQL ACID是如何保证的
MySQL的锁
共享锁、独占锁;表锁、行锁;间隙锁
Dubbo SPI机制
心灵壹点零
DDD的使用场景
DDD如何划分业务领域的
设计模式几大原则
访问者模式
JVM调优
大数据吞吐适合什么垃圾回收器?
JVM 1S能产生多少对象
单核,1S能产生亿万级,垃圾回收器1s能回收80%
天翼云
生成分布式id的几种方式
分布式场景如何保证数据安全(分布式锁,分布式锁如何防止过期、如何续期、如果续期失败怎么办)
Java本地锁,如何实现一个生产者和消费者模式,如果生产速度和消费者速度不对等怎么办
频繁创建大对象的场景如何优化
内存复用,怎么才能直接管理内存,不让直接内存管理
信号量是干嘛的,适用场景
CountDownLatch设置为1和悲观锁有啥区别
网络字节序列,大端,小端
TCP和IP是哪一层的
IP协议是干嘛的
生成n个1-n的随机数,如何生成效率最高
米哈游
Dubbo默认通信协议,还支持哪些通信协议
Dubbo默认序列化协议
Dubbo广播调用
注册中心有哪些,zk,eurka、nacos都有啥区别
分布式锁zk和redis的区别
zk分布式锁的原理
redis集群通信协议,节点之间如何通信
select、poll、epoll区别,为什么要有epoll
redlock算法
redis数据结构
mysql默认事务隔离级别
mysql间隙锁解决了什么问题
ICP是干嘛的
InnoDB聚簇索引和非聚簇索引区别
索引优化
mysql高可用部署方案
kafka架构
多消费者消费原理
partion默认几个
kafka自动创建topic时设置默认的分区和副本数:
在
server.properties
中配置:1
2
3
4
5
6# 自动创建主题
auto.create.topics.enable=true
# 默认主题的分区数
num.partitions=8
# 默认分区副本
default.replication.factor=3注意:
default.replication.factor
:默认分区副本数不得超过kafka节点数(你想,副本数如果一个节点放2份,意义就没了)每个节点都需要配置,然后重启即可。
system gc和runtime gc区别
system gc时机(safepoint和安全区域)
cms作为老年代垃圾回收器,为什么会扫描新生代
新生代垃圾回收期有啥,有只扫描老年代的垃圾回收器吗
蔚来NIO
G1垃圾回收器的原理,如何回收垃圾,如何分region
synchronized锁的原理
底层是使用monitor_enter以及monitor_exit字节码
hashmap为什么要用红黑树
ConcurrentHashMap是如何扩容的,如果两个线程同时put,正好遇到扩容临界点,会同时触发吗?
CompletableFuture异步原理,future.get自旋的话会不会太消耗性能
ThreaLocal是干嘛的,为什么用完一定要remove掉,不remove会有什么问题
内存泄漏,线程池数据污染
redis hash结构,如何扩容的(异步还是同步),如果数据量较大,是怎么保证主线程不堵塞的
同步扩容,渐进式迁移
zset跳表的原理
redis LRU淘汰策略是如何实现的
redis过期key是如何删除的(惰性删除和定时删除),定时删除如何实现的
定时删除策略:Redis 默认会每秒进行十次过期扫描,过期扫描不会遍历过期字典中所有的 key,而是采用了一种简单的贪心策略。
- 从过期字典中随机 20 个 key;
- 删除这 20 个 key 中已经过期的 key;
- 如果过期的 key 比率超过 1/4,那就重复步骤 1;
同时,为了保证过期扫描不会出现循环过度,导致线程卡死现象,算法还增加了扫描时
间的上限,默认不会超过 25ms。redis cluster:一个key是如何找到在哪台机器上的;批量操作的原理
redis CAP中AP是通过什么协议保证的
kafka CP是通过什么协议保证的
延迟消息的原理
数据库为什么推荐用自增id
innoDB行锁是怎么加锁的
秒杀系统设计
限流算法
sentinel限流策略
==========================================================
nacos原理
http2.0新特性https://juejin.cn/post/6844903984524705800
http1.0和http1.1的主要区别如下:
- 缓存处理:1.1添加更多的缓存控制策略(如:Entity tag,If-Match)
- 网络连接的优化:1.1支持断点续传
- 错误状态码的增多:1.1新增了24个错误状态响应码,丰富的错误码更加明确各个状态
- Host头处理:支持Host头域,不在以IP为请求方标志
- 长连接:减少了建立和关闭连接的消耗和延迟。
http1.1和http2.0的主要区别:
- 新的传输格式:2.0使用二进制格式,1.0依然使用基于文本格式
- 多路复用:连接共享,不同的request可以使用同一个连接传输(最后根据每个request上的id号组合
成正常的请求) - header压缩:由于1.X中header带有大量的信息,并且得重复传输,2.0使用encoder来减少需要传输
的hearder大小 - 服务端推送:同google的SPDUY(1.0的一种升级)一样
浏览器输入一个URL,具体发生了什么?
过程:DNS解析、TCP连接、发送HTTP请求、服务器处理请求并返回HTTP报文、浏览器渲染、结束
过程 使用的协议 1、浏览器查找域名DNS的IP地址
DNS查找过程(浏览器缓存、路由器缓存、DNS缓存)DNS:获取域名对应的ip 2、根据ip建立TCP连接 TCP:与服务器建立连接 3、浏览器向服务器发送HTTP请求 HTTP:发送请求 4、服务器响应HTTP响应 HTTP 5、浏览器进行渲染 HTTPS原理
1.首先客户端先给服务器发送一个请求
2.服务器发送一个SSL证书给客户端,内容包括:证书的发布机构、有效期、所有者、签名以及公钥
3.客户端对发来的公钥进行真伪校验,校验为真则使用公钥对对称加密算法以及对称密钥进行加密
4.服务器端使用私钥进行解密并使用对称密钥加密确认信息发送给客户端
5.随后客户端和服务端就使用对称密钥进行信息传输非对称加密和对称加密的原理
对称加密算法:
双方持有相同的密钥,且加密速度快,典型对称加密算法:DES、AES非对称加密算法:
密钥成对出现(私钥、公钥),私钥只有自己知道,不在网络中传输;而公钥可以公开。相比对称加密
速度较慢,典型的非对称加密算法有:RSA、DSA
网易
金额类的数据如何迁移
dubbo服务提供者的线程模型,I/O线程是基于线程池的吗
dubbo注册中心不可用,如果本地请求到了不可用的机器,这时候如何保证可用性
dubbo服务注册和bean初始化的先后顺序?会不会出现bean没有加载完,服务已经暴露出去的情况
kafka同一个topic的数据是放在不同broker上的吗,是怎么选取partition的
kafka发送一条消息,如何通知消费者去消费的(消费者如何知道是否可以消费的)
kafka的offset是如何维护的(offset的topic),不同的topic是放在同一个offset topic的吗
只有一个_consumer_offset主题,key是Consumer Group, topic, partition,Payload存了Offset, metadata, timestamp
kafka一个topic,5个partion,3个消费者,消费者如何分配
下面代码会发生资源竞争吗(试了:不会)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31public class SyncTest {
public synchronized void a() throws InterruptedException {
System.out.println("a");
Thread.sleep(2000);
}
public static synchronized void b() throws InterruptedException {
System.out.println("b");
Thread.sleep(2000);
}
public static void main(String[] args) {
new Thread(() -> {
SyncTest syncTest = new SyncTest();
try {
syncTest.a();
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
}).start();
new Thread(() -> {
try {
b();
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
}).start();
}
}事务失效场景,下面代码应该是不生效的,https://blog.csdn.net/dl962454/article/details/118275335
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19public class TransactionServiceImpl implements TransactionService {
//注入dao层对象
private IUserDao iUserDao;
public void testA() {
int num=iUserDao.updatePWDByUserName("hu", "3333");
testB("ding","3333");
}
public int testB(String username, String newPassword) {
int num=iUserDao.updatePWDByUserName(username, newPassword);
int i=1/0;
return 0;
}
}在同一个类中的不同方法调用中,A方法调用B方法,A中无事务,B中有事务,此时事务不会生效。Spring采用动态代理(AOP)实现对bean的管理和切片,它为每个class都会生成一个代理对象。只有在代理对象之间调用时,可以触发切面逻辑。而同一个class中,方法A调用方法B,且方法A无事务,调用的是原对象的方法,而不是通过代理对象,因此Spring无法切换到这次调用,也就无法通过注解保证事务性了。
gc.log里面都有啥内容
ygc会STW吗
根据收集器来的吧,目前年轻代所有收集器都会发生stw,从最开始的serial收集器,到现在的cms收集器,虽然现在虚拟机厂商对收集器做了优化,但是stw还是无法完全避免,对目前来说cms的停顿时间是可以接受的,如果程序stw时间过程,还是需要从其他方面考虑,例如程序是否存在内存泄漏等;
项目可以优化的地方
古茗
- caffine和guava区别
- 事务消息的原理
- etcd和MQ广播有什么区别
花旗金融
求x的n次方,不使用数学公式
取模操作性能最好的
x & (n-1)
泛型基类,如何自动寻找实现类
智己汽车
- 64. 最小路径和
- 堆外内存泄漏如何排查
- K8s排查oom kill
- k8s pod无限重启如何排查
- tcp time_wait 连接过多排查
- redis bitmap使用场景、优势、原理
众安一面
本地缓存和redis一致性
docker虚拟机,springboot应用内存缓慢升高,流量正常,可能是什么原因导致的
jvm内存溢出或者堆外内存溢出
附近的人技术实现
kafka错误配置导致内存泄漏
给一亿用户发送优惠券,保证速度最快,如何读取如此大的用户量
阿维塔
一个请求从前端到数据库的完整链路
dubbo的优缺点
如何设计一个注册中心
ThreadLocal原理
java如何停止一个线程
interrupt
线程在阻塞状态下如何停止
线程外面interrupt + 线程内部判断Thread.isInterrupted()来处理
ReentrantLock如何做到可重入的
List、Set等集合底层实现
二叉树的作用
SpringBoot默认作用域(单例),什么时候会用到多例
Spring filter和intercepter区别,以及常见应用
用数组实现一个栈,出栈后这个元素会被gc回收掉吗?为什么
mysql字段什么时候用char,什么时候用varchar,字符串字段如何加索引
redis zset
moogodb应用场景
开发中常用的设计模式,责任链一般是干嘛的
单元测试@before和@beforeClass区别
JVM如何设置参数尽可能创建更多的线程
=================================
redis跳表原理,查找和修改是如何操作的,为什么用跳表,不用二叉树
生产redis越来越慢,如何排查
redis bigkey如何治理,中间件层面
redis cluster寻址过程
redis cluster为什么是65535个槽位
redis cluster如果hash冲突了怎么办
redis innodb引擎是如何解决幻读的
快照读,mvcc undolog
mysql行记录上有哪些隐藏字段
- trx_id:每次事务对某条聚簇索引记录进行改动时候,都会把该事务的事务id赋值给trx_id列
- roll_pointer:每次修改完,都会把旧版本写到undo_log里,这个隐藏列相当于一个指正,可以通过它来找到记录修改前的信息。
当前读如何实现(加锁),临键锁和间隙锁有什么区别
binlog好redolog都是干啥的
sync和lock有什么区别,哪个性能好
锁升级的过程
聊一下比较好的代码或者设计
遇到的线上问题