面试题

一、个人匹配度与项目经历类(核心考察:经验匹配度、项目落地能力、成果量化)

问题1:请介绍你过往经历中最贴合本岗位(游戏官网、H5活动、内嵌页等)的核心项目,说明你的角色、核心职责及最终成果。

答案
我在网易主导的“游戏H5活动平台架构与工具链建设”是最贴合的项目。

  • 角色:核心负责人,主导架构设计与全流程落地;
  • 核心职责:基于React+TypeScript搭建高复用H5活动框架,集成数据加密签名、日志自动上报、网络代理等核心模块;支撑《梦幻西游》好友回流实时聊天、《萤火突击×网易云音乐》等多款游戏联动H5上线;通过工程化(GitLab CI/CD)和性能优化保障日均数万UV活动稳定运行;
  • 最终成果:框架复用率提升80%,团队开发效率提升60%,活动首屏渲染时间从2.8秒优化至0.3秒内,连续两年获部门优秀员工,支撑的联动活动均达成业务目标(如好友回流率提升25%)。

知识点

  • 游戏H5核心需求:高并发、稳定性、复用性、快速迭代;
  • 项目成果量化方法(效率、性能、业务指标);
  • 岗位匹配度关联技巧(突出游戏场景、前端架构、工程化)。

问题2:你主导的微前端(qiankun)重构用户触达平台项目,背景、核心目标、难点及解决方案是什么?

答案

  • 背景:原有平台多系统割裂(短信、彩信、邮件、网页拨号分属不同系统),维护成本高,运营配置效率低;
  • 核心目标:系统整合、提升可维护性、优化多渠道触达效率;
  • 难点与解决方案:
    1. 应用间通信:采用qiankun全局状态管理+自定义事件总线,同步用户权限、渠道配置等数据;
    2. 样式隔离:shadow DOM+CSS Modules双重隔离,解决第三方UI库(如Element UI)全局样式冲突;
    3. WebRTC网页拨号整合:封装统一拨号组件,适配Chrome/Firefox等浏览器兼容性;
    4. 生命周期管理:自定义加载/卸载钩子,处理资源预加载与内存回收,避免泄漏;
  • 成果:系统维护成本降低40%,运营配置效率提升50%,支持多渠道一站式管理。

知识点

  • qiankun核心原理(应用注册、加载、通信、沙箱隔离);
  • 微前端重构的核心价值(技术栈无关、独立部署、系统整合);
  • WebRTC基础(实时通信协议、浏览器适配)。

问题3:你开发的通用低代码表单系统,如何满足“策划/运营零代码搭建复杂业务表单”的需求?核心设计思路是什么?

答案
核心设计思路是“组件复用+可视化配置+规则引擎”,具体实现:

  1. 拖拽式编辑器:基于React+dnd实现字段组件(输入框、下拉框等)的拖拽添加、排序,降低操作门槛;
  2. 通用组件库:抽象高复用字段组件,支持自定义属性(校验规则、默认值、联动逻辑);
  3. 可视化规则引擎:通过JSON Schema存储字段联动(如“选择游戏区服后加载角色列表”)、表单校验规则,无需编码;
  4. 渲染器与编辑器分离:编辑器生成JSON配置,渲染器动态解析并适配PC/移动端;
  5. 数据导出:支持Excel导出,满足运营数据分析需求。
  • 成果:减少重复开发60%,策划/运营可独立完成80%+业务表单搭建,上线后零重大BUG。

知识点

  • 低代码平台架构(编辑器、引擎、组件库、适配层);
  • React dnd使用、JSON Schema应用;
  • 表单联动与校验逻辑设计。

二、前端核心基础与原理类(核心考察:底层认知、技术深度)

问题4:请详细讲解浏览器渲染流程,结合你的项目经验说明如何优化首屏渲染?

答案

  • 浏览器渲染流程:解析HTML→生成DOM树→解析CSS→生成CSSOM树→合并为渲染树→布局(Layout)→绘制(Painting)→合成(Compositing);
  • 项目优化实践(针对20万+条数据场景):
    1. 资源层:JS/CSS压缩合并、图片懒加载+WebP格式、CDN分发;
    2. 渲染层:虚拟滚动(react-window)只渲染可视区DOM,减少重排重绘;
    3. 代码层:路由懒加载(React.lazy+Suspense)、组件按需加载;
    4. 数据层:分页请求+预加载、SSE实时刷新(避免轮询)、内存回收;
    5. 缓存层:HTTP强缓存+协商缓存、localStorage缓存静态配置;
  • 成果:首屏渲染从2.8秒优化至0.3秒内。

知识点

  • 渲染核心步骤(重排/重绘/合成的区别);
  • 前端性能优化全维度(资源、渲染、代码、数据、缓存);
  • 虚拟滚动、懒加载、HTTP缓存机制。

问题5:你在项目中修复过XSS漏洞,请问XSS的常见类型及防御方案?还做过哪些Web安全加固措施?

答案

  • XSS常见类型:存储型(如评论提交)、反射型(如URL参数)、DOM型(如document.write);
  • XSS防御措施:
    1. 输入过滤:特殊字符转义、DOMPurify净化HTML输入;
    2. 输出编码:React JSX自动转义(避免dangerouslySetInnerHTML);
    3. 安全配置:CSP响应头限制脚本源、禁止inline-script;
    4. Cookie安全:HttpOnly+Secure+SameSite属性;
  • 其他安全加固:
    1. CSRF防御:CSRF Token验证;
    2. 权限控制:RBAC模型细粒度授权、路由守卫拦截;
    3. 数据加密:敏感数据AES传输加密、接口请求签名(时间戳+随机串+MD5);
    4. 接口安全:请求频率限制、Referer/Origin验证。

知识点

  • Web安全核心(XSS、CSRF、权限控制、数据加密);
  • CSP配置、Cookie安全属性、RBAC权限模型。

问题6:前端性能优化的核心指标(Core Web Vitals)有哪些?除首屏外,你还关注哪些维度及优化方案?

答案

  • 核心指标(Core Web Vitals):
    1. LCP(最大内容绘制):<2.5秒,衡量首屏加载;
    2. FID(首次输入延迟):<100毫秒,衡量交互响应;
    3. CLS(累积布局偏移):<0.1,衡量视觉稳定性;
  • 其他关注维度及优化:
    1. 交互性能:拆分长任务(requestIdleCallback)、避免同步阻塞;
    2. 内存优化:清理定时器/事件监听器、避免闭包内存泄漏;
    3. CLS优化:图片设固定宽高比、动态DOM预留空间;
  • 项目案例:AI数据看板中,通过拆分长任务、requestAnimationFrame优化图表动画,FID从180ms→80ms;CLS从0.2→0.05。

知识点

  • Core Web Vitals指标定义;
  • 长任务优化、内存泄漏排查、CLS优化原理。

问题7:HTTP与HTTPS的核心区别是什么?HTTPS的加密流程是怎样的?

答案

  • 核心区别:
    1. 安全性:HTTP明文(窃听/篡改/伪造),HTTPS基于TLS/SSL加密;
    2. 端口:HTTP 80,HTTPS 443;
    3. 证书:HTTPS需CA证书验证服务器身份;
    4. 性能:HTTPS首次握手延迟略高;
  • HTTPS加密流程:
    1. 客户端发起请求,携带支持的TLS版本、加密套件;
    2. 服务器返回CA证书(含公钥)、选定加密套件;
    3. 客户端验证证书合法性,生成预主密钥,用服务器公钥加密发送;
    4. 服务器私钥解密得预主密钥,双方生成会话密钥(对称密钥);
    5. 后续通信用会话密钥对称加密。

知识点

  • TLS/SSL加密原理(非对称+对称加密结合);
  • HTTPS安全保障机制。

三、技术栈与工程化类(核心考察:技术栈熟练度、工程化能力)

问题8:你精通React+TS,而岗位优先Vue3,请问你对Vue3的了解的?React与Vue3的核心差异是什么?若用Vue3重构你的低代码表单系统,如何规划?

答案

  • Vue3掌握程度:系统学习Composition API、Pinia、Vite等生态,独立搭建过Vue3表单demo,能快速上手;
  • React与Vue3核心差异:
    维度 React Vue3
    底层思想 函数式编程,JSX为核心 渐进式框架,模板+API
    响应式原理 状态更新触发Diff Proxy代理,精准更新
    逻辑复用 Hooks(依赖数组陷阱) Composition API(无陷阱)
    开发者体验 灵活但需手动优化 易用性强,内置优化
  • Vue3重构规划:
    1. 技术栈:Vue3+TS+Vite+Pinia+vue-draggable-next;
    2. 模块迁移:字段组件→Vue3组件(defineProps/defineEmits)、拖拽→vue-draggable-next、规则引擎→JSON Schema+computed/watch;
    3. 工程化适配:Vite替代Webpack,修改GitLab CI/CD打包脚本;
    4. 性能优化:v-memo缓存组件、Pinia状态分片;
    5. 测试灰度:Vitest单元测试,逐步迁移核心功能。

知识点

  • 两大框架底层原理(响应式、虚拟DOM);
  • Vue3核心特性(Composition API、Proxy、Vite);
  • 项目重构流程(选型→迁移→适配→测试)。

问题9:TypeScript在你的项目中起到什么作用?常用的高级特性有哪些?如何处理类型兼容与类型守卫?

答案

  • TypeScript核心作用:编译时类型校验、IDE精准提示、提升代码可维护性、统一团队类型规范;
  • 常用高级特性:
    1. 泛型:封装通用组件(如表单字段);
    2. 高级类型:Partial(可选配置)、Pick/Omit(字段筛选)、联合/交叉类型;
    3. 类型守卫:typeof、instanceof、自定义谓词(如isLinkedField(field): field is LinkedField);
    4. 模块声明:第三方库.d.ts类型文件;
  • 类型兼容与守卫处理:
    1. 兼容问题:泛型约束、Partial放宽类型、as断言;
    2. 类型守卫:基础守卫(typeof value === 'string')+ 自定义守卫,缩小类型范围。

知识点

  • TS类型系统(泛型、高级类型、类型守卫);
  • 类型声明文件编写;
  • TS在大型项目中的实践价值。

问题10:请介绍你主导的DevOps与工程化落地(GitLab CI/CD+Koa代理),自动化部署流水线设计及Koa代理的作用?

答案

  • 自动化部署流水线(GitLab CI/CD):
    1. 分支策略:Git Flow(master/develop/feature/release/hotfix);
    2. 阶段:build(安装依赖→打包)→test(Jest单元测试+Cypress E2E)→deploy(按分支部署对应环境)→notify(企业微信通知);
  • Koa代理服务核心作用:
    1. 开发跨域:映射/api到后端域名,解决浏览器跨域;
    2. 接口增强:统一添加Token/签名、格式化响应数据;
    3. 本地调试:支持Mock数据、多环境接口切换;
    4. 性能优化:缓存频繁请求响应;
  • 工程化工具链:Webpack/Vite(构建)、ESLint+Prettier(代码质量)、Husky(Git Hooks)、自研工具(Swagger可视化、日志埋点SDK)。

知识点

  • CI/CD流程设计、GitLab CI/CD配置;
  • 前端工程化全链路(构建、质量、测试、部署);
  • 跨域解决方案(CORS、代理)。

问题11:前端模块化的发展历程是什么?ES Module与CommonJS的核心区别?

答案

  • 发展历程:IIFE(全局隔离)→AMD(RequireJS,依赖前置)→CMD(SeaJS,依赖就近)→CommonJS(Node.js,同步)→ES Module(ES6,官方标准);
  • 核心区别:
    维度 ES Module CommonJS
    加载时机 编译时静态加载(Tree Shaking) 运行时动态加载
    导出方式 绑定(live bindings) 值的拷贝
    this指向 undefined module.exports
    加载行为 按需加载(import()) 整体加载(require)
  • 项目实践:使用ES Module,按功能划分目录(api/components/hooks),路由懒加载(React.lazy),Tree Shaking优化打包体积。

知识点

  • 模块化原理(作用域隔离、依赖管理);
  • Tree Shaking实现条件;
  • 模块化开发最佳实践。

四、前端基建与重构类(核心考察:基建能力、重构经验)

问题12:前端基建开发的核心设计原则是什么?如何平衡通用性和业务特异性?

答案

  • 核心设计原则:通用性、可扩展性、易用性、稳定性、性能优化、可维护性;
  • 平衡策略:
    1. 核心与业务分离:基建封装通用逻辑(如H5框架的通信/日志),业务需求通过配置/插件实现;
    2. 插件化架构:预留插件接口(如低代码表单的自定义字段插件);
    3. 配置化设计:JSON配置区分业务场景(如活动类型、接口地址);
    4. 钩子函数:核心流程预留回调(如表单提交前校验钩子);
    5. 语义化版本:兼容旧版本,迭代新特性。

知识点

  • 前端基建设计思路(插件化、配置化);
  • 通用性与业务特异性的矛盾解决;
  • 语义化版本(SemVer)规范。

问题13:微前端的核心价值是什么?qiankun的核心原理(加载、通信、隔离)?

答案

  • 核心价值:技术栈无关、独立开发部署、系统整合、按需加载、降低维护成本;
  • qiankun核心原理:
    1. 应用加载:注册子应用→路由匹配时fetch资源→执行bootstrap/mount生命周期;
    2. 应用通信

面试题
https://zjw93615.github.io/2025/12/06/面试/面试题/
作者
嘉炜
发布于
2025年12月6日
许可协议