3.16 阿里后端实习电话面
-
介绍一下RPC项目
-
Zk注册中心
-
Netty网络传输
-
动态代理
-
SPI机制
-
-
Zk除了能做注册中心还能做什么?
-
分布式锁,怎么实现:Zk节点监听机制加上Zk顺序节点、临时节点,排队监听前一个节点,查看自己是不是第一个节点,是才能拿到锁
-
拓展:分布式锁还能用redis来做
-
-
redis有哪些数据结构?
答:list,set,zset,hash,bitmap,hyperLogLog,还有个存地理位置的...
-
redis分布式锁怎么实现?
答:
setnx,会出现问题,上锁后没释放掉服务器宕机出现死锁;
解决1:设置过期时间 set key value nx ex 时间 ,又有问题:如果第一个客户端要解锁的时候宕机,这时候第二个客户端拿到锁,因为第一个客户端设了超时删除key,这时候把第二个客户端的锁释放掉了,这就不对了
解决2:乐观锁思想,value 设置版本号,删除对应版本的key,又有问题最终原因因为原子性,引出LUA脚本。。。
-
介绍一下第二个项目
很水的增删改查项目,接的外包,主要是锻炼mysql联表查询,
-
项目用到了mysql索引吗?
没有但是知道相关知识,因为当时刚学会mysql,索引,innodb结构是前几个月看书才知道的
-
讲一下mysql前缀索引和联合索引
联合索引:对多个列建立索引,例如name_age_details(name,age,details),需要注意最左前缀原则
前缀索引:对字符串截取前面一部分建立前缀索引
-
讲一下mysql事务,隔离级别
四种隔离级别,innodb是默认可重复读,利用MVCC和Next-Key Lock解决了幻读
-
设计模式怎么学的,项目里用到了什么设计模式?
单例模式,工厂模式,代理模式。看书《大话设计模式》
细说了一下项目里单例工厂的一个类
- JVM内存区域:细说了一下1.6 1.7 1.8的不同区别
- 反问