Q2:一.选择题
下面说法错误的是( )(多选)
A Vector 是线程安全的
B float f=3.4 是正确的
C Overload和Override都是java多态的不同体现形式
D 依赖注入即是”面向接口”的编程
Q3:下列关于集合的说法正确的是( )(多选)
A List的具体实现包括ArrayList和Vector
B Map集合类用于存储元素对(称作 “键“和“值“),其中每个键映射到一个值
C Set的元素是有序的
D Hashtable是线程安全的
Q4:下列关于线程说法正确的是( )(多选)
A 调用 sleep 不会释放对象锁
B 调用 wait 方法导致本线程放弃对象锁
C 当一个线程进入一个对象的一个 synchronized 方法后,其它线程不可进入此对象的其它方法
D notify(): 唤醒全部处于等待状态的线程。
二.简答题
访问修饰符有哪些?它们的区别是什么?
Q5:请问以下代码会输出什么?
public class Test01 {
public static void main(String[] args) {
Integer f1 = 100, f2 = 100, f3 = 150, f4 = 150;
Q6:System.out.println(f1 == f2);
System.out.println(f3 == f4);
}
}
:String 和StringBuilder、StringBuffer 的区别?
:final, finally, finalize 的区别?
:try{}里有一个return语句,那么紧跟在这个try后的finally{}里的code会不会被执行,什么时候被执行?
:编写一个方法,计算一个文章中,第一个重复的单词在当前文档中的位置(第几个词)。
Q8:答案:
一.选择题
1. B,D
2. A,B,D
3. A,B,D
二.简答题
访问修饰符有哪些?它们的区别是什么?
public,private,protected,以及不写(默认)
类的成员不写访问修饰时默认为default。默认对于同一个包中的其他类相当于公开(public),对于不是同一个包中的其他类相当于私有(private)。受保护(protected)对子类相当于公开,对不是同一包中的没有父子关系的类相当于私有
GC 是什么?为什么要有GC?
答:GC是垃圾收集的意思,内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的,Java语言没有提供释放已分配内存的显示操作方法。Java程序员不用担心内存管理,因为垃圾收集器会自动进行管理。要请求垃圾收集,可以调用下面的方法之一:System.gc() 或Runtime.getRuntime().gc() ,但JVM可以屏蔽掉显示的垃圾回收调用。
垃圾回收可以有效的防止内存泄露,有效的使用可以使用的内存。垃圾回收器通常是作为一个单独的低优先级的线程运行,不可预知的情况下对内存堆中已经死亡的或者长时间没有使用的对象进行清除和回收,程序员不能实时的调用垃圾回收器对某个对象或所有对象进行垃圾回收。在Java诞生初期,垃圾回收是Java最大的亮点之一,因为服务器端的编程需要有效的防止内存泄露问题,然而时过境迁,如今Java的垃圾回收机制已经成为被诟病的东西。移动智能终端用户通常觉得iOS的系统比Android系统有更好的用户体验,其中一个深层次的原因就在于Android系统中垃圾回收的不可预知性。
请问以下代码会输出什么?
false
false
Q9:在Java 中,如何跳出当前的多重嵌套循环?
答:在最外层循环前加一个标记如A,然后用break A;可以跳出多重循环。(Java中支持带标签的break和continue语句,作用有点类似于C和C++中的goto语句,但是就像要避免使用goto一样,应该避免使用带标签的break和continue,因为它不会让你的程序变得更优雅,很多时候甚至有相反的作用,所以这种语法其实不知道更好)
Q10:String 和StringBuilder、StringBuffer 的区别?
答:Java 平台提供了两种类型的字符串:String和StringBuffer / StringBuilder,它们可以储存和操作字符串。其中String是只读字符串,也就意味着String引用的字符串内容是不能被改变的。而StringBuffer和StringBuilder类表示的字符串对象可以直接进行修改。StringBuilder是JDK 1.5中引入的,它和StringBuffer的方法完全相同,区别在于它是在单线程环境下使用的,因为它的所有方面都没有被synchronized修饰,因此它的效率也比StringBuffer略高。
Q11:final, finally, finalize 的区别?
答:final:修饰符(关键字)有三种用法:如果一个类被声明为final,意味着它不能再派生出新的子类,即不能被继承,因此它和abstract是反义词。将变量声明为final,可以保证它们在使用中不被改变,被声明为final 的变量必须在声明时给定初值,而在以后的引用中只能读取不可修改。被声明为final 的方法也同样只能使用,不能在子类中被重写。finally:通常放在try…catch的后面构造总是执行代码块,这就意味着程序无论正常执行还是发生异常,这里的代码只要JVM不关闭都能执行,可以将释放外部资源的代码写在finally块中。finalize:Object类中定义的方法,Java中允许使用finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在销毁对象时调用的,通过重写finalize() 方法可以整理系统资源或者执行其他清理工作。
Q12:try{}里有一个return语句,那么紧跟在这个try后的finally{}里的code会不会被执行,什么时候被执行?
答:会被执行,会在return前执行。
:编写一个方法,计算一个字符串中,第一个不重复的字符在当前字符串中的索引。