分享社招面经——懂车帝1面
懂车帝 - 后端开发 面试复盘 一、基本信息
- 公司:懂车帝(字节跳动)
- 岗位:后端开发
- 轮次:一面
- 面试形式:远程视频
- 候选人背景:小米数仓+服务端开发,2024届华中农业大学本科
- 已挂 二、面试问题与回答
- 自我介绍
- 问题:简单自我介绍
- 回答:华中农业大学20届应届生,小米工作近两年,主要做数仓开发和服务端开发
- Redis基础数据结构
- 问题:说一下Redis的几个基础结构
- 回答:
- 五个基础数据结构:string、list、hash、set、zset
- 其他数据结构:bitmap、geo、hyperlog等
- string用于token、key-value存储
- hash用于可重入锁设计,存储对象并计数
- list用于队列,SDK全链路采集中用list作缓存队列,按批次写入PG数据库
- 用户分数排行榜设计
- 问题:实现用户分数排行榜用什么数据结构
- 回答:用zset,它自带排序功能,可直接展示排序后的数据
- 追问:千万级别用户分数排行榜怎么实现
- 回答:
- Redis集群部署,提高并发能力
- 限流:使用Redis漏桶算法
- 但对于千万级数据直接放在一个zset中的大key问题回答不清楚
- 大key问题
- 追问:大key会造成什么问题
- 回答:
- Redis是单线程,大key查询响应慢
- 虽然有IO多路复用,但大key返回慢会影响整体性能
- 对大key的具体处理方案和上限值回答不清楚
- 热key问题
- 问题:如何防止热key失效导致的问题
- 回答:
- 热key预热
- 谨慎设置过期时间
- 保证数据库中的key可以命中
- 缓存一致性
- 问题:数据库写、缓存读,如何处理缓存一致性
- 回答:
- 采用先更新数据库,再删除缓存的策略
- 这样可以保证在高并发多线程情况下不会因为Redis和数据库更新顺序导致数据不一致
- 布隆过滤器
- 问题:对布隆过滤器有了解吗
- 回答:
- 用于解决缓存穿透问题
- 当数据库和Redis都没有查询的数据时,请求会一直击穿
- 布隆过滤器可以在访问Redis前返回结果,避免打到数据库
- 点赞系统设计
- 问题:设计一个点赞系统,要求:
- 用户可以给文章点赞
- 进入文章详情知道有多少人点赞及我是否点过赞
- 作者知道有多少人给我点过赞 设计存储方案和表结构
- 回答:
- 存储:MySQL持久化,Redis缓存
- Redis用hash结构,key为"user_id|article_id",value为0/1表示是否点赞
- MySQL表设计:
- 用户表
- 文章表
- 点赞关联表(user_id、article_id、是否点赞)
- 第三张表与Redis保持一致,每10分钟同步一次
- 如果Redis挂掉,通过本地日志补偿机制恢复
- 追问:如何实现作者本人知道有多少人点赞
- 回答:文章表中有user_id字段,可以通过article_id关联找到作者
- 日志文件最大同时在线人数
- 问题:日志文件记录用户登录登出时间(精确到秒),求:
- 全天最大同时在线人数
- 最大同时在线人数对应的持续时间段
- 回答:
- 思路:行转列,把开始时间到结束时间拆分成每一秒
- 统计每一秒有多少用户在线
- 找到重复次数最多的时间点
- 时间复杂度:O(logN) + O(N)
- 面试官指出这个方案不够优化
- 懂车帝业务介绍
- 问题:懂车帝主要做什么业务
- 回答:
- 懂车帝有三个属性:选车(车型库)、买车(电商)、看车(内容)
- 车型库和内容属于媒体阶段
- 买车涉及经销商和电商
- 该岗位偏向内容:内容发布、审核、模型特征处理、推荐算法、互动行为、作者生态
- 懂车帝已独立,但基建还用字节的,公司独立但字节是大股东
- 技术栈:Go语言 三、表现亮点
- 对Redis基础数据结构掌握较好,能结合实际项目说明使用场景
- 点赞系统设计思路清晰,考虑了缓存、持久化、补偿机制
- 对缓存一致性问题有正确的理解和方案
- 主动询问业务背景,展现对岗位的兴趣 四、不足与改进
- 对Redis大key问题理解不深,无法给出具体处理方案
- 千万级排行榜设计方案不完整,未考虑大key拆分
- 算法题思路不够优化,时间复杂度未达到最优
- 对布隆过滤器只有概念性了解,缺乏深入理解
- 点赞系统设计中,Redis挂掉的补偿机制描述不够清晰
评论
问答助学
相关内容
0个评论
全部评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
内容推荐
我想问一下大家简历的字体是多少号的呢,是2页还是3页
2
今天面了两家公司,面试时间都比较短直接总结到一起了第一家1. 自我介绍2. 公司两个项目开发中,用到 Codex 或 Claude Code 了吗?3. 具体是用来写什么?用的是最多的哪个?4. Claude Code 用的是什么模型?5. 什么时候开始用的?(精确到具体月份)6. 是官方账号还是中转站?7. 当时开发一天用多少钱?8. 平时用到什么 Skill 或 MCP 吗?9. Claude
5
找实习从7月22号开始投,现在也总算是有offer了
5
怎么会有笨蛋从一月到现在,背了7个月的面试题,还啥都不会呢,到底背哪里去了,该怎么办
3
【入职求助贴】萌新刚入职某大厂做后端开发,目前还在试用期。最近遇到一个棘手的问题,想向大家求助一下。入职不久,leader 给我派了一个任务。跟我说是0.5天就可以解决,我刚毕业入职,做了一个星期没有做出来。实现一个收集定时成功任务的案例。听起来好像不复杂,但我自己摸索着做了一整个星期,到现在还没达到预期效果。这一周我基本是“边学边做”的状态,遇到卡点也会每天主动找 leader 沟通进度和疑问。
2
