2019年11月8日,在寄出三方后收到鹅厂的应届毕业生录用函,我的秋招尘埃落定。
感谢这些年老师的培养以及灵活的上课方式,感谢牛客前辈以及同学们的帮助和鼓励,感谢每一个可以努力的日子,秋招结果远超我的意料。写此贴以作纪念,并想分享一些个人踩过的坑以及秋招经验,仅供参考。
我是中国矿业大学(北京)计算机科学与技术专业的本科生,面试岗位基本都是C/C++后台开发工程师。从7月19日的第一场面试,到10月12日,我一共参加了5场笔试37场面试,一共面了8家公司,收到6家offer,大多为ssp offer:
字节跳动(offer) 腾讯(offer) 猿辅导(offer) 百度(offer)
盛趣游戏(offer) 作业帮(offer) 阿里巴巴(hr面挂) 网易雷火(hr面挂)
从小以来,或许是受影视作品的影响,我一直以为IT工程师是一个很酷的职业,西装配大人模样的头发,创造人工智能改变世界。怀着这么幼稚的想法,阴差阳错的就读了计算机专业。费了些精力进来了,我才然大悟,什么帅气模样都是骗人的,唯有无休止的加班和黑眼圈才是永恒。时至今日,虽然我能预料到自己工作后的样子,虽说我以后从事的不是高深的算法,这依然不影响我觉得写程序是一件很酷的事。在公司,即使我只是一颗螺丝,但通过代码服务全球十亿人甚至更多,也挺有成就感呢。
直至去年,我还没想到我会毕业即工作。
一年级那会儿 在就业办看到了计算机系17届毕业生的去向,保研的无强校,工作的没有大厂,其中最好的去处我也很不满意。Ps:不同人追求的方向不同无任何恶意
保研都不行还能咋办,考呗。大一硬着头皮刷了两本考研数学,结果有几节高数课忘去了,最后成绩不到平均分,特心塞。
第一年比较庆幸的就是参加了ACM集训队,因为之前学校没有这个比赛,也可以说创建了集训队,平时刷一刷题挺有趣。
印象中大一的学习还蛮充实呢,除了学校课程安排,刷了两本考研高数,看了大半本《深入理解计算机系统》,做了挺多的ACM题目,顺便参加蓝桥杯拿了个一等奖,遗憾的是第一场ACM邀请赛打铁了。记得忙碌时曾经有两三个月都凌晨两点才回宿舍,早知如此高三就该努力些。
大二一直碌碌无为,唯一的收获就是拿了块ACM区域赛铜,顺带认真学了学C++,读完《算法导论》(真痛苦
大三上的主要精力还是ACM,无奈水平太菜加之无前辈提携,铜牌+2。搞完大创的玩具,学了下操作系统内核。
大三上很快结束,考研的热情逐渐退去,当时想找一个实习体验体验。本着自己几乎没有开发经验的事实,以及自认为很扎实的算法功底,投递了N家公司的算法工程师岗位,结果除了京东全挂。京东offer下来,岗位怎么是软件开发工程师?,怒拒。天真如我,拼命学了三个月的吴恩达,希望春招找一个算法的实习。
接下来就该春招,我才知道了牛客网这个网站,才知道了算法工程师的要求,才知道了还有后台开发这个岗位,没有办法硬着头皮投呗。四月份开始在一家创业公司实习,mentor很好,做了三个月cv的demo,方了解到自己的知识储备完全不恩感胜任算法工程师的岗位。
7月份左右回到学校,尝试着继续搞托福,后突然发现我更适合就业,就开始秋招了。
秋招准备较为轻松,得益于之前研究过源码,我用一个月重新实现了一个早期版本的unix,用一周时间刷了两百道leetcode。匆忙开始面试。
牛客上有大佬总结过,想要拿ssp这三点必不可少:大厂实习、顶会论文、比赛Top。
我可谓是无实习,无顶会,无比赛top,我甚至连个人博客都没有,比起各位大佬,我唯一的优势可能就是基础好。秋招前根本没想到过这个结果,四个月前,我的奋斗目标还是京东(并无恶意 京东是家很优秀的企业 东哥是位杰出的企业家)。
秋招有幸拿到自己满意的offer,主要凭借以下几点:(私以为我的路线适合大多数人
就大企业而言,校招和社招不一样,社招主要考察一个人的项目经历。而校招生,大部门都没有成熟的项目经验,那又该如何评价这个候选人呢?一般而言,校招倾向于挑选有潜力的候选人,什么样的候选人最有潜力,聪明+勤奋。那又该如何判断一个人是否聪明,做题!
就现在的面试流程而言,算法与数据结构功底,在外企的校招面试流程中至少占有80%的比重,在国内企业也有超过50%的比重。现在很多企业为了减少面试成本,会通过简历筛选出一部分候选人,再通过笔试筛选一部门。笔试呢,大部分或者全部内容都是算法题。过了笔试就是面试呢,面试考什么,手撕代码+基础知识+项目经验+巴拉巴拉,其中最重要的仍然是手撕代码。就现在行情而言,只要所有的算法题都能回答出来,即使基础知识答的不太好,面试也能通过。反而即使知识积累相当丰富,算法题大都答不上来,面试依旧挂。
对于没有ACM基础的同学,推荐刷一刷 leetcode top200题+《剑指offer》,要做到举一反三,真的很好用。这些题目我大概用了一周时间刷完的,其实就算0基础1个月也能刷完,之后面试很会轻松。
大学以来我可谓一直在迷茫,从一年级的高数线代到后面的离散数学操作系统,我刚开始始终不知道这些知识有什么用处,写代码用得着这么抽象的理论吗?于是我将时间大都奉献给了ACM。当初参加这个比赛,并没有感觉到它和其他竞赛有什么不同,以我校的重视程度,ACM world final 的奖励甚至不如北京市电子设计竞赛。如ACM大群所言 ”升官发财请往他处,贪生怕死勿入斯门“,参加这个竞赛纯属用爱发电,性价比并不高。
现在看来,正是这个性价比不高的比赛,带给我了一手满意的offer,当初侥幸上了一条对的船,又侥幸坚持到了最后。秋招历经三十多轮面试,算法题几乎都做出来了,之前的努力太值了。
曾经用了几个月时间看完了《算法导论》,私认为这本书写的非常好,讲了很多实用的算法和数据结构,系统的学习完这本书的收益至少是 年薪+10W,有精力的话强烈建议读一下。
对于项目平平的人而言,面试中除了算法,最重要的就是基础知识了。基础知识主要分为:语言,操作系统,计算机网络,数据库。计算机体系知识都是相通的,要学会融会贯通,操作系统 数据库 网络 数据结构中都有其余的影子。
语言因人而异,开发岗的话 国内的校招就业岗位主要为C++或者java。学好c++和Java都可以,c++主要是大公司在用,所以学c++进大厂更容易一些,Java 大公司小公司都用,相对而言学习Java进大厂困难一些,然儿java的去向更广。
掌握python/golang等语言是加分项,注意,是加分项⚠️
我是c++技术栈的,学习c++的话推荐几本书。
《C++ primer》 必读书
《Effective C++》进阶 选读
《深入剖析STL》加分项
后台开发岗数据库一般问的不会太深,课堂知识学扎实,mysql会用并且能够用好即可。
《高性能mysql》讲得比较深,选读
现在所有程序员都要会网络编程,所以网络是面试中非常重要的一项。
原理性知识:《计算机网络》或者《TCP/IP详解卷》
网络编程:注意一些linux网络接口的使用,最好自己实现一个mini服务器,深入理解可以看《Unix网络编程》
操作系统是重中之重,diss一下 一定不要看 清华出版社的那本紫皮书
先推荐几本好书:
《深入理解计算机系统》不多解释,神书,不过这本书是讲计算机的而不是操作系统
《现代操作系统》 必读,讲了很多操作系统原理性知识
《鸟哥的Linux私房菜》进阶,熟练使用linux是很大的加分项
私以为,学习计算机知识就像庖丁解牛,要理解它的每一部分。
举一个很简单的例子
计算机运行printf(“%d\n”, a + 1);这条指令,计算机做了什么?
从语言层面,这条c语言语句的可变参数是怎么实现的,函数调用时发生了什么?
从编译器层面,怎样找到printf这个函数的
再往下 printf封装了哪个系统调用
系统调用发生了什么
驱动层的接口长什么样子
系统调用/中断/异常是怎么实现的
知其然知其所以然嘛
一般校招而言,项目经验并不是那么重要,很多朋友都本末倒置,大学期间基础知识没好好学,反倒一直在做开发经验。
在面试期间和很多面试官交谈过,大厂面试官普遍认为我们做的项目大都只是玩具,很多时候我们自己摸索做了三个月的demo,他们带着做的话半个月就能完成了,反倒质量会更好。大学时间时间充裕,就该做一些非crud(增删查改)的技术型项目为简历加分。
仿nginx服务器
跟着虎书实现一个编译器
仿unix操作系统
做个小分布式系统
……
以上等都是很好的选择
反倒那些什么电商平台,图书管理系统界面都做不好看的crud应用就别写简历上丢分了
附个人的简历内容
2019.*-2019.* 类 UNIX 操作系统 xv6 独立开发
通过阅读 UNIX 系统源码,了解操作系统工作流程。借鉴 JOS 等 Unix 系统的部分文 件,基于 x86 多核处理器硬件,实现 多任务操作系统 xv6。
主要内容: 1)开机引导(内核加载) 2)内存管理(二级页表,链式页面管理,虚拟内存) 3)进程管理(上下 文切换,时间片轮转调度) 4)陷入,中断,系统调用 5)锁(自旋锁,条件变量) 6)文件系统(IDE 驱动, buffer 缓冲,恢复日志,无名文件,目录层,层次文件名,文件描述符抽象) 7) Shell,fork,exec,pipe 等。
秋招是一个漫长的过程,期间不仅仅要准备面试,还要漫长的等待,几个月下来,过程并不比考研轻松。
参加秋招,建议先拿意向不高的公司适应一下面试环境。同时建议多面几家公司,即使拿到了满意的offer,也不要停止秋招,多拿些其他公司的offer,多拿些offer,身价就上来了。望大佬们提前准备,突击秋招很难有好结果。
下个月参加最后一场ACM,希望有一个满意的结果,渣铜太惨了。
Ps:明日我矿110周年校庆,祝我矿辉煌。