Java笔试常见题目与解析:基础、集合与多线程

需积分: 9 0 下载量 201 浏览量 更新于2024-09-15 收藏 69KB DOC 举报
"应聘Java笔试时可能出现的Java基础、多线程、集合框架等相关知识" 在应聘Java软件工程师或程序员的岗位时,了解并掌握Java的基础知识、集合框架的使用以及多线程的原理是非常重要的。以下是一些可能出现的笔试题目及对应的答案,帮助你更好地准备面试。 1. **作用域的区别** Java中的访问修饰符包括`public`, `private`, `protected`以及默认(friendly)。它们决定了类成员(如变量、方法)的可见性范围: - `public`: 可以在任何地方访问 - `protected`: 可以在同一包内、子类以及不同包的子类中访问 - `friendly`: 只能在同一包内访问 - `private`: 只能在定义它的类内部访问 2. **ArrayList和Vector的区别** - **同步性**: Vector是线程安全的,而ArrayList不是。这意味着在多线程环境下,Vector的修改操作会自动加锁,而ArrayList则不会,需要手动处理同步问题。 - **增长策略**: 当容量不足时,Vector默认增长至原来容量的两倍,ArrayList则是原来容量的一半加上额外需要的容量。 3. **HashMap和Hashtable的区别** - **历史背景**: Hashtable是早期的Java API,基于Dictionary类,而HashMap是Java 1.2后引入的Map接口实现。 - **同步性**: Hashtable线程安全,HashMap则不是。在多线程环境下,HashMap需要手动同步。 - **值**: Hashtable不允许null键和值,而HashMap允许。 4. **char型变量存储中文** Java的char类型使用Unicode编码,每个char占据16位,因此可以存储包括中文在内的多种语言字符。 5. **多线程实现方法** - 继承Thread类:创建一个新的类,直接继承Thread,并重写其run()方法。 - 实现Runnable接口:创建一个类实现Runnable接口,实现run()方法,然后将这个类的实例传入Thread类的构造器创建线程。 6. **同步实现方式** - synchronized关键字:用于方法或代码块,提供块级或方法级的互斥访问。 - wait(), notify(), notifyAll(): 这些方法属于Object类,用于线程间的协作,通常在synchronized块中使用,用于线程等待和唤醒。 对于多线程执行顺序的问题,例如给定的代码片段,Java中构造函数总是先于子类调用父类的构造函数,所以在创建ChildClass对象时,首先会执行FatherClass的构造函数,打印出"FatherClassCreate",然后执行子类的构造函数。 这些知识点只是Java面试中的一部分,全面的准备还需要涵盖异常处理、IO流、网络编程、设计模式、JVM内存模型、并发编程等多个方面。在面试前,确保对这些核心概念有深入的理解和实践经验。