-
希望自己的面经能给朋友们,一点点提示,也是对自己的一份总结报告。
-
若您对以下内容存在意见或建议,可以随时提 Issue 沟通交流。
-
从面试的公司也看的出来比较真实了;本人并非大佬,贵在真实。
-
求职过程:全部通过 Boss 投递,没找猎头,也没有内推。老实说刚满 1年,也不太好找人推。。。
-
地点:上海;六家企业面试,整个求职时间段:2019年 7月11日 - 7月22日;
-
18年某普本毕业,17年11月份出去实习+转正至今(马马虎虎算一年经验了吧=。=)。
-
目前(工作制:965,算时薪比的话还是相当可观的,手动滑稽: )
- 某C轮小厂担任:Python 开发工程师 一职
- 薪资:13 * 14
- 工作制:965
以下是这段时间,本人求职过程,公司投递以及offer情况,大致能想到的就这些,投递每家公司的JD都有贴出来。(意向岗位:golang 开发工程师)
全部通过 Boss 投递,没找猎头,也没有内推。老实说刚满 1年,不太好意思找人推。。。
地点:上海
PS:1000人以下的企业,简历挂的就没统计了,因为自己毕业一年,会尝试投一些小公司 3-5、5-10 年岗; 因此可能还是有一些数量的,没有什么实际价值,就不一一写了。
-
0-100 人
-
100-1000 人
-
1000人以上
【兑观信息科技技术】—— Golang 工程师(数据处理)
展开查看
-
基础部分
- 给了个数据集,给了两三个需求,按要求编程(数据处理)
- MySQL 索引
- HTTP 知道哪些头
- 为什么用 Golang,用下来感觉如何
- 你对 gRpc 和 http 的理解
- 剩下的忘记了,想起来再补充。
-
其他
-
多系统间 rpc 来回调用问题
-
多链路排错(时延、异常等),全链路追踪吧
-
多版本依赖包管理:A依赖B、C.1;B依赖C.2,版本强依赖,如何解决
-
一个接口希望内部接口调用不用做验证、外部接口调用(不用摘要或加密认证;不用 IP 段白名单)
-
MySQL 两个进程
- 进程一:一秒插一条数据;
- 进程二:一个小时插入十万条数据;
- 如何配置或者优化操作
-
HTTP 如何保持长连接
-
负载均衡算法和健康检查算法
-
【晓信】—— Golang工程师(方向:toC、数据处理)
展开查看
-
说一下进程、线程与协程
-
说一下用户态线程
-
进程间通信
- 不同主机可以通过:套接字(socket)通信;
- 按现代操作系统里面说的
- 相同主机:内存共享、管道、信号等
- 还聊了里面介绍的,多线程同步机制:屏障
-
用户态和内核态有什么区别
-
MySQL 索引有哪些
-
什么是缺页中断
-
B+ 树优势
-
LRU 算法如何实现
-
redis 的淘汰算法(redis的LRU并的非我们使用我们所实现的那种,淘汰略有偏差,但总体合理。见 redis 官方网文档:Using Redis as an LRU cache )
-
说一下 Raft (领导人选举+日志复制 说了一遍)
-
ISO 七层协议(我说比较了解 TCP/IP 四层)
-
四层也可以讲一遍(从上到下说了一遍)
-
说一下 ARP 协议,有什么用
-
大文件处理:日志处理。(答: Golang channel: ReadLogLineByLineChan -> CountChan -> 结果持久化)
- 要不要考虑用别的,问我用没用过 MapReduce(可能看看我适不适合去做数据处理那块)。答:在学校的时候玩过,自己搭建过 Hadoop 集群。实际工作接触数据处理这块比较少。
-
对微服务的理解?
-
docker 了解多少
【亿鼎云】 —— golang开发工程师(DevOps 方向)
展开查看
-
一轮技术面
-
MySQL 有哪些索引?
-
唯一索引和普通索引有什么区别?插入、删除?
-
说一下 Raft(Leader 选举 + 日志复制;实际 basic raft paper 是有问题的,但是这个时候我还没接触过)
-
举了几个 Basic Raft 未解决的异常情况,问我如何解决。
-
说一下 我的 ScanEngine 项目,和之前差不多(某不知名小厂面经系列 - 1)
-
一般用什么做系统间通信。
-
我们现在常用的是 redis,也会用到 kafka。
-
如果让你不使用第三方(redis、kafka 等这些),那么你会怎么做?(答:以文件的方式,直接往磁盘写数据)
-
-
-
总监面
-
说一下 我的 ScanEngine 项目
-
和之前差不多(某不知名小厂面经系列 - 1)
-
问了更多细节,包括使用的 框架,以及思路。
-
因为使用的是 Python 的 Celery 框架,因此总监还问了一句,假设我们要用那么我们还需要考虑学习成本是吗?
-
最后,你觉得你的项目是否还有不足的地方?
-
-
你网络这块了解还挺好的吧?(还可以吧)
-
两个主机通过交换机,ping 一下;说一下整个过程。(二层)
-
比较两个网络拓扑图A、B,可能存在 A比B多一些节点;也可能存在 A与B中相同节点,配置不相同。输出:以及多出的节点以及配置不同节点。
-
-
-
人事主管
-
自己有什么优缺点
-
为什么离职
-
其他
-
-
结果:挂了。(HR回复:几个面试官综合讨论了一下,可能目前和我们的岗位需求不是非常匹配,很抱歉,这次没有机会做同事了[皱眉])
【Innotech】—— Golang工程师(业务线:萌推;电商)
展开查看
-
一轮电话面
-
给我一条SQL 语句,问我哪个用到了索引(考点:最左匹配原则)
-
简单讲一下你的 分布式任务调度系统
-
给一个缓存的场景,如何处理
- 大概就是想问:数据库和缓存双写一致性方案
- 先更新数据库,再更新缓存
- 先删除缓存,再更新数据库
- 先更新数据库,再删除缓存
- 大概就是想问:数据库和缓存双写一致性方案
-
-
现场技术面
-
自我介绍
-
说一下 raft。(Leader 选举 + 日志复制)
-
raft 思想有融入到自己的系统中吗?(答:暂时没用过,但我热爱研究,其实 basic raft 是存在一些问题的嘛,我也会在开源社区做一些探讨。巴拉巴拉说了一堆。。。话题转移大法=。=)
-
看你做了个 爬虫-搜索引擎 项目,这里面 随机IP代理 怎么实现的?
-
HTTP 协议了解多少,可以简单描述一下 包结构嘛?
-
说一下 你知道的 HTTP Header?
-
重定向如何实现的?
-
讲一下 HTTPS
-
写道算法题吧。
- 斐波那契数列(写了两种:递归记忆化搜索、迭代。)
- 你觉得有比O(n)更快的吗?(答:O(1)?显然 O(logN)也比它快,当时一激动就说了O(1))
- 斐波那契数列可以O(1)实现吗?(答:假设有某个数学函数/公式的话,那就可以了吧。(回家搜了一下,还真有。。。链接:这里))
-
设计个 视频弹幕系统,接口设计+请求流程+弹幕存储?所有过程随意发挥。
-
其他的,想起来再补充
-
-
本人的回答,后续会贴到我的仓库 github/blog,感兴趣的可以追一下
-
个人意愿是非常想去今日头条
-
自己转 Golang 技术栈也有部分原因是因为这个(我们常说语言是次要的,重要的是工程设计思想;不过对 title 较低的人来说,语言契合度比较高,那应该最好不过了)
-
奈何自从校招给过面试机会外,毕业至今已经投过两次,结果简历均未通过。
-
本打算年底去头条再试一次,谁知 头条HR 在 BOSS 上,主动找我;我一个没忍住就又投了。结果呢,如上文中描述,简历又挂了;
-
哎,近期内可能暂时就别想进了;期待好心人,能给我捞起来=.=。。。
-
PS:可能有大佬会说,头条有啥好的,又是大小周/压力也不小什么的。这玩意看个人吧;有取舍,说也说不清楚,各位大佬们也没必要和小弟纠结这个问题,哈哈。
-
-
自己对比打听了一下几个 offer,接了:Innotech
-
目前是打算接了 Innotech 的 offer,电商是我比较感兴趣的方向;刚好薪资待遇也符合目前期望
-
我也从侧面打听过,萌推 现在是他们内部评分算是比较高的
-
砸钱也确实比较狠,不管是招人给推荐奖金,还是薪资待遇,都算是可劲砸的那种(据某被内推的3年左右经验,资深title 的老哥说:内推只要去面试就 1000 内推奖金;候选人入职再给:8000)
-
和HR讨论了一下,一年算下来总包,应该拿个 16 薪左右,即使被忽悠我也开心=。=,毕竟比现在涨幅还是有一些的(现在15k以下 * 14)
-
电商业务,对技术及业务理解度相对会有挑战,同时也是快速提升个人能力的机会
-
给同为应聘者朋友们一些建议,也是自身感受
-
校招
-
若盆友你仍未毕业且符合校招条件,那么请立即往各个大厂实习岗投递简历;否则在毕业后的三年内,考虑进入大厂将会变得相当困难,除非真的非常非常优秀(技术岗)
-
基础很重要,很多校招面经都有所提到;此次主题还是社招,就不再赘述了
-
-
1-3 年社招
-
一般大多数公司(不包括头条)
-
基本不会问太多算法基础,应付面试 LeetCode 上面刷百来道基本够用
-
对简历上写的所有点,都应该掌握
-
如果觉得自己其他方面不够出色,那么打牢基础好了
-
对自己使用的开源应用或工具应当深入研究
- 如本人简历基本只写了 redis、mysql、etcd 那么这些技术点都应该去研究一番,能有一些自己的见解那最好了
- redis 官方文档应该通读一遍(很少)
- mysql 官方文档 innodb 那块理应 通读一遍(不多),时间允许的话可以大致都浏览一遍
- etcd 基于 raft 那么,理应去看一下 Raft Paper;然后可以谷歌一下大佬们对 raft 一些见解,结合起来效果更佳。
- 看一些技术文档固然也可以学习,但是假设你同别人描述某个问题的时候,你说 redis 官方文档上描述到,版本 3.0.0 之后,某个命令新增了什么参数;而不是说我再哪篇博客中看到什么什么;相信前者会更有说服力一些。
- 若有新的版本更新,官方文档应该是最快的了解途径
- 使用官方文档原话与面试官沟通,既会提高表述相关技术点时的自信心,也会给面试官一种此候选人学习能力很强的直观感受
- 在我个人看来,看官方文档的好处:就好比咱文科类同学,书看多了、古诗词读多了,出口成章 : )
- 如本人简历基本只写了 redis、mysql、etcd 那么这些技术点都应该去研究一番,能有一些自己的见解那最好了
-
网络:
- 《TCP/IP 卷一》这本书把 TCP 四层协议族,说得比较透彻;没空的话,看一下 TCP 那块就好了
- HTTP、HTTPS 需要研究一下
- HTTPS中:证书、对称/非对称加密、中间人攻击、嗅探什么的可以一同过一遍;本人博客也有写:HTTPS 如何做到安全
-
操作系统:应付面试的话,看《现代操作系统》那本,把下面三章看完,基本够用
- 进程与线程
- IO
- 内存管理
-
算法基础:如前面所说,LeetCode 上刷个百来道
-
其他基础自由发挥,尽情展现
-
可能有人问,假如面试官不问,是不是就亏了
- 其实基础这玩意有时候就是不会问,但是你自己应该有这个能力
- 计算机科学这门学科所有知识体系就应该是想通的,只是有时候我们自己不愿意去想而已
- 举个例子,mysql 在我们查找时,很可能会出现缺页中断吧?
- 你可以在介绍索引的时候引出(介绍 MySQL Innodb 的索引,这个问题应该通常都会问的吧)
- 那么这时候是不是就由你引导至操作系统基础了,也侧面想面试官表现出你看待问题的能力:是存在多方面考虑的
- 一个普通的问题,这样回答是不是就更突出一些呢
- 诸如此类会有很多例子,知识都是相通的,就看你自己了
-
-
社招的话,可能相对更看重工程设计能力
- 建议自己有一个到两个比较有深度的项目,能让面试官感兴趣,那么这轮面试大概率比较稳
- 候选人应该重视:对之前接触过业务的理解度,以及对新业务的接受程度,从而能应付大多数业务的工程设计能力
- 可以多看看别人的面经,看看别人设计这方面能力考查都问了什么,如果自己来做的话,会怎么做
- 多锻炼锻炼这方面能力,倒不能说面试时一定达到炉火纯青地步,但也不至于当场卡壳,陷入尴尬局面
-
剩下没想到的,后续若有我会补充至此;目前,请朋友们自行补充
-
-
-
这一段时间,面试结果
- 总共面了六家,拿了五家 offer
- 并且挂了那家做 DevOps 确实也不是本人所期望的岗位(去了才和我说是做 DevOps 的。。)
- 结果还算满意
-
可能 offer 质量并不是说非常高,但是起码这个结果,在自己这里算是基本过了关的
-
从投递结果来看
-
客观原因:自己的履历确实不怎么精彩,没法打动多数大厂的面试官(自己太菜)
-
有打听过一些其他原因
- 一般都是找 目标公司内部人员/猎头推,自己去 boss 上投基本很难
- 目前大厂更希望招聘的社招候选人,经验为 3-5 年最佳
-
未来考虑在努力完善自身经历的情况下,也尝试通过:内推+猎头推 的方式寻求机会
-
祝各位朋友能有自己的方式获得更多面试机会 : )
-
-
考虑接下来这两年就在这家努力奋斗了,之后再去试一下 头条或者其他一线类大厂。就是有这么个大厂的心节=。=,咱也不用问,您可能也不想问
-
朝这个目标去,起码不会出什么大错嘛;即使后面想法改变了,那也肯定是因为有了更优选;因此,目前奔着实现这个目标走走看了。
-
最后,可爱的盆友们,人生不易;你我都加油啦!!!哈哈 : )