跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
JavaScript大前端

前端高频场景面试题与实战解答

前端开发中常见问题涵盖 Vue 组件优化、首屏性能提升、Token 存储策略、路由权限控制及多端兼容性处理。内容涉及 Axios 封装、移动端适配方案、项目结构规范及真实设备测试方法,适合希望巩固基础并应对面试的开发者参考。

KernelLab发布于 2026/4/9更新于 2026/10/2588 浏览

前端高频场景面试题与实战解答

整理了一些常见的前端开发场景面试题,涵盖 Vue 优化、网络请求、权限控制及兼容性处理等核心知识点。

1. 一般 Vue 开发用什么库来辅助

常用工具库包括:

  • UI 框架:VantUI, ElementUI
  • 工具库:js-cookie, axios
  • 通信:socket.io
  • 图表:ECharts

2. 页面刚开始出现一片空白的原因

排查方向如下:

  1. 网络设置问题(IP、端口配置错误)
  2. 网速较慢导致加载延迟
  3. 浏览器本身兼容性问题
  4. 防火墙安全级别过高拦截请求
  5. 病毒或恶意软件干扰
  6. 打包路径配置不正确

3. Vue 项目首屏优化策略

从代码和资源层面入手:

  • 指令选择:区分 v-if 和 v-show 的使用场景;computed 用于缓存计算属性,watch 用于异步操作。
  • 列表渲染:v-for 遍历必须为 item 添加 key,避免同时使用 v-if。
  • 长列表优化:虚拟滚动或分页加载。
  • 事件管理:注意组件销毁时移除 addEventListener 监听,防止内存泄漏。
  • 资源加载:图片懒加载、使用精灵图、路由懒加载。
  • 按需引入:第三方插件按需引入,减少包体积。
  • 服务端渲染:考虑 SSR 方案提升首屏速度。
  • 构建优化:开启代码压缩。

4. 商品详情页返回保留滚动位置

实现思路:

  1. 在 App.vue 中使用 <keep-alive> 缓存组件状态。
  2. 离开详情页时记录当前滚动高度,返回时重新赋值给进度条或容器。

5. LocalStorage 存储 Token 与 Vuex 的区别

虽然 LocalStorage 能存 Token,但 Vuex 更合适:

  1. 类型限制:LocalStorage 仅支持字符串,非字符串需转换,增加性能消耗。
  2. 响应式监控:LocalStorage 数据变化无法触发视图更新,Vuex 可监听 Token 变化执行逻辑。
  3. 性能差异:LocalStorage 是磁盘操作,Vuex 是内存操作,读取速度更快。

6. 后台接口未写好如何处理

开发阶段可采用模拟假数据:

  • 组件内写死数据
  • 使用 mock.js
  • 使用 json-server

7. Cookie 为什么不适合存储 Token

  1. 性能开销:Cookie 每次请求都会自动携带,增加带宽消耗。
  2. 安全风险:容易遭受 CSRF 攻击,Token 存储在 Cookie 中可能被劫持。

8. 任务分配不合理怎么办

评估能否在规定时间完成。若能完成,事后向负责人说明情况;若不能,及时协商调整,确保不影响项目整体进度。

9. Axios 挂载到原型上的作用

将 Axios 挂载到原型后,各组件可直接调用,无需重复引入,简化代码结构。

10. 如何判断项目所处环境

  1. 查看 IP 和端口地址。
  2. 检查启动项目的脚本或命令。

11. CLI 版本与 src 目录结构

常见版本参考:

  • Vue: 2.6.10
  • Vuex: 3.1.0
  • Vue-cli: 4.4.4
  • Webpack: 4.4.0

src 目录通常包含:

  • api: 接口请求
  • assets: 静态资源
  • components: 公共组件
  • icons: 字体图标
  • router: 路由配置
  • store: Vuex 状态管理
  • utils: 工具函数
  • views: 页面级路由

12. 组件封装经验分享

采用组件化思想,创建 views(页面级)和 components(公共组件)目录。例如评论组件抽离为独立模块,头部组件抽象通用逻辑。

HeaderTop 组件示例:

<template>
  <div class="header-top">
    <slot name="left"></slot>
    <div>{{ title }}</div>
    <slot name="right"></slot>
  </div>
</template>

<script>
export default {
  props: ['title'],
  components: { HeaderTop }
}
</script>

使用方式:

<HeaderTop title="标题">
  <div slot='left'>左边内容</div>
  <div slot='right'>右边内容</div>
</HeaderTop>

13. 项目权限控制实现

针对后台管理系统不同角色(如 admin、editor),通过路由元信息控制访问权限:

  1. 路由声明:在 router.js 中通过 meta 标签标记所需角色,如 { role: ['admin', 'super_editor'] }。
  2. 动态路由:登录后获取用户角色,对比路由表,调用 router.addRoutes 生成可访问路由表并存入 Vuex。
  3. 菜单渲染:根据 Vuex 中的可访问路由渲染侧边栏组件。

14. Axios 封装流程

  1. 在 Utils/request.js 中引入 Axios,配置基础路径、请求/响应拦截器并导出实例。
  2. 在 api 文件中引入该实例,按业务模块配置具体接口请求文件。

15. PC 端兼容性问题

  1. img 留白:设置 display: block。
  2. IE9- 边框:给 img 设定 border: none。
  3. IE8 rgba 不支持:改用 opacity。
  4. min-height 不兼容 IE6/7:组合使用 min-height, height: auto !important, height: 200px, overflow: visible。

16. 移动端兼容性问题

  1. 音视频自动播放:iOS/Android 需用户交互触发,监听 touchstart 事件播放。
  2. 输入法空格:正则替换  。
  3. 点击延迟:引入 FastClick 解决 300ms 延迟。
  4. 键盘遮挡输入框:监听窗口 resize 事件,检测键盘弹出高度,动态切换样式类(如 .focusState)调整布局。

17. 移动端真机测试方法

  1. 部署至公司测试服务器,手机直接访问。
  2. 本地搭建服务,确保手机与电脑同局域网,通过 IP 访问。

18. H5 与 App 的区别

  1. 访问方式:H5 通过链接,App 通过应用程序。
  2. 分发渠道:H5 无应用商店,App 有。
  3. 上线审核:H5 无需审核,App 需审核。
  4. 性能体验:H5 响应速度通常慢于 App。
  5. 开发成本:H5 开发成本低于 App。

以上总结涵盖了前端开发中常见的技术难点与面试考点,实际工作中可根据具体需求灵活调整。

目录

  1. 前端高频场景面试题与实战解答
  2. 1. 一般 Vue 开发用什么库来辅助
  3. 2. 页面刚开始出现一片空白的原因
  4. 3. Vue 项目首屏优化策略
  5. 4. 商品详情页返回保留滚动位置
  6. 5. LocalStorage 存储 Token 与 Vuex 的区别
  7. 6. 后台接口未写好如何处理
  8. 7. Cookie 为什么不适合存储 Token
  9. 8. 任务分配不合理怎么办
  10. 9. Axios 挂载到原型上的作用
  11. 10. 如何判断项目所处环境
  12. 11. CLI 版本与 src 目录结构
  13. 12. 组件封装经验分享
  14. 13. 项目权限控制实现
  15. 14. Axios 封装流程
  16. 15. PC 端兼容性问题
  17. 16. 移动端兼容性问题
  18. 17. 移动端真机测试方法
  19. 18. H5 与 App 的区别

更多推荐文章

查看全部
  • 利用 DeepSeek 与云端算力快速构建响应式个人主页
  • Youtu-VL-4B-Instruct 基于 Gradio 扩展 WebUI 图片批处理
  • kkFileView 如何选择最佳 JDK 版本及部署策略
  • VSCode 集成 GitHub Copilot 使用指南
  • Java 剪辑接单报价比价系统架构设计与实现
  • WebView 并发初始化竞争风险分析
  • 基于 AI 代码助手的开发板垃圾图片识别系统实战
  • 基于 DeepSeek 与通义万相的 AI 视频制作实战指南
  • React JSX 基础:组件与 HTML 元素区分原则
  • OpenClaw 多飞书机器人配置指南
  • Ubuntu 下使用 VSCode 调试 C++ CMake 项目指南
  • 常见排序算法原理与实现详解
  • C++ 开发基础:STL 核心组件与字符编码避坑指南
  • NDK 开发入门:C++ 基础与 JNI 调用详解
  • 使用 Selenium 搭建免费 Web 搜索 API 服务
  • 基于 Python 与 AI 的智能害虫识别系统实战
  • OpenClaw 实战部署指南:配置 AI 远程员工与自动化工作流
  • Web3 社区运营核心策略与实践
  • 快速排序算法原理及多种实现方式
  • 在 Photoshop 里用 WebPShop 处理 WebP

相关免费在线工具

  • Keycode 信息

    查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online

  • Escape 与 Native 编解码

    JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online

  • JavaScript / HTML 格式化

    使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online

  • JavaScript 压缩与混淆

    Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online