54 归档分页
370 留言互动
4 核心专题

最近更新

Java 2023-03-01

操作系统(二)

进程切换需保存完整上下文并刷新TLB,涉及地址空间切换,开销大于仅切换硬件上下文和内核栈的线程切换。进程间通信方式包括匿名管道、命名管道、信号、消息队列、共享内存、信号量和Socket,其中管道实现半双工、命名管道支持无亲缘进程、信号用于异步通知、消息队列在内核保存并支持随机读取、共享内存提供高速数据共享并需配合信号量同步。信号量是一种计数型同步机制,通过P(减)V(加)操作控制资源访问,防止并发进程竞争公共资源。

面经 阅读全文
Java 2023-03-01

操作系统(三)

悲观锁在每次访问共享数据前都加锁,假设最坏情况会被修改;乐观锁不加锁,更新时通过版本号或CAS检查冲突。CAS(Compare‑And‑Swap)提供原子比较替换,常用于高并发计数。IO 多路复用让单线程监控多个描述符,select、poll 均为 O(n) 轮询,select 限制 1024 个 fd、poll 无上限但仍拷贝数组;epoll 采用红黑树和就绪队列,支持水平(LT)和边缘(ET)触发,查询为 O(1),对大规模连接效率最高。域名解析依次查浏览器缓存、系统缓存、本地域名服务器、根服务器、gTLD 服务器、权威 Name Server,最终返回 IP 并缓存。Linux 配置 IP 可用 ifconfig、setup 或编辑网卡配置文件,使用 dig 解析域名。IP 地址由网络号和主机号组成,子网掩码划分网络与主机,网关指向外部路由。

面经 阅读全文
Java 2023-03-01

操作系统(四)

Linux 内存管理包括硬件层次(寄存器、CPU 缓存、主存、外存)和软件机制。通过虚拟内存把连续的虚拟地址映射到离散的物理页,使用多级页表、TLB 与大页降低转换开销。内核将页划分为 ZONE_DMA、ZONE_NORMAL、ZONE_HIGHMEM 等区域,并在 NUMA 系统中按节点独立管理。Page cache 缓解磁盘 I/O,匿名内存、回收、compact 与 OOM killer 负责内存碎片与不足的处理。段页机制实现地址空间隔离,分页提供细粒度映射;mmap 直接把文件映射到进程虚拟地址,省去 page cache 的二次拷贝。整体目标是提高访问效率、实现进程隔离并在内存紧张时保证系统稳定。

面经 阅读全文
Java 2023-03-01

操作系统(五)

文章介绍了Linux的I/O模型,包括阻塞、同步非阻塞、IO多路复用、信号驱动和异步IO,并比较其优缺点;阐述了软链接与硬链接的概念、区别及使用场景;说明缺页中断的触发条件、处理流程以及与普通中断的差异;区分软中断与硬中断的产生方式、可屏蔽性和响应机制;最后解释了Copy‑On‑Write技术在fork等场景中的实现原理、优势和限制。

面经 阅读全文
Java 2023-03-01

哈希

hashCode() 与 equals() 决定了键在 HashMap 中的定位与比较,若实现不当会导致冲突或误判相等,直接影响集合的准确性。HashMap 以键值对存储,使用键的 hashCode 计算数组下标并在冲突时通过链表或 JDK8 起的红黑树保存,支持 put/get 的快速访问;容量与负载因子决定扩容时机,扩容后桶数保持 2 的幂次。HashMap 不是同步的,key、value 可为 null,映射无序。构造一致性哈希时在 2³² 环上放置节点,按键的 hash 顺时针定位最近节点,提升扩缩容时的路由稳定性。作为键的对象必须保证 hashCode 在生命周期内不变。HashSet 仅保存唯一元素,内部基于 HashMap 实现,存取无序。

面经 阅读全文
Java 2023-03-01

本文围绕树结构的常见面试考点展开,首先说明 TreeSet 与 TreeMap 在排序时分别要求元素或键实现 Comparable 接口,或在 Collections.sort 中提供 Comparator 实现自定义比较;随后给出实现 Comparable 的 Student 示例以及 TreeSet 的使用演示。接着介绍二叉树的层序遍历、深度求解(递归与非递归两种实现)以及计算任意两节点最长路径的思路,并提供相应的 Java 代码片段。最后简要比较 B+ 树与 B‑树:前者内部节点不存数据、叶层链表化、查询复杂度固定为 log n,适合外部存储和区间查询;后者键值同存、查询复杂度随键位置变化。

面经 阅读全文