1.方法论
关注点并不是“我在项目经历中,使用了哪些技术”,而是“我在项目经历中,使用了这些技术,并且我对其原理有深入的了解”.项目中使用工程上很流行的技术和框架,这是最基本的水平;如果对这些框架的原理有深入的了解、对比过不同框架的优缺点、甚至自己尝试实现过一个 demo 框架,那在面试官那里一定是一个极大的加分项。
我们应当保证对项目中用到的技术/框架有较为深入的了解,而不只是停留在调用 API 上。比如项目里用了 gin 框架,面试官就会问为什么 gin 的速度快?有没有从源码的层面上理解过它的特点?这个时候,如果我们知道是前缀树,面试官就会点点头;如果我们再顺手写个前缀树的代码,那就会让面试官惊喜了。
项目不是只能做 Web 网站或者后台管理系统,还可以有其他选择。比如:学习《CSAPP》课程,并做完若干 Labs,如内存缓存、内存分配回收、Web 服务器等.实现一个简单的操作系统,可以基于已经写好的系统,实现其中的部分模块,如进程调度、中断处理等。实现一个编译器,或者正则表达式(子集)的解析器。实现一个基于 TCP 的并发服务器框架,包括路由、Goroutine 池、消息队列等(如 zinx)。实现一个简单的 RPC 框架,考虑选择什么传输协议和编码协议、以及这样选择的原因。build-your-own-x 提供了许多实践项目,如 Docker、数据库、命令行工具、Shell、Git、搜索引擎等
实习经历.关注点:在实习中做了什么工作?遇到了哪些问题?如何解决?通过实习,得到了哪些成长?比如 Git 操作、内部工具、团队协作、开发流程/规范等。实习过程有哪些产出?有没有主动的贡献?比如整理新人手册、发现并解决了某个问题、提升了业务指标等。 学习链接:https://imageslr.com/2020/07/08/tech-interview.html#linux-git
笔记的分类:基础课程:操作系统、计算机网络、数据库等.算法:解题技巧、专题、题解等.语言:C/C++、Golang、Java 等.工具:Git、Linux、Docker 等.其他:分布式、设计模式、最佳实践等
知识复习的体系:1.建立框架。2. 深入研究各个专题 (搜索大量参考资料,梳理大纲,完善整理为连贯的内容)3.阅读书籍的关键部分。4.分清优先级,以基础知识 i 为主,分布式和中间件在有余力的情况下再进行深入的了解。5.不懂的名词多查。多问几个为什么,英文关键词搜索。
算法复习:刷题方法:每天 mid /hard 热身,记录错题,错误原因,笔记连接,每周复习几道。按照标签刷。分清优先级:优先刷《剑指 offer》、LeetCode 经典题、高频题、模板题;
吃透每道题,刷题的目标不只是通过,而是要给出最优解。对于一题多解的情况,还需要参考他人的题解,将各种解法都实现一遍,并对比不同解法的优缺点。此外,很多不同的题目有着相似的解题思路,可以尝试用这道题的解法去做其他题,争取举一反三,比如 42. 接雨水和 84. 柱状图中的最大矩形。
学习数据结构时,配合可视化网站.Data Structure Visualizations/visualgo/Algorithm Visualizer
定期复习”,我使用一个表格来管理所有错题:首次复习时都需要重新写一遍代码,之后视情况选择写代码或者只回忆思路。及时更新各个题目的状态为“重点”“不重要”或“已掌握”,防止错题越攒越多。面试前快速浏览表格,回忆做题思路,优先看橙色高亮的重点题。
2.简历和面试
简历:采用 STAR 法则描述自己的项目和实习经历,知乎的这个问题可以参考,geekcompany/ResumeSample 提供了一系列程序员的简历模板,resumejob/awesome-resume 则提供了许多程序员的简历例句。最好放在一页上,如果一页放不下,可以缩小字体/间距,或改变页面大小;部分在线平台也提供“自动填满一页”的布局功能。简历导出为 PDF 格式,命名为“姓名学校岗位_手机号”。教育经历写预计毕业时间,而不是“至今”
面试官您好:我叫 XX,来自 XX 学校 XX 学院,目前 XX 再读,预计 XX 毕业,研究方向是 XX,去年在 XX 公司 XX 团队实现 XX,这个部门主要负责 XX,我在其中负责 XX 工作,包括 XX,此外还输出 XX,为部门整理新人手册。最后我有写博客的习惯,定期归纳总结自己的学习笔记,我也有开源经历…..以上就是我的个人介绍。
简历里的项目经历、实习经历最有可能被面试官作为第一个问题,比如“从现在看来,觉得这个工作还可以怎么改进?”“觉得这些工作中最难的一点是什么?是怎么解决的?”针对这些问题,应该提前准备。可以参考:https://imageslr.com/2021/autumn-recruit.html#common-question
3.综合面试问题
- 实习期间的工作内容,介绍一下?
- 简单介绍一下这个项目的内容?觉得它的亮点 / 难点有哪些?
- 实习期间遇到最大的挑战是什么?如何解决?
- 实习期间给带来最大成长的工作是什么?
- 从现在看来,觉得这个工作还可以怎么改进?
- 觉得这些工作中最难的一点是什么?是怎么解决的?
- 实习期间有哪些工作以外的对团队的贡献?
- 自己平时分析过源码吗?
- 是怎么学习新技术的?
- 最近在学哪些新技术 / 在看哪些书?
- 的长期职业规划是什么?1 ~ 3 年的规划是什么?
4. 反问
- 组内主要的技术栈 / 语言?
- 我加入部门后可能负责的工作内容
- 部门的人数 / 人员构成(判断是否核心)
- 针对新员工有哪些培训(万能问题)
- 后续是什么流程?还有几轮面试?
- 您对我有哪些建议?/ 哪些方面的知识、技能还可以再提升?/ 您觉得我还有哪些方面的不足?
https://github.com/yifeikong/reverse-interview-zh > https://shimo.im/docs/wcrJrrCtHwvrC9RG/read
面试前一小时 快速浏览以下内容,遇到不会的不用深究,主要是有个思路: 基础知识题目列表 综合面试问题 算法错题集,优先重点题目 牛客网面经
面试后 复盘。根据录屏或者回忆,整理面试中遇到的题目、自己没有发挥好的地方。距离面试结束的时间越短,回忆越清晰,可以尽快整理。
查漏补缺。有些题目可能只是我们自认为答对了,所以对于每道题目,都需要搜集资料、发掘所有的考点、并做笔记。
5. 面试流程
阿里:
面试流程:统一在线笔试。2 轮技术面 + 1 轮经理面 + 1 轮交叉面 + 1 轮 HR 面,每轮都是电话面试,时长 1 小时左右。一面面试官是未来的 leader,之后的面试官应该级别更高。一二面考察基础知识,三四面主要围绕项目和实习经历展开。
反馈周期:通过后会很快约下一轮面试,可以向的内推人 / 师兄咨询面试结果;每轮面试间隔 2 天~ 1 周;Offer 统一在 9 月发出。
评价:由于是电话面试 + 已经笔试过,所以面试时不再考察算法。这导致面试题的覆盖面广、题量大、问得细,难度总体较高。HR 面体验很好,给我提了中肯的建议。
百度
面试流程:3 轮技术面 + 1 轮交叉面 (可能没有) + 1 轮 HR 面。技术面时长 1 小时,HR 面很短。是否有交叉面取决于部门和面试评级。技术面试包括算法题,中等偏难。使用百度的“如流”面试。
反馈周期:一面完可能紧接着就是二面。1~2 天约下一轮面试。HR 会加微信。
评价:不同部门的面试官水平差异极大。如果一个月还没给一个明确的答复,大概率是被泡池子了,可以考虑终止流程,重新投递另一个部门。
快手
面试流程:2 轮技术面 + 1 轮经理面 + 1 轮 HR 面。技术面每轮都是牛客网面试,时长 1 小时。HR 面时长 30 分钟。
反馈周期:1 周左右约下一轮面试。
评价:基础架构部门问了很多 C/C++ 的问题,很少问上层的网络协议等知识,也没怎么考算法。面试官比较 nice,答错了会一步一步引导。
美团
面试流程:2~3 轮技术面,1 轮 HR 面。技术面时长 1 小时,HR 面时长 30 分钟。最后一轮技术面是 leader。使用牛客网面试。
反馈周期:3 天约下一轮面试。
拼多多
面试流程:2~3 轮技术面 + 1 轮 HR 面。技术面时长 1 小时左右,HR 面时长 30 分钟。技术面会考察两道算法题,都是 LeetCode 高频题,难度适中。使用自研平台面试,类似于牛客网,有代码编辑器和视频窗口。
反馈周期:一周左右约下一轮面试。
评价:确实很拼,约了 21:30 面试,面试官有事,等到 22:30 才开始,面完已经 23:30 了。从视频窗口能看出工位确实不大。
腾讯
面试流程:2 轮技术面 + 1 轮经理面 + 1 轮 HR 面。技术面时长 1 小时左右,HR 面时长 30 分钟。三面是 leader。面试形式有电话、牛客网、腾讯会议、QQ 视频。
反馈周期:2~3 天出面试结果 + 约下一轮面试。如果 5 天还没有约下一轮面试,建议联系 HR 查看进度。join.qq.com 上的进度超过 7 个工作日(一般 10 个自然日)没有更新时,流程会自动终止,简历重新放回池子里。面试通过后会先收到“云证”邮件。
评价:腾讯在面试实习生和校招生时,比较重视基础课程(操作系统、计算机网络),不会涉及太多高深技术,面试题目和面经重合度较高。每轮都有两三道算法,难度适中,不需要特殊技巧。
WXG:2 轮技术面 + 2 轮面委会 + 1 轮 HR 面。难度比其他部门高,会考察系统设计题(如高并发定时器)或复杂算法题(如判断点是否在封闭图形内)。
小米
面试流程:2 轮技术面,时长 1 小时。没有 HR 面。使用牛客网面试。
反馈周期:3 天约下一轮面试。
评价:面试官很耐心,会主动指出没答出的题目是哪个知识点、下来以后可以查一下。基本没有能够联系到 HR / 面试官的方法。感觉招人比较随意,二面完一个月没消息,一直认为自己挂了,结果 9 月底突然打电话,直接给出了薪资方案。
猿辅导
面试流程:先笔试,通过后进入面试。2 轮技术面 + 1 轮经理面,每轮时长 45 分钟,其中 15 分钟过简历 + 考察基础知识,25 分钟做两道中等难度的算法题,剩下 5 分钟反问。三面是 leader,没有 HR 面。使用牛客网面试。
反馈周期:一周内约下一轮面试。如果进入下一个阶段,内推人会先收到通知,可以问内推人。
评价:整体体验不错,HR 对校招生很用心,会加微信、拉微信群、送校招礼物。猿辅导笔试和面试的算法难度是 LeetCode 前 300(我也只刷了这些题)。基础知识 / 算法 / 实习经历至少有一项突出,会比较稳。
字节跳动
面试流程:2 轮技术面 + 1 轮经理面 + 1 轮 HR 面。技术面时长 1 小时,包括 2 道中等难度偏上的算法题。HR 面时间较短。日常实习可能没有经理面,校招可能会有加面。
反馈周期:一二面一般会连着,三面隔一两天。
评价:对算法和基础知识都很看重,问得比较细。无论通过与否,反馈都很快。会有 HR 加微信,一般是实习生。
学习和复习资料
leetcode 题解:LeetCode 题解 https://github.com/labuladong/fucking-algorithm labuladong/fucking-algorithm:强烈推荐,非常赞的算法题解。 afatcoder/LeetcodeTop:各个大厂近期的高频面试题汇总。https://github.com/afatcoder/LeetcodeTop MisterBooo/LeetCodeAnimation:可视化地呈现 LeetCode 题解。https://github.com/MisterBooo/LeetCodeAnimation yuanguangxin/LeetCode https://github.com/yuanguangxin/LeetCode azl397985856/leetcode https://github.com/azl397985856/leetcode youngyangyang04/leetcode-master https://github.com/doocs/leetcode doocs/leetcode https://github.com/doocs/leetcode 小浩算法 https://www.geekxh.com/ Jack-Cherish/LeetCode https://github.com/Jack-Cherish/LeetCode Github - Search · LeetCode https://github.com/search?q=Leetcode&ref=opensearch
面经汇总:面经汇总 imageslr - 技术面试题汇总 wolverinn/Waking-Up 计算机网络太难?了解这一篇就够了 CyC2018/CS-Notes Java-Guide frank-lam/fullstack-tutorial Top K 面试题 - 海外兔 Github - Search · 面试
https://imageslr.com/2020/07/08/tech-interview.html#linux-git
https://imageslr.com/2021/autumn-recruit.html#interview
https://imageslr.com/2021/autumn-recruit.html#common-question
https://imageslr.com/2021/autumn-recruit.html#common-question
https://imageslr.com/2021/autumn-recruit-offer.html