社招面试
个人简介:
- 迅雷两年后台开发(偏业务方向)
- 熟悉go开发,理解go协程、channel、内存分配、GC等基本原理及部分源码
- 熟悉mysql、redis、leveldb,理解其基本原理及部分源码
- 熟悉docker,了解k8s,理解docker基本原理
- 熟悉网络、操作系统、数据结构与算法
- 了解Kafka、Nginx、服务发现注册、服务限流
面试思考:
- 从大部分人讲述项目面试的经验来看,一方面是基于使用的基础知识拓展问题,另一方问问的是项目整体框架
- 项目面试个人感觉要突出几个点:
(1)为什么这么做,思考点
(2)团队之间成员配合,以及对其他人服务的了解
(3)对自身服务的细节要了解清楚 - 基础知识面试:看了很多面经,不能仅仅局限于别人说的面试题,学会自己提问自己,并想清楚回答这个问题的思路框架,不要说出了东扯一点西扯一点,乱七八糟毫无思路可言,平时注意多总结回答时候的框架知识点,保证模拟的时候脉络清晰
- 找匹配的岗位,否则你会怀疑人生
- 后续面试多了,开始能get到面试官想问哪个知识点,容易get到面试官的想法了
- 面试有时候真的挺玄学的,不要不信,你准备的很好的东西说不定这个面试官一点兴趣也没有,下一个聊到你忘记时间,所以面试还需要那么临门一脚的运气
- 应该社招面试到此告一段落:可能因为不具有普遍性,着重说下感性的面试感受,知乎和网易一面感觉是同事面,聊的比较开心,YY、腾讯面试很舒服,中途有早到、打喷嚏都会道歉,不论职级,面完还会招手说拜拜,或许就是真大佬吧,头条的面试官很严肃
- wps、知乎、网易较快响应,立马用来面试练手
2020/05/09 金山wps 云平台
• 一面(1小时)
- 刚项目:提问点是业务架构,接入层(slb、nginx负载)、监控、服务注册发现
- k8s 集群网络(忘记了,立刻复习下)
- mysql(索引区别)、redis(sort set)
总结: - 欢笑声中gg
- 面试过程有一丝紧张,感觉脑袋一片空白(可能是以下造成的原因),尝试自我提问,理清思路
- 感觉自己描述很烂,思路有时候有条理,有时候没有,看来是真的菜
- 面试官部门做的是wps 文档云服务,问了下工作内容一部分是k8s相关,以及千万日活的文档云服务,因此面试整体偏向于架构平台层面,不会对业务层使用的mysql、redis、kafka等做面试题,在回答mysql、redis深入问题的时候感受的出面试官并不感兴趣
- 缘由:自己简历明明做的业务开发,之所以遇到这类面试是因为有部分词汇会误导自己组的工作内容,本次金山wps云平台主动找我的,不过也对云平台侧重点有了认知(自己本质是业务开发而不是cdn加速节点、迅雷加速等底层开发,需立刻对简历进行修改)
- 业务与平台的思路出发点不一致,面试官想要的思路点与自身不一致,形成有种稍微尬聊的感觉,今后可反馈相关信息获取更贴合岗位
知乎搜索推荐平台
• 2020/05/11 一面(一个半小时)
- 项目,按照之前思路来
- kafka 可靠性(日志如何保存、副本机制以及ack)
- go GMP(源码级分析)
- go map slice 实现(源码分析以及slice内存泄漏分析)
- Mysql 索引
- 最终一致性(项目用到)
总结: - 聊得还可以,聊着聊着就一个半小时,然后感觉算法之类以及基础知识(可能和他们团队不涉及那么底层有关)都不用问了
- 问了下面试官业务是什么,搜索以及推荐,qps在1k-2k,不大注重底层,偏向于业务
- 吹了下自己看过挺多源码,以及平时和发现系统中不好的地方,自己的思考和改进
- 备注下:小哥哥挺帅的
• 2020/05/13 二面 - 面试官没上线???
网易游戏监控平台
• 2020/05/12 一面(一个多小时)
- 项目
- go 内存逃逸分析(分析了栈帧,讲五种例子,描述堆栈优缺点,点头)
- 是否有逃逸分析过(没)
- defer recover 的问题(自己了解不多,简单介绍)
- mysql 索引慢分析(线上开启slowlog,提取慢查询,然后仔细分析explain 中 tye字段以及extra字段,发生的具体场景及mysql是怎么做的,被表扬回答的不错)
- mysql 分布式id(项目用到的)
- redis 跳表
- 算法 twoSum(感觉自己写对了,但是有那个不可描述的致命错误,被指出了)
总结: - 一开始聊得还可以吧,除了算法阶段
- 问了面试官他们的业务是负责网易游戏业务、机器、go火焰图的监控告警系统,提了下告警系统也很复杂但没法讲清楚怎么个复杂法,他们的服务qps量级过百万,集群有过500w的qps
- 面试有点真空,没有那种聊着聊着时间就过去的感觉,可能因为毕竟监控平台开发和会员业务开发仍有差距,自己会的东西还是不搭边,因此聊的介于快乐与尴尬之间,快乐是go语言mysql等一些东西能聊得很深,但也有不足的地方是go源码的东西面试官也没看过,尴尬的地方在于有时候不知道对我简历的东西想聊啥,毕竟后面问了他们的系统用的数据库(好像是TiDB)跟我们平常用的mysql关系型数据库有着截然不同的思想,他们关系的东西跟业务层的思考点还是不一样的
• 2020/05/18 二面(一个小时) - 项目
- 线上问题排查
- 请求到服务qps高,返回问题排查
- 请求到了lvs层,但没到服务,问题排查
- go线上问题排查
- redis hashtable实现,什么时候退化成ziplist
- ziplist 和 hashtable 之间区别
- hgetall 或者说一个hashtable 有很多key,如何优化
- 写一个ttl带过期时间结构,怎么分布式cluster
总结: - 怀疑人生,毋庸置疑
- 基本在不会和乱七八糟回答中度过
- 选择合适岗位面试才是最重要的,否则每次都是怀疑人生收场,谢谢
深信服 golang
• 2020/05/15 一面(不到小时)
- 项目
- gdb
- go 协程
- 不想写了
总结: - 深信服 golang 是做网络安全的?????
- 早知道拒了面试,不会不懂不想三不原则,溜了溜了,byebye
YY欢聚时代 golang
• 2020/05/19 一面(1个多小时)
- 项目
- go、redis、mysql、操作系统、网络、docker
总结: - 面试很简单,试探性往深的说他的大致意思是说道这部分就可以了
- 增强信心有用
• 2020/05/19 二面(1个小时) - 项目(对项目的高可用重视,redis分布式锁,答得不好,需要学习补充)
- go、redis、mysql、docker(问题简单,但也有关注不到的点)
- 以下为关注不到的点:
(1)mysql checkpoint
(2)go waitgroup 的坑
(3)docker 预热
(4)mysql 分库分表平滑扩容方案
总结: - 应该是gg了(面对高可用的问题没有对应的方案只会说其实还好,被提示了做服务端不能这样),对于项目的相关问题又涨知识,突出问题点在于项目的高可用
• 2020/05/19 三面(半个小时) - 居然有三面,聊人生去了
- 讲下项目
- 迅雷怎么样
- 对YY的了解,未来岗位的预期规划
- 提问环节,YY 阅文业务的团队相关情况,OKR的形式
总结: - 可能运气好,碰到的面试官感觉挺尊重人的,比面试预约时间早打来电话还抱歉了一声,整体面试下来流程感觉还挺好的,沟通的时候挺流畅的,互相都能get到对方的点吧
• 2020/05/26 HR面(半个小时) - 可能gg了吧
- 发offer了
腾讯QQ 增长
• 2020/05/25 一面(半个小时)
- 项目
- go 协程
- 项目调试(讲了下GDB)
总结: - 感觉没怎么问,老项目是c++维护用,语言不是问题
- 感觉就飘飘过了
• 2020/05/26 二面(一个小时) - 项目
- go 协程
- k8s自己知道什么
- 二叉树应用(不知道,排序?但是排序有像redis跳表更好的实现方式)
- 哈希表怎么解决冲突(只记得开链解决,顺便提了下redis 哈希表底层实现)
- 自己工作的难点
- 迅雷需求多吗,工作重吗
- 自己效率如何,如何用例子验证自己的效率
- 自己的优点缺点是什么,举例子
- 在迅雷学到了什么,举例子
- 到此一游
总结: - 说这边项目qps在十几万到几十万,虽然比不上微信
• 2020/05/29 牛客网算法题(一个小时) - 数组存在两个出现奇数次数的值,按序输出(60%)
- 单链表和双链表的反转(100%)
总结: - 面试官说写代码是最近腾讯面试要求加的
- 第一题只通过60%,不知道牛客怎么判定的,leedcode刷是没问题的,跟面试官解释了思路,他说我思路没问题,然后说我应该平时有刷leedcode,思路可以
- 希望能过
• 2020/06/05 三面GM(半个小时) - 项目,印象深刻的
- k8s
- redis 跳表
- tcp 四次挥手
- select、epoll
- go 内存分配
- go 协程怎么切换的
- go 同步,channel的实现
总结: - 腾讯流程之所以长是以为GM很难约时间,约了一周,然后居然先面HR,并且先填写的薪资证明
- GM聊下来人感觉很不错,给人感觉特别舒服,或许这就是大佬吧,真大佬面试真的会给人一种很舒服的感觉,特别像校招面阿里巴巴的一面,真的有时候会遇到那种怼天怼地自以为是的,所以找工作运气也很重要
- 下周应该给我offer call,希望能达到预期
• 2020/06/15 收到offer - 上周一整周的背调和offer审批
- 后续应该负责QQ 空间和 QQ 小世界的产品
字节
• 2020/06/01 广告一面(1个小时)
- 项目
- TCP相关的关闭连接
- TCP最多有几个连接(fd限制+四元组ip、port限制)
- 服务端出现大量close_wait原因(主子进程共享socket,close不能完全关闭)
- mysql 隔离级别、sql慢查询
- go defer
- etcd 原理(讲了下raft协议)
算法: - sql语句:查询所有课程分数都大于或等于80分的学生姓名
- 检验字符串是一个回文字符串
- 给定一个字符串 s,找到 s 中最长的回文子串
总结: - 一面感觉和别人不一样啊,我好难啊,好难受
- sql和算法都没写出来,跪了吧
- 现在回忆起来运气不好,聊不来,心态也正了
• 2020/06/01 风控一面(八点半开始面到十点1个半小时) - 项目
- 算法(最小栈、很简单的dp非leedcode题目)
- 有一批按时间排好序的用户登录登出日志,每条内容为<UID,操作,时间戳(精确到秒)>,操作可能是登入或登出,请问最高在线人数以及对应的时间点(不大懂,最后也没说出来)
- 数据库中,用户表有『余额』等字段,订单表中有『金额』、『付款状态』(分为未付款、已付款)等字段。请实现需求:付款功能,即:当用户的余额大于订单金额时,订单的『付款状态』由『未付款』更新为『已付款』,并从用户的『余额』中扣除订单的『金额』。请处理好并发冲突(最终一致性的解决方案)
- 零零散散的计网、协程、进程、线程、mysql基础知识(看别人的面经就那些,很奇怪只要我简单回答)
总结: - 奇奇怪怪的感觉,可能想问很多问题,所以每个问题只需要简单回答,每个问题已经习惯性引申更深的层次就说我回答那些点就可以了,所以违背了我一贯的回答思路(举例,回答协程和线程区别,大致回答后引申的go的协程相关,大意让我停止下个问题,但不是那种认可后让我停下来,而是觉得我有跑到其他点去了),感觉奇奇怪怪,不懂或者不了解懂让我直接跳过,就感觉很奇怪
- 这种面试感觉跪了吧,反正是被捞的,没啥指望的
- 讲下风控的业务吧:大概就是账号防盗、视频涉黄、反动、机器刷红包反查下的业务场景,新部门作为中台在协调整合,风控的技术并发,以及某些业务下的响应
• 2020/06/01 风控二面(1个小时+20分钟)
1
/
2
/
v v
3 -> 4
a. 如何判断环形依赖
b. 如何并发执行
一次请求处理过程中,其中需要调用 N 个下游,各下游之间可能有依赖关系,设计一种算法,完成对 N 个下游的调用并返回
假设 5 个下游调用
1 2 3 4 5
1依赖2、3、4
2依赖5
1依赖2
3依赖4
2/4依赖5
频控
如果一个uid最近5分钟访问次数超过10次,则进行拦截
map[uid](次数, time + 5min)
t1 (1, t1+5)
t2 (2, ?)
key:uid value:(t1时间戳, t2时间戳,)
定时器
- go相关知识点(内存分配、go优缺点、go错误处理有什么优缺点)
总结: - 又是奇奇怪怪的,思维不一致吧,毕竟风控有自己的思维方式去处理解决,产品有自己的逻辑思维方式去做服务,应该挂了,溜了