# 面试题

118 篇文章

与「面试题」相关的全部文章。

Tomcat 的部署方式有哪些?

一、WAR 包部署 把 WAR 放到 webapps 目录,Tomcat 自动解压部署。最常用。 二、目录部署 直接把解压后的应用目录放到 webapps,或通过 Context 配置指定路径。 三、Context 片段部署 在 conf/Catalina/localhost/ 下放 context

Tomcat 的 Valve 机制?

一、定义 Valve(阀门)是 Tomcat 的拦截器机制,类似 Servlet Filter,但作用在容器层面(Engine/Host/Context)。 二、常用 Valve AccessLogValve:访问日志。 RemoteAddrValve:IP 黑白名单。 RemoteHostValv

Tomcat 的 Session 管理?

一、Session 实现 Tomcat 用 StandardSession 实现 HttpSession,存在内存中,由 Manager 管理。 二、持久化 StandardManager:Tomcat 关闭时序列化 Session 到 SESSIONS.ser,启动时恢复。 PersistentM

Tomcat Connector 的工作模式?

一、三种运行模式 BIO:阻塞 IO,每个请求一个线程,Tomcat 7 前默认。 NIO:非阻塞 IO,基于 Java NIO,Tomcat 8 默认。 APR:基于 Apache Portable Runtime,原生 C 库,性能最好。 二、NIO 模式 一个 Acceptor 线程接收连接。

Tomcat 的整体架构?

一、核心组件 Server:Tomcat 顶层容器,管理 Service 生命周期。 Service:包含 Connector 和 Engine,一个 Tomcat 可有多个 Service。 Connector:连接器,监听端口,接收请求并转换为 Request,如 HTTP/1.1、AJP。 E

RabbitMQ 的 prefetch 机制?

一、定义 prefetch(QoS)控制 RabbitMQ 一次推送给消费者多少条未确认的消息,实现限流和负载均衡。 二、设置 channel.basicQos(10); // 每个消费者最多 10 条未确认消息 三、作用 防止消息都推给快的消费者,慢的消费者闲置,实现公平分发。 防止消费者内存被

RabbitMQ 和 RocketMQ 的区别?

一、对比 维度 RabbitMQ RocketMQ 开发语言 Erlang Java 吞吐量 万级 十万级 延迟 微秒级 毫秒级 事务消息 不支持 支持 顺序消息 支持(弱) 支持 延迟消息 支持插件 原生支持 管理界面 有 有 二、选择

RabbitMQ 如何保证消息可靠?

一、生产端 开启 Publisher Confirm,确保消息到达 Exchange。 开启 Return 机制,消息不可路由时通知生产者。 本地消息表 + 定时补偿。 二、Broker 端 交换机、队列、消息都持久化(durable=true, deliveryMode=2)。 镜像队列:队列复制

RabbitMQ 的消息确认机制?

一、生产者确认(Publisher Confirm) 消息投递到 Exchange 后返回 confirm。 消息路由到 Queue(持久化消息持久化到磁盘)后返回 ack。 可配合 mandatory 参数,消息不可路由时返回给生产者。 二、消费者确认(Consumer ACK) 自动确认(aut

RabbitMQ 的核心概念?

一、核心组件 Producer:生产者,发送消息到 Exchange。 Exchange:交换机,接收消息并按路由规则路由到 Queue。 Queue:队列,存储消息,消费者从队列取。 Consumer:消费者。 Binding:Exchange 和 Queue 的绑定关系,带 routing ke

ZooKeeper 和 Nacos 的区别?

一、对比 维度 ZooKeeper Nacos 一致性 CP(ZAB) 支持 CP/AP 配置中心 需自行封装 原生支持,实时推送 服务发现 临时节点 临时/持久实例 控制台 无官方 有 Web 控制台 语言 Java Java 二、选择 需要强一致、分布式协调(锁、选主)→ ZooKeeper。

ZooKeeper 的 Watcher 机制?

一、定义 客户端可以在 ZNode 上注册 Watcher,当节点状态变化时,服务端通知客户端,触发回调。 二、特性 一次性:Watcher 触发后失效,需重新注册。 轻量:只发送事件类型和路径,不发送数据。 异步:通知是异步发送的。 三、事件类型 NodeCreated:节点创建。 NodeDel

ZooKeeper 实现分布式锁?

一、原理 利用临时顺序节点 + Watcher。 二、加锁流程 在 /lock 节点下创建临时顺序节点 /lock/seq-000000001。 获取 /lock 下所有子节点,判断自己是否最小。 是最小 → 获取锁成功。 不是最小 → 监听前一个节点的删除事件,阻塞等待。 三、释放锁 主动删除自己

ZooKeeper 如何保证一致性?

一、ZAB 协议 ZooKeeper Atomic Broadcast,类似 Paxos。 二、角色 Leader:处理写请求,发起投票。 Follower:处理读请求,参与投票。 Observer:只读,不参与投票,扩展读能力。 三、写流程 客户端写请求发给任意节点,非 Leader 转发给 Le

ZooKeeper 的数据模型?

一、ZNode ZooKeeper 数据以树形结构存储,每个节点叫 ZNode,路径用 / 分隔,如 /a/b/c。 二、节点类型 持久节点:创建后一直存在,直到删除。 临时节点:创建者会话断开自动删除。 持久顺序节点:持久 + 单调递增序号。 临时顺序节点:临时 + 单调递增序号,常用于分布式锁。

什么是 I/O 多路复用?

一、定义 单个线程通过系统调用同时监听多个文件描述符,哪个就绪就处理哪个,避免阻塞在单个 I/O 上。 二、select select(maxfd, &readfds, &writefds, &exceptfds, &timeout); 位图存储 fd,有最大数量限制(1024)。 每次调用都要把

操作系统的内存管理?

一、虚拟内存 每个进程有独立虚拟地址空间,通过页表映射到物理内存。进程以为自己独占内存。 二、分页 内存分成固定大小的页(通常 4KB),虚拟页映射到物理页帧。 页表:记录虚拟页到物理页的映射。 TLB:页表缓存,加速地址翻译。 缺页中断:访问的页不在内存,从磁盘加载。 三、分段 按逻辑单位分段(代

什么是死锁?如何避免?

一、四个必要条件 互斥:资源同一时间只能被一个进程使用。 持有并等待:进程持有资源同时等待其他资源。 不可剥夺:已获得的资源不能被强制夺走。 循环等待:进程间形成循环等待链。 二、预防 破坏四个条件之一: - 破坏互斥:难(有些资源必须互斥)。 - 破坏持有并等待:一次性申请所有资源。 - 破坏不可

进程调度算法有哪些?

一、先来先服务(FCFS) 按到达顺序执行,非抢占。简单但短作业可能等待很久。 二、短作业优先(SJF) 预估运行时间短的先执行。平均等待时间最短,但长作业可能饥饿。 三、时间片轮转(RR) 每个进程分配一个时间片,用完就切换。适合交互式系统,响应快。 四、优先级调度 高优先级进程先执行。可抢占或非

进程和线程的区别?

一、定义 进程:程序运行的实例,资源分配的基本单位,有独立地址空间。 线程:进程内的执行单元,CPU 调度的基本单位,共享进程资源。 二、对比 维度 进程 线程 资源 独立地址空间 共享进程资源 切换开销 大(切换页表、TLB) 小 通信 IPC(管道、消息队列、共享内存) 共享内存(需同步) 健壮