Java面试深度解析:线程与JVM

需积分: 3 1 下载量 43 浏览量 更新于2024-10-14 收藏 7KB TXT 举报
"这是一份包含8个文件的Java经典面试题集合,旨在帮助准备面试的人巩固和理解Java核心技术。" 在Java编程语言中,面试题常常涵盖了一些核心概念和技术,这些在实际工作中至关重要。以下是基于提供的部分内容所涵盖的一些知识点: 1. **线程控制方法**: - `wait()`: 这个方法用于当前线程释放它所持有的锁,并进入等待状态,直到其他线程调用`notify()`或`notifyAll()`来唤醒它。 - `sleep()`: 让当前线程暂停执行指定的毫秒数,进入睡眠状态,不会释放持有的锁,但可能会受到`InterruptedException`。 - `notify()`: 唤醒在此对象监视器上等待的一个线程。如果多个线程在等待,会选择一个线程唤醒。 - `notifyAll()`: 唤醒在此对象监视器上等待的所有线程。 2. **容器类的区别**: - `ArrayList`和`Vector`都是实现动态数组的列表,但`Vector`是线程安全的,性能通常低于非同步的`ArrayList`。 - `LinkedList`实现了双向链表,对于频繁的插入和删除操作,它的性能优于`ArrayList`和`Vector`。 3. **JVM内存模型**: - 一个JVM实例有多个类装载器,它们共同负责加载类到内存中。`ClassLoader`是基础类加载器,Java类加载器是默认的类加载器,负责加载Java应用的基础类和接口。 - 一个类在JVM中只有一个实例,即使来自不同的加载器。 4. **字符编码**: - Java中的`char`类型是16位的,可以表示Unicode字符集中的一个字符,但不能直接存储多于两个字节的UTF-16编码字符。 5. **线程的实现方式**: - 两种创建线程的方式:继承`Thread`类并重写`run()`方法,或者实现`Runnable`接口并提供`run()`方法。 6. **JSP相关知识**: - `HttpServletRequest`和`HttpServletResponse`分别代表HTTP请求和响应对象,它们提供了获取和设置请求头、cookie、session等信息的方法。 - `JspWriter`是用于输出到客户端的流,通常在JSP页面中通过`out`对象访问。 - `PageContext`提供了访问JSP页面范围内的所有对象和属性的途径,以及与Servlet API交互的能力。 - `HttpSession`用于存储会话级别的数据,跨多个请求保持用户的状态。 - `ServletContext`是整个Web应用程序的共享上下文,可以用来存储全局信息。 - `ServletConfig`包含了关于Servlet的配置信息,如初始化参数。 7. **线程状态转换**: - Java线程有五种状态:新建(New)、就绪(Runnable)、运行(Running)、阻塞(Blocked)、终止(Terminated)。线程状态的转换是由线程方法(如`start()`、`sleep()`、`wait()`)和操作系统调度决定的。 8. **JSP指令**: - JSP页面指令 (`<%@ page %>`) 用于设置整个页面的属性,例如设置脚本语言、内容类型、是否启用session、缓冲区大小等。 这些知识点涵盖了Java并发、内存管理、类加载、I/O、JSP和Servlet等关键领域,对于理解和应对Java面试至关重要。