路漫漫其修远贫,吾将上下而求索
?
class="MsoNormal">Java 语言
?
1)描述Java语言的特点,同C相比编程思维如何
2)Java内置的数据类型及其位数
3)char能否存储一个汉子?Unicode和utf-8的编码是什么?
4)引用同对象的区别?引用和对象通常在哪块内存?
5)判断一个对象是否应当回收的算法如何?哪些是Root对象?
6)以下创建多少对象? new Integer[10];
7)以下打印如何?
Class A{ Int I; Public static A test(A a){ a.i = 20; return a; } Public static void main(String[] args){ A a = new A(); System.out.println(a.i); A b = test(a); System.out.println(a.i+””+b.i); } }
?
8)Object内部有哪些方法?equals和hashcode的默认实现如何?有何用处?哪些场景会使用?
9)== 和 equals方法有何异同?
10)以下打印如何?
Public static void main(String[] args){ String s =”helloworld”; String s1= “hello”; String s2=”world”; System.out.println(s1+s2==s); S1= new String(“helloworld”); S2= new String(“helloworld”); System.out.println(s1==s2); } Public static void main(String[] args){ Integer i1= Integer.values(10); Integer i2= Integer.values(10); System.out.println(i1==i2); I1 = Integer.values(300); I2 = Integer.values(300); System.out.println(i1==i2); }
?
11)JVM的内存布局如何设计?类的元数据存储在哪里?字符串及常量存储在哪里?
12)什么是OOM?有哪些情况会触发?
13)以SunSpot为例,简单描述一个对象的内存布局,有什么方法可以查看内存的详细数据?有什么方法实现c中的sizeof方法
14)使用HashMap时Key和Value需要考虑什么?Key需要覆盖哪些方法?如果不覆盖会如何(性能、正确性?),HashMap内部如何实现的?HashMap的put、get方法复杂度如何?
15)HashMap和HashTable有何区别?各自扩展哪些类?什么场合会使用?还有一个Properties类,内部如何实现
16)ArrayList内部实现机制如何?什么情况会发生内存拷贝?
17)遍历集合时有哪些方法?有何异同?(从读写场景考虑)
18)简单描述ClassLoader的作用,描述初始加载器和定义加载器的区别;从当前类new一个对象使用默认使用哪个加载器?
19)
Class A{ Public void test(){ B b = new B(); // b的初始加载器是什么? } }
?
20)类加载器使用委托策略,JVM规范为何如此设计?JVM内部定义一个类使用其定义加载器和fqcn,如何实现将同一个类使用不同的类加载器加载?(考虑child-load-first技术)
21)常见的运行时异常有哪些?运行时异常和捕获异常有何区别?Java语言为何设计异常?
22)什么情况下发生ClassCastException?(从classloader和类型转换考虑)
23)详细描述classloader加载一个类的全部过程,实现一个classloader,让其能够扫描d:/固定目录下的class类
24)以开源软件为例说明什么情况下要实现自定制的classloader?jdk内置的classloader有哪些?
25)ClassNotFoundException和NoClassDefFoundError有何区别
26)Java注解有哪几种生命周期?考虑Spring的自动装配模式,其如何实现注解模式的自动装配?都有哪些中注解?其在class字节码中保存位置如何?
27)描述Java的反射机制,在什么情况下会使用反射?Java为何设计反射的功能?
28)描述Java内置的动态代理实现原理?举个常见的使用动态代理的场景(RPC client)
29)Java创建线程使用什么方法?start和run有何区别?线程状态有哪些种?有哪些方式实现线程(extends Thread/implements Runnable/implements Callable,适用场景?)
30)Synchronized的原理如何(从编译后的指令和JVM运行原理考虑)
31)Synchronized向对象和方法加锁有何区别?以下运行结果如何?
public synchronized static void main(String[] args){ new Thread(new Runnable(){ public void run(){ System.out.println(“Pang”); } }).run(); // 换成start又是什么? test(); } Public synchronized static void test(){ System.out.println(“Ping”); }
?
32)ReentranLock和synchronized有何异同?适用场景如何?(从性能并发考虑)
33)描述一下Atomic原子类的实现机制?CAS算法原理、底层实现?CAS算法的ABA问题?
34)Volatile关键字的用途如何?什么是线程安全?什么是先行发生原则?从先行发生角度解释volatile的作用
35)描述一下多线程环境下的内存模型(工作内存、主内存),解释volatile的底层实现
36)描述一下阻塞队列的实现原理?适用场景?使用wait/notify实现简单的阻塞队列
37)描述线程池ThreadPool的实现原理?自己实现一个简单的线程池,实现可暂停功能
38)描述并发队列、并发HashMap的实现原理、描述写时复制链表的实现原理
39)HashMap的clone方法如何实现?使用时需要考虑哪些隐藏陷阱?
40)Wait/notify使用时有哪些陷阱?notify和notifyAll区别?
41)Wait、sleep语义?区别?使用场景?
?
42)**Stream和**Reader异同?适用场景?