凌晨起来肝的一篇 Java 学习路线,保证学弟学妹们大三大四的时候顺利找到实习 Offer(3)

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
简介: 凌晨起来肝的一篇 Java 学习路线,保证学弟学妹们大三大四的时候顺利找到实习 Offer

四、数据库


学习一门编程语言,如果不去操作下数据,就感觉这门编程语言空有皮囊却没有灵魂,对吧?所以数据库部分是必学的。


先说书。


《SQL 必知必会》是麻省理工学院、伊利诺伊大学等众多大学的参考教材,这本书直接从 SQL 的 SELECT 开始,讲述了实际工作环境中最常用和最必需的 SQL 知识,实用性极强。该书作者后来还出了一本《MySQL 必知必会》,同样很薄的一本书,也可以看一看。


《高性能 MySQL》,业界公认的一本经典的 MySQL 读物了,有着广泛的影响力。


目前大多数公司的存储都是 MySQL + Redis,MySQL 作为主要的存储方式,Redis 作为缓存,用来加快热点数据的读写速度,从而提高性能。所以学完 MySQL,可以趁热打铁学一下 Redis。


《Redis 深入历险核心原理与应用实战》分为基础和应用篇、原理篇、集群篇、拓展篇、源码篇共 5

大块内容。基础和应用篇讲解对读者来说最有价值的内容,可以直接应用到实际工作中;原理篇、集群篇让开发者透过简单的技术表面看到精致的底层世界;拓展篇帮助读者拓展技术视野和夯实基础,便于进阶学习;源码篇让高阶的读者能够读懂源码,掌握核心技术实力。

Redis 的重要性不言而喻了,是互联网技术架构在存储系统中最为广泛的中间件,也是后端面试中最经常被问到的模块之一。


《MongoDB 权威指南》是一本广受好评的 MongoDB 权威著作,作者是谷歌的一名软件工程师,曾有 5 年是 MongoDB 项目的核心成员。


再来说说推荐的视频。


SQL 推荐 B 站上一个老外的课,英文中字版的,内容制作得非常棒,所以完全不用担心听不懂。10 个小时就能看完。



https://www.bilibili.com/video/BV1UE41147KC

MySQL 的推荐 B 站上的一个女老师的,讲得很精彩,弹幕也很精彩。


https://www.bilibili.com/video/BV12b411K7Zu

Redis 的也推荐一个:


https://www.bilibili.com/video/BV1S54y1R7SB

Redis 是面试中经常考的一块知识点,像下面这些经常被问,参考自老钱的文章:


Redis 有哪些数据结构?

使用过Redis分布式锁么,它是什么回事?

假如Redis里面有1亿个key,其中有10w个key是以某个固定的已知的前缀开头的,如果将它们全部找出来?

使用过Redis做异步队列么,你是怎么用的?

如果有大量的key需要设置同一时间过期,一般需要注意什么?

Redis如何做持久化的?

Pipeline有什么好处,为什么要用pipeline?

Redis的同步机制了解么?

是否使用过Redis集群,集群的原理是什么?

五、计算机组成原理


众所周知,计算机是由 CPU、内存、显示器这些设备组成的硬件,但我们大学毕业后,往往从事的是软件方面的开发工作。那怎样才能在硬件和软件之间自由穿梭呢?答案就是学好计算机组成原理。弄明白了计算机的组成原理,也就对整个软件开发有了一个系统的认知,不论是计算机的硬件原理,还是软件架构,都能很好的驾驭,随之而来的,我们的职业发展机会也就更多了。


计算机组成原理这门课完全可以用一个词来概括,就是“抽象”。在我看来这也是整个计算机设计中所蕴含的的灵魂。《计算机是怎样跑起来的》,很适合作为一本了解计算机的入门书。在外人看来,计算机很复杂,对内行人来说,计算机说起来很简单:


输入、运算、输出是硬件的基础

软件是数据和指令的集合

计算机和人的思考方式不同,对计算机来说,什么都是数字

既然聊到计算机,很有必要给大家推荐 B 站上的一门计算机科学速成课,讲解的内容有:


计算机早期历史

电子计算机

布尔逻辑

二进制

算术逻辑单元

寄存器 & 内存

中央处理器

指令和程序

高级 CPU 设计

早期的编程方式

编程语言发展史

编程原理

算法入门

数据结构

阿兰图灵(我最喜欢的一集)

软件工程

集成电路 & 摩尔定律

操作系统

内存 & 储存介质

文件系统

压缩

命令行界面

屏幕 & 2D 图形显示

个人计算机革命

图形用户界面

3D 图形

计算机网络

互联网

万维网

计算机安全

黑客 & 攻击

加密

机器学习 & 人工智能

计算机视觉

自然语言处理

机器人

计算机心理学

天网 & 计算机的未来


非常值得每个程序员去刷一刷的,全部都是计算机专业需要掌握的知识点啊,至少是应该了解的知识点。关键是视频的画面特别精良,我来截幅图给大家感受下。


关键是英文中字版的,观看起来毫无压力。我自己每天会刷一集。像二进制这一集,以前经常被二进制搞得晕头转向,刷了这集视频后,明显感觉对二进制没那么生疏了,仿佛一个陌生人坐在对面,喝了一杯酒后,就成了老熟人。


https://www.bilibili.com/video/av21376839

我看弹幕有人说,“第一次用 B 站看这么正经的东西。”好他喵的真实呀!我也是。


最后再推荐一本书,《编码-印尼在计算机软硬件背后的语言》,这本书讲述的是计算机背后的工作原理。


你是否想知道计算机如何工作和运行的?

你是否想了解计算机是如何一步一步创造出来的?

你是否想了解计算机知识的来龙去脉?

你是否想了解计算机的历史?

你是否想制造出一台自己的计算机?

你是否想知道硬件与软件的区别?

你是否想知道电报机、电的原理?

你是否想创造自己的编程语言?

你是否想知道你买的电脑中说明书上说的主频、内存、显示器象素、显存的概念和意义?

你是否想知道我们常用的十进制的由来?

你是否一直迷惑于二进制的理解?

你是否想知道那些赫赫有名的IT公司的历史和发展?

你是否想探询那些天才是如何思考和发明的?

你是否想象科学家一样思考?


这一连串问答摘自豆瓣书评

这本书将一一为你揭开谜底。本书的内容涉及数理逻辑、布尔代数、组合数学、集合、物理、化学和电子学等等知识。


六、计算机网络


当今这个时代,没有网络简直无法生存,哪怕是在电梯里的一分钟,我都受不了那种手机没有网络的状态。我们所学的编程知识,如果脱离了网络,将变得毫无意义,因为没有哪个编程语言是要在单机环境下运行的。


计算机网络课怎么学习,给大家推荐四本书,一门公开课。


《网络是怎样连接的》,这本书从在浏览器中输入网址开始,一路追踪到显示出网页内容为止的整个过程,以图配文,讲解了网络的全貌,并重点介绍了网络设备和软件是如何工作的。


《TCP/IP 详解》,这是一本完整而详细的 TCP/IP 协议指南,基本上做通信的是人手一本。对于大多数程序员来说,了解这个 TCP/IP 对面试和编程也有很大的帮助。


《图解 HTTP》,HTTP协议是互联网的基石,学完后可以尝试实现一个属于自己的 HTTP 服务器了。



《计算机网络-自顶向下方法》,算是一本经典的大学教材了,



关于计算机网络这块,可以配合 B 站上的《计算机网络微课堂》一起来学习。


https://www.bilibili.com/video/BV1c4411d7jb

这门课主要介绍了计算机网络的基本概念和基本原理,从下到上依次讲解物理层、数据链路层、网络层、运输层和应用层,以因特网和网络技术为实例,深入讲解和分析了计算机网络的基本原理、方法和技术精髓。这门课程学完后,你将:


轻松学懂计算机网络,掌握相关的理论基础。

对于要参加 408 考研的同学,可以从容应考。

如果将来要从事计算机网络相关的科研,也能打下坚实的基础。

七、计算机操作系统


为什么要学习操作系统呢?


第一,面试要考;


第二,无论学习哪门子编程语言,比如说 Java、C/C++,都需要和操作系统打交道,像 Java 中的多线程技术,其实是由操作系统来负责进程和线程管理的;


第三,学习操作系统,还能学到内存分配方面的知识。


同样推荐两本书,《深入理解计算机系统》和《鸟哥的Linux私房菜 基础学习》。


《深入理解计算机系统》,按理说,这本书的名字应该叫《计算机系统导论》,有 C语言、数据结构的知识就可以学这本书了,想在毕业后去大厂的学弟学妹值得花时间去三刷一下这本书,注意是三刷,第一刷大致了解,第二刷精度,第三刷温习。可以说得上是程序员了解计算机系统的最佳书籍了,可以去 CSAPP 课程官网找 Lab 配合刷起来。


《鸟哥的Linux私房菜 基础学习》,这是一本 Linux 方面的畅销书了,全面详细地介绍了 Linux 操作系统,如果要学习 Linux 的话,首选。


八、数据结构与算法


无论什么时候,程序=数据结构+算法这种说法都是成立的。


常用的数据结构有:


栈:栈是一种非常有用的数据结构,它就像一摞盘子,第一个放在最下面,第二个放在第一个上面,第三个放在第二个上面,最后一个放在最上面。栈遵循后进先出的原则,也就是“Last In First Out”(简称 LIFO)——最后的一个进的,最先出去。

队列:只允许在队尾添加数据,队首移除数据。队列在 Java 中的出现频率非常高,有各种不同的类来满足不同的场景需求。像优先级队列 PriorityQueue、延时队列 DelayQueue 等等。队列遵循的是First In First Out,缩写为FIFO,也就是先进先出,第一个进入队列的第一个先出来。

数组:数组这种数据结构最大的好处,就是可以根据下标(或者叫索引)进行操作,插入的时候可以根据下标直接插入到具体的位置,但与此同时,后面的元素就需要全部向后移动,需要移动的数据越多,就越累。

链表:链表在物理存储空间是不连续的,但每个节点要么知道它的下一个节点是谁,要么知道它的上一个节点是谁,仿佛就像我们之间隔着千山万水,却心有灵犀一点链。像 LinkedList 就是最典型的链表结构,通过引用相互链接。

树:树是一种典型的非线性结构,它是由 n(n>0)个有限节点组成的一个具有层次关系的集合。之所以叫“树”,是因为这种数据结构看起来就像是一个倒挂的树,只不过根在上,叶在下。

哈希表:也叫散列表,是一种可以通过关键码值(key-value)直接访问的数据结构,它最大的特点就是可以快速实现查找、插入和删除。

图:图是一种复杂的非线性结构,由顶点的有穷非空集合和顶点之间边的集合组成,通常表示为:G(V,E),其中,G 表示一个图,V 是图 G 中顶点的集合,E 是图 G 中边的集合。

常用的算法有:


查找

插入

删除

更新

排序

算法研究的目的是为了更有效的处理数据,提高数据运算的效率,数据运算是定义在数据结构上的,各大公司的笔试基本都考这个,《剑指 Offer》上的所有题目如果能背下来,LeetCode 上的题如果能刷个一百到三百道,ACM 竞赛如果能拿到一些奖项。在找工作的时候会非常有优势,基本上大厂小厂的 offer 可能会拿到手软。


刷完 300 道 LeetCode 题后,我强到可以和面试官硬刚!纯正 Java 版


视频的话,推荐 B 站上的一个,韩顺平老师的。


https://www.bilibili.com/video/av54029771

评论区有同学给出了数据结构与算法在面试中经常考的知识点,和视频是关联的:


P16~P23 单链表

P24~P26 双向链表

P27~P29 约瑟夫环

P30~P35 栈·栈实现计算器

P36~P42 前缀,中缀,后缀表达式,逆波兰计算器的实现

P43~P49 递归,迷宫回溯,八皇后

P50~P53 排序算法基础

54~56 冒泡排序

57~59 选择排序

60~62 插入排序

63~65 希尔排序

66~68 快速排序

69~71 归并排序

72~75 基数排序

76 各种排序的比较

127~131 二叉排序树

132~134 BST删除一棵子树的节点

135 二叉平衡树

146~151 图,图的深度优先和广度优先

156~159 动态规划

160~163 暴力匹配和KMP算法

164~ 167 贪心算法

顺带说一下,我上面总结的这套体系是非常完备的,可以说拿到任何地方都是有公信力的,几乎完美到无可挑剔(自信有点上头)。


如果你很幸运的,从大一就看到了这个学习路线,那么恭喜你,实习 Offer 可以说是手到擒来了!如果稍微有那么一点不走运,看到的比较晚,那么一句很鸡贼的话送给你,“种一棵树最好的时间要么是十年前,要么是现在。”



相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
6月前
|
人工智能 Java 大数据
Java程序员真的还有未来吗?如何备战2024春招?并狂拿大厂offer?
Java程序员还有未来吗? 嘿,小伙伴们,你们有没有想过Java程序员还有没有未来? 哈哈,别担心,我这就来给你们答疑解惑! 首先,让我们来看看Java的发展历程。自从Java诞生以来,它就一直是编程界的一颗璀璨明星。从Web应用到企业级应用,再到移动应用,Java无处不在。那么,现在呢?现在,随着人工智能、大数据和云计算的兴起,Java依然发挥着重要的作用。这些领域都需要大量的Java程序员来支持它们的发展。 那么,有人会说:“哎呀,现在出现了那么多新的编程语言和框架,Java程序员会不会被淘汰啊?”哈哈,别担心,Java程序员们!这些新语言和框架的出现并不会让Java消失。相反,它们
138 0
|
6月前
|
设计模式 消息中间件 算法
【实习总结】Java学习最佳实践!
【实习总结】Java学习最佳实践!
90 3
|
5月前
|
前端开发 Java 关系型数据库
Java后台学习路线
Java后台学习路线
57 5
|
4月前
|
Java
图解java工程师学习路线
图解java工程师学习路线
242 0
|
6月前
|
Dubbo Java 应用服务中间件
Java外包是如何进入阿里的熬夜整理出Java后端学习路线
Java外包是如何进入阿里的熬夜整理出Java后端学习路线
|
6月前
|
存储 安全 Java
剑指offer全集系列Java版本(2)
剑指offer全集系列Java版本(2)
36 0
|
6月前
|
存储 Java
剑指offer全集系列Java版本(1)
剑指offer全集系列Java版本(1)
42 0
|
6月前
|
移动开发 搜索推荐 Java
Java如何支持函数式编程?,作为移动开发程序员应该怎样去规划自己的学习路线
Java如何支持函数式编程?,作为移动开发程序员应该怎样去规划自己的学习路线
|
6月前
|
算法 Java C++
刷题两个月,从入门到字节跳动offer丨GitHub标星16k+,美团Java面试题
刷题两个月,从入门到字节跳动offer丨GitHub标星16k+,美团Java面试题
|
6月前
|
JavaScript Java 关系型数据库
基于 java + Springboot + vue +mysql 大学生实习管理系统(含源码)
本文档介绍了基于Springboot的实习管理系统的设计与实现。系统采用B/S架构,旨在解决实习管理中的人工管理问题,提高效率。系统特点包括对用户输入的验证和数据安全性保障。功能涵盖首页、个人中心、班级管理、学生管理、教师管理、实习单位管理、实习作业管理、教师评分管理、单位成绩管理和系统管理等。用户分为管理员、教师和学生,各自有不同的操作权限。