2021年Java面试题解析:Socket通信与核心概念

需积分: 0 2 下载量 99 浏览量 更新于2024-08-04 收藏 5KB MD 举报
本文档主要涵盖了Java编程中常见的面试题及其解答,适合准备2021年及之后Java面试的求职者参考。以下是五个关键知识点的详细解析: 1. **创建Socket通讯的步骤**: 在Java中,Socket通信的基本流程如下: - **服务器端**:首先创建一个`ServerSocket`,监听特定的端口。然后,调用`accept()`方法进入阻塞状态,等待客户端连接请求。 - **客户端**:创建一个`Socket`对象,指定服务器的地址和端口号,发起连接请求。 - **连接建立**:服务器接收到连接请求后,会创建一个新的`Socket`实例,与客户端建立连接,形成一对一的通信通道。 - **对话**:两个Socket实例在一个单独的线程中进行数据交换。 - **多连接处理**:服务器继续监听新的连接请求,循环进行上述步骤。 2. **Java中的`sleep()`方法与`wait()`方法区别**: `sleep()`方法是让当前线程暂停一段时间,但不释放锁,适用于短暂的暂停。而`wait()`方法则会让当前线程放弃当前的锁,并进入等待状态,直到被其他线程唤醒,此时必须配合`synchronized`关键字使用。 3. **程序计数器(Thread私有)**: Java的程序计数器是每个线程独有的,用于跟踪当前线程执行的字节码指令。它不是GC Roots可达的,且不会因为内存不足而出错。对于非native方法,计数器记录当前指令地址;对于native方法,计数器为空。 4. **线程调度器(ThreadScheduler)与时间分片(TimeSlicing)**: 线程调度器负责根据算法分配CPU时间给可执行线程,Java并不直接控制这一过程。时间分片则是操作系统层面的概念,通过将CPU时间划分为小的时间片,轮换执行不同线程,即使低优先级线程也有执行机会。避免过度依赖线程优先级,因为这可能会影响程序的稳定性和公平性。 5. **迭代器(Iterator)**: Iterator是Java集合框架中的一个核心接口,用于遍历集合。它提供了`hasNext()`和`next()`方法,允许按顺序访问集合中的元素,同时保持对集合的封装。在遍历过程中,迭代器实现了元素的逐一访问,支持高效、灵活的集合遍历。 这些知识点展示了Java编程的基础架构,包括网络通信、并发控制、内存管理以及集合操作,是面试中常被提问的主题。掌握它们能帮助求职者展示其Java技能和理解深度。