3.4百度服务端开发社招一面面经
《面试题目》
一、自我介绍
二、项目深挖
- 登录token校验设计、生成逻辑及过期时间策略
- 公司项目模块分工与接口设计
- ES(Elasticsearch)的业务使用场景
- Redis的使用场景、选型理由及缓存判定策略
- 报500错误的原因排查及使用Linux命令(cat/grep)定位日志方法
- Redis数据类型应用及SETNX锁的底层实现
三、手撕代码
- 设计微博用户关注表(包含建表语句、主键、索引、注释、约束条件,并阐述设计思路)
四、闲聊与AI相关
- 反问团队业务、技术栈及面临的挑战
- AI在项目中的应用及对AI发展的见解
- 个人背景:目前base地、工作年限及离职原因
《参考解析》
-
Redis SETNX锁底层:SETNX利用Redis单线程特性实现互斥,通常配合SET key value NX PX expiration实现分布式锁,防止死锁。底层通过Redis字符串类型实现。
-
500错误排查:500错误通常是服务器端代码异常。排查思路:先查看Nginx访问日志定位请求,再通过cat/grep或tail -f查看业务日志中的Stack Trace,重点检查空指针、数据库连接失败或外部依赖超时。
-
微博关注表设计:关注表应包含
id,follower_id(关注者),following_id(被关注者),create_time。重点在于建立(follower_id, following_id)联合索引以支持查询关注列表,同时需考虑约束以防止重复关注。 -
Redis缓存策略:通常根据数据访问热度(高频读)、数据实时性要求及对数据库的压力进行判定。需注意缓存击穿、穿透及雪崩的防范措施。