社招面了三家公司,运气不错,都拿到了offer,分享一波面经。
好多都忘了,出现频率高的或者比较稀奇或者我没回答上来的记得比较清楚。
字节跳动
一面
- 介绍下go的chan,chan可以做什么
- 你们的项目如何实现限流器,请用chan实现一种限流器,也可以不用chan实现
- 线程进程协程区别
- go协程好处
- gmp模型
- 算法题 一个数字比如452484515124845157515,可以去除n个数(比如1234去掉3个数 最大值就是4),求最大值
- 智力题 两个人射击,每个人射中的概率都是二分之一,n轮后求第二个人射中的概率
二面
- 说说dockerfile?(因为我简历写了docker)
- mysql的常见引擎区别,mvcc机制是干嘛的
- 按照场景写几个常用sql语句,比如去重复
- mysql索引失效场景
- 应用编程题,现在有很多评论数据 评论id 被评论的id 具体内容。比如a是b的回复 c是a的回复 d是e的回复则 组织成
a comma
b@a comma
c@a comma
e
d@e comma
三面
- 项目介绍
- redis各种数据结构可以做什么
- redis的持久化方式,区别?持久化过程时如何保证不会出现新的写覆盖数据?
- redis主从复制?
- 系统设计:如何实现排行榜?我的回答提到了分布式zset然后汇总,面试官要求实现这个算法
四面
- 项目介绍
- 有没有读过redis源码
- 缓存该怎么使用?如何保证一致性?
- 并发场景下设计并实现一个hashmap,(隐含要求扩容不阻塞)
- 算法题:会议有时间段,有很多会议,求最少需要多少会议室?
总结
三面体验很差,先是面试官迟到,后来面试官说中途离开10分钟,结果离开了一小时还没回来,然后我找到hr,发现他去开会去了,hr说这次面试结束。 第一次遇见这样面试的。三面后是hr面,感觉hr很傲慢,可能是我要的有点多,又加了一面技术面四面。
B站
一面
- 项目介绍
- go的gmp
- cpu特别高如何定位
- mysql引擎
- 复合索引生效问题
- sql执行慢的原因?如何看是什么问题?
- redis zset实现
- 一致性hash
- rpc了解吗?
- tcp,udp区别
- 操作系统:线程与进程,死锁条件预防等?不要求写银行家算法,提下就行点到为止
- http的一些状态码含义?后来聊到服务器推送
二面
- 你怎么设计索引,不是优化是设计
- 给你场景,你来选择tcp还是udp
- 项目中索引优化经历
- 还有一些项目合作等非技术问题,就不提了
三面
项目经历加聊天
总结
b站的面试感受很好,面试官都很nice,非常棒
腾讯
一面
- go的new make区别
- go的slice和array区别
- pprof定位问题与调优
- 进程线程协程
- tcp udp区别
- tcp一个分片最大多少字节,由什么决定?
- mysql两个引擎比较
- 实际项目中进行了那些索引优化
- mysql各种日志作用
- 一个sql执行比较慢,如何找原因?
- http协议格式,长短连接问题
- https的四次握手,证书的作用,原理?(因为我简历写了熟悉https)
- redis 大key问题
- redis zset为什么用跳表?对比b树有什么好处
- 算法题:数据流,求中位数?(方法很多,应该分场景考虑,比如数据值范围很小用统计的方法,比如数据不重复用bitmap,比如数据定长用快排变种,不变长用双跟堆;当时答了三四种方法)
一面面了一个半小时,有的会有的不会,有很多题不记得了;都是考察基础 点到为止,但是范围很广从语言到操作系统到缓存到数据库到算法
二面
- 项目介绍
- 你们如何实现负载均衡
- 负载均衡有哪些常见算法
- go 协程好处
- 大并发项目如何进行测试?
- 你对实际项目部署参数有了解吗?并发量是多少?需要多少cpu等?
- 算法题:大量数据求最大的n个数?
三面
- 项目介绍
- 实际项目如何实现分布式,对项目追根问底。比如说负载均衡用了hash,面试官会问hash算法具体公式是什么?
- 实际项目如何定位实际处理节点?业界有哪些算法(就是负载均衡算法)
- 用了哪些数据库技术调优技术?业界有哪些相关技术(比如索引优化)?
- 了解存储吗?业界有哪些?
- 什么场景不适合用协程?那该用什么实现并发呢?(epoll)
总结
一面是基础,二面包含项目和稍微深些的知识,三面主要是深挖项目并进行扩展
全部评论
(8) 回帖