🌈🌈🌈🌈🌈🌈🌈🌈
欢迎关注公众号(通过文章导读关注:【11来了】),及时收到AI 前沿项目工具及新技术
的推送
发送资料
可领取深入理解 Redis 系列文章结合电商场景讲解 Redis 使用场景
、中间件系列笔记
和编程高频电子书
!文章导读地址:点击查看文章导读!
感谢你的关注!🍁🍁🍁🍁🍁🍁🍁🍁
这篇文章先不去分享 “干货知识” 了,所谓的 “干货” 其实也就对少数人才能派的上用场,而大多数可能处于大一、大二阶段的新生,他们还不清楚如何去学习 Java,甚至连 Java 的语法都不知道,因为他们还没有想过以后要从事什么样的工作,这也很正常,毕竟当你处于大一、大二的时候,才刚刚入学一年,大学生活还没有享受太长时间,觉得现在距离毕业还早着呢,先不着急。
但是现实其实是很残酷的,对于我们计算机类来说,一般找工作的黄金时间就在大三下学期,下学期 3 月份开学后,就需要开始准备面试,这个面试是针对于 暑期实习
的,因为在本科期间,大部分学校都会让你出去暑期实习的,这个暑期实习是很有用的,因为平常如果都不参加竞赛的话,每个同学之间的差距其实都是很小的,但是如果你多一个暑期实习的经历,直接就可以和其他人拉开一段差距
既然知道了暑期实习的重要性,那么你既然需要暑期实习,在大三下学期的 3 月份就要开始面试,在这个过程中就是不断地去看面试题,总结自己的项目,然后就是一直投简历,整个面试的过程一般在 1-3 个月左右,既然要在 3 月份就开始面试了,那么咱们往前再推算一下,大概需要提前一年开始学习找工作的东西,那么也就是大二下学期的 3 月份就要思考自己以后要找哪些方面的工作了,比如要找 C++,那么就去学 C++ 的内容,要找 Java,那就去学 Java 的内容,这里我也将时间表给列出来
其实对于学习就业相关的内容来说,一年时间真的不多,因为你在学校还是要上课还有其他事情,不可能每天全身心投入学习,因此这一年时间一定要 高效的去利用
,如何高效学习呢?
在学习之前,一定要去多了解 学习的路线
,而不是一开始直接挑一个视频开始学习,了解学习路线之后,我们要了解每一个步骤要去学习什么,我之前也是自己学习,走了许多的弯路,盲目的学习了很多的知识,但是其实都用不上,最后忘得一干二净!
那么接下来步入正题!
Java 小白该如何开始学习呢?
接下来我手把手的教你,直接跟着做就好了,跟着一个一个内容去学习
首先,直接去 B 站搜索 java基础
,第一个就是尚硅谷的视频,总共 200 节课程,总时长 123 个小时
直接点进去学习,在学习的同时一定要去跟着 手敲一边代码
并且 记笔记
,记笔记的话在 CSDN 上记就可以,记得一定一定要记笔记,因为学完之后,是一定会忘的,通过记笔记可以将自己一天学习到的内容给汇总起来,并且将所有的笔记根据分类汇总起来,下边是我对笔记进行专栏的分类,可以看到分类之后就很清晰了
为什么一定要记笔记呢?
Java 基础这块的内容,在面试中其实是很重要的,但是由于刚开始学习 Java,你可能对 Java 的认知还不够深入,那你先把笔记记上,之后随着自己对 Java 的认知更加深入,不断来完善自己的笔记,形成自己的知识库,让自己学习到的知识成为一个闭环!
Java 的主要领域就是 Web 开发,那么之前的 Java 基础知识开胃菜,要把整个学习的重心放到 Web 开发的学习中,对于 Web 开发的学习来说,还是直接在 B 站搜索 javaweb
,第一个视频就是黑马程序员的 web 开发教程
总时长 42 个小时,通过这 42 个小时的课程你可以学到在 Java 中如何操作数据库并且完成增删改查的操作,那么至此,如果你将学习到的内容都掌握了,那你进入公司做一些简单的工作是没有问题了,但是,如果仅仅是这样的水平,你还没办法通过面试找到一个合适的工作,因为还有许许多多的 Javaer 在和你同时竞争!
接下来开始进入,进阶篇,这里才是 重头戏
之前已经将需要掌握的基础知识都学习完毕了,在进阶篇中,我们的目的是面试找一个工作,那么就需要去了解面试中到底会考察什么内容?
接下来,我把面试中考察的内容列举出来,如果学习到一个,就可以打一个钩,全部掌握之后,面试基本上是没有问题的,如果有哪些内容不会,就要去搜索对应的资料进行学习了(当然,也可以找我提供帮助):
Java 基础面试题
==
和 equals
区别?+
运算时会发生什么?MySQL 面试题
Spring 面试题
SpringBoot 面试题
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 个方面来准备,基本上都是没有问题的,要记住,一定要先学基础部分,再学高级部分,因为面试的时候,面试官一般都是循序渐进的,如果基础部分的内容都不会,可能就根本没有机会去和面试官交流高级的部分,因此对于面试来说,基础
是很重要的!