Java面试刷题错误笔记:(二)

1.java类加载器

引导类加载器(bootstrap class loader):它用来加载 Java 的核心库,是用原生代码来实现的
扩展类加载器(extensions class loader):它用来加载 Java 的扩展库。
系统类加载器(system class loader):它根据 Java 应用的类路径(CLASSPATH)来加载 Java 类
tomcat为每个App创建一个Loader,里面保存着此WebApp的ClassLoader。需要加载WebApp下的类时,就取出ClassLoader来使用

bootstrap classloader -引导(也称为原始)类加载器,它负责加载Java的核心类。 extension classloader -扩展类加载器,它负责加载JRE的扩展目录(JAVA_HOME/jre/lib/ext或者由java.ext.dirs系统属性指定的)中JAR的类包。 system classloader -系统(也称为应用)类加载器,它负责在JVM被启动时,加载来自在命令java中的-classpath或者java.class.path系统属性
或者 CLASSPATH*作系统属性所指定的JAR类包和类路径。

2.在服务器的网络编程中,解决会话跟踪的方法有

解决回话跟踪技术。其实叫实现回话跟踪技术更好一些。
1,使用cookie
2,隐藏表单域
3,URL重写
4,session


3.public private protected和默认的区别

写的非常好的百度知道:http://jingyan.baidu.com/article/bad08e1e8e9a9b09c851219f.html

4.String和StringBuffer、StringBuilder的区别

这篇博文分析的很透彻:http://blog.csdn.net/kingzone_2008/article/details/9220691

对于优化的几点最好指定长度,确实好像在hashMap上如果中键值超过12个最好还是先指定capacity比较好

5.hashCode和equals方法的关系(其实有些东西都知道,但是真正说的时候就忘了。。。)

当比较2个实例变量是否是同一个对象时候,会先用equals比较是否相等,如果相等,再比较hashCode是否一致,如果一致就是同一个对象,如果不一致就是不同对象。
比如a.equals(b).仅当a的内存地址相等时,才返回true.当然如String等类已经对这个方法进行了重写,比较的就不再是内存地址了.

public int hashCode() {
int h = hash;
if (h == 0) {
int off = offset;
char val[] = value;
int len = count;
for (int i = 0; i < len; i++) {
h = 31*h + val[off++];
}
hash = h;
}
return h;
}
就不在与内存地址相关了.这样做是为了保证用equals比较返回为true的两个对象,他们的hashCode是相同的.


6.抽象类和接口的区别

1、抽象类和接口都不能直接实例化,如果要实例化,抽象类变量必须指向实现所有抽象方法的子类对象,接口变量必须指向实现所有接口方法的类对象。

2、抽象类要被子类继承,接口要被类实现。

3、接口只能做方法申明,抽象类中可以做方法申明,也可以做方法实现

4、接口里定义的变量只能是公共的静态的常量,抽象类中的变量是普通变量。

5、抽象类里的抽象方法必须全部被子类所实现,如果子类不能全部实现父类抽象方法,那么该子类只能是抽象类。同样,一个实现接口的时候,如不能全部实现接口方法,那么该类也只能为抽象类。

6、抽象方法只能申明,不能实现。abstract void abc();不能写成abstract void abc(){}。

7、抽象类里可以没有抽象方法

8、如果一个类里有抽象方法,那么这个类只能是抽象类

9、抽象方法要被实现,所以不能是静态的,也不能是私有的。

10、接口可继承接口,并可多继承接口,但类只能单根继承。
  特别是对于公用的实现代码,抽象类有它的优点。抽象类能够保证实现的层次关系,避免代码重复。然而,即使在使用抽 象类的场合,也不要忽视通过接口定义行为模型的原则。从实践的角度来看,如果依赖于抽象类来定义行为,往往导致过于复杂的继承关系,而通过接口定义行为能 够更有效地分离行为与实现,为代码的维护和修改带来方便。

7.Java自动装箱与拆箱及其陷阱
这篇博文说明一些拆箱和装箱的陷进,个人感觉讲的挺精彩的

8.什么是泛型、为什么要使用以及泛型擦除

关于这个问题其实我在编程的时候也有这样的疑问,但是在一次做项目的时候写dao层的时候才体会到泛型的好处。

这个问题:http://blog.csdn.net/lonelyroamer/article/details/7864531,http://blog.csdn.net/lonelyroamer/article/details/7868820

这两篇博文已经写的很清楚透彻了。


9.Java中的集合类及关系图

Java面试刷题错误笔记:(二)_第1张图片

10.HashMap和HashTable区别

可以参考:http://blog.csdn.net/chdjj/article/details/38581035(说的很清楚)


11.Collection和Collections的区别(有时候会用却不会说)

Collection是集合类的上级接口,继承与他的接口主要有Set 和List.
Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。



你可能感兴趣的:(JAVA进阶--基础查缺补漏)