阿里云弹性计算实习一面面经

阿里弹性计算一面-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最大的不同。

面试官最后评价:我觉得你实践经验蛮丰富的!

总结:

  1. 不要过度包装简历,像我简历项目是加了一个本地缓存,为了增加所谓的亮点而做的,后期还是要删掉,因为引伸出很多问题,像分布式缓存和本地缓存怎么保证一致性,本地缓存的设计等等问题,对于我来说就是一个坑,左右并不大

  2. 不会的东西还是尽量少在面试官面前吹牛逼,因为这样子会很减分,像我上面突然就吹了RPC框架,而且还有几个点答不出来!

  3. 项目介绍,尽量把项目部署到公网上,让面试官一目了然,因为好几次面试,面试官都是听我在说,而且有时候说一大堆都不能给面试官一个很实际的感受,就是说得太空泛了!

  4. 关于这个太空泛的话题,希望我日后可以多点去实践,拿多点真实的数据说话

  5. 像问到这个数据结构选型的问题,哪个数据结构内存占用大,大到哪种程度,能进行一个量化分析对比吗?我瞬间就懵了,所以还是要多拿数据说话!

#实习##面经##阿里云##Java工程师#
全部评论
怎么保证Redis和数据库的一致性=》 1、可以通过加读写锁保证并发读写或写写的时候按顺序排好队,读读的时候相当于无锁。 2、可以用阿里开源的canal通过监听数据库的binlog日志及时的去修改缓存,但是引入了新的中间件,增加了系统的复杂度。 3、先删缓存,再写数据库 (1)timer异步淘汰(本文没有细讲,本质就是起个线程专门异步二次淘汰缓存) (2)总线异步淘汰 (3)读binlog异步淘汰=》canal
1 回复
分享
发布于 2021-03-02 14:35
你怎么避免缓存雪崩=》高可用+随机时间+服务降级(sentinel/hystix)
点赞 回复
分享
发布于 2021-03-02 14:33
联想
校招火热招聘中
官网直投
如果不用Redis,你自己来实现!=》优先队列/treemap都可以
点赞 回复
分享
发布于 2021-03-02 14:33
Redis怎么做高可用=》哨兵+主从一起,单哨兵会有问题
点赞 回复
分享
发布于 2021-03-02 14:34
zk的通知机制是怎么实现的其实就是起了个监听器,监听方法,也就是watch,异步回调的触发机制
点赞 回复
分享
发布于 2021-03-02 14:38

相关推荐

18 62 评论
分享
牛客网
牛客企业服务