腾讯一面面经(实习)
一面:
自我介绍项目介绍
交易系统整体业务逻辑
rocketMQ事物型消息原理,以及如何防止从重复消费和防止消息丢失
然后是调用支付接口消息丢失和消息重复问题
然后是如果redis崩溃了怎么处理,讲解到集群搭建和持久化,但是其实消息还是可能丢失,讲解到rocketmq的brocker消息回查机制,但是还是可能你会丢失消息,这个时候消息还没有到mysql中。讲解从日志中人工干预,面试官问了可以从代码层面处理,回答道不会。
如何实现定义交易单号:
回答了一下
如何定义自增id?
数据库自增id,分步长
SnowFlake算法
Leaf_SnowFlake
场景题:多线程访问MySQL如何保证彼此数据更改不会互相影响?
答:可重复读
问:我是问怎么实现的
答:MVCC+next-key lock
问:具体编程怎么实现的
答:MVCC原理快照度日志相关
问:如果让你使用你怎么写
答:悲观锁:查询加for update,乐观锁使用where判断,然后具体说了一下
接下来就是RPC项目:大体流程,然后有问到了zookeeper选举协议,
Zookeeper还可以干嘛?
分布式锁
怎么实现?
详细说了一下
redis怎么实现?
不会
然后netty为什么这么快?分三个方面回答的,线程模型,零拷贝,NIO
NIO涉及到linux五种io,然后select,poll,epoll,然后是epoll边缘触发与水平触发
然后是基础知识
Volitile关键字:可见性和防止指令重排序以及原理,
硬件方面怎么办到的?
不会
猜一下?
缓存失效,这个变量在缓存中一旦被其他线程更改直接删除了,只能从硬盘中查找(我是瞎猜的)
中间涉及到虚拟内存与物理内存,页面置换
Socket编程中aceept返回的时候tcp三次握手什么状态:三次握手完毕,建立连接状态
https,数字证书加密算法,有
Mysql:索引相关,
场景题:ABC联合索引,查询C能够走索引吗?
不能,最左匹配原则
A能吗?
能
BCA能吗?
能,因为sql执行的时候优化器会进行优化
MySQL主从同步?
Binlong文件
还知道什么文件?
回答了Redolog,undolog和具体使用场景,以及结合SQL语句执行过程说了一下日志文件创建
同步同步与异步同步区别?
进程通信方式
Jvm中分区以及垃圾回收算法