1. 确定目标
这里的目标是指在哪个时间段拿到怎么样的offer,比如明年春招拿到大厂的后端开发offer. 这会让你有一个很清晰的时间轴,知道你在4-5月要达到怎么样的能力水平。当你没达到这个目标,你就有足够动力持续学习,准备面试。
2. 拆解要求,制定计划
决定后端开发offer的因素有:学历,数据结构与算法(leetcode题),CS八股文(计算机基础,JVM,框架中间件),实习/项目经历,面试能力,智力题(偶尔会考),市场环境,运气,...
因为时间有限,我们主要针对可以短期提升的部分进行重点学习。
|计算机语言
如果已经掌握了一门编程语言,比如C++/Java/Python,那么直接可以跳过。这里推荐Java,因为市场需求大,入门也不难。对于校招来说,编程语言的重点就是拿来写算法题的。
推荐目标:学会Java的语言基础,能用来写算法题即可。
|数据结构与算法
首先校招最重点考察的就是数据结构与算法,无论是哪一轮的技术面都至少有一道算法题,如果你面试的其他部分回答得一般,但是算法题做出来了,面试官可能会放你一马;但如果你计算机基础不错,算法题没做出来,那通过的几率就不到一半了。比如我在字节四面技术面的时候,前面计算机知识答的7-8成,没有特别好,面试官给我出了一道hard题,最后做出来了,也就顺利通过面试了。
推荐目标:建议Leetcode刷到200道以上,那么算法题不会成为你的软肋,刷到400道的时候基本上笔试题可以过80%-100%,面试国内大厂基本算法题全过了。同时基础的知识点也要掌握,比如不同树的区别,各种排序算法的区别和实现。
推荐课程:CS 刷题班
|CS八股文
包括操作系统,计算机网络,数据库,以及Java和JVM考点。如果有相关经验,可能还会考察Redis,SpringBoot等框架组件
操作系统和计算机网络这两门课,都是推荐B站看王道考研的视频,看一遍下来对基本概念都有所掌握了,但是对于一些考研的考点,比如计算题,不用太纠结,这些面试不会考。
数据库,主要是MySQL关系型数据库。这部分因为硕士课程有学,我就没有额外看视频。也可以在B站找相关视频,或者直接网上找Mysql入门教程的文章看看。
Java和JVM考点,这部分首先在前面学Java的时候有掌握,其次推荐周志明老师的《深入理解Java虚拟机》这本书,应付JVM的考点完全足够了。
Redis、SpringBoot等其他组件推荐直接看网上的文章。
学习的优先级是:计算机基础(操作系统+网络+数据库)> JVM > Redis, SpringBoot等。当过了一遍知识后,默认你已经理解大部分知识,这时候就要针对面经的题目来查漏补缺,通过回答面试问题的形式来学习对应的知识点。
|实习/项目经历
如果有这部分经历,一定是加分项。但对于非科班的同学一般都是没有的,可以把以往和编程有关的项目经历写到简历上。同时在学习好前面提到的计算机知识的前提下,在简历上补充一些项目,可以是学校/公司/网上开源的,保证面试官在问这个项目的专业知识你都可以回答得出来。
3. 边执行边调整
基本策略:尽可能多投简历,多内推,多面试,并在这个过程中不断微调自己的学习重心。
|根据反馈调整计划
比如我一开始以为Java本身的知识很重要,深入学习了很多,但在面试的过程中发现计算机三大基础课和算法题才是最关键的,随后就把学习重心放到这里。而且每年招聘要求,招聘人数都有所不同。比如可能因为转码的同学太多,对简历的项目要求变高了呢;而且每个人的背景不同,重点还是自己在投简历面试的过程中不断根据得到的信息反馈及时调整计划。