腾讯、阿里、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,备注:面试群。