字节生活服务三面(已oc)

### **一、项目深挖**
1. **项目技术亮点**  
   - **校园美食会项目**:基于Redis实现分布式锁解决超卖问题,使用乐观锁处理一人多单场景,通过双拦截器优化Token刷新逻辑。
   - **动态线程池组件**:基于Redis发布订阅机制实现线程池参数动态调整,结合定时任务上报核心参数。

2. **短信登录流程**  
   - 用户输入手机号→后端生成验证码并存储Redis(Key为手机号,Value为验证码)→调用阿里云短信服务发送→用户提交验证码后校验→未注册用户自动创建账号。

3. **Token刷新逻辑**  
   - 拦截器拦截所有请求,校验Token有效性后刷新Redis中Token的过期时间,保障用户持续活跃状态。

4. **分布式锁优化**  
   - 单机环境使用`synchronized`锁用户ID;分布式场景改用Redis实现可重入锁,通过Hash结构记录线程标识和重入次数。

---

### **二、基础技术问题**
1. **HTTP vs HTTPS**  
   - **HTTP问题**:明文传输存在安全风险(窃听、篡改)。  
   - **HTTPS优化**:通过SSL/TLS协议加密,结合非对称加密(证书验证)和对称加密(数据传输)提升安全性。

2. **跨域问题(CORS)**  
   - 跨域触发条件:协议、域名、端口不一致。解决方案未深入讨论,面试官提示需补充JSONP、CORS或反向代理等方案。

3. **ThreadLocal应用**  
   - 用于拦截器中用户信息传递,通过线程隔离的ThreadLocalMap存储数据,避免多线程竞争。

---

### **三、Redis相关**
1. **数据结构选择**  
   - Token存储使用String类型(Key为Token,Value为用户信息),设置过期时间实现自动清理。

2. **分布式锁实现**  
   - 通过Redis的SETNX命令和Lua脚本保证原子性,记录线程标识和重入次数支持可重入性。

---

### **四、MySQL与索引**
1. **联合索引最左匹配原则**  
   - **场景1**:`WHERE b=1 AND a=2`(联合索引(a,b,c))→ **命中索引**(优化器自动调整顺序)。  
   - **场景2**:`WHERE a>1 AND b=2` → **索引失效**(a范围查询后b无序)。  
   - **场景3**:`WHERE a=1 AND b>2` → **命中a、b索引**(a等值查询后b有序)。

2. **SQL执行顺序**  
   - 优先级:`FROM > WHERE > GROUP BY > HAVING > SELECT > ORDER BY > LIMIT`。

---

### **五、网络与协议**
1. **WebSocket应用**  
   - 用于商家接单实时通知,对比HTTP轮询优势:长连接、低延迟、服务端主动推送。
这个地方被拷打了websocket底层实现以及如果用http来实现要websocket相同的功能要怎么实现?还问了服务端能向客户端发http请求吗?

---

### **六、反问环节**
- 候选人提问字节技术氛围,面试官简要介绍业务方向(未详细记录)。

---

### **评价与建议**
- **优势**:项目设计合理,对分布式锁、Token机制等场景理解较深。  
- **待提升**:跨域解决方案、服务端主动通知实现(如WebSocket底层机制)、索引失效场景判断需更严谨。  
- **面试难度**:中等偏上,侧重项目落地能力和底层原理。
全部评论
哥们,base哪里的
点赞 回复 分享
发布于 06-16 01:10 湖北
怎么感觉三面还行?
点赞 回复 分享
发布于 05-14 01:44 北京
老哥是春招还是实习
点赞 回复 分享
发布于 04-06 20:06 四川
三面也问了很多技术细节和八股呀
点赞 回复 分享
发布于 03-29 00:46 上海
兄弟你字节跳动是一个一个投的还是你只投了这个一个
点赞 回复 分享
发布于 03-23 19:30 河南
这是咋生成的,录音?
点赞 回复 分享
发布于 03-19 11:51 河南

相关推荐

08-19 17:09
已编辑
门头沟学院 Java
🕐面试时间:1h💻面试岗位:后端开发秋招的第一个面试,没怎么准备好,双非鼠鼠我啊,属实没想到秋招第一面能被大厂捞起来面试,秋招也不亏了,大厂大佬亲自帮我打磨项目赚到了。大厂不愧是大厂,全方位的吊打。❓面试问题:1、对于业务警告传送为什么要使用kafka?2、业务告警规则为什么存入了mysql但是要去redis中的缓存中匹配?3、规则的匹配逻辑(我一直以为问的是警告信息如何去匹配规则,然后面试官其实是想问规则创建后通过什么设计让其生效),如果修改规则如何让它快速的生效,能不能在不动代码的情况下完成(这里没想明白一直以为redis上或者springboot还有什么神秘的技术 吃饭的时候恍然大悟是设计模式, 蠢得哭)4、为什么要用redis做缓存?5、redis读写分离?那redis读写分离的一致性设计,如何保证强一致性,如何做到写进去立马就能读到?6、强一致性和弱一致性定义?7、强一致性存储的系统你知道有哪些吗?当面试官说出 “咱是校招生吧,好那咱说一些计算机的基础知识”我就知道还没背计网和操作系统八股的我已经凉透了,但还是没想到会408的全方位拷打。8、操作系统的虚拟内存是干什么的,以及如何对其进行管理。9、哲学家进餐问题,以及如何解决。10、hash表中如何处理冲突。11、如何通过hash 将数据均匀的分配给redis集群中? **一致性哈希工作原理**12、一致性hash中 对于节点的添加和删除你知道吗?如果有100个服务 我应该设计多少个节点呢?13、一致性hash中的节点一定要比机器少吗?14、计算机网络中文件传输的可靠性如何保证15、1+1=2 计算机是如何进行计算的  --- 补码 + CPU指令16、Mysql的索引是如何实现的,为什么要用B+树 不使用B-树,为什么不使用红黑树或者AVL 仅仅是因为树的高度吗?17、Mysql的事务ACID的解释、实现原理手撕:hot100-全排列🙌面试感想:第一次秋招面试 项目看来还需要好好打磨,并且面完默默去淘宝把本科的四大名挂买回来恶补
William991...:没事 这个部门风评一般 没去算你捡到了
查看17道真题和解析
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
09-09 08:58
点赞 评论 收藏
分享
评论
13
80
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务