算法和数据结构
什么时候该用数组类型容器,什么时候该用链表型容器,如何合理的使用数据类型
什么是散列函数,HashMap的实现原理是什么
什么是递归,使用递归实现目录树遍历
什么是算法复杂度
是否理解空间换时间的思想
写一个针对整数数组的冒泡排序,
写一个针对整数数组的二分查找函数
面向对象
基于接口的继承和基于实现的继承各有什么优缺点
继承(extend implement) 有什么缺点
多态有什么缺点
为什么 Java 可以多继承interface,不可以多继承 class
假如让你写一个小游戏,如五子棋人机对战,如何设计类结构
类结构设计时,如何考虑可扩展性
编程习惯(应当避免)
随意的命名
习惯于代码的 copy & paste
Magic Number 满天飞
代码耦合度太大
被 GC 宠坏(资源不懂回收)
异常处理使用不当
空 catch 语句块
没有使用 finally
笼统的 catch 语句块
使用函数返回值做错误处理
不清楚 Checked Exception 和 Runtime Exception的区别
Checked Exception 表示可恢复的异常,也就是必须检查的异常 Runtime Exception 表示不可恢复的异常
Java 虚拟机 JVM
基本类型和引用类型
基本类型和引用类型在内存存储上有什么区别
这两种类型在性能上有什么区别
这两种类型对于 GC 有什么区别
垃圾回收机制
GC 是如何判断哪些对象已经失效
GC 对性能有哪些影响
如何通过 JVM 参数调优 GC 性能
关于字符串
String 和 StringBuilder的区别,为啥要设计两种类型
关于泛型
GP 是在编译时还是在运行时实现的,为什么要这么实现
GP 的类型擦除机制是咋回事,有啥优缺点
使用泛型容器在性能上有啥影响,为什么
关于多线程
synchronized 关键字起什么作用
synchronized 的作用域如何,是针对某个类还是针对某个对象实例
synchronized 对性能的影响,为什么
volatile 关键字什么用途,什么时候需要这个关键字
|