记录人生第一个实习offer
算是一家小型初创公司,ai相关,刚起步岗位需求多,投的后端实习岗,年后入职。面试官说有机会接触到一些算法上的东西,公司核心业务可以说是跟自己研究方向相关的,至少目前非常满意😊
虽然难度低,也没深挖什么八股,但这次的面试状态是秋招以来最好的一次了(前一天晚上看了会儿今天不coding的直播,听同龄人分享各种经历,确实很大程度上缓解了内心的焦虑),可能也是由于面试形式是展示代码吧,对着自己的代码框框讲,就显得十分自信,面完几个小时后就发offer了。
第一个项目是黑马点评,简单展示了一下用户登录,店铺信息缓存,优惠券秒杀的功能。
提问:
1. 在秒杀时,为什么要用lua脚本。
A:保证原子性
2. 为什么选择caffeine做本地缓存
A:技术选型上没有什么考虑,只是知道有这么个技术,就用来练手了。使用caffeine时需要注意缓存一致性问题。
3. 项目还有没有其他亮点
A:封装了redisson的布隆过滤器,结合redis缓存空值去避免缓存击穿。由于布隆过滤器是后期引入的,此时数据库已经有一百万条了(模拟的),通过多线程读取数据库中的数据,写入布隆过滤器,来加快布隆过滤器的构建。并利用自增的主键id解决深分页问题。
4. 布隆过滤器的原理
A:bitmap,多个hash函数
5. 布隆过滤器的缺点
A:误判,不支持删除
6. 如何解决删除问题
A:定期重写布隆过滤器
这里面试官说这种方案不好,因为重写过滤器会影响到业务的使用,我提了可以在低峰期重写,但面试官还是不太满意。
第二个项目是github上找的一个开源项目,主要关注了一下核心业务的实现,并做了一定的改进与拓展。由于时间原因,简单介绍了一下用rabbitmq异步将用户点赞记录写入数据库的实现。
提问:用mq异步写入点赞数据,如果消费者效率慢,会导致前端页面反馈不及时,如何解决
A:可以用redis缓存文章点赞数,并定期将mysql中记录的点赞记录数量同步到redis缓存中(当时这里没想好,随便答的。或者应该用redis的set来缓存点赞记录,并定期写入mysql?)
反问环节
略
虽然难度低,也没深挖什么八股,但这次的面试状态是秋招以来最好的一次了(前一天晚上看了会儿今天不coding的直播,听同龄人分享各种经历,确实很大程度上缓解了内心的焦虑),可能也是由于面试形式是展示代码吧,对着自己的代码框框讲,就显得十分自信,面完几个小时后就发offer了。
第一个项目是黑马点评,简单展示了一下用户登录,店铺信息缓存,优惠券秒杀的功能。
提问:
1. 在秒杀时,为什么要用lua脚本。
A:保证原子性
2. 为什么选择caffeine做本地缓存
A:技术选型上没有什么考虑,只是知道有这么个技术,就用来练手了。使用caffeine时需要注意缓存一致性问题。
3. 项目还有没有其他亮点
A:封装了redisson的布隆过滤器,结合redis缓存空值去避免缓存击穿。由于布隆过滤器是后期引入的,此时数据库已经有一百万条了(模拟的),通过多线程读取数据库中的数据,写入布隆过滤器,来加快布隆过滤器的构建。并利用自增的主键id解决深分页问题。
4. 布隆过滤器的原理
A:bitmap,多个hash函数
5. 布隆过滤器的缺点
A:误判,不支持删除
6. 如何解决删除问题
A:定期重写布隆过滤器
这里面试官说这种方案不好,因为重写过滤器会影响到业务的使用,我提了可以在低峰期重写,但面试官还是不太满意。
第二个项目是github上找的一个开源项目,主要关注了一下核心业务的实现,并做了一定的改进与拓展。由于时间原因,简单介绍了一下用rabbitmq异步将用户点赞记录写入数据库的实现。
提问:用mq异步写入点赞数据,如果消费者效率慢,会导致前端页面反馈不及时,如何解决
A:可以用redis缓存文章点赞数,并定期将mysql中记录的点赞记录数量同步到redis缓存中(当时这里没想好,随便答的。或者应该用redis的set来缓存点赞记录,并定期写入mysql?)
反问环节
略
全部评论
接好运
实习问那么难的问题。。。我工作那么多年,还不一定回答上来,惭愧。。。
面试状态真好
相关推荐

点赞 评论 收藏
分享
点赞 评论 收藏
分享
点赞 评论 收藏
分享