FunPlus 测试工程师笔试:测试理论与 Linux
- 轮次
- 笔试
- 时间
- 2026-09
- 来源
- 牛客网
《面试题目》
- 单选题:回归测试、冒烟测试、边界值、等价类、判定表法等测试理论,以及网络层的作用
- 单选题:游戏分类,找出分类错误的一项
- 不定项:软链接和硬链接有什么区别?
- 不定项:编译器和解释器有什么区别?
- 不定项:Redis 可能会出现什么问题?
- 填空:系统内存不够程序申请的内存时,会报什么错?
- 填空:数据库查询效率低,要检查什么?
- 问答:Linux 的 free 命令输出里,used、free、buffers、cache 分别代表什么含义?
- 问答:构建工具显示打包成功、apk 下载成功,还要检查什么才能报告安装验证通过?
《参考解析》
free 命令输出的含义
free 的列有 total、used、free、shared、buffers/cache、available。used 是已用内存,free 是当前完全空闲的内存,buffers 是块设备元数据(目录项、inode、超级块)的缓存,cache 是文件页缓存,两者都算「可以随时让出」的内存。现代版本的 used 约等于 total - free - buffers - cache,早期版本口径不同,看数字前先确认 free 版本。最该看的是 available:它是内核估算的「不触发 swap 就能拿到的内存」,比 free 更能反映真实余量。Linux 会尽量把空闲内存拿来做缓存,所以 free 很小并不等于内存不足。
内存申请不到会报什么错
分层看。C 的 malloc 返回 NULL,calloc 同样,需自己判空;C++ 的 new 抛 std::bad_alloc;Go 触发 GC 后仍不足则 panic 并终止;Java 抛 OutOfMemoryError(堆、元空间、栈、直接内存对应不同子类)。如果再往上,Linux 在物理内存和 swap 都耗尽时会触发 OOM Killer,按 oom_score 挑进程发 SIGKILL,进程看到的是被杀而不是报错。虚拟内存分配成功但首次写入触发缺页失败时,进程会收到 SIGSEGV。
软链接和硬链接
硬链接是同一个 inode 上的多个目录项,ln a b 后两者地位平等,ls -l 的链接计数加一;不能跨文件系统(inode 不跨分区)、不能给目录建(会形成环);删掉任意一个名字数据都还在,只有链接计数归零才释放。软链接是独立的一个文件,内容是目标路径,ls -l 显示 ->;可以跨文件系统、可以指向目录,原文件删掉后变成断链。判断用 ls -li 看 inode 是否相同。
Redis 可能出现的问题
缓存侧:穿透(查不存在的 key 压到数据库,布隆过滤器或空值缓存)、击穿(热 key 过期瞬间打穿,互斥重建或逻辑过期)、雪崩(大批 key 同时过期,过期时间加随机抖动)。数据侧:大 key 拖慢单线程、热 key 打满单分片、内存碎片与 maxmemory 淘汰策略不当导致误删。运维侧:主从复制延迟、集群脑裂、持久化 fork 造成毛刺、慢查询、连接数打满、AOF 重写、哨兵切换期间的写失败。回答时按「缓存、数据、运维」分层说会显得有结构。
apk 安装验证要检查什么
打包成功和下载成功只能说明产物生成了、「拿到文件了」,不能说明装得上、跑得起来。至少还要确认:安装本身成功(adb install -r 的返回值,以及 adb shell pm list packages | grep 包名);装出来的版本号与 versionCode/versionName 和构建配置一致(dumpsys package 包名);签名正确、能覆盖安装(先装旧版再升级,检查签名一致与数据是否保留);安装路径与权限正常;启动不崩溃(看 logcat 有无 fatal exception、ANR);关键功能能走通(首启、登录、升级后数据迁移);以及卸载重装、低存储、无网等边界场景。这样「安装验证通过」才有依据。
测试理论常考点
等价类划分是把输入域按有效和无效划成若干类,每类取代表值;边界值取等价类的上点、离点和内点,因为缺陷最容易堆在边界;判定表法适合处理多个条件组合的业务规则,列出条件桩、动作桩再合并化简;冒烟测试是版本提测后先验证主流程是否可用,不通过直接打回;回归测试是改动后确认老功能没被破坏,范围由改动影响面决定。网络层的作用按 OSI 分层记:网络层负责逻辑寻址和路由选路,IP、ICMP 在这一层。