1、HashMap和TreeMap的区别
HashMap:底层用散列表实现,元素存储是无序的。
TreeMap:底层用红黑树实现,元素存储是有序的。
2、wait()和notify()如何用
wait():如果对象调用了wait方法,那么持有该对象的线程会把该对象的控制权交出去,然后处于等待状态。
notify():如果对象调用了notify()方法就会通知某个正在等待该对象的控制权的线程可以继续运行,但必须等待当前线程执行完sychronized中的代码块。
notifyAll():如果对象调用了notifyAll()方法就会通知所有正在等待该对象的控制权的线程可以继续运行,但必须等待当前线程执行完sychronized中的代码块。
关于wait和notify的总结。
3、异常分哪两类,自定义异常属于哪一类
分为Error和Exception。自定义异常属于Exception。
4、IO类所用到的设计模式
主要是装饰模式和适配器模式。
详情点击。
5、如何将文本中读取的数值型字符串转成数值型,如何进行串行化
两种方法:1、直接使用jdk的api,Integer.parseInt("12345");2、从右往左读取字符串的每一个字符c,如果是从右到左第i个,则r=r+(c-\'0\')*10^i,最后r即是结果。
串行化即对象的序列化。之所以要进行序列化,是为了将对象转换为二进制串,可以将对象进行网络传输和文件读写,达到对象持久化的目的。
串行化的方法:1、将对象实现序列化接口Serializable;2、用ObjectInputStream和ObjectOutputStream的输入输出流类对该对象进行读写。
详情点击。
6、transient有什么用
1)一旦变量被transient修饰,变量将不再是对象持久化的一部分,该变量内容在序列化后无法获得访问。
2)transient关键字只能修饰变量,而不能修饰方法和类。注意,本地变量是不能被transient关键字修饰的。变量如果是用户自定义类变量,则该类需要实现Serializable接口。
3)被transient关键字修饰的变量不再能被序列化,一个静态变量不管是否被transient修饰,均不能被序列化。
7、反射机制懂不懂
所谓的反射,是指java运行时,对于任何一个类,都能获得类信息(属性和方法),对于任何一个对象,都可动态地调用该对象的方法。这种动态获取类信息以及动态调用对象方法的机制叫做反射。
详情点击。
然后是数据库题:
8、优化查询,索引建立在联合查询的哪张表上比较好
优化查询:1、sql语句优化;2、建立索引。
第二个问题不知道。。。
9、数据库的隔离级别有哪些,各自加什么锁,解决了什么问题,没解决什么问题。
数据库隔离级别:Read uncommited、Read commited、Repeatable read、Serializable
分别解决的问题依次为:脏读、不可重复读、幻读。
详情点击。
最后是项目考察:
1、WebWork的拦截器中的scope有哪几种,Action是否线程安全?