
01 非科班转码拿下大厂Offer,花费一天整理的Java后端完整版学习路线
0 写在前面的话
先简单介绍下我的背景和秋招情况。我本科双非,硕士985,本科和研究生均为非计算机相关专业的工科专业。
秋招共计面试了8家公司,收获了3份大厂offer + 一个实习转正Offer,其中最好的应该是BAT中某大厂的小ssp,对于我这个非科班转码的选手来说,我对自己已经非常满意了,写这些内容的本意是,希望能够帮助和我一样的转码人少走一些弯路,如果有错漏之处,欢迎各位大佬批评指正。
另有3篇高质量长文导航: 02 盘点2025遇到的各大厂面试真题总结 03 一文吃透 Redis 核心考点,面试真题深度梳理 04 MySQL面试八股看这一篇就够了——深度梳理MySQL面试问题
后续还会更新RabbitMQ、SSM等其他部分的面试高频八股梳理,欢迎关注。
作为转码人,大家或许都正在或者曾经面临和我一样的疑问:
大家都在说互联网越来越卷,那我到底要不要转码? 我作为非科班之前从来没有接触过其他计算机相关的知识,究竟能不能成功转码? 互联网现在的行情到底怎么样,是不是真的像网上说的,一堆双9都找不到工作了?
这些问题我没有办法给出一个标准的答案,我只能结合我自身以及我所了解的身边朋友的情况,给大家一些信息以供参考。
互联网是不是越来越卷,就我个人感觉,是。互联网大厂对校招生的要求越来越高,可能原来自己做了1、2个单体项目就可以找到不错的实习,有了一段大厂实习就可以找到不错的工作。但是今年,就我和我身边朋友的感受是,首先即使简历里做的是单体项目,但是面试中考察分布式、多线程相关的八股占比也很重,要求你掌握分布式的知识;对实习的重视程度也更高,身边不乏学历更高但因为没有实习经历而没能通过简历筛,而学历更低但因为有多段实习经历而成功进入大厂面试的例子;技能要求更多更全面,今年即使面试的是传统后端开发业务,也要求掌握大模型的一些基础知识。另外,相信参加了今年秋招的同学都有感触,今年的秋招开始的更早,且hc似乎比往年更少了,我是在9月上旬至中旬开始投递简历,只陆续收到了少数几个大厂的面试邀约,所有中厂投递之后基本全都了无音信。
对互联网的后端开发岗位来说,第一关是能够进入面试流程,在这个过程中,我个人感觉是实习 > 学历 > 科班。而能够进入面试之后,最看重的就是面试表现了,只有在面评相近的时候,才会再横向去对比实习和学历。所以,如果你准备好转码了,尽可能的多刷实习经历吧。
我自己在转码的学习过程中其实是踩了很多坑,走了很多弯路的,所以希望能根据我自己的一些经验教训,给后来者提供一点点的建议和帮助,特整理非科班转码学习路线一份,供诸君一览。
1 完整版学习路线
首先说明,我是转Java后端开发的,学习的路线主要是按照尚硅谷来的。
下面详细介绍下我学习的主要技术栈以及学习的建议,供诸君参考。
1.1 Java SE
Java SE,也就是Java基础。这部分是我学习最长,也是最认真的一部分,现在来看,其实走了很多弯路。
学习视频链接:https://www.bilibili.com/video/BV1PY411e7J6
首先,个人感觉宋红康老师讲解的确实很清晰,还是值得看的,但是建议视频1.5-2倍观看,因为这个视频整体还是有点啰嗦,里面很多地方我都是直接快进和跳过的。
如果有一定编程基础,可以直接从62 数组部分开始看,前面的变量与运算符、流程控制对照尚硅谷的markdown文档过一遍,简单了解下和其他语言的语法和使用区别即可。我自己学习的时候是,倍速看知识点,然后一些练习先自己敲,如果自己可以写出来就直接不看练习讲解了,遇到不会或者不确定的再去看一下视频讲解。然后,面向对象这部分是一个重点,封装、继承、多态不管是后面自己做项目,还是面试八股,这块都会涉及很多。
关于视频里面涉及到的项目,我个人建议如果时间充裕还是可以做一下,虽然里面的项目很基础肯定没办法写到简历,但是对掌握前面学到的知识点还是很有帮助的,而且计算机很重要的一点也是coding能力。
多线程、IO流、网络编程、反射机制部分个人感觉在初学的时候都可以先跳过,其中网络编程没必要学,反射机制可以在学SSM框架之前去补一下,学太早的话等学到框架的时候其实都忘光了,还需要回头去重新学。多线程这部分是面试八股中高频提问的知识点,但是实操的话,实际直到现在我都没有太多实践,只是在实习的时候边学边用了一下,所以我个人感觉可以不用学,后面直接背八股准备面试问题,实操的话等到做项目或者实习需要用现学也很快。
1.2 Java Web
Java Web,实际是前端的基础知识,如果你是找Java后端的工作(全栈除外),这部分学不学对你是没有任何影响的,我不管是实习面试还是秋招面试,从来没遇到过任何一个面试官问过前端的知识。但是我个人认为,作为一个合格的后端,自己不会写太复杂的前端代码没问题,但是至少要能保证大致看懂前端的逻辑,了解前端最基础的一些知识。所以如果你时间充裕,我建议还是可以学一下这部分。
学习视频链接:https://www.bilibili.com/video/BV1UN411x7xe
视频以HTML、CSS、JavaScript(前端最基础的知识,建议学习)+ Servlet(可学可不学) + Vue3为主,Vue3和React是前端最常用的两套框架,个人感觉不是以后准备找前端的话,简单学习其中一套即可,至少确保后面做项目的时候能够看懂前端部分的目录结构和基本逻辑。这部分的代码,我自己在学习的时候是没有自己去敲太多的,只上手了JavaScript的一些代码,其他主要以了解为主。
1.3 MySQL
MySQL,是后端最重要的两大技术栈之一(另一个是Redis),既是面试八股的考核重点,也是以后工作时最常用的技术栈。
学习视频链接:https://www.bilibili.com/video/BV1iq4y1u7vj
视频里其实分为基础和进阶两部分。基础部分以MySQL基础知识和SQL代码为主,在互联网的笔试和面试中是可能会出到MySQL的编程题的,一般以多表查询、子查询的SQL语句写法作为考察重点,所以建议基础部分还是需要认真学习一下,尽量自己多敲一些练习题锻炼一下coding能力。进阶部分基本不涉及什么新的SQL代码了,主要是索引、存储引擎、SQL调优、事务、锁机制这些面试重点考核的八股为主,个人建议初学的时候可以先只学基础部分,学会怎么写一些常见的查询语句,等到快要面试前,可以倍速过一遍进阶部分,可以更完整、系统的学习MySQL的八股,当然追求速度的话也可以直接跳过这部分,直接去背八股(我自己是这样的)。
1.4 Redis
Redis,是后端两个最重要的技术栈之一,是面试八股的考核重点,但是实际使用的时候是比较简单的,大多数时候是直接用Jedis、Redisson、lettcue等现成的客户端,经常使用的也就是一些简单的put、get以及和MySQL的数据同步操作。我自己是没有特意学习这块的,只是在做项目用到的时候去临时了解了一下,重点需要准备的还是Redis相关的八股。
1.5 SSM + MyBatis Plus + Spring Boot
SSM,是Spring、SpringMVC和MyBatis的缩写,实际上现在只有一些很老的项目是基于传统的SSM框架开发,绝大多数的项目还是Spring Boot为主。SSM和Spring Boot的关系简单来说就是,Spring Boot是一个基于Spring的快速开发框架,它简化了SSM的配置过程,用自动化配置和约定大于配置的方式,提高开发的效率。而MyBatis Plus可以理解成是MyBatis的增强版,在MyBatis的基础上封装了一些更加便捷的操作和功能,为简化开发、提高效率而生。它引入了一些新的特性,如自动填充、乐观锁插件、逻辑删除等,同时还内置了一些常用的CRUD操作,能够极大地减少了开发人员的工作量。如果大家时间不足想要速成,可以跳过SSM部分的学习,直接去看MyBatis Plus和Spring Boot,后面直接去看SSM对应八股。但是如果有时间,我强烈建议SSM还是学一下,这样后面学习Spring Boot的时候才不至于一知半解。
学习视频链接:https://www.bilibili.com/video/BV14WtLeDEit
这部分其实代码偏少,更多的是理论知识的理解和框架的使用和配置。个人建议可以在看视频的时候,跟着视频一起动手配置一下。然后最后那个微头条的项目其实没必要做,因为这个项目非常基础,是没办法写到简历的,而学完这部分实际就可以开始去自己找一些优质项目去做了,所以关于Spring Boot和MyBatis Plus的实操,可以在项目中去进行实践。
1.6 Git
很多网上的Java学习路线不会提到Git,但是我个人强烈建议大家在做项目之前花费个半天到一天的时间,学习一下Git的常用命令。Git是未来工作必备的一个基础技能,即使是实习生,入职之后同事其实也都默认你是会使用Git的,所以提前学习Git,一方面是为后面的实习、正式入职打基础,也能够帮助我们更好的备份和管理自己的项目代码。
Git我个人感觉没必要看视频学习,找几篇技术博客看一下,然后再自己动手练习一下就可以了,基本上了解了工作区、暂存区,本地仓库和远程仓库的基本概念,能够从远程仓库拉代码,提交本地代码,回滚代码,创建、切换和合并分支,自己解决冲突就够用了。
下面提供一些技术博客和练习网站供诸君参考:
练习命令的网站:
https://learngitbranching.js.org/?demo=&locale=zh_CN
本地仓库与远程仓库建连:
https://blog.csdn.net/qq_29493173/article/details/113094143
常用命令:
https://zhuanlan.zhihu.com/p/615581394
1.7 项目
这里我就不推荐具体的项目了,这里仅给大家提供一些事后总结反思得到的一些选项目和做项目的经验之谈,仅一家之言,如有错漏,欢迎补充。
首先,大家选项目时肯定都希望做一个有含金量的项目,那么对于后端开发而言,到底什么样的项目才算有含金量呢?我个人的理解是,一个好的项目应该符合下面三个判断的标准:
技术全面度:必须覆盖Java后端的高频技术栈,即:以Spring Boot为核心,MySQL+Redis作为数据层,最好包含消息队列、Elasticsearch、分布式框架等常用的技术栈,且每个技术都有具体的使用场景,而不是为了用而用;
业务复杂度:基于真实的业务场景,比如经典的电商平台和社交平台,包含多个业务模块,如用户、订单、支付等,有针对Java经典的“三高”场景(即高并发、高性能、高可用)的解决方案;
可展示性:能说清技术选型理由、解决了什么问题、有哪些优化点,面试时能展开聊。
我们在选择项目的时候,尽量避免Demo级的项目,而是优选考虑企业常用场景的项目,比如电商、支付、社交等,这样更容易引起面试官的共鸣,能够让面试官延伸出更多的面试问题。并且,技术深度会比广度更加重要,比如针对电商项目,如果能把秒杀场景下的高并发优化方案做透,能够综合考虑限流、降级、熔断、缓存、分布式锁、异步化、数据一致性等等问题,比做一堆浮于表面的功能更能吸引面试官。
再提一点可能很多人会忽略的一点,我建议如果大家时间充裕的话,可以学习一下项目怎么上线,可以在阿里云或者腾讯云购买一个服务器,将项目部署上线。已经上线的项目可以直接在简历上挂上网址链接,这会是一个加分项。我自己做的项目都上线了,在暑期和秋招的面试中,有超过一半的面试官在面试时都会询问我简历后面这个链接是不是项目已经上线,有一部分面试官甚至会当场点进去体验一下然后再进行提问。
1.8 手撕算法题
强烈建议把LeetCode hot100: https://leetcode.cn/studyplan/top-100-liked/和牛客面试TOP 101: https://www.nowcoder.com/exam/oj都刷完,手撕遇到过好几道题都是牛客TOP101原题,而LeetCode hot100并没有。
手撕的高频考点:链表、二叉树、双指针和动态规划,如果时间不足,优先刷这四部分。另外,尽量单独准备几个其他的手撕:快速排序、堆排序、归并排序、单例模式(饿汉&懒汉式)、约瑟夫环问题、多线程交替打印数字等。
SQL的手撕比较少,如果遇到大概率也是多表查询/子查询问题,这块稍微准备一下,确保能写出来2-3表的联表查询和子查询即可。
1.9 面试八股
可以关注后,后续马上更新我个人整理的分技术栈版【高频八股问题】和部分大厂的【面试真题】,主要包括: MySQL:主要包括存储引擎、索引、事务、锁、日志、性能调优、分库分表等高频八股问题; Redis:主要包括常见的数据结构及原理、线程模型、持久化、内存管理、性能优化、穿透/击穿/雪崩、集群、哨兵机制、分布式锁等高频八股问题; 其他八股合集:主要包括计算机网络、JVM、Java集合、Java SE、Linux、SSM框架、RabbitMQ等部分的最高频的八股问题; JUC并发编程:主要包括线程、多线程和线程池的高频八股问题; HR面问题参考:我自己准备HR面时预想的几个问题和参考回答; 系统设计面试题:主要是自己面试时遇到过的一些场景题和系统设计题。
在整理答案的时候,主要参考: ****:**** ****:**** 面试鸭:https://www.mianshiya.com/
面试时,如果你有实习经历的话,一般会优先提问你的实习工作,会问的比较细致,比如针对你简历写到的某一点具体是怎么实现的,为什么选择这个方案,有没有什么其他更好的方法等等,并且可能穿插一些你实习时用到的中间件的八股,比如你实习用到了kafka,可能就会问你kafka的八股问题。
除了实习以外,面试提问最多就是MySQL和Redis的八股,这两个基本是每个公司第一轮面试必问的,且占的比重比较大。你自己做的项目里涉及到的其他中间件和技术,比如分库分表、RabbitMQ等,这些中间件/技术的八股也是提问的一个重点。除此以外,就是JVM(垃圾回收算法/回收器是高频提问点)、计算机网络、JUC并发编程、Linux、SSM这些。
而二轮/三轮面试,提问的重点会更偏向实习 + 场景设计题,其中会穿插着考察一些分布式、Redis、MySQL的八股,考察难度相较于一面会更大。
2 速成版学习路线
如果是以找实习/工作为目的,希望能够在短时间内快速速成,可以按照下面的顺序进行学习,每天学习12h+的话,2个月左右可以完成:
Java SE(倍速看,动手敲代码) –> MySQL基础篇(倍速看,动手敲代码) -> SSM + Spring Boot(倍速看不用动手敲) -> 做项目,在项目中实践Redis、消息队列、分库分表等等技术栈(前端直接用现成代码,后端核心模块自己动手实现一下) -> LeetCode hot 100至少刷完除图论以外的所有简单、中等题 -> 八股,重点准备MySQL、Redis以及你项目中涉及到的其他技术栈的八股
3 自己整理的高频八股及部分面试真题
因为本文篇幅有限,如有需要欢迎关注,后续马上更新各技术栈高频八股及面试真题

