腾讯、阿里、B 站最新面经汇总,有的妥妥的凉经。
除了 BAT(没错我说的 B 是 B 站的 B),还有网易、希音科技、美柚等中小厂的最新面经。
这次投稿的同学行文幽默风趣,处处透漏着不成功便搞笑的骚气。
祝他早日上岸,也欢迎大家在评论区讨论这些面试题,有哪些面试题不知道怎么回答好,可以在评论区讨论留言,我会及时回复的。
b 站外包/go 开发/一面
自我介绍
在百度什么级别?t 几?(没有技术级别,当时忘记自己是什么级别了,说了个 m,然后他说 m 是经理 hhh)
怎么设计一个 api 的(没答好,已读乱回)
怎么去防那个 ddos(redis 限流+nginx 层做处理,最后还是花钱买服务)
怎么部署那个安全拦截服务的(领导买了,在控制台做的服务,点点点)
cdn 的理解(加快访问速度之类的,问我还有没有别的,我说没有)
负载均衡怎么做的(领导在控制台点点点)
说项目没难度(我说是,不像 b 站外包用到这么多技术)
分表是怎么分的
希音外包/PHP 工程师/二面
自我介绍、项目总结
laravel 的生命周期(乱说一通)
redis 宕机了怎么办(redis 日志排查,加 redis 哨兵做主从切换)
http 请求过程(乱说一通)
消息积压(说了分区、批量提交(面试官疑惑)、异步消费,他说异步消费不是搞得代码更加臃肿?)
怎么做幂等(面试官说用分布式锁做幂等?没有反驳他,说他对就完事了)
mysql 内存占用突然飙升,怎么排查问题(慢日志、框架日志排查,加索引、加缓存之类去解决)
mysql 死锁怎么解决的(只说了把 mysql 配置文件锁等待的时间设置短一点)
什么是死锁
接口的请求过程(乱说一通)
redis 持久化机制
redis 缓存击穿、穿透、雪崩
在团队中扮演什么角色
复试
自我介绍
说一下你重构后的项目,和之前的项目有什么不同,亮点在哪里(cms 系统比织梦的安全性高)
过几年后你的项目数据量上来, 你会做一个什么样的优化(说了 redis 和 mysql 搞个集群,数据监控之类的)
项目基于 Laravel8 实现 ,构建项目的基础架构,确保代码的可维护性和扩展性的(乱说一堆)
redis 持久化机制
redis rdb 快照的时候,有写操作进来,会备份吗(不会,主线程会阻塞,感觉面试官想问 bgsave 命令,子线程备份,当时没想到)
redis rdb 单线程 能不能接收客户端的请求(说了 io 多路复用)
发短信的时候,发送失败怎么处理的(记录发送状态+重试机制)
你们对短信发送的时间有要求吗。比如多少秒发多少条,是怎么确保一个到达率的(没有,如果要保证发送时间,说了多台机器批量去发送)
网易外包/Go 后端开发/一面
自我介绍
mysql 查询慢是什么原因(没索引、表数据量大、死锁)
mysql 插入慢什么原因(表数据量大,sql 语句多,表索引量大)
抽奖逻辑是怎么样的
怎么实现用户登录
用户登录安全有了解过吗(乱说一通)
redis 击穿
redis 穿透
redis 其他数据结构有用过吗?hmap、zet
短信发送失败怎么处理的(记录发送状态+重试机制)
二面
自我介绍
cms 系统 0-1 开发的?(开源框架二次开发)
做了哪些功能(栏目、文章、配置、模型管理之类的)
登录的过程说一下
session 登录有什么弊端,怎么改(多台服务器拿不到 session,用 redis 做缓存)
客户端拿着 token,你是怎么通过 token 获取客户的信息(校验 token,获取 token 作为 key 的信息)
有没有难一点的功能,说一下(没有,单体项目量不大,只是业务复杂度的难,技术上的难点没有)
用户信息怎么做加密,token 怎么生成之类的(md5+拼接指定的 key 或者之类的)
200 个券码,发送客户,怎么设计?(分布式锁,数据库唯一索引兜底)
还可以怎么优化(redis 布隆过滤器,避免大量重复请求,处理逻辑做幂等方案)【睡不着想起来还可以做 mysql 的乐观锁,数据做缓存预热,减轻数据库请求压力】
长连接做成短连接,怎么设计,怎么做到短连接唯一(说了和自己的 短信生成方法(用户 id 活动 id,二进制),php 的 uuid,时间戳,uuid 截取?引用第三方库之类的)
面试官说要短的,要唯一的,答不出来
美柚科技外包/golang 服务端工程师/一面
cpu 飙升怎么排查(top 命令查看进程,找出对应的模块去排查)
平常用的什么设计模式(策略模式,说了抽奖,单例模式数据库)
大数据量怎么分表(说了按年份分表,然后业务需求,按照指定需求去划分)
水平分表、垂直分表(说了垂直分表是把冷字段切分出去,减少字段列)
设计模式开闭原则?(不懂,面试官说开是怎么加逻辑,闭是不能让什么什么写进来)
go 内存泄漏怎么排查(忘记了)
sql 执行慢怎么排查(mysql 慢日志查询,explain 分析,在对应字段建立索引)
索引怎么建立(建立在 wehere 或者 order 字段之类的)
b+树和 b 树的区别(说了叶子节点和非叶子节点,b+树用双向连表方便查询)
有没有用过微服务(项目没用到,自己写过一下示例)
项目最大的 qps 是多少(说了官网有 1000+)
gmp 调度模型(随便一吹)
go 协程里不捕抓异常会怎么样(内存泄漏,面试官说不全是)
redis 用的那些结构(string、zset、list)
redis 遇到过什么问题(缓存击穿,设置热点数据不过期,更新数据库再更新缓存)
说一下 kafka(说了对接线索系统)
为什么重构用 go(说公司技术转型,提倡 php 要转 go)
怎么保证高可用(说了对服务做监控之类的?没准备好)
对服务器怎么做的监控,cpu、内存之类的(我说没有,自己做监控的话就做了定时任务监控网站是否访问,线索是否正常入库)
没有运维吗(没有,后端一把梭)
项目怎么部署的(icode 上做安全检测,然后 scp 命令上线)
开发文档?他说是功能开发起来会遇到什么情况之类的文档(我说了功能开发时间、数据库文档、接口文档)
腾讯外包/后端开发/一面
自我介绍
go 开发几年(1 年半)
熟悉到什么程度(增删改查不是问题)
map 是否安全(不安全)
为什么不安全
slice 的底层结构
apendslice 会安全吗
automatic 有用过(用过+1-1)
说一下什么是原子性(要么成功要么失败)
怎么做有一个有序的排序(结构里搞个切片,然后用 sort 排序)
mysql 主从同步机制(不会)
redis 常用数据结构(string、list、hash、set、zset、bitmap)
有序列表的底层结构(不会,跳表)
常用的索引数据结构(哈希、b+树、二叉树)
微服务的服务发现(客户端服务、服务端服务)
怎么感知服务集群的变化(服务注册中心、轮询服务健康、监控系统)
注册中心如何感知服务的变化(心跳推送?触发机制之类的)
会不会 k8s(不会)
阿里外包/一面
自我介绍
遇到过高并发?(网站大访问量用 redis 缓存,表单做提交)
进程、线程、协程(随便说说)
go 的协程设置原理(说了 gmp 模型)
go 的锁,用到什么锁(mutex、rwmutex)
锁怎么实现的,有没有看过源码(莫得)
innodb 和 myisam 区别(事务支持、查询速度、表文件结构、外键支持、innodb 有主键,查询效率高)
为什么查询效率高(叶子节点存储索引和数据,避免回表二次查询)
mysql 优化(说了分表和覆盖索引)
explain 关注的字段(命中索引、可能命中索引、全表扫描、用到覆盖索引)
redis 和 kafka 的区别(说了 redis 和 kafka 的特点)
用过 k8s 吗(没)
mysql 的版本控制(说了 mvcc,以及怎么实现的)
前期用 php?(公司转型)
php 和 go 哪个好用(说了 go 协程用起来方便,php 的麻烦一点,编译型语言,安全比 php 明文安全)
goroutine+channel 依次输出小猫小狗 100 次(设置猫狗 channel,先读猫 channel 输出,狗输出的时候先读猫 channel 来保证顺序,没说好这一块)
map 怎么用?线程安全?怎么扩容?(不是安全的,用 sync.map 安全,说了双倍扩容)
怎么解决他的哈希冲突?(重新扩容、哈希函数重新生成)
设计模式(说了单例模式、策略模式)
php 用什么框架(tp、laravel)
laravel 的依赖注入
早日上岸!
我们搞了一个免费的面试真题共享群,互通有无,一起刷题进步。
没准能让你能刷到自己意向公司的最新面试题呢。
感兴趣的朋友们可以加我微信:wangzhongyang1993,备注:面试群。
版权声明: 本文为 InfoQ 作者【王中阳Go】的原创文章。
原文链接:【http://xie.infoq.cn/article/9a55852c2e0564a103a6b73a3】。文章转载请联系作者。
评论