如何做到简历中要求的要有扎实的Java基础?
感谢邀请!希望以下对读者们有帮助!
大多数的开发朋友都有这样的疑惑、:做Java开发,就算自己工作了3年、5年甚至10年,有些Java基础知识还是无法张口就来,准确无误?!不知道你们有没有,反正我有。
为什么会有这样的情况呢?还不是因为Java知识纷繁复杂,无穷无尽!
没错,Java知识的确纷繁复杂,但要想学好Java,做到基础牢固,还是有章可循的,下面就来分享一下我的Java学习心得!!
我身边有个阿里的大牛,他强调,如果想学好Java,就一定要玩好JDK!
一、Java运行时在Java知识体系中,有一个重要的组成部分,就是JVM,而Java程序能够得以在JVM上运行的根本就是JRE。
学好JRE,就需要我们不断的摸索JVM运行Java代码的原理,各种内存分区以及在代码之下的秘密。
二、Java基础类库Java庞大的类库系统是我们编程的基础。在大牛看来,类库的源码可以分为四个等级:
等级一:精读源码
这个等级的类库应该能够做到源码了然于胸,倒背如流,包括:java.io、java.lang、java.util这三个包下的API,但也并不是所有的API都要精读,像Exception和Error就可以忽略,还是要看在实际开发中的使用场景是否广泛。
尤其是java.lang下的各个类,比如我们最常用的String!如果有不懂的,关注我的文章,之后给大家更新!
所以,当你迷茫于不知道学什么,或者感觉自己什么都会了的时候,不妨去看看这三个包下的基础类库,相信你一定能够有所收获的。
等级二:深刻理解
深刻理解不同于精读源码的三个基础包,深刻理解的含义是应该熟悉其内部实现逻辑和基本思路,并且有自己的见解。这个等级的类库包括:
java.lang.reflect、java.net、javax.net、java.nio、java.util.concurrent。
深刻理解,这个级别看似比精读源码要求低,但所选类库确实最重要的。这个级别的类,全都是一些进阶到高级所必须了解的。但是,由于这些类的源码往往非常复杂,要了解清楚细节花费的时间是非常多的,因此,花费巨量的时间去研究这么复杂的代码其实没必要。不过在使用这些类库遇到问题时,可以通过阅读源码的方式尝试解决问题。这种学习方式不仅可以加深对类库的理解,还会帮助解决90%的问题。
reflect代表反射,net代表网络IO,nio代表非阻塞io,concurrent代表并发。这四个家伙可以说每一个都能够面试官问上半天的,而且,这四个包的内容,如果要深刻理解的话,其实还牵扯了很多其他的知识。
举个栗子:反射你要了解的话,就需要搞明白JVM的类加载机制;网络IO要搞清楚的话,你就要搞清楚TCP/IP和HTTP、HTTPS。等级三:会用即可
这个级别的类库包括下面这些:
java.lang.annotationjavax.annotation.*java.lang.refjava.mathjava.rmi.*javax.rmi.*java.security.*javax.security.*java.sqljavax.sql.*javax.transaction.*java.textjavax.xml.*org.w3c.dom.*org.xml.sax.*javax.crypto.*javax.imageio.*javax.jws.*java.util.jarjava.util.loggingjava.util.prefsjava.util.regexjava.util.zip会用即可,这个级别要求很明显,就是会用就可以了,这些包大部分都是在特定的情况下会用到,但却不会时刻用到。
仅仅是用的时候稍微研究一下,知道其具体的用法即可,不需要深究。
等级四:无视
所有以上没有提到的包。比如swing,awt这些玩意儿。
三、开发工具这些开发工具主要就是辅助开发,javac应该是最常用的一个,虽然你几乎不用手动执行它。
此外,其实还有一些比较实用的工具,可以帮助你排查问题。而且有的面试官,也会问你这类问题。比如问你平时都用什么工具排查问题。
我之前有分享过很多面试经历,包括阿里、京东、头条、美团、腾讯等各大一线互联网的面试经历!感兴趣的朋友们可以去我的主页!我觉得比较实用的几个工具主要有jmap、jconsole、jstack、jvisualvm,至于这几个工具有什么作用,请参考百度。
还可以自己去JDK 的bin目录下找一找,看有没有什么更好玩的工具。
综上,就是阿里大牛分享的Java学习超级指南,你学会了吗?!
希望我这些分享可以帮助在这个行业发展的朋友和童鞋们,在论坛博客等地方少花些时间找资料,把有限的时间,真正花在学习上,我的很多文章都有分享各种架构资料,相信对于已经工作和遇到技术瓶颈或者写博客码友,在这份资料中一定都有你需要的内容。