跨考转码上岸大厂|超详细Java学习路线分享
转码的路上看过很多朋友分享的经验贴,今天就毫无保留地给大家分享一下我个人的学习历程以及踩过的那些坑🕳,真心希望能助力大家快速上手 Java,为找实习或校招做好充分准备💪。
同我在《尝试教大家背八股》里阐述的背八股思路一样,要针对项目中的技术点收集相关八股知识📖。要是想找 Java 后端开发的工作,直接去大厂相关岗位的 JD(职位描述)查看信息就好,从中能提取出关键技术栈:
语言部分 :Java 基础、Java 虚拟机、Java 多线程编程
开发框架 :Spring、SpringBoot、MyBatis
后端组件 :数据库(如 MySQL)、缓存中间件(如 Redis)、消息队列
基础知识 :数据结构与算法、计算机网络、操作系统
明确了要学什么之后,下面就给大家细细分享我的经验,花了好几天精心总结的,全是亲身经验!求一波关注和订阅,专栏里面还有很多面经和经验贴,希望能对大家有所帮助🤗!真心感谢各位牛u的支持!
Java入门阶段:JavaSE
🎬我入门的时候看的是韩顺平的《零基础 30 天学会 Java》,当时基本是用两倍速刷完的。
这个阶段可是打基础的关键时期,虽说我没有全部看完,但重点章节都精心整理出来了。要是时间充裕的话,强烈建议大家尽量看完整呀🧐。
学习建议:
- 第一遍学习千万不要跳着看,就算当下看不懂,也一定要记下来,方便后面再回顾复习📖。
- 一定要跟着视频动手敲代码,光听懂和自己能独立写出来可是两码事哦💻。
推荐必看内容:
Java语法基础: P62-P86:算术/关系/逻辑/三元运算符、P104-P108:顺序控制、P114-P117:switch语法、P122-P131:for/while/do-while循环、P138-P147:break/continue/return语句、P155-P162:数组基础
面向对象基础:
- P191-P214:面向对象+方法+传参+克隆对象、P228-P249:重载+作用域+构造器+对象创建流程+this
- P273-P278:包+访问修饰符+封装+继承+super+方法重写+多态、P319-P327:Object类方法(equals/hashCode/toString/finalize,常见八股)
- P328-P333:断点调试(调试技能很重要)、P374-P382:类变量+类方法+类成员(核心内容)
- P392-P393:单例模式(初次接触有个印象即可)、P394-P412:final+抽象类+接口
- P414-P436:内部类+枚举+注解(初学难懂,有印象就好)、P444-P459:异常(重要,初次了解概念)
- P461-P480:包装类+Integer+String+StringBuffer(非常重要)、P499-P547:集合(HashMap、ArrayList、Set等用法必须掌握,源码可先不看)
- P554-P559:泛型(重要)、P580-P597:多线程(初次了解概念)、P711-P730:反射(了解作用即可)
难点:排序算法、递归、单例模式、匿名内部类、HashMap/String 底层原理、反射等,初次学习的时候确实很难懂😣。建议大家先看一遍,留个印象,后续复习的时候就会有豁然开朗的感觉啦🌟。
可跳过内容:
- 坦克大战: 涉及图形化界面,与Web开发关系不大
- P86-P100:进制转换、位运算(需要计算机基础,初学者可跳过)、P165-P190:数组扩容、排序、二维数组(初次难懂)、P214-P226:递归算法(同上)、P661-P683:网络编程(无计算机网络基础可先跳过)
🎯我当时还看了廖雪峰的 Java 课程,他内容简洁明了,特别适合时间紧张或者有其他语言基础、想快速入门的同学。
补充建议:
这个阶段我大概花了一个月时间,大家可以根据自己的节奏灵活调整哦。学习过程中看不懂很正常,看视频的时候建议关闭弹幕,免得被一些 “优越感” 满满的评论影响学习心态😒。黑马的视频也是相当不错的选择,知识点都大差不差,按照自己的喜好选择就行啦😃。
学完集合后,就可以开始在 LeetCode 刷题巩固知识啦。刷上几道题,就能快速熟悉 API 的用法,遇到不懂的就去搜答案📚。通过这个阶段,基本就能掌握集合操作啦。
开发阶段
JavaWeb-不用深入钻研,主要是了解 Web 开发的流程和架构就好啦。
我看的是黑马23年版JavaWeb视频:
前端不需要看,可以直接跳过(HTML+CSS+JavaScript+Vue+Element)
Day04-01 Maven开始看(基本使用学会即可)
Day04-10 Web入门看到Day05-13
- 学会SpringBoot的基本使用;
- 了解前端请求到后端接受到返回给前端的过程,学会通过postman对接口进行功能测试;
- 了解三层架构(有个印象就行)
数据库入门学习
Day06-Day08-07 多表查询,之后的事务、索引可以看看(但第一次看大概率看不懂,有个印象即可)
MyBatis框架入门:学会基础操作、配置XML映射文件、动态SQL怎么写
项目实操
Day10 员工管理 : 最好自己跟着敲,收获很大、Day11 阿里云oss文件上传可以了解一下,我当时没跟着敲
Day12 登录校验:最好也最好跟着敲,对登录校验这个流程要有一定的了解,对整个请求-响应流程会有更清晰的认识、Day13 AOP可以不用跟着敲,体会一下AOP的作用以及大致了解一下流程即可,后面都可以不用看
总结:到这个阶段,你应该了解
- Web开发的大致流程,了解前后端分离的Web架构;
- 了解三层架构(Controller、Service、Dao),能自己利用框架写简单的增删改查代码
苍穹外卖(很经典的练手项目,建议学)
有人可能会说,苍穹外卖不是烂大街了吗?确实,这个项目现在很🔥,我看的时候播放量还没超 100 万,现在快 400 万了。但不可否认,正如项目简介所说,它是"最适合新手的 SpringBoot Java 项目实战。" 上一阶段刚学了 SpringBoot 基础开发,此时正需要一个功能更全的项目实践和提升增删改查能力。这个项目能提供:
- 丰富的多表联查,大幅提升增删改查能力。
- 接口文档齐全,甚至可以不看视频,直接根据接口文档开发,锻炼 coding 能力(我当时就是这么干的😎)。
- 提前了解一些开发场景,比如:初步引入 Redis,提前接触主流 Web 开发常用的缓存中间件。(这部分要认真看哦,后面还会用到呢)引入 SpringTask 定时任务。(了解一下就好)WebSocket 服务器主动推送方式。(了解即可)
我当时除了前端部分,其他都学完了,收获满满当当的。现在回头看,个人感觉有些部分可以不用看:
- Day07 - 缓存套餐 - Spring Cache
- Day08 - 用户下单微信支付(申请微信支付的流程挺麻烦的)
- Day11 - Apache Echarts
总结一下,这个阶段结束,你应该:
- 对基于 SpringBoot 框架的开发流程有更深刻的理解;
- 能熟练编写三层架构进行较复杂的增删改查代码;
- 对接口文档有初步认识,包括请求方法、请求参数、响应体等。
黑马点评(学习 Redis 的绝佳项目,一定要学!)
诶,可能又有人要问了,怎么又推荐一个大家都熟知的项目呀?确实(x2),但这个项目实在是太棒啦👏。这是我见过免费项目里,学习常见互联网后端开发场景及对应解决方案最厉害的。
为什么这么说,这个项目真的这么硬吗?(这个项目的视频22年推出,已经见到很多大佬靠这个项目在23年拿到大厂实习了,当时都不需要包装,就直接叫xx点评)
你从这个项目可以学到:
- 后端开发最常见的缓存中间件Redis的各种数据结构以及API、短信登录:利用Redis实现共享session,本质上是单机扩展到多机的问题
- 商品查询缓存-最常见的旁路缓存模式怎么用(如何读、如何写一定要掌握)、缓存三剑客(缓存穿透、缓存击穿、缓存雪崩)问题背景以及对应的解决方案-面试常考
- 优惠券秒杀(经典的秒杀场景,面试电商最好要准备)乐观锁解决超卖(这个点我个人不太认可,但是数据库乐观锁的实现方式一定要掌握,面试常考)、集群下怎么实现一人一单(由单机Synchronized存在的问题引出了Redis分布式锁,当时不太理解,现在返回头来看实在是太妙了!)
- 分布式锁-如何加锁、如何解锁、由Redis实现分布式锁存在的问题引出Redisson(锁续约、看门狗机制)-主包暑期实习面试被问了很多次
- 秒杀优化-异步秒杀(异步也是常见场景,这里有个印象就行)
- 用 Redis 实现消息队列(个人感觉没必要看,已有消息队列,但思路可学习)
- 好友关注(学习Redis Set数据结构)
- 附近商铺(学习 Redis Geo 数据结构) - 可略过、用户签到(学习Redis BitMap数据结构)-了解即可、UV统计(学习Redis HyperLogLog数据结构)-了解即可
我当时没看后面的高级篇和原理篇,Redis 相关八股是看小林 coding 及整理面经搜集的。
如果学历不错,敲完这个项目,包装下项目,刷刷题,背背八股,就可以尝试投简历找实习了💼。
消息队列
消息队列也是跟Redis同等重要的中间件。比较常见的有kafka、RabbitMQ、RocketMQ。
视频其实也很多,主包并没有看视频而是看的马哥的RocketMQ文章,然后在下面的微服务里学了另外一个RabbitMQ。
大家选播放量高的看即可,消息队列的解决方案都是通用的(削峰、异步解耦、消息分发)因为消息队列重在使用,对应的面试题也比较少,这里就不详讲了。建议:快速过,学会使用即可,掌握使用场景即可,不要在这个地方卡住,甚至你跳过学消息队列都不是什么问题。
常见开发工具(建议大家跟着做项目,边写代码边学习这些工具的使用哦😉。)
- Git :做项目的时候,把项目上传到 GitHub 或者 Gitee,就能轻松尝试使用 Git 啦。
- Linux :将项目部署在服务器上,就能熟练掌握 Linux 常用命令咯。
- docker :尝试部署项目相关组件,就能掌握 docker 基本命令用法。
刷题(尽早开始哦)
时间充足的话,建议 Java 入门阶段学完就开始刷算法。一方面算法很重要;另一方面用 Java 刷算法能巩固语法基础,避免纸上谈兵,防止做项目时因语法不熟悉写不出代码。对于完全零基础的同学来说,数据结构和算法可不是面试前几周就能准备好的。所以,边学 Java 边刷题,勇敢迈出第一步就好啦💪。
我的刷题建议:
- 入门阶段 :看灵神 “基础代码精讲” 视频,配合对应题目练习。
- 进阶阶段 :刷代码随想录或 Labuladong,按类型做题。遇到 Medium 题思考 5 分钟、Hard 题 10 分钟没思路就先放一放。
- 冲刺阶段 :刷 Hot 100、面试 150、剑指 Offer,灵神 1800 分以下题目,SQL 刷经典 50 题。
- 临战准备 :用 CodeTop 查看面试高频题,刷前几页题目,这样手撕代码基本就没压力啦。
微服务(时间非常充裕再学!)
这个点其实主包不是很想讲,但有很多很多朋友在问我,到底要不要学微服务🤔。
我个人的建议是:如果你的时间非常充足,可以学。
但如果你的时间比较紧张,直接跳过即可,没有什么影响。
我当时是看的黑马商城(比较新的那一版):
比较大的收获是:
- 学会了Docker的使用(主包自己后面写实验室的项目,用到的中间件都是基于Docker部署的,确实很方便)
- 对微服务从整体上有了一个认识(仅仅是认识哦)包括服务之间如何通信(rpc 远程调用)、服务注册与发现(nacos)、网关(Gateway)、熔断降级 Sentinel、分布式事务的几种模式、消息队列 RabbitMQ、搜索中间件 ElasticSearch
总结一下就是,快速过了一遍,也动手操作了,对微服务的组件有了一定了解,大致知道它们是干嘛的,但没有深入学习(主要是微服务体系太庞大了,很难在短时间内深入钻研)。
我建议大家也是,如果时间充裕就快速过一遍,时间不充裕直接跳过,一点影响都没有哦!
实际上到这里,项目阶段就结束了。但我写在简历上的项目可不是苍穹外卖和黑马点评,因为这两个项目用的人实在太多了,面试官可能都不会觉得是你自己独立完成的,很多时候都不会问你项目相关问题,而是直接考察其他八股知识。
我的建议是:
- 自己在网上找模版来包装项目(不过这种方法也不太好,因为模版既然被发现了,用的人肯定不少,所以最好自己设想一些场景,自己包装会更好)
- 现在很多知识星球、慕课网都有超多优质项目,我就不一一推荐啦,网上资源丰富,大家自己擦亮眼睛好好选择吧~
八股(超级重要!)
首先给大家提供几个比较比较知名的参考:
- JavaGuide:内容大而全
- 小林coding:都是精品,讲解深入,但需要一定基础且时间充裕才能看完
- Java全栈知识体系:
- 面渣逆袭
以上基本覆盖了所有的八股知识,内容非常丰富。
按知识体系主要分为:Java(Java基础、JVM、Java并发编程)
这部分我看的是黑马的相关内容。不过视频有点长,时间不太充裕的同学,建议直接看黑马的笔记,然后结合一起学习;时间充裕的同学可以自己动手实操一下哦。
组件(数据库 MySQL、缓存中间件 Redis、消息中间件 MQ)
前两个主要参考小林 coding 以及掘金上的一些文章,也可以看看黑马的 MySQL 原理篇以及Redis的高级、原理篇
开发框架(SSM与SpringBoot):这部分我没看视频,是自己搜集的结合上面的整理的。
基础知识(数据结构与算法、计算机网络、操作系统):算法在刷题的时候就会有学习到,这里就不展开了,
计网和操作系统主要还是看的小林,讲的很好,但确实太多了。计网和操作系统目前我面试下来其实高频题就那些,大家自己整理就好,以下是我从高频面经中整理得到的所有计算面试常考题:
小建议
1、从简历出发,建立 “技术锚点”:最快的方法是根据自己做的项目整理技术栈,并从底层深入学习。尤其时间紧张时,针对简历项目整理八股很关键,写在简历上的技术点答不上来会很扣分。
2、用真题串联知识,但别被高频题困住:若时间充足,建议按类别搜集。去牛客、小红书、B 站等平台找真实面经(注意辨别营销号),并按类别分类。好处是像做真题一样,能搜集到最高频、常考题目;缺点是可能缺乏上下文信息,因每个人项目不同,面试官从项目引申的八股也不同,所以需搜集多篇才全面。
3、让知识真正被吸收:整理完面试题后,背不下去很正常。比如 TCP 的三次握手、四次挥手,一开始我也想跳过,整理完计网常见面试题,了解 TCP 特性后就容易记住了。建议大家自己把面试题整理成思维导图。知识吸收是反复的过程,不必焦虑,按自己节奏来,总能建立知识体系,对问题的思考有时比完美八股更重要。
自荐
之前看面经分享帖的时候,学到了已经上岸大厂的前辈的做法。在准备暑期实习时,我也效仿着根据以往的真实面经整理八股。在此,给大家分享一下我自己面试被问到的题目,以及我根据以往面经整理得到的题目。各位uu可在专栏订阅一波:
https://www.nowcoder.com/creation/manager/columnDetail/Mq7Xxv
牛客 Top 博主都订阅了,比如“Java 抽象带篮子”(7000+ 粉丝),在这里感谢篮子哥的支持!
所有内容经过科学分类与巧妙标注,针对性强,让你的学习事半功倍:
- ⭐ 必须掌握(必看):时间紧迫时的救命稻草,优先攻克核心要点。
- 🌟 尽量掌握(有时间就看):适合两周以上备考时间的同学稳步提升,冲击大厂的uu们建议看!
- 💡 了解即可(知识拓展):时间充裕时作为补充,拓宽视野,被问到的概率小,但如果能答出来就是加分项
- 🔥 面试真题:根据真实面经整理出来的面试题,有些可能难度很高,可根据自身水平酌情参考。
按照推荐观看顺序 “🔥⭐> ⭐ > 🔥🌟 > 🌟 > 🔥💡 > 💡” 有条不紊地学习,让每一分每一秒都用在刀刃上,自此一路畅行。
全面覆盖面试核心知识点
我的面试真题涵盖技术领域的核心考点,从高频热点到冷门难点一网打尽。以下是部分模块概览:
- JVM篇⭐ 必须掌握:14 题|🌟 尽量掌握:21 题|💡 了解即可:16 题|🔥 面试真题:41 题(部分题目较难,可酌情选择)
https://www.nowcoder.com/issue/tutorial?zhuanlanId=Mq7Xxv&uuid=c87d9ad65eb840728ae63774893bccf5
- 计网⭐ 必须掌握:29 题|🌟 尽量掌握:21 题|💡 了解即可:15 题| 🔥面试真题:57 题(部分题目较深,视情况参考)
https://www.nowcoder.com/issue/tutorial?zhuanlanId=Mq7Xxv&uuid=65e9951c2e754d7086d26b9b46aa4a1a
- 持续更新:不仅如此,后续还将持续更新 Java 全套、MySQL、Redis、操作系统等丰富内容
独特解析:知其然,更知其所以然
我整理的八股面经绝非简单的问答堆砌。每一道题目都配有深度剖析的思考过程,在你看题之前,便清晰呈现出题意图,让你迅速抓住题目核心,加深对题目的理解与记忆,做到 “知己知彼,百战不殆”。
对于容易关联的知识点,更是独具匠心地进行关联标注。
提及死锁,马上为你串联起操作系统与 MySQL 中的相关知识;
说到乐观锁、悲观锁,同步展示 Java 与 MySQL 的实现方式
助力你举一反三,深度梳理知识点之间的内在逻辑联系,真正实现知识的融会贯通,做到知其然更知其所以然。
我后续还会分享如何包装项目、leetcode 刷题模版与刷题技巧、各种学习经验以及真实面经等,从多个角度助力牛u提升技术能力和面试水平。
#牛客创作赏金赛##大厂##后端开发##java##学习路线#1、分享主包面试的真实面经 2、根据之前看面经分享帖的时候,学到了已经上岸大厂的前辈的做法。在准备暑期实习时,我也效仿着根据以往的真实面经整理八股。在此,给大家分享一下我自己面试被问到的题目,加上之前好几个月搜集的真实面经总结出来的面试常考题目和思维导图