最近在准备面试(吐槽下阿里 拥抱变化 拥抱你妹),复习了很多关于JAVA的知识,想写一篇博客来整理一下,如果大家想看面试题,那最好还是不要看下去了,免得浪费时间,我只是把一些JAVA面试常考的知识点,或者JAVA核心的内容罗列一下,起一个大纲,并且附上几篇优秀的文章提供参考。
(一) JAVA内存机制以及垃圾回收。
http://my.oschina.net/xiaohui249/blog/170013 这篇文章对JAVA的内存分配讲的比较详细,另外还单独讲解了String的内存分配,大家也都知道String是JAVA里比较特殊的一个类,内存分配也和普通类有一些区别。
http://www.cnblogs.com/killmyday/archive/2013/06/12/3132518.html 这篇文章讲了一些常用的垃圾回收算法
http://www.cnblogs.com/qinqinmeiren/archive/2011/07/19/2151683.html 这篇文章讲了常量池的应用
http://www.cnblogs.com/whgw/archive/2011/09/29/2194997.html 这篇文章讲了栈内存和堆内存的区别
http://www.cnblogs.com/mengdd/p/3298852.html 这篇文章讲了JAVA中的四种引用类型
(二) JAVA中的多线程和并发
这个要看的实在有点多,不过有人已经差不多整理好了哪些是重要的,大家可以自己去看。http://www.jcodecraeer.com/a/chengxusheji/java/2015/0603/2985.html
(三) JAVA中的反射
反射可以说是JAVA中比较重要也是比较特殊的一块内容了,它相比于传统的RTTI,能让JAVA变得更加灵活
http://m.blog.csdn.net/blog/leelit/45315043
http://blog.sina.com.cn/s/blog_afe2af380102uzxg.html
另外这里插一句,如果大家想做Android开发,有时间可以好好的去研究一下动态部署和插件化开发,这和反射其实有一定的关系
http://v.youku.com/v_show/id_XNTMzMjYzMzM2.html 这是阿里的一个技术沙龙视频,讲的就是他们的手淘ATLAS
(四) JAVA中的泛型
JAVA没有C++的模板,但是提供了泛型,让JAVA变得更加灵活并且减少了类型转换的错误,当然提到泛型就少不了类型擦除
http://www.importnew.com/13907.html 这篇文章讲了类型擦除中需要注意的地方
http://blog.csdn.net/caihaijiang/article/details/6403349 这篇文章讲了Code specialization和Code sharing已经泛型擦除带来的问题
http://blog.csdn.net/lonelyroamer/article/details/7868820 这篇文章讲了泛型使用时的问题还有桥方法
(五) final,finally和finalize的区别。
首先final是一个修饰符,可以用来修饰变量,方法和类。当它用来修饰变量的时候,表示这个变量是不可变的,要注意这里的不可变指的是引用不能指向其他对象,比如final int a = 10;int a = 5;就会报错,而引用指向的对象里的内容则是可以改变的,比如A a = new A();a.value = 10;a.value = 5;这是不会报错的,另外大家知道String为什么被称为不可变的吗?你看String s = "a";s = "b";明明不会报错啊,那是因为String的两个成员变量char[] array和int length都是final的,所以当s = "b"以后,JVM并不是把s的对象的内容改变了,而是重新创建了一个对象。
http://blog.csdn.net/pi9nc/article/details/12374049y
http://blog.csdn.net/carolzhang8406/article/details/6705831 这两篇文章是关于finalize的
http://www.cnblogs.com/lanxuezaipiao/p/3440471.html
http://blog.csdn.net/sureyonder/article/details/5560538 这两篇文章是关于finally的
(六) JAVA中传值和传参
套用thinking in java里的一句话,传递的是拷贝,如果是传值,那传的是值的拷贝,如果是传参,那传的是参数的拷贝。
http://blog.csdn.net/xys_777/article/details/6951434 具体参考这篇文章
(七) JAVA的类加载系统
http://my.oschina.net/u/1269532/blog/166888 这篇文章讲的是JAVA的类加载和执行机制。
http://blog.csdn.net/woshixuye/article/details/8206277
http://blog.csdn.net/zhangxinrun/article/details/6161426 这两篇文章讲的是如何自定义类加载器
上面就是我总结的一个JAVA的核心知识,当然还有其他的比如JAVA基本类型和对象的大小,JAVA容器类的知识等等,这些大家就自行百度或者谷歌吧。