当前位置: 首页 > news >正文

【KO】前端面试五

以下是这些前端开发项目场景题的答案及解析:

96. 介绍一下 requestIdleCallback api

requestIdleCallback 是浏览器提供的 API,用于在浏览器空闲时段执行低优先级任务,充分利用空闲时间,避免影响关键渲染、交互等操作。

  • 基本用法:接收回调函数和可选的 options(如 timeout 设定超时时间,超过则不管是否空闲都会执行),回调会传入 IdleDeadline 对象,可通过 timeRemaining() 知晓剩余空闲时间,didTimeout 判断是否因超时而执行。
  • 应用场景:后台统计上报、低优先级 DOM 操作、数据预加载等非关键任务,让主流程更流畅。
  • 注意:因浏览器兼容性(如 Safari 支持度有限 ),复杂场景可结合 setTimeout 等做降级,现代框架生态里,也有类似调度逻辑的库(如 React 的Scheduler )实现更精细的任务调度。

97. documentFragment api 是什么,有哪些使用场景?

documentFragment(文档片段)是 DOM 的轻量级容器,可像 DOM 节点一样挂载子元素,但自身不属于当前文档树,操作它不会触发页面重排(reflow),性能更优。

  • 作用:批量操作 DOM 时,先把节点插入片段,再一次性把片段插入文档,减少重排次数。比如循环创建列表项,逐个插入文档会多次触发重排,借助片段则只触发一次。
  • 使用场景
    • 动态生成复杂 DOM 结构(如表格、列表),批量添加到页面;
    • 做 DOM 节点的临时存储、转移,比如将页面某部分节点暂存到片段,后续再处理。

98. git pullgit fetch 有啥区别?

  • git fetch
    • 功能:从远程仓库拉取最新的提交记录( refs、objects 等 )到本地仓库的远程分支(如 origin/main ),不会合并到本地当前工作分支 。可理解为“获取远程更新信息,但不影响本地代码状态”。
    • 常用流程:git fetch origin → 查看远程分支与本地分支差异(git diff origin/main ) → 再决定是否合并(git merge )。
  • git pull
    • 功能:相当于 git fetch + git merge(默认行为,也可配置为 rebase ),拉取远程分支更新后,直接合并到本地当前分支,会影响本地工作分支代码
    • 注意:若本地分支有未提交的修改,可能触发合并冲突,需先处理或 stash 改动。
  • 总结:追求更可控的更新流程(先看差异再合并)用 fetch;想快速拉取并合并远程最新代码到本地,用 pull ,但要留意冲突风险。

99. 前端如何做页面主题色切换【腾讯一面】

常见实现方式:

  • CSS 变量(自定义属性) + 切换类名/属性
    • 定义主题色相关 CSS 变量,如 :root { --primary-color: #007bff; } ,深色主题时,给 htmlbody 加类名(如 .dark-theme ),覆盖变量值:.dark-theme { --primary-color: #343a40; }
    • 切换逻辑:JS 控制 document.documentElement.className 增减,或用 setAttribute 改属性,结合 CSS 选择器匹配。
  • CSS 预处理器(Less/Sass) + 多主题文件
    • 提前用预处理器定义不同主题的变量文件(如 theme-light.lesstheme-dark.less ),打包时生成多套样式,运行时通过 JS 动态加载对应 CSS 文件(如 link 标签替换、import() 动态导入 )。
  • 动态生成样式
    • JS 直接操作 style 标签,根据主题配置动态插入 CSS 规则,适合主题配置灵活、需实时计算样式值的场景。
  • 框架生态方案
    • Vue 中可结合 scoped 样式、provide/inject 传递主题配置;React 可通过 Context 管理主题,搭配 CSS-in-JS 库(如 styled-components ,用 ThemeProvider 切换主题 )。

100. 前端视角 - 如何保证系统稳定性【字节一面】

从前端角度,保障系统稳定可从这些维度入手:

  • 代码质量
    • 严格 TypeScript 类型约束,减少类型错误;ESLint + Prettier 规范代码格式、规避语法隐患;单元测试(Jest、Vitest 等 )覆盖核心逻辑,集成测试(Cypress、Playwright )保障流程。
  • 错误处理
    • 全局捕获 JS 错误(window.addEventListener('error')window.addEventListener('unhandledrejection') ),接口请求统一拦截异常(Axios 响应拦截器),上报错误日志(结合 Sentry 等工具 ),并做兜底提示(如 Toast 告知用户“操作失败,请重试” )。
  • 性能优化
    • 首屏优化:路由懒加载(如 React 用 React.lazy + Suspense 、Vue 用
http://www.dtcms.com/a/347110.html

相关文章:

  • yolo训练实例python篇(二)
  • Python训练营打卡 DAY 45 Tensorboard使用介绍
  • 【Golang】有关垃圾收集器的笔记
  • four people game
  • 【卷积神经网络详解与实例】1——计算机中的图像原理
  • 文件系统挂载详细分析(《图解Linux内核》虚拟文件系统篇笔记二)
  • 详细介绍将 AList 搭建 WebDav 添加到 PotPlayer 专辑 的方法
  • 基于Kubernetes StatefulSet的有状态微服务部署与持久化存储实践经验分享
  • JH-14回柱绞车优化设计cad+设计说明书+绛重
  • (论文速读)OverLoCK -上下文混合动态核卷积
  • OSI参考模型TCP/IP模型 二三事
  • 深入理解Web服务与HTTP协议
  • 55 C++ 现代C++编程艺术4-元编程
  • 总结:Maven多仓库多镜像源配置
  • 26.内置构造函数
  • STM32F1 USART介绍及应用
  • 【读书笔记】《从0到1》
  • MacOS + Android Studio:将 Git 仓库从 HTTP 切换为 SSH 并解决权限问题
  • VLOOKUP专题训练
  • 【Win】Motrix+Aria2浏览器下载加速
  • DeepSeek V3.1 横空出世:重新定义大语言模型的边界与可能
  • Qt5 项目的构建与部署详细讲解
  • 【Android】Fragment生命周期详解
  • 链表漫游指南:C++ 指针操作的艺术与实践
  • 【RK3576】【Android14】Android平台跟文件系统
  • PostgreSQL表分区与复杂查询性能优化实践指南
  • 【AI基础:神经网络】17、神经网络基石:从MP神经元到感知器全解析 - 原理、代码、异或困境与突破
  • 当 /etc/sysctl.d/ 目录下存在多个配置文件且配置项冲突时最终会使用哪个配置项
  • 嵌入式linux开发板 IP配置
  • Redis配置与数据类型详解及缓存优化实践