java学习
作者:lulu_javaer
链接:https://www.nowcoder.com/discuss/177816?type=post&order=time&pos=&page=2&ncTraceId=&channel=-1&source_id=search_post_nctrack
来源:牛客网
自学过程:
首先对于Java后端开发的岗位而言,自己一开始也是从0开始学习的。最开始也只是知道有前端、后端、移动端、测试、算法等这些岗位,但是并不清楚这些岗位都是做什么工作的,在网上也没有找到对应的学习路线,就去知乎,或者别人的博客看看Java后端都需要学习那些知识。
刚开始学习的时候从Java基础知识入手,先看了一下《Head First Java》,然后《Java编程思想》看了不到一半就放弃了,基本看不懂。然后看了一下黑马的视频,看了一下大致的基础知识和web基础的部分,然后就可以开始学习框架和简单的开发了,刚开始自己可以在网上找一个Demo,跟着做一做,熟悉一下后端开发。(可以去牛客网或者慕课网找一个Demo项目跟着做一下)。在熟悉了基本的开发过程之后,可以进行深入做一些web项目。然后自己有针对性的进行学习,比方Redis,消息队列等。
大致就是下面这几个方面要进行学习:
计算机基础:计网,OS,算法和数据结构必须熟悉;组成原理,编译原理等等看了更好
语言基础:Java的一些语言特性,多线程,JVM
数据库:基础概念,SQL,数据库的设计等
web基础:Servlet,JSP, HTTP协议, Cookie, Session等进行一下了解,可以自己用servlet写个demo
web框架:SpringMVC, Spring, Mybatis, 在项目实践中学习,先会用,然后深入。 SpringCloud, SpringBoot等也可以进行学习
中间件:Redis, 消息队列这些也可以了解一下
开发工具: Maven ,Git等等
系统设计:如何提升系统并发,保证可用性,伸缩性,扩展性,安全性这几个方面的考虑。
自己在学习的大致就是上述的过程,也不是很有计划性,基本都是边学习边修改自己的计划。我在网上发现有一个博客讲解的Java后端的学习路线比较清晰。 博客地址: http://objcoding.com/2018/02/07/javaweb-learning/ 。 按照这个大纲进行学习我觉得会更清晰一点。
面试准备和阅读书籍:
大体的建议还是平时多coding,多看书,多思考,多总结,不要在面试前依赖面经总结,或者背面试问题这种途径,因为需要做到的是真正对某个问题理解了,知道解决方案,而不只是背过了答案。面经总结应该看成一种对自己进行查漏补缺的测验,而不是背诵的题库,功夫积累还是在平时。
面经总结可以 看一下CYC2018的博客,当然还有别人总结的面经,多多益善。
自己准备的过程就是先去看对应的书籍,基本理解之后再去看面经进行查漏补缺,自我检验,然后不断迭代反复的过程。所以我准备的各个方面进行一下总结。
计算机基础:
计网《计算机网络》谢希仁版,视频看了MOOC上的 哈工大视频;
操作系统 《操作系统概念》,MOOC上哈工大的视频, B站的清华大学一个老师讲的操作系统视频, 也很好; 《深入理解计算机系统》也推荐,但我还没有看完。
算法和数据结构,浙大的数据结构教材,然后看了MOOC上陈越姥姥和何钦铭老师的视频, 刷了一点PAT, 然后就是剑指offer和LeetCode。 之后看了《算法》(第四版), 《算法笔记》本来打算看的,但是后来放弃了。
C语言, 刚开始学的时候看了 MOOC上翁凯老师的视频,然后找了本C语言教材看了下
计算机组成:简单看了下MOOC上的视频,过了一遍
编译原理:没学,但感觉有必要学一下,对实践OS的一些实验和其他地方很有帮助
语言基础
基础:《Head First java》, 然后熟悉依稀Java基础的一下API,看一些基础知识的博客,我看的黑马视频,对API熟悉了点。
深入:《effective Java》挑选一些章节阅读,《Java编程思想》(建议有一定的基础再进行阅读);或者 《Java编程核心技术》(第二卷) 和《Java编程思想》选一本读一下就行。
多线程:《Java并发编程的艺术》, 可以结合一些网上相关的博客。 《Java编程思想》里面多线程部分。 想要继续深入可以看一下《Java并发编程实战》,内容更加复杂。
JVM:《深入理解JVM虚拟街》,内存分配, 类加载, 内存模型和多线程部分。这三部分可以重点看。
源码阅读:JUC,集合类,常见类(String等),
设计模式:
菜鸟教程的 设计模式。(后来发现其实是直接翻译的国外的一个网站内容)。更多的还是平时的分析和使用。
数据库:
SQL基础语法:《MySQL必知必会》
数据库基础知识:《数据库系统概念》,只看了前面一点基础知识
MySQL:《高性能MySQL》 重点看了前面几章。
web基础:
看的黑马的视频,主要是了解了HTTP,Cookie,Session,Servlet,Filter,JSP等基础知识,用servlet写了个demo
框架 SSM, 主要是在项目中使用了一下,然后搜索了一些常见的问题,看了看文档。
web深入:
Spring框架:了解一下IOC,AOP的原理,自己尝试简单实现,书籍可以看一下《Spring实战》(我还没看)
SpringMVC,Mybatis, SpringBoot:这些感觉还是用到了看下文档,然后边用边学
Redis:了解一下基本的语法就可以使用,深入了解可以看一下《Redis设计与实现》
消息队列:没怎么用
微服务,SpringCloud,之类的也可以进行了解
系统设计,架构:
《大型网站技术架构:核心原理与案例分析+李智慧》, 《淘宝技术这十年》,《深入分析Javaweb技术内幕》
其他书籍:
《码出高效:Java开发手册》,对开发所涉及到的知识都可以有一个比较系统的了解
《浪潮之巅》、《数学之美》只看了一点点
在最开始查询应该看哪些书籍的时候,主要参考了这么几个文章。 牛客网的一个妹子的面经 https://www.nowcoder.com/discuss/57771
知乎上的一个回答:
https://www.zhihu.com/question/28033201/answer/39114302 大家可以参考一下。
看书的一点小建议:
如果在某个阶段看书看不进去的时候,可能是自己其他方面的积累还不够,也可能是要自己静下心去深入分析,判断是哪种就需要自己去感觉了。例如我看完《Head First Java》直接开始看《Java编程思想》,就感到十分痛苦,大部分都不懂,不知所云。但是在使用Java进行一定程度的编码之后,对Java多线程有一定了解之后,再开始看《Java编程思想》的时候,就比之前好多了。
但是在看《Java并发编程的艺术》的时候,看不懂,就需要啃着硬骨头,静心看下去。
最重要的感觉就是不断地实践,看书,看博客,总结。不断反复。