Java后端开发具体学习路线(面向大二到大四的CSer们)

前言

在之前看过我那篇分享方向经验的文章后,如果学弟学妹们打算走基于Java的后端岗的话,那么可以来看一下这篇文章。这是我精心整理的一些需要重点了解、掌握的内容,供大家查缺补漏或是提前学习掌握,将来在找工作的时候至少与技术有关的问题不会有什么困难。当然了,我一个人想的就算再多,毕竟不全,而且鄙人能力也较为有限。。。所以如果各位前辈们有什么补充的或需要矫正的,欢迎在评论区留言交流。

整体框架

这里推荐一个B站上的up主:CodeSheep。不是因为他的视频有多多多好,而是因为很用心很全面。

在本次文章的开头,建议大家去看一下视频:

https://www.bilibili.com/video/BV1GQ4y1N7HD
《按这个学,找工作没问题!Java后端开发详细学习路线》

这个二十多分钟的视频很完整的讲述了这一岗位所需要的知识框架。建议大家一定一定要用心学习有关的基础课。否则到了大三大四自己自学的话,会非常痛苦。。。

日常建议

总的来说,Java后端程序员主要负责设计后端服务的API,设计后端服务架构图,设计后端服务的数据库,或是写代码实现后端服务的业务逻辑。主要分业务、算法、架构三方面。其中我们在本科阶段,一定要重点学习的有5门课程:

1、数据结构与算法
2、数据库基础
3、操作系统
4、计算机网络
5、Java技术与应用

建议在面试前把这5本书都重新过一遍。基础知识都基本掌握以后,你会发现面试简单了许多。。。

此外,建议每天坚持写博客。最好一天一篇。在面试的时候你会知道有一个几千甚至几万粉丝的CSDN博客有多香。。。

github必不可少的。所有的大程只要难度过得去的(指3、400行以上的,那种“hello world”就算了)都往上贴。每天没事就去上面打个卡。把日历都点亮也挺有成就感的。多学习怎么使用github,会对自己未来大有帮助。(之后会写一篇文章来详细说一下如何使用github,如果有困惑可参考那篇文章)

在这里说一下stackoverflow。这个网站我只说一句话:用好此网站,工作少一半。基本上所有自己无法解决的bug,都可以在这个网站上找到解决方法。笔者自己也还在继续摸索这个网站的使用,在我对其了解更深入之后,也会继续写文章帮助大家学习。

部分题目

以下是我的几位学长学姐以及我自己在面试此类岗位时遇到的一些经典问题,现罗列在下,各位同袍可以对掌握还不够熟练的知识点查缺补漏。

算法及题目:
小数是怎么存的
N二进制有多少个1
C或者伪代码实现复制算法
字符串“111.111.111” “111.111.112”排序,输入这样格式字符串的集合
设计一个唯一主键,多实例数据库表中ID唯一
设计一个区间类 描述(1,2)1到2左开又开
设计一个方法,实现求区间之间的交集
设计一个高并发高可用的方案
将字符串转换成大写

知识点相关
树的先序中序后序以及应用场景
Mysql存储记录的数据结构
索引数据结构
为什么不用AVL和红黑树存?
持久化和复制
redis
redis的应用场景
mysql隔离级别
脏读幻读不可重复读
事务
volatile
锁相关
AOP的应用场景
缓存伪共享
消息中间件应用场景
JDK1.8 函数式编程
对称加密和非对称加密
Redis用了哪些数据结构
持久化和复制
CMS G1
设计模式 观察者、策略、模板、适配器
spring中用到的设计模式
cookie和session
redis数据结构、持久化
消息中间件的作用
搭建服务器相关
限流算法 漏桶、令牌桶和计数
面向对象的优点有哪些
数据结构
数组、链表
JVM垃圾回收算法
linux系统及命令
分布式服务架构、缓存
hashMap,说到了java中的红黑树
哪个hashMap是线程安全的
线程池
java的Spring、springMVC和mybatis三个框架都聊一下
关系型数据库mysql的三大范式
索引原理以及索引底层实现
事务相关知识(事务的特性、隔离级别以及各自解决的问题)
存储引擎
手写个sql用下having,groupby
redis支持几种数据结构
为什么单线程比较快
分布式相关,zookeeper,rpc原理
jvm
怎么设计一个关系型数据库
怎么用SQL query访问数据
如何依靠index为数据查询加速
DevOps
java基础
多线程
线程池的核心参数有哪些
一些基本容器list,map,set
设计模式
手写个单例
java集合类下的数据结构的底层实现
HashMap的底层实现
Java并发包下的类的底层实现
Lock锁接口实现类的底层实现
线程池的底层实现
cookie和session
mysql索引
索引底层原理 (哈希索引和B+树)
B+树和红黑树时间复杂度
mysql存储引擎
mysql集群原理
操作系统:进程和线程
进程通信方式
计算机网络:HTTP HTTPS
HTTP完整的请求过程
http报文请求行 请求头、请求正文
post和put区别
DNS服务器解析原理
ARP欺骗
HTTP一次请求响应时间过长的怎么解决
编译原理相关
语义语法分析
JVM内存模型
redis的sorted set底层原理
redis持久化
TB级别的日志文件中存储词汇,找出出现频率最高的十个
一致性哈希算法
多模匹配算法
web容器如JBOSS、tomcat
spring优点、缺点
struts2和springMVC原理,区别
memcache、redis和mongoDB
对比memcache、redis
memcached默认过期时间
redis数据结构
全量复制和增量复制
mongoDB相关
mongoDB和redis、memcached区别,和mysql区别
mysql索引原理
哈希和B+树
myisam和innodb
事务基本特性
mongoDB索引
mongoDB有事务吗
mongoDB持久化
mongoDB、redis和memcached的应用场景,各自优势
分布式事务
操作系统内存管理

总结

总的来说,想在一两年内把这个方向的所有内容都吃透,那是做梦。但如果发下狠来吃点苦,都了解了解还是有可能的。编程之路道阻且长,只有且行且学习,才能不断完善自我,成为巨擎。这里就以迪杰斯特拉大师的演讲《The Humble Programmer》中的一句话结尾:
We shall do a much better programming job, provided that we approach the task with a full appreciation of its tremendous difficulty, provided that we stick to modest and elegant programming languages, provided that we respect the intrinsic limitations of the human mind and approach the task as Very Humble Programmers.

你可能感兴趣的:(程序人生,面试,经验分享,java,后端)