一些面试题记录
语法基础:
1.是否可以在static环境中访问非static变量
2.Java中是否可以覆盖(override)一个private或者是static的方法
3.存在两个类,B 继承 A,C 继承 B,我们能将 B 转换为 C 么?如 C = (C) B
多线程:
1.创建线程有几种方法
2.synchronized
3.volatile
一种实践是用 volatile 修饰 long 和 double 变量,使其能按原子类型来读写。double 和 long 都是64位宽,因此对这两种类型的读是分为两部分的,第一次读取第一个 32 位,然后再读剩下的 32 位,这个过程不是原子的,但 Java 中 volatile 型的 long 或 double 变量的读写是原子的
4.ThreadLocal
5.Java 中 sleep 方法和 wait 方法的区别
sleep() 实际上只是短暂停顿,因为它不会释放锁,而 wait() 意味着条件等待,这就是为什么该方法要释放锁
集合框架:
1.ArrayList和LinkedList有什么区别
2.ArrayList 和 HashMap 的默认大小是多数? 10,16
3.为什么在重写 equals 方法的时候需要重写 hashCode 方法
设计模式:
1.里氏替换原则的理解
任何基类可以出现的地方,子类一定可以出现(子类可以扩展父类的功能,但不能改变父类原有的功能)
单元测试:
1.如何测试静态方法
2.@Before 和 @BeforeClass 有什么区别