欢迎光临散文网 会员登陆 & 注册

全新·实战与面试结合的Java学习路线

2023-03-14 16:43 作者:饥人谷后端开发  | 我要投稿

饥人谷Java体系课(第11期)      

2位老师有话说      

无隅老师

  本科、硕士毕业于北邮,曾任职于亚马逊中国研发中心;担任多年面试官,面试过100+候选人;社招拿美团L8,  阿里P7,头条2-2等offer,总包均过百万年薪      

最初受谷里邀请来负责Java体系课程其实我是拒绝的,原因很简单,我觉得自己一直没做好准备。所以之前更多地是给同学们做分享,聊聊如何学习和一些职场趣事。后来很多同学和我交流都希望能学习后端的知识,找一份后端工程师的工作,也愿意跟着我一起完成这个过程。坦率地说,同学们的信任让我备受鼓舞,同时也很惶恐,我感觉无法一个人撑起这么多内容的课程,所以我邀请到了罗辑老师一同完成课程,目标很简单也很聚焦:帮助同学们高效地拿到Java工程师的offer。我的工作就是告诉大家学什么,怎么学,怎么学得快学得爽,帮助大家打下坚实的基础和知识体系。希望体系课程是一个能真正地帮助到大家的产品,而不是一个简单的知识点罗列的课程。   

罗辑老师   

   本科、硕士毕业于北邮。Java技术专家,5年以上互联网大厂工作经验,曾任职于美团。丰富的互联网项目开发经验,担任多年面试官。      

我了解到我们这个班大多数同学是非计算机科班出身,我自己也是非科班出身转做的计算机。当年校招的时候,我原先的目标是华为的客户经理,但是面试没有通过,而且面试官对我说,我的性格比较内敛,不适合做市场类岗位。经过深思熟虑之后,转去找编程方向工作。当时的我对计算机有一些基础了解,但对Java基本是零基础。经过4个月的突击学习,我从一开始面试完全过不了,到能通过一些面试,最终拿到自己满意的offer。我想把自己那段时间的经验和学习方法分享给班里的同学们。利用3到4个月的时间,帮助大家从零基础到拿到自己理想的offer。      


     

课程准备的经过      

准备课程的第一步就是要定课程大纲。我们两位Java老师与饥人谷课程组进行了非常多轮的讨论,首先明确了我们的课程目标:花尽可能短的时间,帮助基础较为薄弱的同学们找到心仪的工作。找到好的工作是我们的核心诉求。那么整个课程就要给找工作服务。

面试会考查知识的广度和深度,在前期把精力投入到知识广度的建设上是收益最高的。我们会首先先把广度铺开,在最短的时间内让同学们建立起对Java基本认知,再在面试考察点上进行深度学习。因此,有一些知识点我们会在基础阶段讲到,让同学有先对其有一个基本认知,在进阶阶段会把这些知识点再拿出来进行深入讲解。

我们的原则是避免照本宣科,因为经典教程中的很多知识工作中极少用到,面试也很少会问。我们剔除掉那些艰深晦涩、面试中又不太会考察到的知识点,让大家有限的精力得以集中。

为面试服务,由面到点,由浅入深,知识点聚焦,基于这些原则我们制定了课程大纲。通过对课程内容的学习,帮助大家打好基础的地基,不仅教大家具体的知识点,更重要的是帮助大家建立知识体系,教会大家如何高效学习。

在确定完知识内容和知识范围后,我们觉得有必要给大家出一个专门的面试专题,汇总高频面试题知识点,逐一剖析,帮助大家高效地准备面试。当上面的工作都完成后,摆在我们面前的还有一个难题,也是极为重要的一部分内容,那就是实战项目。

我们经过了很多次的讨论,最终决定将我们的项目分成多种形式,分别为随堂动手实战项目,商业雏形项目,技术原理项目。      

随堂动手实战项目是为了让大家更好地理解一些技术的核心原理,比如动手实现集合类,实现自定义注解,AOP实战等。商业雏形项目更多地是为了让大家适应平日里的业务需求开发,我们不单单只关注与增删改查的练习,还会告诉大家如何拆解系统,如何做一个基本的系统设计。同时会覆盖到真实的工作场景,要求大家编写单元测试,使用代码质量保证工具。

此外还需要考虑到性能问题,进行关键技术指标和业务指标监控,对核心接口进行性能分析测试与性能提升,帮助大家更好地胜任未来的工作。

除了上面介绍过的项目外,我们觉得有必要激发大家对技术原理的兴趣,所以会搞一些有趣的项目,比如如何实现一个生产级别的分布式锁,通过500行代码实现一个简易的KV数据库,实现一个短链接网址生成器等等有趣的纯技术项目。

整体而言,希望能够通过体系知识学习阶段(3 - 4个月),项目实战阶段(1 - 2个月),求职面试辅导阶段 (1 - 2个月)帮助大家拿到自己理想的offer。

(复制链接至浏览器打开)https://wj.qq.com/s2/11439957/3acc/

       

我们为何要学习Java?      

Java的优势      

  1. Java是目前最主流的后端编程语言,无论是中国还是美国,无论是大公司还是初创企业,Java都是使用最为广泛的后端编程语言,拥有充足的开放职位与发展空间。掌握了Java这项技能,就如同有了一本通行证,能让你在绝大多数公司找到一份工作

  2. Java语言的学习生态非常成熟,非常适合零基础的同学快速上手,可以既兼顾实战又可深入底层原理

  3. 学会了Java,有了Java基础之后也可以快速学习转其他语言,例如go语言

市场前景      

  1. 如果只看这些互联网大厂,的确大厂扩张脚步与速度在逐年放缓。但整个互联网、整个IT行业的规模还是在不断扩大。在信息化时代,各个行业都在进行数字化转型,国家政策层面也在号召产业互联网,工业互联网的发展,优秀IT人才的缺口还是在不断扩大。

  2. 在互联网圈盛传35岁年龄坎,我们认为这是整个行业处于野蛮发展阶段造成的。随着整个IT行业逐步度过初期阶段,发展模式逐步健康化,经验积累会越来越重要。中国的IT行业也会像欧美一样出现40、50岁仍活跃在一线的工程师,程序员会成为一个具有良好发展前景的终身职业。


课程详细大纲      

一.  引子      

1. 互联网公司全工种介绍

2. 职业发展路径

3. Java如何从0开始学习

4. Java程序员最小技术栈

5. 如何通过一场技术面试(国内/外企)

     

二.  前置知识准备      

注:我们会分阶段完成这部分内容,让同学们尽快上手得到正反馈而不是纠结卡在环境配置等问题

1.  IDE安装与Java环境搭建

2.  git速学

3.  github配置

4.  Linux系统与常用命令

5.  网络基础知识(TCP/HTTP)

6.  其他计算机基础知识

     

体系知识学习阶段 (3 - 4个月)      

     

三.  Java 基础入门      

【第1周 - 无隅】模块:语言基础      

1.  开启第一个Java程序:如何打印Hello World

2.  变量与赋值

3.  Java数据类型之基本类型详解

4.  Java数据类型之引用类型介绍

5.  如何注释

6.  Java中字符串相关操作

7.  其他常见字符串操作函数

8.  数组详解:初始化/遍历/多维数组

9.  赋值、算术和一元运算符

10.  关系运算符与条件运算符

11.  位运算与移位操作符

12.  控制语句:决策语句 - if语句

13.  控制语句:决策语句 - swich语句

14.  控制语句:循环语句 - for/while/do-while

15.  控制语句:分支语句

16.  控制语句:break和continue

17.  方法函数编写入门

18.  拓展:类型之间的强制转换与常见错误


四.  Java 基础进阶      

【第1周 - 无隅】模块: Java面向对象概念初探      

1.  Java面向对象概念初探

2.  神速理解面向对象

3.  类和对象究竟要关注什么?

4.  面向对象三大特性继承/封装/多态详解

5.  接口的定义和实现

6.  4大修饰符

7.  再谈方法函数编写

8.  面向对象实战练习

9.  面向对象知识大串讲


【第2周 无隅】模块:Java Collections 101      

1.  为什么要用集合

2.  Iterable接口

3.  数组列表ArrayList的使用和原理

4.  动手实现自己的ArrayList

5.  ArrayList源码剖析

10.  链表LinkedList的使用和原理

11.  动手实现自己的LinkedList

12.  HashMap的使用和原理

13.  动手实现自己的HashMap

14.  HashMap源码剖析

15.  拓展:TreeMap的使用和底层原理

16.  HashSet的使用和原理

17.  动手实现自己的HashSet

18.  HashSet源码剖析

19.  集合框架体系简介


五.  Java高级特性      

【第3周 无隅】模块:异常处理      

1.  异常机制初探

2.  异常分类

3.  异常执行过程分析

4.  如何处理异常

5.  如何自定义异常

6.  try-with- resource怎么使用?


【第3周 无隅】模块:包装类与常见类      

1.  自动装箱和自动拆箱机制

2.  动手实现自定义包装类

3.  Math类介绍

4.  Random类介绍

5.  String/StringBuilder/StringBuffer详解


     

【第3周 无隅】模块:多线程初探      

1.  为什么需要多线程技术

2.  进程和线程

3.  线程的生命周期

4.  启动线程有哪些方式

5.  线程池使用

6.  线程池工作原理详解


【第4周 无隅】模块:基础JVM介绍      

1.  Java虚拟机内存模型概念

2.  简单内存模型分析:程序执行过程内存分析详解

3.  类加载全过程详解

4.  深入类加载器

5.  字节码相关概念

6.  垃圾回收机制原理介绍

7.  分代机制介绍

8.  垃圾回收算法介绍


【第4周 无隅】模块:注解与反射      

1.  注解101

2.  如何自定义一个注解

3.  反射机制详解

4.  反射与注解实战练习


六.  Spring      


【第5周 罗辑】模块:Spring入门      

1.  互联网web应用架构

2.  认识Spring

3.  认识SpringBoot

4.  Spring版Hello World


【第5周 - 第6周 罗辑】模块:Spring容器      

1.  Spring IoC容器

2.  Spring Bean 装配

3.  Spring依赖关系管理

4.  Spring容器高级主题


【第7周 罗辑】模块:Spring AOP      

1.  AOP基础概念与思想

2.  AOP的实现方式

3.  Spring注解编程模型

4.  Spring AOP 实战

5.  Spring 常用注解讲解

6.  Spring 常用扩展点讲解


【第8周 罗辑】模块:Spring 与数据库      

1.  Spring DAO

2.  使用 Spring JDBC 访问数据库

3.  在 Spring 中使用 MyBatis

4.  Spring 事务管理


【第9周 罗辑】模块:SpringBoot 启动配置原理      

1.  SpringBoot启动过程

2.  SpringBoot自动配置原理

3.  实战-自定义一个SpringBoot starter


【第9周 罗辑】模块:Spring MVC      

1.  Spring MVC 基本概念与体系结构

2.  Spring MVC主流程-DispatcherServlet

3.  处理器映射器-HandlerMapping

4.  处理器适配器-HandlerAdapter

5.  拦截器-HandlerInterceptor

6.  异常处理-HandlerExceptionResolver

7.  Spring MVC常用注解

8.  实战-SpringBoot登录模块开发


七.  设计模式      


【第10周 无隅】      

1.  面向对象基本原则SOLID原则详解

2.  类的六种关系详解

3.  最简类图构成

4.  教你如何画类图

5.  实战:用plantUML画类图

6.  设计模式详解:工厂方法模式

7.  设计模式详解:抽象工厂模式

8.  设计模式详解:抽象工厂模式

9.  设计模式详解:单例模式

10.  设计模式详解:建造者模式

11.  设计模式详解:观察者模式

12.  设计模式详解:责任链模式

13.  流行开源产品中设计模式的应用


八.  Java高级进阶      


【第11周 无隅】模块:Java 8 In Action      

1.  Java 8与函数式编程初探

2.  Lambda表达式与函数式接口

3.  Stream介绍与实战

4.  并行数据处理

5.  异步编程模型

6.  Optional和默认方法实战

7.  日期与时间API详解


【第12周 - 第13周 无隅】模块:再聊多线程      

1.  Java内存模型(JMM)介绍

2.  happen-before原则

3.   violate关键字

4.  管程模型介绍

5.  深入synchronized

6.  Locks In Java

7.  多线程的安全问题与解决办法

8.  线程的死锁问题

9.  线程通信

10.  生产者消费者模式实战

11.  常用并发工具类介绍

12.  拓展:AQS详解


【第13周 无隅】模块:Java I/O初探      

1.  IO流的概念

2.  IO流的分类及其原理分析

3.  四大核心IO流详解

4.  对象序列化和反序列化实现与原理


九.  MySQL      


【第14周 罗辑】模块:从零开始MySQL      

1.  什么是 MySQL

2.  MySQL的安装和配置

3.  MySQL基本操作

4.  索引的基本概念


【第14周 罗辑】模块:Innodb 存储引擎      

1.  Innodb存储引擎概述

2.  Innodb索引

3.  事务

4.  锁


【第15周 罗辑】模块:高性能MySQL      

1.  创建高性能的索引

2.  查询性能优化-Explain

3.  锁的调试

4.  分库分表


【第15周 罗辑】模块:MyBatis 技术      

1.  MyBatis 入门

2.  MyBatis 与 Spring 整合

3.  MyBatis 缓存原理介绍

4.  MyBatis 插件机制介绍


十.  常用中间件      


【第16周 罗辑】模块:分布式缓存 Redis      

1.  Redis基本架构与数据结构

2.  Redis为什么那么快

3.  Redis如何实现高可用

4.  Redis如何实现高可扩展

5.  Redis缓存替换策略

6.  缓存使用过程中的各类问题及其解决方案

7.  实战-使用Redis解决秒杀问题


【第17周 罗辑】模块:消息队列 Kafka      

1.  消息队列概述

2.  Kafka 介绍

3.  Kafka 高可用架构设计

4.  Kafka 高性能架构设计


【第17周 罗辑】模块:搜索引擎      

 ElasticSearch      

1.  ElasticSearch 入门介绍

2.  Shard 分片原理

3.  多节点集群方案

4.  ElasticSearch 并发控制原理


【第17周 罗辑】模块:分布式一致性服务 Zookeeper      

1.  分布式相关理论 - CAP 与 BASE

2.  ZooKeeper 入门介绍

3.  Zookeeper Leader 选举原理

4.  一些基于 Zookeeper 的应用场景

     

项目阶段 (1 - 2个月)      

     

【项目1】多人协作平台(难度:入门)      

涉及的主要技术:      

Java/SpringBoot/IDEA/Maven/Docker/MySQL/MyBatis/Jenkins

我们会从真正从零开始搭建一个SpringBoot应用——一个多人在线协作博客平台,从无到有地完成开发、部署、持续集成,在此过程中你可以从零开始,熟练掌握上述技术。

我们会为你提供完整的前端代码和接口文档,你只需要严格按照接口文档实现后端接口即可。

开发流程和真实世界中的项目流程完全相同,只要你能完成本课程,你就拥有了真正的项目工作能力。

你不需要编写任何前端代码就可以获得一个高端大气上档次的、可以使用和展示的项目,如果你愿意的话,你甚至可以部署到自己的服务器上,向面试官现场展示。


     

【项目2】记账系统(难度:中等)      

涉及的主要技术:      

Java/SpringBoot/IDEA/Maven/Jacoco/CheckStyle/SpotBug/MySQL/MyBatis/Redis/Jenkins/JMeter/Prometheus/Junit/Mockito

在这个项目中,我们会从拆解业务需求开始,自己进行系统设计和架构设计,实现一个生产级别的后端服务,带领大家完成一个可以复用的基础web serivice框架,包含一系列的代码质量检测和单元测试覆盖。此外,会深入事务抽象和缓存抽象,帮助大家实战数据库事务和缓存功能。此外还会让大家真正地思考性能问题,进行关键技术指标和业务指标监控,对核心接口进行性能分析测试与性能提升,帮助大家更好地胜任未来的工作。在这个项目中我们也会带领大家尝试CI/CD理念,完成一个持续集成,持续部署的容器化在线服务。

我们会为你提供完整的前端代码和接口文档,你只需要严格按照接口文档实现后端接口即可。

开发流程和真实世界中的项目流程完全相同,只要你能完成本课程,你就拥有了真正的项目工作能力。

你不需要编写任何前端代码就可以获得一个高端大气上档次的、可以使用和展示的项目,如果你愿意的话,你甚至可以部署到自己的服务器上,向面试官现场展示。


【项目3】从零实现生产级分布式锁(难度:较难)      

分布式锁历来都受到大家的关注。不管是工作中、面试中,分布式锁永远是个热门的话题。也许你已经知道什么是分布式锁和为什么要使用分布式锁了,那么你一定很急迫地想知道如何自己实现一个分布式锁吧。这个项目就会带领大家从0开始自己构建一个生产级别的分布式锁,真正从生产高可用的角度出发,考虑可重入,锁自旋,自动续期等特性,进行设计和源码实战,帮助你不再是纸上谈兵。


【项目4】500行实现KV数据库(难度:较难)      

你了解NoSQL数据库吗?NoSQL是一项全新的数据库革命性运动,其拥护者们提倡运用非关系型的数据存储。那么我们作为后端工程师或多或少地需要使用和理解NoSQL,理解一个技术的最好方式莫过于自己动手编写代码实现其核心原理,这个项目我们会带领大家使用Java语言来实现一个基于LSM Tree思想的简易KV数据库,因为 LSM Tree 的实现要求对文件进行读写、锁的处理、数据查找、文件压缩等,所以编码过程中也提高了对 Java的使用经验,项目中也使用到了一些栈、二叉排序树等简单的算法,也可以巩固了基础算法能力。希望学有余力的同学可以适当给自己设定挑战目标,提升自己的技术水平


【项目5】短链接网址生成器(难度:较难)      

短链接网址生成是一道非常经典的系统设计面试题目,短链接系统设计看起来很简单,但每个点都能展开很多知识点,也是在面试中非常适合考察侯选人的一道设计题。我们不希望大家只是简简单单地描述和堆叠技术名词,更希望大家能动手亲自设计实现一个短链接网址生成器,从系统设计开始,理解短链接系统的原理,实现常用算法和设计数据库表结构。当你亲自做过这样的一个系统后,相信你在面试中会发挥的更加出色


     

求职面试阶段 (1 - 2个月)           

十一.  【无隅/罗辑】八股文面试合集      

1.  高频面试真题详解

2.  面试技巧介绍

3.  面试准备和面试流程详解

4.  简历撰写指南

5.  行为问题辅导

课程技术栈      

  • Java

  • Spring/SpringMVC/SpringBoot

  • MyBatis

  • MySQL

  • Redis

  • Kafka

  • ElasticSearch

  • ZooKeeper

  • Prometheus

  • Docker

  • JMeter

  • IDEA

  • Maven

  • CI/CD

  • Git

     

课程的学习模式      

  • 课程每周更新+知识讲解,录播无限期可看;

  • 每周直播答疑和进阶讲解,及时反馈学习情况和困惑;

  • 每个章节配套作业实战练习,包涵知识总结任务、代码实现任务、架构设计任务;

  • 课后提供课程源码、录播供反复学习;

  • 课程群内随时与授课老师互动,课程 1V1 作业批改指导,查漏补缺。

     

课程目标      

助力零基础,3年以内工作经验的同学们高效斩获P6/P7级Java工程师Offer!


课程特点      

  • 以通过面试,胜任工作岗位为第一原则

  • 贴近日常实际工作场景,聚焦真正高频使用的技巧与知识点

  • 注重方法论与知识体系的构造

  • 保姆级实战指导,带你手把手突破技术难关


课程适合人群      

  • 没有计算机相关基础,但仍想投身计算机行业

  • 有一定基础,但缺乏完整Java知识体系

  • 想要进入更高平台,但技术水平一直无法突破瓶颈


课程服务以及保障      

  • 小班教学,不超过30人!

  • 提供一线互联网内推岗位(内推职位均由师兄师姐和在职老师提供);

  • 入学 1 周内且在任务 5 内可无条件全额退款;

  • 入学 3 个月内且在任务 30 内可申请退余款;

  • 退款无任何手续费,退费承诺写入正式合同;

  • 支持边付边学,每期还可支持花呗信用卡分期(非分期平台分期,无需贷款)。


如何报名      

《新·Java体系课(第11期)》可试看~

(复制链接至浏览器打开:https://xiedaimala.com/short_links/190084

课程原价 7999元早鸟价 5988 元。(仅限前30人!)      

可分期,分期多100手续费,详细联系班主任咨询哦~

报名&试看可扫码加微信咨询: xiedaimala03

全新·实战与面试结合的Java学习路线的评论 (共 条)

分享到微博请遵守国家法律