从大一就开始搞ACM,从此我和人人羡慕的好工作、温柔可人的女友、供人仰望的绩点和奖金失之交臂。
(狗头保命)
其实,与其问除了acm这条路还有什么路子选,不如先问自己目前最想要的是什么。
然后在确定了目标以后,以撞了南墙也不回头的信念坚持下去。
如果你的目标是去个好学校读研/博,比较好的路线是好好学习刷绩点、争取保研。同时,在大三的时候开始准备考研,如果考研没考上,也可以选择二战/调剂。
如果你的目标是想拿到一份大厂高薪offer,不妨在本科阶段多参加实习、多刷题、参加春招秋招双选会,就算你没有拿到你最最最理想的offer,我相信你也会比大多数人混得好。
这难道不比盲目地刷ACM、一次次的信心受挫强?
我刷了一年多的ACM,一直处在被大神智商碾压的痛苦中,而且对算法竞赛的兴趣也日渐减弱。最后我决定把自己的目标从【好名次】变成【好工作】。
分享一下我的求职时间线:
2019.1-2019.2 背八股文
2019.2-2019.3 刷题
2019.3-2019.5 做项目
2019.6-2019.7 暑期实习申请+面试准备
2019.7-2019.9 入职海康威视
2019.8-2019.10 面试准备+秋招
2020.3 入职网易
大概从18年初我就放弃打比赛了,咨询了一些学长和老师,最终决定把目标换到找份好工作,而我倾向于互联网行业,所以从19年开始就针对互联网大厂的笔面试进行了一系列的准备。
我用的比较多的Java,所以找工作也基本往Java 工程师的方向找,扒了一圈面经,感觉现在大厂技术面试考点主要还是在八股文、算法、项目这三块上,我也就开始准备了(不得不说,这可比acm竞赛简单多了)
巧背八股文(1个月)
其实八股文就是一些Java基础知识和相关概念,但因为面试八股文内容极多,让很多人都觉得头疼。
给大家一个准备的思路:猜测面试官是怎么想的,并根据面试官可能考察的方面重点准备。
举个栗子,如果你的简历里写到了k8s,那么k8s的相关概念和问题你得着重背吧,如果你的简历里完全没有Mybatis,那么面试中考到的概率相对较少,这时候你就可以粗略背过,有个印象就好。
这里我也整理了一些Java面试题:
- JDK 和 JRE 有什么区别?
- == 和 equals 的区别是什么?
- 两个对象的 hashCode()相同,则 equals()也一定为 true,对吗?
- final 在 java 中有什么作用?
- String 属于基础的数据类型吗?
- BIO、NIO、AIO 有什么区别?
- Files的常用方法都有哪些?
- Collection 和 Collections 有什么区别?
- List、Set、Map 之间的区别是什么?
- 如何决定使用 HashMap 还是 TreeMap?
- 说一下 HashSet 的实现原理?
- ArrayList 和 LinkedList 的区别是什么?
- 如何实现数组和 List 之间的转换?
- ArrayList 和 Vector 的区别是什么?
- 在 Queue 中 poll()和 remove()有什么区别?
除了多记多背以外,我还参考了阿里P8面试官杨逍的免费技术讲座《大厂Java高级工程师的求职秘诀》,详细讲解了Java工程师的求职路径、必备技能树和大厂常考面试题。
这里也奉上一张Java基础知识的思维导图,我大概花了两个月时间熟记并背诵了部分重点内容,基本上能和面试官做到有来有往的沟通:
刷题巩固算法(2个月)
Java常考的8大经典排序包括:
- 直接插入
- 希尔排序
- 简单选择
- 堆排序
- 冒泡排序
- 快速排序
- 归并排序
- 基数排序
必须重点掌握的是快速排序算法和归并排序算法,这里给一些参考练习题,大家可以自行判断可以用什么排序算法AC:
由于我之前是打acm的,做这些题基本没遇到什么很大的困难,如果看到这些题感觉没有思路的话,可以去刷这套免费的题库《新手必刷编程50题》,代码大概只有寥寥数行,非常容易理解,适合新手,再逐步通过刷题理解算法,实现能力进阶。
刷题我大概刷了两个月,没有海量刷,大概是精刷了50道+粗刷了80道。
做项目(2个月)
项目这个会比较难搞,因为对于在校大学生来说根本就不可能做过什么大型的可以拿得出手的项目,这里推荐两条路线:
- 美化自己在校做的项目:相信我,面试官也知道你一个在校生搞不出什么高含金量的项目,只要你把当前的项目讲清楚、弄明白,就能跑赢大多数人了。
- 去Github或是其他平台跟着优秀的大佬仿着做一个项目:不要照抄,去理解项目的框架、思路、技术栈,才不会被面试官问倒。
这里也推荐几个我自己看过或做过的项目:
①java项目实战练习
一份简单的Java项目实践代码
②电商秒杀系统 - Spring项目实战
覆盖了缓存预热、商品限购、定时任务处理、延迟队列、页面静态化、接口幂等多个核心技术点,用2周时间带大家完成一个秒杀项目,可以直接写进简历。
③非常棒的 Java 开源项目集合
大家都知道 Github 是一个程序员福地,这里有各种厉害的开源框架、软件或者教程。这里是将 Github 上非常棒的 Java 开源项目整理下来,按照几个维度对项目进行分类,以便大家查阅。
暑期实习申请+面试准备(1个月)
暑期实习的申请,建议大家可以关注像是实习僧、TG实习狗之类的实习软件。
针对面试准备的话,可以根据目标公司准备,考前精刷目标公司的企业真题,并再次熟悉一下项目和八股文。
LintCode官网上搜集了国内互联网公司的企业真题,题库十分完备,推荐大家考前临时抱佛脚(不是)
成功入职海康威视后,我也开始精进我的技术。不得不说工业环境对人的锻炼还是很明显的,上线的活动和debug的过程都很有意思。
到了8月份,我也开始投简历准备秋招了。而海康威视的实习经历对我来说帮助很大,不但让简历愈发充实,而且也为我至少赢得了初面的机会。
秋招网申+入职网易(2个月)
其实经历过实习后,秋招的准备大同小异,大家认真准备就可以!
之前特别火的互联网污点公司名单目录,给大家参考:
最后,祝大家也能和我一样顺利上岸~