干货分享|非cs专业如何转码三个月拿到大厂offer
给非科班想要转码做【后端开发】的同学一些参考和建议,行动起来,转码并不难。
有点标题党了哈哈,首先说明一下这是真的,其次学习没有捷径,还是要踏实一步步来。我这里只根据自己的亲身经历,做一点微不足道的分享贡献哈。
|背景
首先说一下我的背景,本科是传统工科,有上C语言和数据结构算法,除此以外几乎没有碰过编程;硕士读的是数据分析,会学python和数据库基础。不能算完全编程零基础,但是离面试找工作还是差很远的。因为我是2020年7月硕士入学,一开始因为学业繁忙也没下定决心转码,直到后来11月秋招已经几乎结束了,才开始真正意义上转码准备面试。
|时间轴
- 2020年11月开始自学Java和补充计算机基础
- 2021年1月拿到字节跳动校招后端开发offer,中间经历三个月
- 2021年3月春招继续投递进行面试,最后拿到了百度、美团、阿里、拼多多等大厂offer
2. 拆解要求,制定计划
3. 边执行边调整
1. 确定目标
2. 拆解要求,制定计划
决定后端开发offer的因素有:学历,数据结构与算法(leetcode题),CS八股文(计算机基础,JVM,框架中间件),实习/项目经历,面试能力,智力题(偶尔会考),市场环境,运气,...因为时间有限,我们主要针对可以短期提升的部分进行重点学习。
2.1 计算机语言
如果已经掌握了一门编程语言,比如C++/Java/Python,那么直接可以跳过。这里推荐Java,因为市场需求大,入门也不难。对于校招来说,编程语言的重点就是拿来写算法题的。
推荐目标:学会Java的语言基础,能用来写算法题即可。
推荐资料:B站很多视频,我当时看的是动力节点的,不需要看完,掌握基础和语法就可以。如果不喜欢看视频,也可以看《Head First Java》这本书。
2.2 数据结构与算法
首先校招最重点考察的就是数据结构与算法,无论是哪一轮的技术面都至少有一道算法题,如果你面试的其他部分回答得一般,但是算法题做出来了,面试官可能会放你一马;但如果你计算机基础不错,算法题没做出来,那通过的几率就不到一半了。比如我在字节四面技术面的时候,前面计算机知识答的7-8成,没有特别好,面试官给我出了一道hard题,最后做出来了,也就顺利通过面试了。
推荐目标:建议Leetcode刷到200道以上,那么算法题不会成为你的软肋,刷到400道的时候基本上笔试题可以过80%-100%,面试国内大厂基本算法题全过了。同时基础的知识点也要掌握,比如不同树的区别,各种排序算法的区别和实现。
推荐资料:零基础而且时间充裕可以看一下伯克利的cs61b。或者可以直接B站搜索“左神”或者“左程云”,里面有他的全套课程,或者买他写的书《程序员代码面试指南》。左程云老师可以说是算法题的引路人了,我就是跟他学的二叉树解法,后来基本二叉树的题都做得很顺利。
2.3 CS八股文
包括操作系统,计算机网络,数据库,以及Java和JVM考点。如果有相关经验,可能还会考察Redis,SpringBoot等框架组件
- 操作系统和计算机网络这两门课,都是推荐B站看王道考研的视频,看一遍下来对基本概念都有所掌握了,但是对于一些考研的考点,比如计算题,不用太纠结,这些面试不会考。
- 数据库,主要是MySQL关系型数据库。这部分因为硕士课程有学,我就没有额外看视频。也可以在B站找相关视频,或者直接网上找Mysql入门教程的文章看看。
- Java和JVM考点,这部分首先在前面学Java的时候有掌握,其次推荐周志明老师的《深入理解Java虚拟机》这本书,应付JVM的考点完全足够了。
- Redis、SpringBoot等其他组件推荐直接看网上的文章,主要因为时间有限,不建议看书和看视频,直接看对应知识点的文章效率更高。
2.4 实习/项目经历
如果有这部分经历,一定是加分项。但对于非科班的同学一般都是没有的,可以把以往和编程有关的项目经历写到简历上。同时在学习好前面提到的计算机知识的前提下,在简历上补充一些项目,可以是学校/公司/网上开源的,保证面试官在问这个项目的专业知识你都可以回答得出来。
2.5 智力题
参考:
2.6 小结
首要准备:计算机语言基础+Leetcode+操作系统+网络+数据库。次要准备:JVM+Redis+项目经历+Spring全家桶+智力题。
3. 边执行边调整
基本策略:尽可能多投简历,多面试,并在这个过程中不断微调自己的学习重心。3.1 多投简历多面试
3.2 根据反馈调整计划