文章目录

牛客面经整理:前端面经(数据库 / Linux / HTTP / 安全 / Vue / ES6)(十六)

收录日期:2026-04-28
关键词:前端、SQL、Linux、HTTP、缓存、URL 到渲染、安全、XSS、CSRF、Vue、ES6、ECharts

1. 数据库用什么?SQL 写得多不多?做过 SQL 优化吗?

参考答案

  • 常见场景:MySQL/PostgreSQL;OLTP 侧看索引与事务,OLAP 侧看分区与列存。
  • 优化思路(从性价比高到低):
    • 正确建索引:高选择性列、联合索引按查询条件与排序/分组顺序设计;避免“最左前缀”失效。
    • 避免全表扫描:减少 SELECT *;分页用“延迟关联/覆盖索引/seek 方法”。
    • 看执行计划:EXPLAIN/EXPLAIN ANALYZE;关注 rowstypeExtra(Using filesort/temporary)。
    • 减少回表:覆盖索引;必要时做冗余字段(权衡一致性)。
    • 大表治理:分库分表、分区、冷热数据分离、归档。

2. Linux 常用命令?

参考答案

  • 文件与查找:lscdpwdcatlessheadtail -ffindgrep/rg
  • 进程与资源:pstop/htopkillfree -hdf -hdu -sh
  • 网络排查:curlwgetpingtraceroutenetstat/sslsof -i
  • 权限与压缩:chmodchowntarzip/unzip

3. HTTP 报文有哪些组成?常见重要头有哪些?

参考答案

  • 请求:请求行(method/path/version)+ 请求头 + 空行 + 请求体(可选)。
  • 响应:状态行(version/status/statusText)+ 响应头 + 空行 + 响应体。
  • 常见头:
    • 缓存:Cache-ControlETagIf-None-MatchLast-ModifiedVary
    • 内容协商:AcceptAccept-EncodingAccept-Language
    • 认证:Authorization
    • 安全:Content-Security-PolicyStrict-Transport-Security
    • 跨域:Access-Control-Allow-*

4. GET 和 POST 区别?

参考答案

  • 语义:GET 用于获取资源;POST 常用于提交/创建/触发处理。
  • 幂等性:GET 通常应幂等;POST 不保证幂等(也可设计为幂等)。
  • 参数位置:GET 常放 query;POST 可放 body(也能有 query)。
  • 缓存:GET 更易被缓存;POST 通常不缓存(除非明确设置)。
  • 安全:两者都不“更安全”,安全主要靠 HTTPS、鉴权与服务端校验。

5. 常见响应码及含义?

参考答案

  • 200 成功;201 创建成功;204 成功但无内容
  • 301/302 重定向;304 协商缓存命中
  • 400 参数错误;401 未认证;403 无权限;404 不存在;409 冲突
  • 500 服务端错误;502 网关错误;503 服务不可用;504 网关超时

6. 缓存方式有哪些?(浏览器侧)

参考答案

  • HTTP 缓存:强缓存/协商缓存(最关键)。
  • 存储:localStoragesessionStorageIndexedDB、Cache Storage(Service Worker)。
  • Cookie:偏“会话/鉴权/状态”,不适合作为大缓存。
  • 设计建议:明确更新策略(版本号/ETag/hash)、容量与失效,避免“缓存污染”。

7. 从输入 URL 到页面渲染流程?

参考答案

  • 解析 URL → DNS 解析 → 建连(TCP;HTTPS 还要 TLS 握手)
  • 发起 HTTP 请求 → 服务端处理 → 返回响应(可能 304/缓存命中)
  • 浏览器解析 HTML → 构建 DOM;解析 CSS → 构建 CSSOM
  • 合成 Render Tree → 布局(Layout)→ 绘制(Paint)→ 合成(Composite)
  • 加载并执行 JS(可能阻塞解析,取决于 script 加载策略)

8. Web 安全了解哪些?(XSS / CSRF / DDoS)

参考答案

  • XSS:输入未转义导致脚本执行;防护:转义/白名单、CSP、HttpOnly Cookie、避免 innerHTML 拼接。
  • CSRF:利用 Cookie 自动携带;防护:CSRF Token、SameSite、校验 Origin/Referer
  • DDoS:流量/资源耗尽;更多靠网关/CDN/WAF/限流/黑名单与弹性扩缩容。

9. Vue2/Vue3?v-if vs v-show

参考答案

  • v-if:条件不满足时不渲染(销毁/重建),切换成本高但初始成本低。
  • v-show:始终渲染,仅切换 display,切换频繁时更合适但初始成本更高。

10. ES6 常见新特性?箭头函数注意点?

参考答案

  • 语法/能力:let/const、解构、模板字符串、默认参数、展开/剩余、PromiseclassmoduleMap/SetSymbol、迭代器/生成器、Proxy/Reflect 等。
  • 箭头函数:
    • 没有自己的 this/argumentsthis 取词法作用域。
    • 不能作为构造函数(无 prototype,不能 new)。
    • 适合回调;类方法里注意与 this 绑定的关系。

11. ECharts 用过哪些图?地图/动态图表怎么做?

参考答案

  • 常用图:折线、柱状、饼图、散点、雷达、仪表盘、热力图等。
  • 动态更新:通过 setOption(option, { notMerge, lazyUpdate }) 更新数据;高频更新要做节流/批量更新。
  • 地图:加载 geojson 并注册 map;注意投影、缩放、tooltip/visualMap 与性能。

12. Python 写过脚本吗?(加分回答方向)

参考答案

  • 说明用途:数据清洗/爬取/自动化/批处理/日志分析。
  • 工具链:requestsbeautifulsoup/lxmlpandasclick/typerpytest
  • 工程化:虚拟环境、依赖管理、参数化、可观测性(日志/重试)。