本文共 1190 字,大约阅读时间需要 3 分钟。
算法与数据结构
★什么时候该用数组型容器、什么时候该用链表型容器? ★什么是散列函数?HashMap 的实现原理是什么? ★什么是递归?如果你以前从来没写过递归函数,尝试着写一个(比如用递归函数进行目录树遍历)。 ★什么是算法复杂度? ★你是否理解空间换时间的思想? ★写一个针对整数数组的冒泡排序函数,看看你要修改几次才能跑通。 ★写一个针对整数数组的二分查找函数,看看你要修改几次才能跑通面向对象
★基于接口的继承和基于实现的继承各有什么优缺点? ★继承(包括 extend 和 implement)有什么【缺点】? ★多态(polymorphism)有什么【缺点】? ★为什么 Java 可以多继承 interface,而不可以多继承 class? ★假如让你写一个小游戏(比如人机对战的五子棋),你会如何设计类结构? ★类结构设计时,如何考虑可扩展性?★关于基本类型和引用类型
很多新手不理解Java的基本类型和引用类型在本质上有什么区别。请看如下的问题:
◇这两种类型在内存存储上有什么区别? ◇这两种类型在性能上有什么区别? ◇这两种类型对于 GC 有什么区别? 关于前两个问题,请看之前的帖子“Java性能优化[1]:基本类型 vs 引用类型”。 ★关于垃圾回收(Garbage Collection)很多新手不理解 GC 的实现机制。请看如下的问题:
◇GC 是如何判断哪些对象已经失效? ◇GC 对性能会有哪些影响? ◇如何通过 JVM 的参数调优 GC 的性能? 关于 GC 的问题,可以参见之前的帖子“Java性能优化[3]:关于垃圾回收(GC)”。 ★关于字符串对于 Java 提供的 String 和 StringBuilder,想必很多人都知道:String 用于常量字符串,StringBuilder 用于可变字符串。那 Java 当初为什么要这样设计捏?为啥不用一个类来统一搞定捏?
★关于范型(Generic Programming)从 JDK 1.5开始,Java 引入了一个重量级的语法:范型。不过捏,很多新手仅仅知道范型的皮毛,而对于很多本质的东东,不甚了解。
◇GP 是在编译时实现的还是在运行时实现的?为什么要这么实现? ◇GP 的类型擦除机制是咋回事?有啥优点/缺点? ◇使用范型容器(相对于传统容器)在性能上有啥影响?为什么? ★关于多线程另外,多线程也是大部分 Java 新手的短板。所以俺最后再来提几个关于多线程的问题。
◇synchronized 关键字是怎么起作用滴? ◇synchronized 的颗粒度(或者说作用域)如何?是针对某个类还是针对某个类对象实例? ◇synchronized 对性能有没有影响?为什么? ◇volatile 关键字又是派啥用滴?啥时候需要用这个关键字捏?转载地址:http://wqwxi.baihongyu.com/