还是说 Java(因为我接触过的同事大多都是 Java),千万不要以为学了几个知名的老掉牙的框架就以为学会了 Java,完全不是这样。
Java 可能是内置库最复杂的语言之一了,要学会 Java 首先要攻克它自己的库(没包括 JavaEE 的库)。
这里必须讲一些细节:
例如说 Java 的集合库、IO 库、NIO 库、线程库、并发库、网络库等等,它们分别都由至少几十甚至上百个类库组合起来的,它们构成了一个系列的可复杂和低级、可简单和高级的内置库体系。让一个目的可以有很多种方式实现,但是它们之间却都有存在的价值。
这里边最简单最容易理解的例子就是 Thread 和 Runnable 这两个东西。
如果你学明白了线程最基本的知识,会发现 Runnable 比 Thread 要灵活得多,但是 Thread 又比 Runnable 好用一些。
如果你看看源码,你会发现 Thread 原来是对 Runnable 的一个实现。所以这时候,你可以将 Thread 视作高级类库,是帮你封装好的,便于使用,有好多方法可以用,但是却损失一定的灵活性。
而 Runnable 则是低级的、更加原始的接口,使用它你可以封装出自己的 Thread 类库,然后丢掉自带的 java.lang.Thread 类库。
这种例子在 Java 上比比皆是,例如 IO 库(IO 库是真的复杂,各种装饰类)。例如你学最基本的 OutputStream 和 InputStream 库的时候,你会觉得***我想输出一段话到一个文件(或者一个网络端)怎么都这么复杂。但是你继续深入会发现一个叫 PrintStream 的东西,用它输出一句话仅仅调用一个方法,参数是一个字符串,你发现这才是你应该寻找的东西,你会疑惑那么 OutputStream 是干嘛的?不是故意刁难人吗,那么难用?
这就是高级和低级 API 的差异,你可以用低级 API 实现自己的高级类库,但是高级类库一定是不灵活的。例如想用 PrintStream 操作字节基本是不可能的。
IO 库有超级多的这种“装饰类”,如果你不深入,或许你还在继续用最基本的 OutputStream 干着复杂的活,而不用更高级的适合处理它的类库。例如自带的一堆缓冲 IO 库。
类似的实在太多了,每一个大方面至少都有几十个小方面可以了解。
————
而很多人都是了解了其中的一个或者两个三个(我真的不想说多),就以为自己了解这个方面了。其实还有很多很有价值的东西可以深入,如果你深入一定可以吊打面试官。
Java 可能是内置库最复杂的语言之一了,要学会 Java 首先要攻克它自己的库(没包括 JavaEE 的库)。
这里必须讲一些细节:
例如说 Java 的集合库、IO 库、NIO 库、线程库、并发库、网络库等等,它们分别都由至少几十甚至上百个类库组合起来的,它们构成了一个系列的可复杂和低级、可简单和高级的内置库体系。让一个目的可以有很多种方式实现,但是它们之间却都有存在的价值。
这里边最简单最容易理解的例子就是 Thread 和 Runnable 这两个东西。
如果你学明白了线程最基本的知识,会发现 Runnable 比 Thread 要灵活得多,但是 Thread 又比 Runnable 好用一些。
如果你看看源码,你会发现 Thread 原来是对 Runnable 的一个实现。所以这时候,你可以将 Thread 视作高级类库,是帮你封装好的,便于使用,有好多方法可以用,但是却损失一定的灵活性。
而 Runnable 则是低级的、更加原始的接口,使用它你可以封装出自己的 Thread 类库,然后丢掉自带的 java.lang.Thread 类库。
这种例子在 Java 上比比皆是,例如 IO 库(IO 库是真的复杂,各种装饰类)。例如你学最基本的 OutputStream 和 InputStream 库的时候,你会觉得***我想输出一段话到一个文件(或者一个网络端)怎么都这么复杂。但是你继续深入会发现一个叫 PrintStream 的东西,用它输出一句话仅仅调用一个方法,参数是一个字符串,你发现这才是你应该寻找的东西,你会疑惑那么 OutputStream 是干嘛的?不是故意刁难人吗,那么难用?
这就是高级和低级 API 的差异,你可以用低级 API 实现自己的高级类库,但是高级类库一定是不灵活的。例如想用 PrintStream 操作字节基本是不可能的。
IO 库有超级多的这种“装饰类”,如果你不深入,或许你还在继续用最基本的 OutputStream 干着复杂的活,而不用更高级的适合处理它的类库。例如自带的一堆缓冲 IO 库。
类似的实在太多了,每一个大方面至少都有几十个小方面可以了解。
————
而很多人都是了解了其中的一个或者两个三个(我真的不想说多),就以为自己了解这个方面了。其实还有很多很有价值的东西可以深入,如果你深入一定可以吊打面试官。



