腾讯 IEG品牌团队 UI开发 一面 4.1 16:00-17:20

注意

  • 回答问题不要太发散,说了太多废话,应该专注于问题核心

项目与八股

为什么选 Element UI

  • 基础框架组件:el-menu / el-menu-item(顶部导航切模块),el-avatar(用户区)

  • 登录表单与校验:el-form / el-form-item / el-input(账号密码+校验),v-loading(登录加载态)

  • 全局交互反馈:this.$message(成功/失败提示),this.$confirm(退出确认弹窗)

  • 业务面板里的常用组件:el-collapse(图层/专题折叠面板),el-slider(时间滑块),el-checkbox(开关类),el-tooltip/tag/empty(提示、标签、空态)

  • 主要用它做表单、导航、弹窗提示和一些面板交互,Element UIVue2 生态里成熟稳定、资料多、上手快,能把通用交互快速落地,把主要精力放在 Mapbox+GeoServerGIS 业务实现上,Ant Design Vue 也很好,但当时切换成本更高、收益不明显

父子组件的生命周期

面经图 7

git mergegit rebase 的区别

对比点 merge rebase
本质 合并分支 变基(移动提交)
历史记录 保留分叉 线性历史
是否产生新 commit 会(merge commit 不一定
可读性 一般 更清晰
冲突处理 一次性 可能多次
是否改写历史 是(危险)
适用场景 团队协作 个人分支整理

WebpackVite 中的 HMR 热更新

对比点 Webpack HMR Vite HMR
启动方式 打包后启动 原生 ESM
构建速度 极快
更新机制 整体重新打包模块 按需更新模块
底层原理 bundle + websocket 浏览器 ESM + websocket
热更新粒度 较粗 非常细
开发体验 一般 很流畅
  • Webpack:先打包再更新
  • Vite:按需加载,直接替换模块
  • HMR = 文件变更 → 重新编译 → 通知浏览器 → 拉取新模块 → 局部替换
    1. 监听文件变化
    1. 重新编译(内存中)
    1. 通知浏览器(WebSocketWebSocket 是一种基于 TCP 的网络协议,专为实现实时双向通信而设计。它允许客户端和服务器之间建立一个持久连接,从而实现数据的高效传输
    1. 浏览器获取更新信息(hash
    1. 拉取更新模块(json + js
    1. 模块热替换(不刷新页面)

场景题

  • 开发一套智能课程管理 agent,从前后端到模型选择