Java开发工程师笔试题精选

需积分: 5 0 下载量 187 浏览量 更新于2024-08-05 收藏 67KB DOC 举报
"Java开发工程师试卷三(~).doc" 这份Java开发工程师的试卷包含了多个方面的Java知识,包括基础语法、类库使用、多线程、JSP生命周期以及对象操作等。以下是根据试卷内容提炼出的相关知识点: 1. **Object类的方法**:在Java中,所有类都隐式地继承了Object类。题目中提到的`hashCode()`、`toString()`和`notify()`都是Object类提供的方法。`hashCode()`返回对象的哈希值,常用于哈希表;`toString()`返回对象的字符串表示;`notify()`用于唤醒在一个对象监视器上等待的线程。`forName()`不是Object类的方法,它通常与`Class`类关联,用于动态加载类。 2. **Java语言特性**:Java不支持`goto`语句,这是正确的。`switch`语句在Java 7之后可以作用于`String`类型。`List`, `Set`, `Map`确实都继承自`Collection`接口。Java的垃圾收集器(GC)自动管理内存,程序员不需要显式释放内存。 3. **线程设计**:Java中创建线程可以通过实现`Runnable`接口或者继承`Thread`类。启动线程应该通过`Thread`对象的`start()`方法,而不是直接调用`run()`。Java对多线程同步提供了语言级别的支持,如`synchronized`关键字和`wait()`, `notify()`等方法。线程和进程是不同的概念,一个进程中可以有多个线程,但一个线程不能包含多个进程。 4. **JSP生命周期**:JSP首先被转换成Servlet源码,然后编译为Servlet类。对于每个JSP实例,`jspInit()`方法只在首次加载时执行一次,`_jspService()`方法在每次请求时执行,而`jspDestroy()`方法在JSP销毁前执行一次。 5. **代码输出**:这段代码将字符串中的所有`-`替换为`*`,但由于替换操作并未赋值回`s`,所以输出仍为原始字符串,即`"Java-Java"`。因此,正确答案是A。 6. **对象比较**:题目中`Integer`对象`s`和`t`的值相等,但它们是两个不同的对象,所以`s==t`返回`false`。`s`和`u`分别属于不同类型的对象,因此`s==u`也为`false`。`s.equals(u)`会比较它们的值,返回`true`。`s.equals(9)`将9视为int类型,不进行对象比较,所以返回`false`。 7. **sleep()和wait()**:`sleep()`是`Thread`类的方法,让当前线程暂停指定时间,不释放对象锁。`wait()`是`Object`类的方法,使得线程进入等待状态并释放对象锁。`sleep()`结束后线程会自动恢复,而`wait()`需要其他线程调用`notify()`或`notifyAll()`来唤醒。`wait()`需要在同步块或同步方法中使用,否则会抛出`IllegalMonitorStateException`。 这些知识点涵盖了Java的基础和进阶内容,是Java开发者必备的技能。理解并掌握这些知识点有助于提升Java编程能力。