Linux 面试题:malloc 和 free 背后的 brk、mmap 与内存分配器
pren 发布于 2026-09-22
在 Linux 系统编程的面试中,malloc 和 free 几乎是必考知识点。很多候选人能说出“malloc 分配堆内存,free 释放内存”,但当面试官追问“malloc 底层是怎么向操作系统要内存的?”、“为什么 free 之后内存没有立刻还给系统?”、“brk 和 mma...
阅读(7)评论(0)赞 (0)
pren 发布于 2026-09-22
在 Linux 系统编程的面试中,malloc 和 free 几乎是必考知识点。很多候选人能说出“malloc 分配堆内存,free 释放内存”,但当面试官追问“malloc 底层是怎么向操作系统要内存的?”、“为什么 free 之后内存没有立刻还给系统?”、“brk 和 mma...
阅读(7)评论(0)赞 (0)
pren 发布于 2026-09-22
在 Linux 运维与后端开发面试中,OOM Killer 是一个高频考点。很多候选人对它的理解停留在“内存不够就杀进程”,但真正被追问触发条件、内核评分机制、如何保护关键进程时,往往答不完整。本文从面试题的角度,系统梳理 OOM Killer 的工作机制与实战防护手段。 一、O...
阅读(5)评论(0)赞 (0)
pren 发布于 2026-09-22
Redis 作为高性能的内存数据库,除了常见的缓存用途外,还提供了许多高级特性。其中,key 过期事件监听(Keyspace Notifications)常被用来实现延迟队列。这也是面试中经常被问到的一个话题:如何用 Redis 实现延迟队列?本文将深入讲解其原理、配置步骤、代码...
阅读(6)评论(0)赞 (0)
pren 发布于 2026-09-22
Redis 作为高性能的内存数据库,在缓存、会话存储、消息队列等场景中被广泛使用。然而,单机 Redis 存在明显的单点故障风险,一旦宕机,整个依赖它的业务链路都会受到影响。因此,在生产环境中,Redis 的高可用架构设计是每个后端工程师必须掌握的核心技能,也是面试中的高频考点。...
阅读(4)评论(0)赞 (0)
pren 发布于 2026-09-22
在 Redis 的底层数据结构中,ziplist(压缩列表)和 listpack(紧凑列表)是两个经常被拿来比较的角色。如果你在准备 Redis 面试,或者阅读 Redis 源码,一定会遇到这两个名字。它们都为了节省内存而生,都用于存储小规模数据,但设计哲学和实现细节有本质区别。...
阅读(4)评论(0)赞 (0)
pren 发布于 2026-09-22
一、什么是 Trait 在 PHP 5.4 中,官方引入了一个全新的代码复用机制——Trait。官方手册对它的定义是: Trait 是为类似 PHP 的单继承语言而准备的一种代码复用机制。Trait 为了减少单继承语言的限制,使开发人员能够自由地在不同层次结构内独立的类中复用 m...
阅读(7)评论(0)赞 (0)
pren 发布于 2026-09-22
在 Linux 面试中,IPC(进程间通信)是一个高频考点。管道、消息队列、信号量、套接字、共享内存……这些名词你大概都能说上来,但当面试官追问“为什么共享内存是最快的 IPC”以及“shmget 和 mmap 到底怎么选”时,很多人就开始含糊了。这篇文章就把这两个问题彻底讲清楚...
阅读(6)评论(0)赞 (0)
pren 发布于 2026-09-22
在 Redis 的众多数据结构中,List(列表)是非常常用的一种。早期版本的 Redis 使用 ziplist 和 linkedlist 两种编码方式来实现 List,但在 Redis 3.2 之后,引入了一种新的底层结构——quicklist,它结合了 ziplist 和 l...
阅读(3)评论(0)赞 (0)
pren 发布于 2026-09-22
在 PHP 面试中,arraymap、arraywalk 和 arrayfilter 是三个经常被拿来对比的数组函数。它们都可以对数组中的每个元素执行某种操作,但各自的设计目的、返回值、回调参数和使用场景有显著差异。很多候选人在实际开发中能“用对”,却未必能“说清”。本文将从底层...
阅读(6)评论(0)赞 (0)
pren 发布于 2026-09-22
在 Linux 系统编程的面试中,信号(Signal)、信号量(Semaphore)以及信号处理函数(Signal Handler)是高频考点,也是容易暴露候选人基本功是否扎实的领域。很多候选人对基本概念对答如流,但在追问细节时却频频踩坑。本文梳理了这三类知识点中常见的面试陷阱,...
阅读(5)评论(0)赞 (0)