其他
腾讯、阿里和B站的最新面经抢先看!
今天分享一位朋友的面试经历, 内容比较多也比较丰富有趣, 一起来看看吧
腾讯外包 /后端开发/一面
自我介绍 go开发几年(1年半) 熟悉到什么程度(增删改查不是问题) map是否安全(不安全) 为什么不安全 slice的底层结构 apendslice会安全吗 automatic有用过(用过+1-1) 说一下什么是原子性(要么成功要么失败) 怎么做有一个有序的排序(结构里搞个切片,然后用sort排序) mysql主从同步机制(不会) redis常用数据结构(string、list、hash、set、zset、bitmap) 有序列表的底层结构(不会,跳表) 常用的索引数据结构(哈希、b+树、二叉树) 微服务的服务发现(客户端服务、服务端服务) 怎么感知服务集群的变化(服务注册中心、轮询服务健康、监控系统) 注册中心如何感知服务的变化(心跳推送?触发机制之类的) 会不会k8s(不会)
b站外包/go开发/一面
自我介绍 在百度什么级别?t几?(没有技术级别,当时忘记自己是什么级别了,说了个m,然后他说m是经理hhh) 怎么设计一个api的(没答好,已读乱回) 怎么去防那个ddos(redis限流+nginx层做处理,最后还是花钱买服务) 怎么部署那个安全拦截服务的(领导买了,在控制台做的服务,点点点) cdn的理解(加快访问速度之类的,问我还有没有别的,我说没有) 负载均衡怎么做的(领导在控制台点点点) 说项目没难度(我说是,不像b站外包用到这么多技术) 分表是怎么分的
阿里外包/一面
自我介绍 遇到过高并发?(网站大访问量用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的依赖注入
网易外包/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截取?引用第三方库之类的) 面试官说要短的,要唯一的,答不出来
希音外包/PHP工程师/二面
自我介绍、项目总结 laravel的生命周期(乱说一通) redis宕机了怎么办(redis日志排查,加redis哨兵做主从切换) http请求过程(乱说一通) 消息积压(说了分区、批量提交(面试官疑惑)、异步消费,他说异步消费不是搞得代码更加臃肿?) 怎么做幂等(面试官说用分布式锁做幂等?没有反驳他,说他对就完事了) mysql内存占用突然飙升,怎么排查问题(慢日志、框架日志排查,加索引、加缓存之类去解决) mysql死锁怎么解决的(只说了把mysql配置文件锁等待的时间设置短一点) 什么是死锁 接口的请求过程(乱说一通) redis持久化机制 redis缓存击穿、穿透、雪崩 在团队中扮演什么角色
复试
自我介绍 说一下你重构后的项目,和之前的项目有什么不同,亮点在哪里(cms系统比织梦的安全性高) 过几年后你的项目数据量上来, 你会做一个什么样的优化(说了redis和mysql搞个集群,数据监控之类的) 项目基于Laravel8实现 ,构建项目的基础架构,确保代码的可维护性和扩展性的(乱说一堆) redis持久化机制 redis rdb快照的时候,有写操作进来,会备份吗(不会,主线程会阻塞,感觉面试官想问bgsave命令,子线程备份,当时没想到) redis rdb 单线程 能不能接收客户端的请求(说了io多路复用) 发短信的时候,发送失败怎么处理的(记录发送状态+重试机制) 你们对短信发送的时间有要求吗。比如多少秒发多少条,是怎么确保一个到达率的(没有,如果要保证发送时间,说了多台机器批量去发送)
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命令上线) 开发文档?他说是功能开发起来会遇到什么情况之类的文档(我说了功能开发时间、数据库文档、接口文档)
我们搞了一个免费的面试真题共享群,互通有无,一起刷题进步。
没准能让你能刷到自己意向公司的最新面试题呢。
感兴趣的朋友们可以加我微信:wangzhongyang1993,备注:面试群。
点击下方文章,看看他们是怎么找到好工作的!
还有最新鲜的腾讯面经,不要错过哦!