小白如何开始学习Java?

发布时间:2024年01月18日

🌈🌈🌈🌈🌈🌈🌈🌈
欢迎关注公众号(通过文章导读关注:【11来了】),及时收到 AI 前沿项目工具及新技术 的推送
发送 资料 可领取 深入理解 Redis 系列文章结合电商场景讲解 Redis 使用场景中间件系列笔记编程高频电子书

文章导读地址:点击查看文章导读!
感谢你的关注!

🍁🍁🍁🍁🍁🍁🍁🍁

小白如何开始学习 Java?

在这里插入图片描述

这篇文章先不去分享 “干货知识” 了,所谓的 “干货” 其实也就对少数人才能派的上用场,而大多数可能处于大一、大二阶段的新生,他们还不清楚如何去学习 Java,甚至连 Java 的语法都不知道,因为他们还没有想过以后要从事什么样的工作,这也很正常,毕竟当你处于大一、大二的时候,才刚刚入学一年,大学生活还没有享受太长时间,觉得现在距离毕业还早着呢,先不着急。

但是现实其实是很残酷的,对于我们计算机类来说,一般找工作的黄金时间就在大三下学期,下学期 3 月份开学后,就需要开始准备面试,这个面试是针对于 暑期实习 的,因为在本科期间,大部分学校都会让你出去暑期实习的,这个暑期实习是很有用的,因为平常如果都不参加竞赛的话,每个同学之间的差距其实都是很小的,但是如果你多一个暑期实习的经历,直接就可以和其他人拉开一段差距

既然知道了暑期实习的重要性,那么你既然需要暑期实习,在大三下学期的 3 月份就要开始面试,在这个过程中就是不断地去看面试题,总结自己的项目,然后就是一直投简历,整个面试的过程一般在 1-3 个月左右,既然要在 3 月份就开始面试了,那么咱们往前再推算一下,大概需要提前一年开始学习找工作的东西,那么也就是大二下学期的 3 月份就要思考自己以后要找哪些方面的工作了,比如要找 C++,那么就去学 C++ 的内容,要找 Java,那就去学 Java 的内容,这里我也将时间表给列出来

在这里插入图片描述

其实对于学习就业相关的内容来说,一年时间真的不多,因为你在学校还是要上课还有其他事情,不可能每天全身心投入学习,因此这一年时间一定要 高效的去利用,如何高效学习呢?

在学习之前,一定要去多了解 学习的路线,而不是一开始直接挑一个视频开始学习,了解学习路线之后,我们要了解每一个步骤要去学习什么,我之前也是自己学习,走了许多的弯路,盲目的学习了很多的知识,但是其实都用不上,最后忘得一干二净!

那么接下来步入正题!

Java 基础篇

Java 小白该如何开始学习呢?

接下来我手把手的教你,直接跟着做就好了,跟着一个一个内容去学习

首先,直接去 B 站搜索 java基础,第一个就是尚硅谷的视频,总共 200 节课程,总时长 123 个小时

在这里插入图片描述

直接点进去学习,在学习的同时一定要去跟着 手敲一边代码 并且 记笔记,记笔记的话在 CSDN 上记就可以,记得一定一定要记笔记,因为学完之后,是一定会忘的,通过记笔记可以将自己一天学习到的内容给汇总起来,并且将所有的笔记根据分类汇总起来,下边是我对笔记进行专栏的分类,可以看到分类之后就很清晰了

在这里插入图片描述

为什么一定要记笔记呢?

Java 基础这块的内容,在面试中其实是很重要的,但是由于刚开始学习 Java,你可能对 Java 的认知还不够深入,那你先把笔记记上,之后随着自己对 Java 的认知更加深入,不断来完善自己的笔记,形成自己的知识库,让自己学习到的知识成为一个闭环!

Web 开发篇

Java 的主要领域就是 Web 开发,那么之前的 Java 基础知识开胃菜,要把整个学习的重心放到 Web 开发的学习中,对于 Web 开发的学习来说,还是直接在 B 站搜索 javaweb,第一个视频就是黑马程序员的 web 开发教程

在这里插入图片描述

总时长 42 个小时,通过这 42 个小时的课程你可以学到在 Java 中如何操作数据库并且完成增删改查的操作,那么至此,如果你将学习到的内容都掌握了,那你进入公司做一些简单的工作是没有问题了,但是,如果仅仅是这样的水平,你还没办法通过面试找到一个合适的工作,因为还有许许多多的 Javaer 在和你同时竞争!

进阶篇

接下来开始进入,进阶篇,这里才是 重头戏

之前已经将需要掌握的基础知识都学习完毕了,在进阶篇中,我们的目的是面试找一个工作,那么就需要去了解面试中到底会考察什么内容?

接下来,我把面试中考察的内容列举出来,如果学习到一个,就可以打一个钩,全部掌握之后,面试基本上是没有问题的,如果有哪些内容不会,就要去搜索对应的资料进行学习了(当然,也可以找我提供帮助):

  • Java 基础面试题

    • 概念了解:封装、继承、多态、静态变量、局部变量、重载、重写
    • 为什么静态方法不能调用非静态成员?
    • 自动装箱和自动拆箱?
    • 基本数据类型和包装数据类型?
    • ==equals 区别?
    • 面向对象的三大特征?
    • 接口和抽象类的区别?
    • 深拷贝和浅拷贝?
    • String、StringBuffer 和 StringBuilder 区别?
    • String 为什么是不可变的?
    • 字符串常量池了解吗?
    • String 字符串在通过 + 运算时会发生什么?
    • Exception 和 Error 区别?
    • 泛型了解吗?用过吗?
    • 反射了解吗?
    • SPI 了解吗?
    • 序列化了解吗?
    • BIO、NIO 和 AIO 了解吗?
    • HashMap 和 ConcurrentHashMap 源码了解吗?
    • ArrayList 和 LinkedList 的区别?
    • 进程和线程区别?并发和并行区别?
    • 多线程了解吗?
    • sleep() 和 wait() 方法区别?
    • 如何创建线程运行代码呢?
    • synchronized 原理了解吗?
    • ReentrantLock 了解吗?
    • ThreadLocal 了解吗?它会导致内存泄漏,是为什么呢?
    • 线程池原理了解吗?线程池参数了解吗?
    • AQS 了解吗?
    • CAS 了解吗?
  • MySQL 面试题

    • MySQL 如何分页查询?
    • left join、inner join 和 right join 区别?
    • 了解 MyISAM 和 InnoDB 存储引擎吗?有什么区别?
    • InnoDB 中的 B-tree 索引了解吗?自适应哈希索引了解吗?
    • 前缀索引?覆盖索引?最左前缀原则?
    • 聚簇索引?二级索引?索引下推?explain 用过吗?
    • 事务了解吗?事务隔离级别了解吗?可重复读隔离级别会造成幻读了解吗?
    • MySQL 的锁了解吗?
    • MVCC 和 BufferPool 了解吗?
  • Spring 面试题

    • Spring 的 AOP 和 IOC 了解吗?
    • Spring 如何获取 Bean 呢?
    • 如何注入 Spring 的 Bean?
    • Spring 的 Bean 线程安全吗?
    • Spring 的 AOP 如何实现的?
    • Spring 的事务如何实现的?
    • Spring 事务的传播机制?
  • SpringBoot 面试题

    • SpringBoot 优点?
    • 自动配置如何实现?
    • SpringBoot Starter 了解吗?
    • SpringBoot 如何读取配置文件中的数据了?
    • SpringBoot 内嵌的 Tomcat 服务器了解吗?
  • Redis 面试题

    • Redisson 分布式锁?在项目中哪里使用?多久会进行释放?如何加强一个分布式锁?
    • zset 几个命令的时间复杂度?
    • redis 里面的命令,比如 setnx 和 setex 还有 zset 中的命令?
    • redis基本数据结构?
    • zset 的底层实现?为什么不用红黑树?
    • SDS 了解吗?
    • Redis 的 zipList
    • Redis 的 listPack
    • 谈谈Redis 的持久化策略?
    • 缓存雪崩是什么?如何解决?
    • 缓存穿透是什么?如何解决?
    • 缓存击穿是什么?如何解决?
    • 缓存怎么保证数据的一致性?
    • 了解 redis 中的大key吗?多大算是大key呢?如何解决?
    • 了解 redis 中的热 key 吗?
    • redis用的什么版本,6.0多线程体现在哪里?redis的性能瓶颈在哪里?
    • Redis 的主从机制有哪些好处?哪里存在问题?
    • Redis 主从复制如何同步数据呢?
    • Redis Sentinel有什么作用?
    • Redis 切片集群了解吗?

    ?

上边列出了常见的一些面试题,由于篇幅的原因,没有办法把对应的回答都列举出来,如果掌握上边的这些内容的话,毕业的时候找个 10k 以上的工作是没有问题的,注意一下,我的这些面试题按照重要程度排序了,比如 Redis 面试题中,它的主从复制、切片集群不要着急去学,要先把基础打牢!

记住一句话,如果在面试中连基础关都没有过去,根本就没有机会给面试官展示高级的内容!

面试学习方向

上边我把主流的一些面试题给列出来了,接下来主要总结一下,面试的话,该从哪些方面去学习,这里根据重要程度进行列举:

  • 首先,在 Java 基础 方面,最重要的就是 并发网络编程,并发里边就是考察你对于并发的理解,如线程池核心参数、sleep() 方法等等,因为如果要进入用户量大一些的公司,并发问题是不可避免要碰到的,因此并发是面试的常客,其次就是网络编程的内容,AIO、NIO 和 BIO 要了解吧,Socket 也要知道是个什么东西,其次就是 JDK 中的源码,这里边 HashMap 和 ConcurrentHashMap 问的都是比较多的

    Java 基础就说完了,主要从 3 个方面准备:并发、网络、JDK 源码

  • 其次就是 MySQL,这里边 索引 那肯定是必问的,索引的底层结构以及前缀索引等等, 还有就是 MySQL 中事务的隔离级别,以及并发事务会出现哪些问题,其中 可重复读幻读 也是重点, 也是要了解的,因为在执行一些更新操作 MySQL 底层会自动上锁,如果编写的 SQL 不好,会导致死锁或者 SQL 并发度降低,MySQL 性能下降,最后进阶一点的内容就是 MVCC 和 BufferPool

  • 接下来就是 框架方面 的内容,包括 Spring、MyBatis、SpringMVC、SpringBoot 方面,框架的重要性排在第三位,因为毕竟是需要通过框架编写代码的,因此对于框架的特性以及底层的原理一定要有所了解,比如 Spring 中的事务,可能会失效,那么你就要去了解这个事务为什么会失效以及在哪些场景下会失效?这样在编写代码的时候,就可以提前避免这些问题

  • 接下来是 中间件方面 的内容,重要性排在框架的后边,因为中间件都是要结合框架去搭配使用的,中间件相关的内容主要就是 Redis、RocketMQ、Dubbo、ZooKeeper、Kafka、ES等,中间件的内容是很多的,具体要学习哪些中间件的面试内容还是要看你简历的项目中,到底包含了哪些中间件,那么就去对着学习即可

  • 之后是 JVM 方面 的内容,这一块的内容,不要学的太深,主要学习这几个问题就可以:堆、栈都是什么?存储什么数据?常用的垃圾收集算法?常用的垃圾收集器?GC Roots 包含哪些对象?GC 堆空间设置的一些注意事项?

  • 最后就是 生产环境方面 的内容了,这一块内容,对于应届生来说不需要掌握,但是了解一下可以开阔视野,并且在之后的学习工作中,可以更加留意相关的细节,为以后升职跳槽做准备,这方面主要就是在生产环境中,你的服务如何去部署?部署的机器的配置 4C8G、8C16G 等等?系统每天的访问量是多少?高峰期 QPS 是多少?如果访问量突然增大,该如何应对?这些内容,在工作几年后的面试中将会成为重点,因为最终服务都是要到线上部署的,如果你带领团队,服务部署上去出现问题,你不会解决,那怎么带团队呢?

到此,基本上面试相关的部分就说完了,从上边提到的这 6 个方面来准备,基本上都是没有问题的,要记住,一定要先学基础部分,再学高级部分,因为面试的时候,面试官一般都是循序渐进的,如果基础部分的内容都不会,可能就根本没有机会去和面试官交流高级的部分,因此对于面试来说,基础 是很重要的!

文章来源:https://blog.csdn.net/qq_45260619/article/details/135668525
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。