百度服务端开发社招一面面经

百度 · 服务端开发Go-PHP · 一面 · 2026-03

《面试题目》

一、自我介绍

二、项目一(Demo项目)

  • 登录token校验怎么设计的?
  • token怎么生成的?
  • token过期时间如何设置?

三、项目二(公司项目)

  • 负责的模块及功能架构设计
  • Elasticsearch的使用场景
  • Redis的使用场景、选型理由及缓存策略(如何判定数据存入Redis)
  • 项目上线流程及规范
  • 生产环境报500错误的原因分析与排查(如何通过Linux命令cat|grep定位)
  • 项目接口设计思路
  • Redis在项目中的数据类型及setnx锁的底层数据类型实现

四、手撕代码

  • 设计一个微博用户关注表,写出完整建表语句(含主键、索引、注释、约束条件),并阐述设计理由。

五、AI与综合闲聊

  • 对AI的使用经验及项目中AI的应用
  • AI发展现状与差异(以询问日期为例)
  • AI学习意愿、工作年限、离职原因、Base地期望
  • 反问:团队业务、技术栈及面临的挑战

《参考解析》

1. 生产环境500错误排查: 500错误通常是服务器端异常,通过 cat|grep 定位日志是基础手段。应学会查看Nginx错误日志确认请求是否到达,再通过关键词(如TraceID、Exception堆栈)在应用日志中精准检索。熟练掌握 awksed 进行复杂日志清洗会更具竞争力。

2. Redis SetNX锁底层: SetNX底层是Redis的字符串类型(String),利用其原子性实现互斥。需注意过期时间(TTL)的设置以防止死锁,在高并发下还需考虑锁续期(Watchdog机制)及Redlock分布式锁方案。

3. 用户关注表设计: 重点在于索引优化。通常需为“用户ID”和“关注对象ID”设置联合索引,以支持高效的“查询我关注了谁”及“查询谁关注了我”操作。需考虑字段类型(如使用BIGINT)和约束条件(如UNIQUE约束防止重复关注)。

4. 项目选型总结: 面试官看重“为什么用”而非“怎么用”。例如选用Redis是因为其高并发下的低延迟读写;选用ES是因为支持全文检索及复杂聚合分析。在阐述时,建议结合业务数据量级及吞吐要求进行回答。