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

阿里弹性计算一面-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

相关推荐

阿里云算法实习生持续招聘中!!!LLM大模型方向!!!欢迎投递私聊!【团队介绍】   阿里云智能弹性计算是阿里云飞天平台(阿里云自研云计算操作系统)的核心,在全球有超过200个数据中心,19个地域,为全球数10亿用户提供着可靠的计算服务。   我们管理着海量物理机和虚拟机,提供超大规模服务编排能力,专注于大数据之上的机器学习算法研究与应用,如果你了解机器学习、深度学习、强化学习、迁移学习、主动学习、特征提取与稀疏学习、等级学习等相关知识,对人工智能抱有极大的热情,勇于挑战各种实际应用难题,欢迎加入我们:阿里云弹性计算--库存调度--智能引擎团队!  【岗位要求】   1、本科及以上学历,硕士博士优先,计算机、数学、电子工程、通信、信息系统、大数据、统计学等相关专业;   2、熟悉常用机器学习算法,对模式识别、深度学习、增强学习等相关领域,掌握C/C++、Java、Python等至少一门编程语言;   3、候选人有数理分析方面良好的素养以及数理统计基础;   4、有实际成果并发表在国际顶级会议、期刊者优先,有在KDDCUP、ImageNet、MSCOCO、ICDAR等权威比赛中取得优异成绩者优先。   5、有deeplearning的经验,大规模数据处理经验优先。   【招聘对象】  2026届毕业的海内外 本硕博学生  实习地点:北京、杭州   【简历投递】   邮件标题:姓名-学校-期望实习城市   邮件内容:简单介绍一下自己的优势即可   附件:个人简历 投递邮箱:**********岗位链接:https://www.nowcoder.com/jobs/detail/310377?jobId=310377https://www.nowcoder.com/jobs/detail/172543?jobId=172543
投递阿里云等公司10个岗位
点赞 评论 收藏
转发
头像
04-09 10:25
Java
#软件开发2024笔面经# 时间: 4月2号1. 拷打项目 主要问了消息队列八股实习生分为三个部分:  语言方面基础、面向对象方面、并发和数据库方面(主要问实际生成中能用到的地方)2. Java常见的集合类以及对应的底层数据结构3. ArrayList能保障插入顺序吗? TreeSet结构? HashMap底层结构?4. 并发访问这些集合有什么问题?能不能使用大量线程去访问这些集合?哪些集合线程是不安全的? 怎么安全访问这些集合(线程安全方面)5. ConcurrentHashMap怎么保障多个线程访问的安全?分段锁是什么? Cas操作和无锁机制?树化?6. String类型不可变的原因? (存储在字符串常量池) 如何去截取字符串?7. final修饰符?面向对象三大特性?讲一个多态示例?8. 什么是构造方法?可以不定义这个构造方法吗?9. 静态变量和成员变量有什么区别?如果我定义了一个类定义了一个静态变量初始化为1 这个类实例化出三个对象每个对象都会把静态变量加1 这个值最后为多少10. 重载和重写有什么区别?抽象类和接口的区别?  定义一个接口 接口里面定义了一个方法 定义了一个抽象类 抽象类实现这个接口 定义了一个普通的类继承了这个抽象类 问普通类是否要显示实现抽象方法?写抽象类需不需要显示实现接口中的方法?11. 进程和线程区别?写了一个JAVA应用 打包成Jar包  扔到机器上 启动一下 问这个应用占几个进程?12. Java当中如何创建线程?(三种)13. 描述一下JVM里面的垃圾回收?有哪些算法?有哪些区域?整体流程?14. Spring框架两大特性? AOP实际使用例子?事务中加入AOP的必要性?Spring是如何实现AOP特性的?15. 什么情况下使用MySQL?什么情况下使用Redis?为什么Redis快?Redis存储到内存是断电后如何做到数据持久化?Redis的过期策略16. 场景题:提供一个web应用,任何人都可以访问,由于机器访问有限 需要做限流保护机制 如何实现每秒钟执行10次请求?18. innodb和mylsam的区别?19. innodb执行一个update where id = 1 上什么锁?如果where是范围呢?如果两个update语句同时执行会发生什么? 如果把一条语句换成select呢?20. 快乐数
点赞 评论 收藏
转发
18 62 评论
分享
牛客网
牛客企业服务