2020本科校招-从小白到拿到30k offer的学习经历
本文是个人的2020年年中总结
还有十几天就要毕业,面临着身份从学生到互联网社畜的转变,未来的一切捉摸不定,但凡心中万千情绪,也只能「但行好事,莫问前程」。
介绍下博主背景:计算机本科大四,刚进大三时还是个没有实习、没有项目经历的小白,
经过一年时间的刻意练习[deliberate practice],最后在校招中拿到了一些大厂offer,
标题中30k的offer已经拒掉了,有了更好的去处,只是用来举例。
0x0 前期调研
以下经验根据个人的经验来谈,有一定的局限性,仅供参考。
1. 为什么不选择算法
计算机专业的就业方向很多,对于应届生来说,工种大概可以分为移动端、前端、后端、算法、运维、测试。
由于近年来ML和DL的快速发展,特别是16年AlphaGo以及视觉检测、自然语言处理方向的进展,人工智能方向成为了继大数据之后的又一个学术热点。
周围接触到的同学,大部分集中于算法和后端方向。我最开始就是准备深入后端方向,并且决定本科直接就业。但是我有两点纠结:
- 后端是否不如算法?
- 对于后端,本科学历是否适合职业发展预期?
1. 本科生以算法作为工作目标难度太高,和字节跳动的面试官交流,目前字节AI Lab的成员组成是大部分硕博,以及少部分优秀的本科生(acm区域金作为参考)
2. 算法需要的三点:实习、竞赛和paper,我都没有信心和诸多转专业的工科硕士抗衡
3. 个人对于算法没有强烈兴趣,发展空间不明朗,行业未来搭上5G的车,可能会有比较大的想象空间,风险和收益并存。
参考
如何看待 2020 届校招算法工程师岗位求职人数远大于招聘岗位的现象?
2. 为什么选择Java后端
如果认定了后端,后端语言这么多,如何选择适合自己的方向?
业界有一种说法:『语言只是工具,数据结构和算法是解决问题的根本』。这种说法本身是没有错的,但是从普遍来看,本科生从有工作的想法到秋招,只有(或者不到)一年的时间,泛泛了解多个方向不如深入特定方向,更有助于求职。
后端主要的开发语言有Java
、C++
、Python
、PHP
、Go
,PHP目前除了百度和腾讯部分部门之外,使用范围不广,不予讨论。另外,Golang
作为高并发场景的常见支持,在云计算领域使用比较广泛。
互联网和其他资本市场没有本质区别,既然是市场,就存在供求关系。 对于算法这种供远远大于求的情况,就是买方市场,卖方(求职者)需要更好的产品(技能)来获得同等的价格。对于应届生来说,找到一个良好的买方市场,更加有利。
调研基于两个预设条件:
- 岗位数目越多,市场的需求越大。
- 高薪岗位越多,该方向的发展前景越大。
我们参考www.lagou.com
,互联网大部分猎头或者对外招聘岗位都会发布在上面,有一定的参考价值。
地点选择北京,薪资范围选择25~50k/month。
Java
(1)职位500+,可以看出需求缺口很大。
(2)除此之外,Java
生态系统最为完善,e.g. Spring
全家桶。
(3)Java
是电商网站的技术首选,阿里、京东、拼多多等电商公司的技术栈。
Python
Python
主要是作为脚本语言,适用于运维开发和算法岗位,目前在字节跳动使用比较广泛,可以看出岗位相对较少。适合作为辅助开发语言,毕竟写脚本算得上是程序员的必备技能了。
C++
C++
是游戏开发(其次还有lua)和系统开发的首选语言,但是因为上手成本比较高(指针和内存管理)以及需要对操作系统深入了解,市场岗位需求也不如Java
,所以不推荐。不过如果有acm或者信息竞赛基础,也不成问题。
0x1 秋招准备
随着互联网从业人数越来越多,竞争也呈现白热化。科班学生不仅要和同专业同学竞争,也会感受到转专业同学(大部分是硕士)带来的压力。参考同系讲师的数据,我航15年时6系本科同学比较容易就能去BAT,到了19年BAT头条对于大部分同学不是想进就进了。
从宏观意义上来看招聘,企业需要找到适配岗位的员工,学生需要谋取职业生涯的第一份工作。对于学生来说,秋招和高考在本质上是相似的,都是一种选拔,需要证明自己的能力比别人更强。
在准备的时候,定量的标准往往更加具有说服力,『我守望先锋玩的很厉害』远远不如『我守望先锋全国天梯4000分』,『我学习Java花了很多时间』不如『我阅读了《Java核心思想》和《Effective Java》以及...,并且复现了书中的代码,在github仓库xxx』。
我是从2018.8月下旬(进入大三)开始准备,到找到工作总共花了一年的时间,基本上分为三个时期:
- 2018.8 - 2018.12 :基本素质培养
- 2019.1 - 2019.8 : 百度智能云实习
- 2019.7 - 2019.8 : 秋招提前批
整个秋招的核心思路 = 基础+实习+项目
1. 基本素质
第一次认清自己的水平,是在大二下学期结束的暑假。当时投了百度暑期实习,毫无准备的前提下,只用了20分钟就挂在了一面。
面试惨跪之后,我分析了自己的处境,当时的我GPA排名40%,没有参加过ACM程序竞赛,没有实习经验,除了OO课程,没有写过"大型"项目。从编程能力上看,大一数据结构60分酱油飘过,算法课程也限于理论,只能说能够应付考试不挂科,Java
只会语法,web框架更是没有项目经验。
这时候的我深刻意识到自己在编程方面还是个在新手村找不到北的green hand,记得刚上大一的时候,哪位神仙说我校混的差躺着也能去BAT?梦想很美好,现实很骨感。
相对于隔壁北邮,我航更加注重学生的深造(校内读研和出国留学),对于工作方面的指导甚少。我大部分的时间都是一个人准备,所以经常陷入迷茫orz,这期间主要的问题是:
- 选择什么方向? (前面已经对市场进行了就业分析)
- 要学习什么内容?(算法太高级了,玩玩可以,找工作水平不够)
- 要学到什么程度,才能找到实习/工作?
整个秋招的过程,就是我解决这三个问题的过程。
于是,首先我使用Hexo + Github.io 搭建了个人博客:mio4
博客有两个作用:
- 能够体系化自己的学习,方便复习
- 量化自己的学习成果,面试的时候,给面试官带来好印象
其次开始有针对性的训练自己的编程能力,
Java
程序员的基本素质有:Java基础(语法+JVM+多线程),Spring框架(SSM/SpringBoot,进阶可以SpringCloud),算法能力(刷题)
2. BAT实习
找工作本身就是一个经验和需求矛盾的过程:
找实习,认准BAT TMD,其中BATT(头条)基本属于一个档;外企的话,ms/hulu/airbnb认可度也很高。
拿周围同学举例,即使是小厂开了一个月8、9k的实习补助,也不要因此放弃BAT的实习机会。
虽然近几年百度已经明显掉队于BAT,但是就我个人体验来看,外界对于百度的技术还是很认可的。对于实习来说,镀金的效果完全够用。【2020.5 update:目前应届不满一年没有晋升和普调资格,除非部门极好,否则不推荐转正】
在2019.1月,托研二直系学长的福,内推经过三面通过了百度智能云计算部的后端实习,面经:https://www.nowcoder.com/discuss/151829
到8月结束了实习,半年的实习时光对于工业届有了更深入的了解。
3. 秋招面试
离开baidu主要有两个原因:
- 工作内容不算满意:在baidu的工作语言主要是php,大厂目前使用php的很少,不利于职业长期发展;另外实习负责的模块也不算核心。
- 薪资不够预期:baidu本科白菜价15k*15,每个月的工资扣掉五险一金和税,只剩下11k,再加上北京动辄3、4k的房租,过于艰难。
因为花了接近一年时间准备,所以在提前批就结束了秋招,9月大部分企业刚开通秋招正式批通道前,我就歇了,真正准备校招的时间不足两个月。【2020.5 update: offer这种东西当然是越多越好,去年的我太佛系了,腾讯、微软、快手这些公司甚至没投简历,现在觉得去年还是naive】
AI四小龙面过了两家,都是sp | ssp,云从当时没听说所以没投,商汤提前批四道题A了三道解题报告,结果居然没有不给面试机会Excuse me?
提前批收到了百度、字节跳动等大厂和一些独角兽的offer,互联网薪资保密,已经签约的就不谈具体待遇了。
拿个去年8月已经拒掉的独角兽offer举例:
0x2 其他经验
1. 书籍推荐
国内csdn以及各种类似菜鸟教程的博客的知识系统往往支离破碎,不能深入学习。
看书能够系统化学习知识,下面推荐我看过的一些书
算法:
- 《剑指Offer》
Java:
《Java核心技术》,当字典看,不需要整遍过
《Java并发编程实战》 ,熟悉多线程
《深入理解Java 虚拟机》,熟悉JVM必备
《图解Java多线程设计模式》,日本人写的书,直观易懂,强力推荐
《Java 8实战》
《Effective Java》
Spring:
- 《Spring实战》
MySQL:
- 《高性能MySQL》,主要是第五六章
- 《Redis实战》
网络:
- 《图解HTTP》
- 《计算机网络自顶向下方法》
代码规范:
- 《重构》
2. 准备项目
对于在校学生来说,准备项目可能会面临着无法下手的问题。
首先项目一般不是自己凭空想出来的,可以通过实验室等方式接手比较成熟的方案。
我的操作是直接使用网课,比如慕课
选择一个感兴趣的,从0到1复现一个项目,完善自己的技术栈。
当然,imooc上大部分干货需要付费,学生党如果没钱可以考虑下面的方式:
蒲公英论坛:ipv6,好处是下载视频不走校园网流量,有部分从imooc搬运的资源。
当然对于买不起资料的穷孩子,还是有灰色路径可以『曲径通幽』的,比如dmz社区:盗版的论坛,基本上涵盖所有imooc的视频代码资料,仅供参考。作为程序员,这里尽量推荐支持正版。
3. 算法能力
面试必备:《剑指offer》 + LeetCode
LeetCode题目比较多,参考Hot/Top 100:
到秋招结束,刷题量不多,总共100左右,但是对每道题使用思维导图进行总结,尽可能举一反三:
4. 实习投递
投递实习的方式一般有:
[x] 熟人内推:最靠谱最快的方式,投递简历到百度实习面试邀约只花了不到半天。
[x] 牛客网:响应时间一般,1~7天
[x] 实习僧app :响应时间一般,一般一周
[x] 官方通道:比如腾讯的暑期实习官方在线投递。
4. 面试技巧
分公司分岗位的面经可参考:www.nowcoder.com
我的个人面经总结:https://github.com/mio4/learn-java/blob/master/Note/interview.md ,总共250页的PDF,综合个人经历的所有面试,题目覆盖率至少有50%。根据研二转专业的同学反馈来看,作用很大。
2020本科校招-从小白到拿到30k offer的学习经历的更多相关文章
- 从Java小白到阿里巴巴工程师,回顾我两年来的学习经历
添加描述
- 从Java小白到收获BAT等offer,分享我这两年的经验和感悟
微信公众号[程序员江湖] 作者黄小斜,斜杠青年,某985硕士,阿里 Java 研发工程师,于 2018 年秋招拿到 BAT 头条.网易.滴滴等 8 个大厂 offer,目前致力于分享这几年的学习经验. ...
- 贝壳2020——Java校招笔试题
算法题4道: 题目描述: 给出n个正整数,要求找出相邻两个数字中差的绝对值最小的一对数字,如果有差的绝对值相同的,则输出最前面的一对数.(2<n<=100,正整数都在10^16范围内) 输 ...
- 2020.5.17--牛客小白月赛25 F.疯狂的自我检索者
F.疯狂的自我检索者 链接:https://ac.nowcoder.com/acm/contest/5600/F来源:牛客网 牛妹作为偶像乐队的主唱,对自己的知名度很关心.她平时最爱做的事就是去搜索引 ...
- 【转】阿里2015校招面试回忆(成功拿到offer)
原文转自:http://blog.jobbole.com/78722/ 1. 引言 继上次<百度2015校园招聘面试题回忆(成功拿到offer)>文章过后,大家都希望除了题目之外,最好能给 ...
- 阿里2015校招面试回忆录(成功拿到offer)
1. 引言 继上次“百度2015校园招聘面试题回忆录(成功拿到offer)”文章过后,大家都希望除了题目之外,最好能给出自己当时的回答情况,看看有没有什么回答技巧,这样更有参考价值. 嗯,建议的很对, ...
- 从技术小白到收获BAT研发offer,分享我的学习经验和感悟(赠送相关学习资料)
去年秋季参加了校园招聘,有幸拿到了BAT.头条.网易.滴滴.亚马逊.华为等offer,经过研究生两年的学习积累,终于达成了自己的目标,期间也经历了很多,谨以此文,聊表感叹,也会分享很多我的Java学习 ...
- 2020年12月18号--21号 人工智能(深度学习DeepLearning)python、TensorFlow技术实战
深度学习DeepLearning(Python)实战培训班 时间地点: 2020 年 12 月 18 日-2020 年 12 月 21日 (第一天报到 授课三天:提前环境部署 电脑测试) 一.培训方式 ...
- 2017京东校招面试回忆(已成功拿到offer)
一面 24日 晚上5:30-6:40 1 先说自己熟悉的领域 2 list的实现有什么? arraylist1.6 1.7区别 底层 linkedlist 底层是怎么实现的 单向还是双向 ...
随机推荐
- 【UEFI】---史上最全的X86平台启动流程分析(软硬结合)
最近研究了下X86处理器的启动流程分析,相比于常见的ARM来说,X86平台启动流程真的复杂了很多,本次基于项目实际的两个问题入手,研究了包括以下几个部分的内容: 1. 从硬件角度看启动流程 2. 从软 ...
- 【Java新特性】Lambda表达式典型案例,你想要的的都在这儿了!!
写在前面 不得不说,有些小伙伴的学习热情真高,学完了Lambda表达式的语法,想来几个典型案例再强化下.于是问冰河能否给几个Lambda表达式的典型使用示例.于是乎,便有了这篇文章. 案例一 需求 调 ...
- jQuery简单竖排手风琴折叠菜单代码
项目需求1.刚开始只显示,每个标题, 2.让每个 li列表隔行换色 3.当我点击某个标题时,下面的列表会缓慢的展开,其他列表展开的内容会收起 <!DOCTYPE html> <htm ...
- Kubernetes笔记(二):了解k8s的基本组件与概念
前文 Kubernetes笔记(一):十分钟部署一套K8s环境 介绍了如何快速搭建一个k8s系统.为了继续使用k8s来部署我们的应用,需要先对k8s中的一些基本组件与概念有个了解. Kubernete ...
- IDEA编写快捷生成代码
转载于:https://www.jianshu.com/p/029c2de5c612 1. psvm //生成main方法: public static void main(String[] args ...
- LRU 的C# 实现
首先 先写点儿感悟吧: 本来计划是 晚上回家写的 后来发现还是没坚持的了 上午花了一个多小时 做了一下这个题目 应该还有提高的空间 的,这个题目是在力扣里面看到的 为什么看到这个题目 是因为 ...
- Linux下安装JDK11
Linux下安装JDK11 Linux下安装JDK可分为三步: 下载相应版本的压缩包 解压缩并移置相应目录 配置环境变量 验证结果 一.下载相应版本的压缩包 下载压缩包可以通过官网下载,如图: 下载前 ...
- flink批处理从0到1学习
一.DataSet API之Data Sources(消费者之数据源) 介绍: flink提供了大量的已经实现好的source方法,你也可以自定义source 通过实现sourceFunction接口 ...
- 【Django组件】KindEditor富文本编辑器上传文件,html样式文本,VUE异步提交数据(易懂版)
1:下载与配置 适合版本: python3 下载:http://kindeditor.net/down.php 文档:http://kindeditor.net/doc.php 将文件包放入stati ...
- fastadmin后台:在表单操作项添加操作按钮并控制弹出页面的大小
1.进入对应目录:eg(public/assets/js/backend/conmpany.js) 2.在field:'operate' 中添加buttons 源码: {field: 'operate ...