Range.getBoundingClientRect 和常用的 element.getBoundingClientRect 在返回上有何差异?
围绕“Range.getBoundingClientRect 和常用的 element.getBoundingClient”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需回答针对范围内容折行时返回矩形集合,而不是节点的单一框。
程序员面试题库第 34 页,收录第 1651–1700 题,共 5000 道完整解析,覆盖前端、JavaScript、React、Vue、Node.js、AI Agent、网络、数据库与系统设计。
按稳定语义路径排序
围绕“Range.getBoundingClientRect 和常用的 element.getBoundingClient”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需回答针对范围内容折行时返回矩形集合,而不是节点的单一框。
围绕“Range.intersectsNode 方法判断什么?在什么场景下使用”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需回答判断范围是否触碰某节点(部分重叠),并用在选区高亮上,不深入几何。
解释removeChild与Element.remove的调用方和返回值差异,以及在子节点不属于父节点时removeChild抛错而remove无操作;适合DOM操作中选择移除方式的判断。
围绕“使用多个 Range 添加 Selection 时有哪些限制与触发的事件”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明只能有一个活动选区、addRange 合并或替换,selectchange 触发时机。
围绕“Selection 的 removeAllRanges 和 collapse 方法有什么区别”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明一个清空选区,另一个将折叠到节点某位置。
围绕“Shadow Root 的 mode: 'open' 和 'closed' 分别有什么后果”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确外部访问 shadowRoot 属性与安全问题。
围绕“通过 slot 属性分配到命名插槽时,浏览器如何决定匹配哪个 <slot>”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需回答根据 name 对应 slot 元素,设置默认插槽。
本文剖析 textContent、innerText、innerHTML 在文本获取与 HTML 解析上的差异,包括隐藏元素处理、重排触发和设置行为。
解释 DOM 中 Node 作为抽象基接口与 Element 作为元素节点子接口的继承关系,对比二者在 nodeType、childNodes 与 children、getAttribute 等属性和方法上的差异,并给出判断边界。
围绕“XMLSerializer 与 outerHTML 在将 DOM 转为字符串时有何不同”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需回答序列化严格 XML 格式,不包含 non-well-formed 内容和命名空间处理。
围绕“Express 实现统一 404 JSON 响应应该把中间件放在哪里,为什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 404 处理器注册在所有路由之后、且无错误时最后兜底,区别于错误处理中间件的位置,不讲静态资源 404。
本文解释Express中app.use与router.use挂载中间件的核心区别:作用域不同、路径前缀计算方式不同、中间件隔离效果不同。通过具体场景说明何时用router.use隔离中间件,以及路径拼写错误带来的失效问题。
围绕“Express 4 与 Express 5 对异步路由抛错的处理有什么关键差异”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 Express 4 需要 try/catch 或包装器手动 next(err),Express 5 自动转发 rejected。
围绕“为什么生产环境要给 express.json() 设置 limit,默认值是多少,超出后发生什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确默认 100kb、超限抛 413 错误进入错误链、以及通过 limit 防 DoS 的设计动机,不讲文件上传场景。
围绕“为什么超大文件上传应绕过 express.json 而用 busboy 这类流式解析器,Express 中如何接入”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 body 解析器会把整个请求读入内存、流式解析边收边写盘控制内存峰值,以及 Content-Type 需为 multipart。
围绕“没有注册任何错误处理中间件时 Express 的内置默认错误处理器会做什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明默认返回 HTML、开发环境带堆栈而 NODE_ENV=production 隐藏堆栈,以及 headers 已发送时会委托关闭。
围绕“Express 错误处理中间件为什么必须是四个参数,写三个为什么不会被错误链调用”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 Express 靠函数 length===4 识别错误处理器,以及 (err, req, res, next) 的顺序约定,不。
围绕“Express 4 内置的 express.json() 与以前单独装 body-parser 是什么关系”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 Express 4.16 起内置基于 body-parser 的解析器、何时仍需单独引入(如旧版本或特殊选项),不讲 mult。
围绕“express-validator 的校验链如何在路由中工作,validationResult 必须在何处读取”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 body()/param() 链作为中间件运行、validationResult(req) 在后续 handler 中取错并短。
围绕“Express 报错 Cannot set headers after they are sent 的根因是什么,如”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明一次请求只能发一次响应、res.send 后继续执行 next 或再次 send 的典型代码路径,以及用 return 提前退出。
围绕“Express 部署在终止 TLS 的代理后,为什么直接判断 req.secure 会失效,如何正确做 HTTPS ”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 TLS 在代理终止后 Express 收到的是 HTTP,需 trust proxy 后读 X-Forwarded-Proto。
围绕“客户端发来非法 JSON 时 Express 报什么错,如何统一返回友好 400 而不是 HTML 错误页”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 body-parser 抛带 status 400 的 SyntaxError、在错误处理中间件里按 err.type 识别并。
围绕“为什么 Express 接口不能直接把 req.body 整体传给数据库层,白名单过滤怎么做”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明越权写字段(如 role)的风险,并给出在路由层用 pick/解构白名单的方案位置,不讲 ORM 层防护。
本题说明 Express 中间件执行由注册顺序与路径前缀匹配共同决定,并演示错误处理中间件写在路由之前为何失效,给出正确的分层顺序与判断边界。
本题解释 Express 中间件未发响应也未调用 next() 的后果:请求挂起、连接占用、客户端超时。给出用日志分段和超时护栏定位卡住环节的排查方法,并强调中间件每个分支必须终结请求或移交控制权。
围绕“cors、helmet、compression 这类 Express 中间件分别解决什么问题,挂载顺序有无讲究”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须逐一说明三者的单一职责,并指出 helmet/cors 应尽早、compression 在静态与路由之前的顺序原则,不讲各自配置项全。
围绕“Express 中用 multer 接收上传文件时,memoryStorage 与 diskStorage 各自的适”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须对比内存缓冲(小文件、转存云存储、OOM 风险)与落盘(大文件、临时目录清理)两种模式的取舍,不讲云存储 SDK 用法。
围绕“在 Express 接口设计中,multipart/form-data 直传与 JSON 内嵌 base64 各有什”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须从体积膨胀约 33%、body limit、内存占用与流式处理能力给出选型判断,不讲预签名直传对象存储的架构。
本文解析 Express 中 next()、next('route')、next(err) 的控制流差异,包括执行栈跳转、错误处理链触发条件,以及各自适用场景与边界。
围绕“如何设计带 status 属性的自定义错误类,让 Express 错误处理中间件统一映射 HTTP 状态码”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须给出错误类携带 status/暴露 flag 的设计、中间件按属性决定响应与日志级别的判定逻辑,不讲具体日志库。
围绕“Express 解析查询串时同名参数(?a=1&a=2)会得到什么结果,应用该如何应对”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明重复键被解析成数组、类型不符合预期时的风险,以及在校验层强制标量或数组的策略,不讲 qs 完整语法。
围绕“Express 默认查询解析如何防止 __proto__ 之类的原型链污染输入”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 qs 对 __proto__ 键的忽略行为及 plainObjects 等选项含义,指出仍需校验白名单的原因,不讲其他解析器实。
围绕“在代理后给 Express 加限流时,IP 取错会造成什么后果,正确的 key 来源是什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明不开启 trust proxy 时所有请求共享代理 IP 导致误伤或绕过,以及限流 key 应取经信任的 req.ip,不讲限流。
围绕“Express 中 req.params、req.query、req.body 的数据来源和取值前提分别是什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明三者的来源(路径段、查询串、请求体)以及 body 必须依赖解析中间件才有值,不讲各解析器内部实现。
围绕“Express 中 req 上挂自定义属性、res.locals、app.locals 三种共享数据方式的生命周期差”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答要按应用级、单次请求级、中间件链传递三种作用域区分,并指出 TypeScript 下扩展 Request 类型的常见做法,不讲模板渲。
围绕“Express 的 res.json、res.send、res.end、res.sendStatus 在 Conte”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 json 强制 JSON 头、send 按参数类型推断、end 裸结束、sendStatus 用状态文本当 body 的差异,。
围绕“Express 的 app.route() 链式定义相比分散写 app.get/app.post 解决什么问题”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明同一路径多方法聚合、避免路径字符串重复带来的不一致,不讲 Router 模块化。
围绕“Express 路由匹配默认是否区分大小写与末尾斜杠,如何调整这两个行为”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明默认不区分大小写且忽略尾斜杠,以及 case sensitive routing 与 strict routing 两个 app。
集中在app.all与app.use的方法集合、路径匹配粒度差异。通过断言all只能完整路径匹配而use是前缀匹配,并给出鉴权场景下选型标准,避免中间件误拦截或缺失。
本题明确Express一个路由挂多个处理函数时的执行规则:回调数组或多次参数都按注册顺序执行,由next()移交控制权;任一回调发送响应即终止。文中区分普通next与next('route'),并给出实际判断方法。
围绕“Express 的 app.param() 能在什么时候复用参数处理逻辑,典型用途是什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 param 回调在任何含该参数的路由之前触发、可用于加载实体并挂到 req。
围绕“Express 路由路径参数(如 /users/:id)如何匹配与解析,同名参数冲突会怎样”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 :name 的匹配规则、req.params 取值与 URL 解码,并指出同一中间件链上挂载前缀也含参数时的合并行为。
围绕“Express 路由中的通配符与正则路径在 Express 4 和 Express 5 中有什么写法差异”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须指出 Express 5 升级 path-to-regexp 后 * 等写法的破坏性变化及替代语法,不讲普通静态路径匹配。
本文解释 express.Router 如何模块化路由,重点说明 app.use 的挂载路径与 router 内部路径的拼接规则、根路径映射,以及父路径参数需 mergeParams 才能访问的边界。
围绕“在 Express 项目中用 JSON Schema / Zod / Joi 做校验相比手写 if 判断,设计取舍是”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须从类型推导复用、声明式可读性、运行时性能与包体积角度给出选型判断,不讲任一库 API 细节。
围绕“express.static 提供已上传文件时,如何防止目录穿越并控制缓存与 Content-Type”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 express.static 内置路径规范化防御 dotfile 与穿越,以及 setHeaders 控制缓存头与下载文件名的。
围绕“Express 的 app.set('trust proxy') 解决什么问题,错误配置会导致什么安全风险”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明开启后 req.ip 取自 X-Forwarded-For、供限流/日志用,但轻信不可信来源会让客户端伪造 IP 绕过限流,不讲。
围绕“Express trust proxy 的可选值(true、数字、IP 段、函数)分别代表什么信任边界”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须区分全部信任、按代理跳数信任、按子网信任与自定义函数的适用拓扑(如云 LB 固定一跳),不讲如何获取真实 IP 的算法细节。
围绕“Express 上传超限被截断后,如何让客户端得到明确的 413 响应而不是连接被重置”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 multer 抛 MulterError 进入错误链、在错误中间件按 code 返回 413 JSON,以及代理层(如 Ngi。
围绕“用客户端传来的文件名直接拼接保存路径,在 Express 上传服务里会造成什么漏洞,如何防”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 ../../ 路径穿越风险,以及用随机生成文件名、path.basename 过滤、限定上传目录三道防线的具体做法,不讲对象存。