秋招研磨
经过了大半年的学习和努力。2018 年 10 月 17 日,我的秋招终于落下帷幕。
讲讲我的秋招之路吧。大概是 2018 年 2 月底,春节都还没结束,学校的就业群里也开始了阿里内推,2018 年暑期实习生招聘的序幕拉开了。
由于是专硕,两年的读研时间显的好短暂,才短暂接触了几个月的机器学习算法,都才刚刚入门了 Python 和会使用 Tensorflow 和 Scikit-learn 框架进行一些简单的机器学习分类工作,马上又要着手于校招,让我措手不及。在机器学习算法等相关学科,对于数学功底要求比较高,对于快速就业让我十分的无助。由于之前也写过两年的 PHP 后台开发相关的工作,大概在很长的一段时间内一直在纠结究竟是找机器学习岗位或是后台开发方向。
思考了很久,我对自己未来的规划是希望成为架构师方向,在技术达到一定高度,并有很好的想法的时候会有创业做产品的打算。于是我准备往后台开发方向,但是问题又来了!
究竟是找 Python web、PHP web、Java web,哪个方向呢?Python 和 PHP 算是自己擅长的方向,想找一份工作,固话一下相关的基础知识准没问题。当做了一段时间算法后,也对各个岗位的就业分析了一下,主要还是 Java 占据了半壁江山,其次是 C++,然后是 Python、PHP、GO。在小型公司,快速的项目迭代更多的使用了 PHP 或是 Python 进行快速开发,但当项目成长到一定的体量都被 Java 给一统江湖了。其中,特别是拼多多和小红书这两家企业,从 PHP 和 Python 替换到了 Java 后台架构。PHP/Python:do fast,Java:think big。
出于这样一个打算,我选择了 Java ,也期待未来从事更多的分布式系统架构相关工作。在后台开发的技术栈上,尤其是 Java 和 C++ 这样的语言入门和学习的门槛太高。还没有一个特别好的学习指南能够帮助我好好的学习 Java 这样一门语言,其实在本科也学过一年多 Java,但是更多的是停留在应用层面。
大概三月初吧,开始准备全心转向 Java 后台开发方向。得益于之前对于 PHP 的后台开发语言的学习,我的 Java 学习之路还是比较顺利和深入的。查看了很多知乎大神对于学习路径的指导,我也根据自己以往的学习经验摸索出了对于整个技术栈的认知。在学习过程中,你会看书、看视频教程、看博客等等,一开始也用 OneNote 做一些笔记,但是发现很不方便。在 Github 上看到了很多优秀的开源笔记项目,后来用到了 Typora 这 Markdown 编辑器,开始爱上了记录,于是乎创建了 frank-lam/fullstack-tutorial 这个仓库。此后开始了我正式的,艰苦的学习之路。(具体的技术栈我不一一展开,感兴趣的同学欢迎关注我的仓库,截止目前已有 800+ star 和 200+ fork)
下面给大家列一下,后台开发工程师需要达到的一个高度吧。
- 在线笔试基础
- Leetcode 必刷
- 剑指 Offer 必刷
- 内功修炼
- 数据结构与算法
- 海量数据处理方法
- Linux 基础与命令
- 计算机网络(应用层,传输层,网络层等相关协议)
- Web 网络和 HTTP/HTTPS 协议
- 数据库(MySQL,Redis,SQLServer)
- 操作系统原理
- Git 版本管理工具使用
- 正则表达式
- Java 核心技术
- 语法与基础概念
- 面向对象与 23 种设计模式
- Java 容器源码(数据结构 & 源码分析:ArrayList、Vector、LinkedList、HashMap、ConcurrentHashMap、HashSet、LinkedHashSet and LinkedHashMap)
- Java 并发编程(线程状态、线程机制、线程通信、J.U.C 组件、JMM、线程安全、锁优化)
- Java IO(磁盘操作、字节操作、字符操作、对象操作、网络操作、NIO)
- Java 虚拟机(运行时数据区域、垃圾收集、内存分配机制、类加载机制、性能调优监控工具)
- Java Web(学习 Spring + SpringMVC + MyBatis 框架和设计模式思想,学习 Servlet 和 JSP)
- 高级加分项
- Zookeeper(分布式协调服务)
- Dubbo(分布式服务治理)
- 分布式事务解决方案
- ActiveMQ、Kafka、RabbitMQ(分布式消息通信)
- Redis(分布式缓存与集群搭建)
- mycat(数据库路由)
- Nginx(反向代理)
- Docker(容器技术)
- Tomcat
或许很多人看到我罗列的这些东西已经开始焦虑,并且感到不适了。是的,要知道一个道理:面试造火箭,工作拧螺丝。如果想通往大厂那么请好好静下心来,至少需要一年的时间学习来学习我所列的知识清单。也感谢校招的这段时间,逼着推动我,让我对技术的认识有了一个全新的认识。
再回到秋招这件事,暑期实习生招聘的几个月中,参加了无数的校园宣讲会也面试了几家公司增长了一些经验,但是很不幸最后都挂了。虽然没有能成功实习,对自己的能力有了一个很好的评估,深知到自己基础知识的薄弱,于是静下心来开始了漫长夯基的日子。这里推荐很多即使不能出去实习的同学,也好好的把握好实习招聘,做一些经验上的积累。像很多公司也推出了 mini 短期实习的一些政策,或许是一个很好的机会。
都说金九银十,是的九月、十月是秋招最重要的两个月。但是学霸们六七月份已经开始了他们的提前批内推(也称学霸批),如果你想加入阿里(7.15开始)、大疆(6.30截止)等等大厂需要早早准备了。并且内推免笔试呢,增加面试经验。
老实说那段日子真的很难熬,印象最深刻大概还停留在六、七、八月份紧张的学习,那段时间如同考研冲刺般的激励自己,无数次在心中暗示自己我一定行的。那几个月大概对于技术的学习超过了以往任何一段时间,比以往任何一段时间更明确自己的方向,我认为超过了过去两年学习的水平。翻阅了无数本计算机相关的图书,为了快速入门看了五十多门的视频课程,其中有无数优秀的书籍和课程,这里我将在后期一起整理分享。大概七八月份两个月没有休息过,每天八点到实验室开始看书,晚上大概十一点左右打卡回去。那段时间虽然艰苦,但是对基础的学习和后来的面试起到了关键性的作用,否则我想将无法支撑我的面试。
很快的九月来了,秋招正式的打响了。大概九月份每天都在频繁的笔试、面试、宣讲会,印象最深刻的是同一天 4 场笔试(从早晨 9 点一直笔试持续到晚上 11点才结束),记录最高的一天跑了五场面试,跑遍了华科和武大周边的五星级酒店。
秋招还是喜出望外,拿到一些 Offer,海康威视、华为、贝贝网、苏宁易购、腾讯、58 同城(58 的口头 Offer,北京的岗位还是拒绝了)。虽然一心想去阿里和网易都没有很顺利,都在两轮面试后挂了(面试的太早了,都没有让我好好准备),但是最后还是拿到了华为。
转眼回头再看,每一个无眠的深夜,每一个纠结的过往,从此都云淡风轻。
如何准备秋招
- 夯实基础,把我在上文列举的知识清单掌握
- 写一份优秀的简历
- 包装一个你最熟悉的项目
- 掌握好面试话术
- 多看面经,每次面试后写下面经
简历即是你的名片,把你会的东西都写到简历上,谨慎使用(熟悉,良好,了解)等表述性词汇,一定要对自己的简历上每个字负责。提到的技术栈,一定要有深入研究,否则切记写上。详细描述一个你最熟悉的项目,包括(1)项目背景和你的工作;(2)项目核心技术点和难点;(3)项目优化改进。
最后在面试过程中要衣着整洁,语言吐字清晰,切记说不会,一定要思考后再回答。面试是一个交互性的交流,不要觉得低人一等,更不要被面试官牵着走,所以这里再次强调简历的重要性,大部分面试都会根据你的简历来提问。甚至我在面试中单独附上了我项目的整体架构图,有了架构图更好的对项目进行深化,也是牵引面试官的一个好办法。如果你的简历没有一个好的项目,那么请做好疯狂被怼基础知识的可能性吧!
调整好心态
在秋招的过程中面试了 20 家企业,也一路挂过来,一定要有一颗平和的心。广撒简历,重点培养。明确自己的岗位,工作地进行海投、精准面试。基本上面到 HR 面的企业都拿到了口头 Offer 或是意向书。
在面试过程中,选择往往大于努力,一定要认准自己的方向。
Offer = 40%运气 + 40%技术 + 20%表达能力
后记
秋招之路不易,写下一些记忆,希望能够帮助更多的人。