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

【KO】前端面试题一

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

25. 如何减少项目里面if - else

  • 使用对象映射:将条件判断的结果与对应的处理逻辑作为键值对存到对象里,通过条件直接查找执行,如根据不同类型执行函数 ,const handler = { type1: () => {}, type2: () => {} }; handler[condition]();
  • 利用策略模式:把不同条件的处理逻辑封装成策略类/函数,根据条件选择策略执行,解耦条件判断和逻辑。
  • 可选链与空值合并:处理对象属性判断时,obj?.prop?.method() 简化存在性判断,结合 ?? 处理默认值,减少条件嵌套。
  • 提前返回:在函数开头处理特殊情况(如参数不合法)直接返回,减少嵌套的 if - else ,让主逻辑更清晰。

26. babel - runtime作用是啥

  • babel - runtime 是 Babel 生态工具,用于解决 Babel 转译代码时,辅助函数(如 _extend 等)重复注入问题。
  • 它通过抽取复用辅助函数,减少打包后代码体积;还提供 core - js 等 polyfill 能力(按需引入),让转译后的代码能在低版本环境运行,实现语法和 API 兼容。

27. 如何实现预览PDF文件

  • 浏览器内置能力:直接用 <embed> <object> 标签,设置 src 为 PDF 地址,浏览器支持的话可渲染,如 <embed src="xxx.pdf" type="application/pdf">
  • PDF.js 库:Mozilla 开发的开源库,可在 canvas 上渲染 PDF ,支持自定义样式、交互,引入库后初始化加载显示,pdfjsLib.getDocument('xxx.pdf').promise.then(pdf => { /* 渲染页面等操作 */ })
  • 第三方服务:如 Google Docs 查看器(需联网、有隐私考量),<iframe src="https://docs.google.com/gview?url=xxx.pdf&embedded=true">

28. 如何在划词选择的文本上添加右键菜单

  • 监听 mouseup 事件,判断是否有选中文本(window.getSelection().toString().trim() 非空)。
  • 创建自定义右键菜单(div 模拟),通过 event.clientX event.clientY 定位,阻止默认右键事件(event.preventDefault() ),点击菜单项执行对应操作,操作完隐藏菜单。

29. 富文本里面,是如何做到划词的

  • 富文本编辑器(如 Quill、Slate 等)一般基于 contenteditable 实现。
  • 监听编辑器容器的 mouseupselectionchange 事件,利用 window.getSelection() 获取选区信息(范围、文本等),结合编辑器内部文档模型(如 Quill 的 Delta ,Slate 的节点树 ),确定选中文本在富文本内容里的位置、关联节点,进而做高亮、操作等处理。

30. 如何做好前端监控方案

  • 错误监控:用 window.onerror window.addEventListener('unhandledrejection' 捕获 JS 错误、未处理 Promise rejection ,上报错误信息(栈、消息、URL 等)。
  • 性能监控:通过 Performance APIperformance.getEntries() 等)采集首屏时间、白屏时间、资源加载耗时,计算并上报性能指标。
  • 用户行为监控:监听点击、路由变化、AJAX 请求等事件,记录操作路径、交互内容,用于分析流程、复现问题。
  • 上报与存储:将监控数据通过 fetchsendBeacon 上报到服务端,服务端存储(如用 Elasticsearch ),配合可视化平台(Grafana 等)展示分析。

31. 如何标准化处理线上用户反馈的问题

  • 统一收集渠道:搭建反馈平台(如页面内嵌表单、客服系统对接),规范用户提交入口,方便集中收集。
  • 信息结构化:要求用户反馈时填写版本号、操作路径、设备信息(浏览器、系统)、问题描述、截图/录屏,前端可自动采集部分信息(如 navigator.userAgent 、当前 URL )。
  • 分类与流转:后端接收后按问题类型(功能异常、性能差、UI 问题等)分类,分配给对应研发/运维处理,记录处理状态(待处理、处理中、已解决),同步给用户。
  • 复盘与优化:定期汇总反馈问题,分析高频问题根因,推动产品迭代优化,形成闭环。

32. px 如何转为 rem

  • 原理rem 是相对根元素(html )字体大小的单位。先设置 htmlfont - size (如基于设计稿宽度,750px 设计稿设 font - size: 75px ,即 1rem = 10px )。
  • 手动转换:写样式时,按设计稿 px 值除以基准值(如 10 )得到 rem 值,width: 150pxwidth: 1.5rem
  • 自动化工具:用 PostCSS 插件(postcss - px - to - rem ),配置基准值,构建时自动将 pxrem ;或在前端框架(Vue、React )中结合 webpack 配置 loader 处理。

33. 浏览器有同源策略,但是为何cdn请求资源的时候不会有跨域限制

  • 同源策略限制的是脚本(如 JS 发起 AJAX 、fetch )的跨域读写操作。
  • CDN 资源(如 JS 、CSS 、图片)是通过标签(<script> <link> <img> 等)加载,属于浏览器“非脚本主动读写”的资源引入,这类标签的跨域加载默认被允许(浏览器对其有特殊处理,不触发同源策略的限制校验 ),但脚本不能直接读取这些资源的内容(如 JS 不能通过 XMLHttpRequest 读 CDN 上 JS 文件源码 )。

34. c

http://www.xdnf.cn/news/1351261.html

相关文章:

  • 浮点数比较的致命陷阱与正确解法(精度问题)
  • 【Linux】深度学习Linux下的包管理器yum/apt
  • 自动化知识工作AI代理的工程与产品实现
  • 文献阅读笔记【物理信息神经网络】:Physics-informed neural networks: A deep learning framework...
  • 深入理解 Linux 系统文件 I/O:从 open 到重定向的底层逻辑》
  • CA6150主轴箱系统设计cad+设计说明书
  • Spring:IOC(控制反转 )、DI(依赖注入 )、AOP(通知类型、事务、拦截器)
  • 博士招生 | 美国圣地亚哥州立大学 Yifan Zhang 课题组博士招生,AI 安全领域顶尖平台等你加入!
  • ​崩坏世界观中的安全漏洞与哲学映射:从渗透测试视角解构虚拟秩序的脆弱性​
  • lanczso算法中的额外正交化代码解释
  • Linux问答题:分析和存储日志
  • Leetcode—931. 下降路径最小和【中等】
  • 告别静态网页:我用Firefly AI + Spline,构建次世代交互式Web体验
  • 同类软件对比(一):Visual Studio(IDE) VS Visual Studio Code
  • 支持电脑课程、游戏、会议、网课、直播录屏 多场景全能录屏工具
  • LeetCode 448.找到所有数组中消失的数字
  • Ubuntu通过 systemd 管理 gpt4free,需为其创建 g4f.service 文件,定义服务的启动、停止等操作(未实践)
  • 97. 小明逛公园,Floyd 算法,127. 骑士的攻击,A * 算法
  • SQL注入1----(sql注入原理)
  • csrf漏洞学习笔记
  • 【KO】前端面试三
  • RobotFramework介绍与使用
  • 改华为智能插座为mqtt本地控制
  • 计算机视觉工程师业务场景题:智能推荐视频封面
  • ros 消息类型与查阅相关内容
  • Redis面试精讲 Day 28:Redis云原生部署与Kubernetes集成
  • 鸿蒙中CPU活动分析:CPU分析
  • Java—— 动态代理
  • 【Linux网络编程】分布式Json-RPC框架 - 项目设计
  • UAD详解