阿里弹性计算一面-3.1
项目介绍
我:这里我重点介绍了热帖模块
怎么找到这top20个热帖
我:提到了Redis Zset
Zset的原理(使用的时候会有什么坑)
我:提到了压缩列表+哈希表+跳表(这里没说坑在哪,因为没遇到过,有知道的朋友可以评论区留言,谢谢!)
具体是怎么样的,你说说你的理解
如果不用Redis,你自己来实现!
Redis怎么做高可用
我:提到了Redis哨兵机制
谁给主节点打分(这里问分布式选举算法,不会)
为什么要用本地缓存,直接用redis缓存不可以吗?你的项目是有多高的并发。
这里吹牛逼吹过了,因为就是为了增加项目亮点才加的这个本地缓存,这里应该把这点删掉了。
为什么不用一个Map来实现,而要用到Caffeine这个缓存组件
我:这里重点提了一下Caffeine的LFU
为什么一定要实现淘汰策略
缓存雪崩了解吗,为什么?
你怎么避免缓存雪崩
我:加一个随机因子(这里只知道这种方法),感觉面试官不太满意!
怎么保证Redis和数据库的一致性
那先更新缓存再更新数据库有什么问题呢?
Redis数据持久化说一下的实现方式、优缺点
验证码实现登录,你是怎么实现的?
你的Session存在哪里
如果Redis宕机了,用AOF恢复或者用RDB恢复数据会对这个Session造成什么影响
为什么要使用Bitmap来统计DAU
除了Bitmap还能用其他方式吗?做个简单的对比,量化的分析,比如你刚刚提到内存占用比较少,假设有一百万个userID(long类型)用Bitmap是怎么样子的,用HashSet是什么样子的?
我:不了解
好了,下一个
你用过Netty做过什么项目
我:自研实现RPC(这里挖坑了,在没有完全搞懂之前,还是不要说你会,不然问到你懵)
如果不用Netty,你可以用别的方式实现网络通信吗
为什么要用Netty
为什么要用ZK
它的通知机制是怎么实现的
我:不了解
好了,下一个
注册中心还有别的实现吗?
我:nacos
为什么不用ZK,也就是说Nacos和ZK的区别在哪,你是怎么权衡的?
你对Nacos有多了解,说说
我:不了解
好了,下一个。
怎么定义一个类是线程安全的
如果不加锁,会有什么问题
如果要实现这个i++是线程安全的话,你要怎么做
加锁有几种方式
什么叫可重入锁
为什么有可重入锁
基于UDP有哪些协议
为什么DNS协议要基于UDP,基于TCP不行吗
我:这里我提到了性能更好(这里没答到点上)
附上比较标准的答法:https://mp.weixin.qq.com/s/BF0EOyN2PtqN9ec0oyYS8g
TCP怎么做到可靠性传输
重传机制怎么做的
Tomcat和Netty的区别
我:Tomcat更像一个工具,Netty更像一个中间件框架。Netty和Tomcat最大的区别就在于通信协议,Tomcat是基于Http协议的,他的实质是一个基于http协议的web容器,但是Netty不一样,他能通过编程自定义各种协议,因为netty能够通过codec自己来编码/解码字节流,完成类似redis访问的功能,这就是netty和tomcat最大的不同。
面试官最后评价:我觉得你实践经验蛮丰富的!
总结:
不要过度包装简历,像我简历项目是加了一个本地缓存,为了增加所谓的亮点而做的,后期还是要删掉,因为引伸出很多问题,像分布式缓存和本地缓存怎么保证一致性,本地缓存的设计等等问题,对于我来说就是一个坑,左右并不大
不会的东西还是尽量少在面试官面前吹牛逼,因为这样子会很减分,像我上面突然就吹了RPC框架,而且还有几个点答不出来!
项目介绍,尽量把项目部署到公网上,让面试官一目了然,因为好几次面试,面试官都是听我在说,而且有时候说一大堆都不能给面试官一个很实际的感受,就是说得太空泛了!
关于这个太空泛的话题,希望我日后可以多点去实践,拿多点真实的数据说话
像问到这个数据结构选型的问题,哪个数据结构内存占用大,大到哪种程度,能进行一个量化分析对比吗?我瞬间就懵了,所以还是要多拿数据说话!
全部评论
(5) 回帖