什么场景应该用 Docker 的 macvlan 网络而不是 bridge,它有什么硬性限制?
围绕“什么场景应该用 Docker 的 macvlan 网络而不是 bridge,它有什么硬性限制”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明容器直接获得二层身份的场景(遗留系统直连)与父接口混杂模式/宿主机通信限制。
程序员面试题库第 32 页,收录第 1551–1600 题,共 5000 道完整解析,覆盖前端、JavaScript、React、Vue、Node.js、AI Agent、网络、数据库与系统设计。
按稳定语义路径排序
围绕“什么场景应该用 Docker 的 macvlan 网络而不是 bridge,它有什么硬性限制”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明容器直接获得二层身份的场景(遗留系统直连)与父接口混杂模式/宿主机通信限制。
围绕“Docker 中 --memory 与 --memory-swap 组合使用时各取值代表什么语义”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要解释未设置、相等、设为 -1 等组合下 swap 可用量的计算规则。
围绕“Docker 容器基于命名空间的隔离与虚拟机隔离在安全边界上有什么本质区别”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须从共享内核角度对比隔离强度与逃逸面。
本题解释 Docker 容器使用哪些 Linux namespace 及各自隔离资源,涵盖 PID、NET、MNT、UTS、IPC、USER,并指出隔离的局限与适用场景。
围绕“Docker 的 bridge、host、none、container 四种网络模式分别适用什么场景”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须逐一说明四种模式的行为与典型场景。
围绕“如何控制 Docker 容器被 OOM killer 选中的优先级,--oom-kill-disable 有什么使用”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 oom-score-adj 调整与禁用 OOM 的前提(必须设置内存限制)及风险。
围绕“Docker overlay 网络如何实现跨主机容器通信,依赖什么协议与端口”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 VXLAN 封装与 Swarm 控制面的依赖及所需端口。
本题解释Docker容器内主进程PID为1的成因,即PID命名空间隔离。重点分析PID1在信号处理和僵尸进程回收上的特殊性,对比容器默认缺少init系统带来的问题,并提供判断和应对方法。
围绕“Docker 的 --pids-limit 如何防御 fork 炸弹,默认值是多少”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明限制容器内 PID 总数的机制与内核默认行为。
围绕“Docker 的 -p 发布端口与 EXPOSE/--expose 在作用上有什么实际区别”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 EXPOSE 仅是元数据而 -p 建立宿主机端口映射与 iptables 规则。
围绕“为什么建议用只读方式挂载配置文件或宿主目录进容器,如何设置”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 :ro 与 --read-only 根文件系统的区别及安全收益。
围绕“Docker 的 --restart 各策略(no/always/on-failure/unless-stopped”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须逐一说明四种策略触发条件与 on-failure 重试计数语义。
本文解释 Docker 共享宿主机 PID 和 IPC 命名空间的典型场景:调试与 System V IPC 通信,以及隔离性损失的具体表现。给出判断准则:仅在单机调试或信任容器的场合使用,生产环境慎用,因为容器内可操纵宿主进程和 IPC 对象。
围绕“为什么用 shell 形式(exec sh -c)作为容器入口会导致主进程收不到 SIGTERM”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 shell 成为 PID 1 后信号不转发给子进程及 exec 形式/显式 exec 的解法。
围绕“直接用 docker kill 或超时被 SIGKILL 对容器内应用有什么数据风险,如何设计规避”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明进程无机会 flush/关闭事务的风险与优雅停机设计要点。
围绕“在容器入口脚本中如何保证把收到的 SIGTERM 正确转发给实际业务进程”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 exec 替换进程或 trap+wait 的两种正确写法及常见错误。
围绕“docker stop 向容器发送什么信号,默认等待多久后才 SIGKILL”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明先 SIGTERM、超时后 SIGKILL 及 --time/-t 调整。
围绕“如何实时查看 Docker 容器的 CPU、内存、网络与块设备使用量,数据来自哪里”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 docker stats 输出的各列含义及数据源自 cgroup 统计。
围绕“为什么容器化应用应该把日志写到 stdout/stderr 而不是写容器内文件”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明日志驱动以标准输出为采集入口及写文件丢失轮转与采集能力的问题。
围绕“Docker 的 tmpfs 挂载适合存放什么数据,与 volume 的关键区别是什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 tmpfs 存内存不落盘、随容器停止消失的特性及敏感数据场景。
围绕“Docker 容器的 ulimit(如 nofile)如何设置,默认值从哪里来”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 --ulimit、daemon 默认 ulimit 与宿主机继承关系。
围绕“Docker 的 user namespace remapping 如何解决容器内 root 的安全风险”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明容器内 root 映射到宿主机非特权用户的机制及启用方式。
围绕“为什么容器删除后 volume 中的数据仍然存在,什么操作会真正删除 volume”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 volume 独立于容器生命周期及 docker rm -v / volume prune 的删除条件。
围绕“如何让 Docker volume 存储到 NFS 等远端共享存储,实现跨主机数据访问”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明创建带 driver 选项的 volume 的用法与适用边界。
围绕“为什么挂载宿主机目录进 Docker 容器后经常出现权限拒绝,如何正确处理 UID 映射”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明容器进程 UID 与宿主机文件属主的对应关系及 chown/指定 --user 等解法。
围绕“Docker 的 volume 与 bind mount 在数据归属、初始化与可移植性上有什么区别”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须从生命周期管理、镜像内容初始化、路径依赖三点对比。
围绕“为什么写入容器可写层的数据性能差且随容器消失,而挂载卷能避免这两点”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明存储驱动 copy-on-write 的开销与卷直接挂载绕过存储驱动的差异。
围绕“addEventListener 的 once 选项在什么实际场景下有用?它和手动 removeEventListe”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明自动移除与手动移除的等价性,以及用于一次性初始化、自毁监听器。
本文说明捕获阶段监听器的具体使用场景,包括全局拦截、调试和不冒泡事件的委托,并区分捕获与冒泡的适用边界,给出实际示例。
围绕“click 事件对象中 clientX、pageX、screenX 分别代表什么坐标系?在实现悬浮提示时常用哪个”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明相对于视口、文档、屏幕的不同,以及 pageX 在滚动时仍相对于文档。
围绕“click 事件与 mousedown/mouseup 组合事件在触发时机和场景上有什么区别”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 click 要求同元素上按下与释放,且触发顺序,以及拖拽场景下 click 不触发。
围绕“getCoalescedEvents 在 pointermove 事件中返回什么?它为什么能提升绘图应用的帧率”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要解释浏览器合并高频移动事件成组,以及用该 API 可获取中间点以补平线条。
围绕“如何拦截浏览器右键菜单并弹出自定义菜单?应监听哪个事件”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明监听 contextmenu 并 preventDefault,以及区分右键和触屏长按。
围绕“CustomEvent 与普通 Event 有何不同?如何用它在组件间传递自定义数据”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明可以使用 detail 携带数据,以及构造函数中 bubbles/cancelable 设置。
围绕“双击一个元素时,会触发哪些鼠标事件?顺序如何”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须列出 mousedown/mouseup/click/mousedown/mouseup/click/dblclick 的顺序(基于。
围绕“如何从一个事件对象判断是否已有其他监听器调用了 preventDefault()”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 defaultPrevented 属性的用法及只读。
本文详述事件委托解决动态元素监听问题的具体实现:说明冒泡机制中事件流到达父级,以 event.target 为判断入口;给出 mouseenter、blur 等不可冒泡事件作为反例,并纠正动态元素无需重新绑定的误读及实际使用中需注意的细节。
本题解释事件委托失效的原因:非冒泡事件不沿 DOM 树向上传播。典型例子包括 scroll、blur/focus、mouseenter/leave、load。并说明可通过捕获阶段监听或使用 focusin/focusout 等替代方案。
围绕“dispatchEvent 是同步派发还是异步派发?在监听器中修改 DOM 会立即反映吗”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明调用 dispatchEvent 后所有监听器立即同步执行,且事件循环可以嵌套。
围绕“在 Shadow DOM 中事件从内部元素穿透边界派发到外部时,event.composed 和 composedP”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 composed 属性决定是否能够穿过 shadow root,以及 composedPath 返回完整路径。
围绕“浏览器在派发事件时是创建新 Event 对象还是复用同一个?对监听器有什么潜在影响”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明每个事件派发都会创建新对象(除非手动复用),但事件循环中变量引用可能失效。
围绕“addEventListener 的 signal 选项如何帮助自动移除监听器?实现 AB 测试或一次性订阅时有用吗”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明传入 AbortSignal,当 abort 时自动移除监听器,适用于可取消操作。
围绕“focus 和 blur 事件不冒泡,为何仍能通过事件委托实现,但必须使用捕获”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 focus/blur 不冒泡但可捕获,因此将监听器放在父级 capture:true 可捕获。
围绕“focusin/focusout 事件与 focus/blur 事件在冒泡行为上有何差异?在表单校验中如何选择”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 focusin/focusout 冒泡(但非标准被广泛支持),以及委托时优先使用 focusin。
围绕“KeyboardEvent.key 和 KeyboardEvent.code 分别表示什么?在什么场景下应使用 co”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须区分输出字符与物理键位置,以及在非美式键盘或游戏中使用 code。
围绕“如何阻止空格键或方向键触发页面滚动,同时保留输入框内的默认行为”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 keydown 事件中调用 preventDefault 即可阻止滚动,但需判断输入框等焦点以保留默认按键。
围绕“为网页实现自定义键盘快捷键如 Ctrl+S 保存,如何确保不触发浏览器默认保存”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明监听 keydown,检查 ctrlKey/metaKey 与 key,调用 preventDefault 以屏蔽默认,但需注意。
围绕“键盘按住不放时 keydown 事件重复触发,如何利用 event.repeat 属性”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明按住按键产生多个 keydown 且 repeat=true,用于过滤长按连发。
围绕“keydown 事件与已废弃的 keypress 事件有何区别?为什么推荐用 keydown”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 keypress 只针对可打印字符且不区分 Shift,已废弃;推荐用 keydown+key 属性。
围绕“mouseenter 与 mouseover 在冒泡行为和对子元素的触发上有什么区别”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 mouseover 冒泡且进入子元素会再次触发,mouseenter 不冒泡且进入子元素不触发。