春招实习指南
前言
本文会以我自身的视角来总结一下如何获得春招实习的机会。
明确内心
一个人活着,他可以想着去更为广阔的舞台实现他宏伟的目标,也可以想着去强大自身立足社会守护好自己这一片安详的小天地。
而作为在校生的你,自然会根据家庭/经济/感情/兴趣/经历/眼界/现状等因素设计你的下一步着点,工作/读研/保资/选调/考公,你多多少少得明确下一个方向。努力准备
机会,确实是留给有准备的人的。以往的资历固然重要,但是从现在开始你的努力才是真正确定结果的关键。
胆大心细
脸皮要厚,但不意味着不要脸,你是国内一流大学生有着属于自己的傲骨,招聘不是你求他招你,而是展现你自己让他觉得需要你。当然,其实我认为脸皮厚的真正境界是胆大心细敢想敢做,”想” 一定在 “做” 的前面,脸皮厚到像个憨批一样也不好。
谨小慎微
推动一件事情的完成会分为很多个小节点,只有你步步为营、谨小慎微,确保每一个小节点都完美完成,才能使你的努力和实力能百分百地作用。就拿人与人之间的沟通来说,与用人单位方沟通,必然要有十足的敬畏之心,就这一点来说,并不是所有人都会做得很好,但万一就是因为一个小节点完成得不好,就算其他节点完成得再好,也会留下一定的几率崩盘。
沟通能力
大企业讲究协同合作,沟通能力会更大程度上在你的面试过程中体现出来,如果沟通能力不佳,还是需要在语气/声调/用词/停顿/语言组织/神情神貌方面多下功夫,一个简单的训练自己的方法是小黄鸭调试法,对着小黄鸭或者空气大声地(会更有效果)临场发挥/深情背诵一些讲话。
扯得差不多了,现在进入正题。
春招/秋招/校招/社招/三方
有很多概念需要知道。
春招:金三银四(金三月银四月的意思)。大部分的实习生会在春招招入,因为要进行暑期实习了。春招也是毕业生秋招后补录的一种手段。
秋招:
金九银十,金八银九。毕业生招聘的高峰,大部分公司/事业群/岗位/小组的 hc (head count) 最多的时候三方:三方协议,指用人单位、应聘者、学校三方之间的协议,用人单位确保 hc 留给应聘者,学校确保应聘者只签署一个三方协议,应聘者确保自己毕业后回去用人单位工作。三方是 offer 的最后一个流程,只能签一家,毁约代价大,但三方之前流程节点的 “录用意向书” 等的毁约代价看公司和 HR。
校招:对在校生/毕业生的招聘,正式员工最终要签三方。
社招:社会招聘,一般招聘有工作经验的人。这里补一句,尽管程序员跳槽频繁,但是绝不能太频繁,在我实习的公司社招,除非特别优秀(一般这种人都是直接去挖的),5年3跳和3年2跳是简历面都过不了即面试机会都不会给的。
信息获取
渠道:
- 互联网公司校招,一般多逛牛客网。
- CSDN,哎,还是有一些文章总结得不错的。
- 微信公众号,各种技术类公众号可以提升眼界。
- 知乎,只要你搜过的东西,它就会给你多推的。
- 一些常见的招聘 APP,BOSS、拉钩等等。我春招没用过。可能社招用得多一点。但是如果没有内推人选的话对初步了解大公司的部门机构也是有帮助的,可以为你定向投 CV(curriculum vitae) 提供一定的信息。
关注点:
公司、岗位、技术栈、工作内容
面经:一般非常有用
内推:
拿鹅厂举例子,强烈建议定向投鹅厂的不要投简历池,而是找人内推,因为投鹅厂简历池虽然可以选择意向事业群和岗位,但是有概率被截胡(亲身经历,我投 CDG 被 WXG 截胡,我同学投图形算法岗被数据库引擎岗截胡,我看傻了)。
拿阿里举例子,阿里内部百多个部门可能上千个小组,投简历池确实很看缘分,但是内推我们又不知道有哪些小组这些小组老板怎么样前景怎么样干的活怎么样,所以找你实习过的学长、朋友帮忙考察十分重要。否者只能多看牛客/知乎的部门招聘广告了
备战校招
简历 —— 超级简历、STAR 原则
笔试 —— 牛客、LeetCode
面试 —— 自我介绍、面经、文章总结、自己总结
我的面经
字节跳动
一面:
- 算法题:求根号 N(牛顿法现场推不出来,直接二分,注意 N=0~1 的特殊性)
- 算法题:找出数组中出现次数超过一半的数(抵消)
- 算法题:八皇后
- Spring AOP 各种问
- TCP 握手为什么 3 次,挥手为什么 4 次
- 你有什么要问我
二面:
说一下做的项目。
算法题一道 dp
- 给一个一年内出行的日子数组 out_days = [1, 4, 7, 11, 30, 145]
- 假如有日票价格、周票价格、年票价格,问最小花费
太紧张(人生第 2 次企业面试) dp 状态设计错了,转移方程写不出,一条路走到黑凉凉,因为没有问我“有什么问题要问我吗”。
第二天早上收到短信 “暂时不录取您为’后端研发’岗位.”,下午又接到字节的电话约面试,另一个小组吧。
又一面:
- 各种基础,计网/OS/MySQL/数据结构(线性开型散列、哈希冲突、红黑树、B 树和 B+ 树)
- ConcurrentHashMap 底层实现(讲到分段锁大概就行)
- 一道单向链表交叉题,判断并输出公共节点
- 你有什么要问我
又二面:
- 聊各种实现,就是聊,把思考过程说出来
- 一道简单 dp
- 你有什么要问我
又三面:
- 一道二叉树转双向链表(要求是中序遍历的序列),在堆空间复杂度 O(1),栈空间复杂度不限下完成
- 一道股票买入卖出题,dp/贪心
- 你有什么要问我
HR 面:
- 现在能入职+远程上班么
- 还投了哪些厂及情况,手上有哪些 offer,想好了微信我
字节跳动改名叫字节效率吧!
鹅鹅鹅厂
一面:
- 进程、线程
- TCP 保证可靠性
- 多态的实现
- 虚函数底层原理
- 算法题 —— 压缩算法,https://www.nowcoder.com/questionTerminal/c27561e5b7e0441493adb9a54071888d,模拟题
- 算法题 —— LeetCode044 简化版,只有 “*“ 版,动态规划解法
- 你有什么要问我
二面:
- 自我介绍
- 近期的项目
- map 底层了解吗
- 堆内存和栈内存
- MySQL 引擎有哪些,区别
- 查询比较多用哪个 MySQL 引擎
- char 数组查找两个相同的字符怎么找
- Top K 问题
- 协程了解吗
- Hash 碰撞解决
- TCP 保证可靠性
- TCP 为什么四次挥手
- 用过哪些 C++11 特性
- 多态的实现
- 实习时间
- 你有什么要问我
三面(那天面试了 5 次,记不大清楚了):
- 自我介绍
- 问我怎么做到的取得 ACM 的成绩和绩点(简历经历)
- 新冠背景下,怎么实现一个人查询自己有无新冠,节省空间(一直没听懂题意,本质上是 bool 数组用 bitset 优化)
- 现有系统上死锁了,破坏死锁的哪个条件
- HTTP 连接能否基于同一个 TCP 连接建立多个(HTTP2 下可以)
- Linux 下编程过么,或者用过的 Linux 指令
- unique 函数你自己实现(双指针实现)
- 你有什么要问我
四面:
- 自我介绍
- 聊项目,问哪些组件深入了解过
- 打代码,一个对抗博弈搜索 —— 100 个苹果,AB两人轮流吃,每人吃 1~5 个,保证 A 能吃到最后一个苹果的方案。用搜索实现,而不是直接套结论(Nim博弈的其中一个模型)
- 微信的附近的人的实现思路
- …还问了很多工程架构的问题忘了。工程架构问的比较多感觉这个面试官是架构组的(领导)…
- 你有什么要问我
阿里里里
笔试-第 1 场 https://www.nowcoder.com/discuss/386873:
最少次数打牌,暴力一下可过
给 n 个不降串,n 个串没有先后顺序之说。从 n 个里面选择一些,拼成最长的不降串。(n<=1e6,所以串的和长度<=1e6)
dp[i]['z'-'a']
用前 i 个串,以某个字母为结尾,拼成的串的最长长度
一面 —— 电话面试:
- 自我介绍
- 让拿一个自己的项目自己讲
- 把话题导向了线程池、TCP 阻塞
- 线程池为什么要自己创建,不用
Executors
- 线程池的线程数目怎么设定,多个线程池时线程数目怎么设定
- TCP 阻塞方法
- epoll 机制知道吗
- Spring
- IoC / AOP 的原理挑一个讲
- 讲了 IoC,问 Bean 是怎么装配的
- 自动注入的原理
- Spring 启动过程
- 问了是工作还是只是想实习一下
- 你有什么要问我
二面 —— 电话面试:
- 自我介绍
- 从项目入手,聊一聊
- 根据人的不同吧。面试官和我主要讨论的是怎么学习,规划(没有聊技术)
- …
- 你有什么要问我
三面 —— 视频面试(又名 “和 P9 大佬聊chui天niu的经历”):
自我介绍
围绕菁英班问一下(科研向)
问一下做了哪些科研,说了一下上学期的科研实践成果。做过一些计算机视觉,传统算法+启发式优化
Java 中哪部分最熟,说一下你的理解
问一下 CCSP,主要问第 4 题 CPU 调度的实现和进一步可优化,提了一下时间片轮转和多优先级队列的思考
你有什么要问我 —— “您现在做的工作/方向是?”
HRG 面:
- 各种问
- 简历上说的程序设计思维与实践讲师是啥
- 科研经历
- 自己觉得自己的优点、缺点(这是情商检测题吗…哎)
- …
- 你有什么要问我
四面 —— 电话技术面:
- …感觉是压力面,主要就是怼我,然后互怼,后来我也语速加快。
交叉面(五面 —— 电话技术面):
- 忘记了。但是问的问题没有前面的刁钻,并且面试官人很好,会听完你说,停顿一下才会继续说。
- 没有深挖基础(逮住一个点一直问到不会为止),所以也有点害怕 233。
阿里效率堪忧,让我一度认为被养鱼
面试总结
回过头来看,总结一下。有的厂的确并没有对面试官的面试原则进行规范,让面试官随意发挥,随意问。
所以面试到底是发现被面试者的优点,还是放大他的缺点?有的有原则,有的没有。
如果只是因为一道题不会做就直接切掉的话,那么对其他方面考察是不是基本没有考察(当然,如果被问到的这个问题是被设定为该厂的 “必要条件” 的话,那就没办法。比如字节跳动以面试的算法难度出名,能不能抽到面试者熟悉的算法就决定了结果,当然这也是面试者的短板效应。)
一二三面,基本就是换人问同一套,但是问什么肯定因面试官不同而不同,然后一二三面肯定有难度递进,面试官知道你现在是二面,就不会再问你简单的问题。
所以要适当的引导,回答的时候带上你的心思和引导,把话题尽可能导向你熟悉的方面。遇到不熟悉的方面也尽可能直接示弱,或者表示你对该问题不熟悉但现场思考后给出类似问题的回答。(非常重要)
另外,对于面试官问的问题,不妨一旁同时拿笔记一下,如果他说了一大堆你没记住,很尴尬。
非常感谢 qd、hmc 学长的内推了,学长探出来的路,给了我机会认识人非常好的主管、师兄。
说在最后
互联网公司的技术岗有非常多类别,PC 端、移动端、后端、算法、运维等等等等。
朋友,如果说前端是距离用户最近的窗口,那后端就是整个数据的支撑体系,如何将业务数据抽象成 “合适” 的数据结构,设计合适的数据流(接口)去为前端提供服务,撑住并发的流量,这是(还有质量保证和可持续等等)后端的挑战和魅力。
后端有做中间件的,也有做业务的。后者 hc 多并且技术难度没那么大。(哦,插一句,实习期不要太过于在乎薪资,如果我为了每天 400 的薪资去字节的话,可能就见识不到阿里的各种技术和沉淀了,也不一定会决定回来保研了。为什么提这一嘴,自然是因为阿里的薪资真的低)
我个人非常推荐去做业务开发类的短期实习,成长可以非常快。
长达几个月的实习,可以让你体验步入社会的感觉,毕竟,离毕业很近了。而且,这是一个机会,让你对自己的人生规划,更加清晰…
最后抄一段手机备忘录的文字上来。
人类用文字去承载文明和科技。我想用我的文字,去承载故事以及思考。
陷入工作,陷入职场,一方面是循环和单调会磨损好奇心,一方面是渗出了孤独,高强度的工作挤压了生活。于是会有每晚下班后,黑光下辗转不眠的报复性熬夜,会有上班通勤时,面对人头涌动心里突然的悲凉.
缺乏思考容易陷入一种自我感动,会觉得自己工作那么辛苦,没有功劳也有苦劳!但其实什么都没有…
叔本华说过人要么孤独要么庸俗。
而后,热情平滑下降,空窗期,会开始觉得迷茫和无趣。源源不断的工作,加上缺少思考的空洞。
很想有一个很集中的时间,情绪忽然低落,让我去好好思考和总结一下,真正落下一些文字,但其实鲜有…
离职这天,百丈思绪,却也是提笔而不落,草草了之,成了此文。
程序员不仅仅是写代码,而且写 CRUD 也不难,难的是真正思考业务的本质,业务的价值,思考如何去更好地创造商业价值。
技术承载业务,业务创造价值。这就是业务线的程序员生活吧。