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

前端面试题(二)

6. 深入 JavaScript

  • this 关键字的指向是什么?

    • this 的指向是在函数执行时决定的。默认情况下,非严格模式下 this 指向全局对象(浏览器中为 window),严格模式下 thisundefined。在对象方法中,this 通常指向调用该方法的对象。而在事件处理器、构造函数等场景中,this 的指向不同。可以通过 callapplybind 方法显式改变 this 的指向。
  • 什么是原型链?

    • 每个 JavaScript 对象都有一个内部属性 [[Prototype]](在现代浏览器中可以通过 __proto__ 访问),它指向该对象的原型。原型链就是对象通过 [[Prototype]] 层层向上寻找属性或方法,直到找到或到达原型链的顶端(即 null)。
  • 如何实现 JavaScript 的继承?

    • 常见的继承方法有:
      • 原型继承:通过将子类构造函数的 prototype 指向父类的实例。
      • 组合继承:结合构造函数和原型链继承。
      • ES6 class 继承:通过 classextends 关键字实现继承。
  • 什么是事件循环(Event Loop)?

    • JavaScript 是单线程语言,事件循环是用于处理异步操作的机制。事件循环从任务队列中获取任务执行,任务分为微任务(Microtask,如 Promise)和宏任务(Macrotask,如 setTimeout)。事件循环优先执行当前的微任务队列,执行完后再处理宏任务。

7. 网络与性能优化

  • 什么是浏览器的回流(Reflow)和重绘(Repaint)?

    • 回流 是当元素的尺寸、布局或位置变化时,浏览器重新计算布局的过程,代价较大。重绘 是元素的外观样式(如颜色)发生变化时,浏览器重新绘制的过程,相比回流,重绘的代价较小。
    • 优化建议包括减少对 DOM 的频繁操作、使用 transformopacity 来避免触发回流、批量更新 DOM。
  • 如何减少页面加载时间?

    • 代码分割:通过按需加载减少初始加载体积,如使用 Webpack 的代码分割功能。
    • 懒加载:仅在需要时加载图片和其他资源。
    • 缓存:利用 HTTP 缓存(如 Cache-ControlETag)减少重复资源加载。
    • CDN:将静态资源分发到多个地理位置靠近的服务器,提高下载速度。
    • 合并和压缩:将 CSS 和 JS 文件合并,减少 HTTP 请求,并压缩代码减少文件体积。
  • 解释 HTTP/2 和 HTTP/3 的改进?

    • HTTP/2 通过引入二进制帧、多路复用(允许一个连接中同时传输多个请求),以及服务器推送(server push)等优化了 HTTP 性能。
    • HTTP/3 则使用了 QUIC 协议,基于 UDP,进一步减少了连接延迟,提高了安全性和速度,尤其在不稳定的网络环境下表现优异。

8. Vue.js 和 React 深入

  • Vue 中的 watchcomputed 有什么区别?

    • computed 是基于依赖的缓存属性,只有依赖的数据变化时,才会重新计算。适合用于有复杂计算的场景。watch 是用于监听特定数据的变化,并在变化时执行回调,适合用于响应某些数据变化时执行副作用操作,如调用 API。
  • React 中的 useEffectuseLayoutEffect 有什么区别?

    • useEffect 在浏览器完成渲染后异步执行,适合处理不影响页面布局的副作用。useLayoutEffect 会在 DOM 更新后立即同步执行,适合操作 DOM 或需要提前完成计算的场景。
  • React 中的 key 属性的作用是什么?

    • key 用于帮助 React 识别哪些元素在列表中发生了变化(如被添加或移除)。有助于提高渲染性能,避免不必要的 DOM 更新。通常应当为 key 提供唯一的标识符。

9. 安全与防护

  • 什么是 XSS(跨站脚本攻击)?如何防御?

    • XSS 是攻击者向网页中注入恶意代码,通常通过输入框、URL 参数等传递。防御措施包括:
      • 对输入进行转义和过滤(如使用 encodeURIComponent 处理 URL 中的参数)。
      • 使用 CSP(内容安全策略)限制可以执行的脚本源。
  • 什么是 CSRF(跨站请求伪造)?如何防御?

    • CSRF 是攻击者诱使用户在已登录的情况下向受信任的网站发起非预期的请求。防御措施包括:
      • 使用 CSRF token 来验证请求的合法性。
      • 使用 SameSite Cookie 标志,限制跨站点的 Cookie 发送。

10. 前端测试与自动化

  • 前端如何进行单元测试?

    • 使用如 JestMocha 等测试框架进行 JavaScript 函数和组件的单元测试。通过断言库(如 Chai)编写测试用例,确保各模块的输入输出符合预期。
  • 什么是端到端测试?

    • 端到端测试(E2E testing) 是通过模拟用户操作来测试整个应用程序的功能是否正常,常用工具如 CypressSelenium。它测试应用的整体流程,而不仅仅是某个独立模块。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 观测云全面支持 OaC,通过 Terraform 管理您的可观测性
  • 【Pyside】pycharm2024配置conda虚拟环境
  • 我与Linux的爱恋:进程地址空间
  • stable diffusion 神经网络插件 controlnet 的安装,很详细
  • Linux下如何实现不用加路径调用启动脚本
  • 执行网络攻击模拟的 7 个步骤
  • AIGC专栏15——CogVideoX-Fun详解 支持图文生视频 拓展CogVideoX到256~1024任意分辨率生成
  • 不在同一局域网怎么远程桌面?非局域网环境下,实现远程桌面访问的5个方法分享!
  • WebGL光照与材质
  • uniApp 解决uniapp三方地图获取位置接口的请求次数限制问题,分别提供 Android 和 iOS 的实现方法(原生插件获取)
  • Android TV RecyclerView列表获得焦点左右换行
  • 每天五分钟玩转深度学习pytorch:L1正则化和L2正则化的应用
  • Xcdoe快速更新安装的小Tips
  • 超详细超实用!!!AI编程之cursor编写设计模式迪米特法则实例(八)
  • 【高级数据结构】树状数组
  • echarts的各种常用效果展示
  • golang中接口赋值与方法集
  • idea + plantuml 画流程图
  • Java编程基础24——递归练习
  • Java程序员幽默爆笑锦集
  • Java方法详解
  • JS基础之数据类型、对象、原型、原型链、继承
  • Magento 1.x 中文订单打印乱码
  • Python3爬取英雄联盟英雄皮肤大图
  • webpack入门学习手记(二)
  • 不上全站https的网站你们就等着被恶心死吧
  • 产品三维模型在线预览
  • 适配mpvue平台的的微信小程序日历组件mpvue-calendar
  • 小程序上传图片到七牛云(支持多张上传,预览,删除)
  • 教程:使用iPhone相机和openCV来完成3D重建(第一部分) ...
  • ​Base64转换成图片,android studio build乱码,找不到okio.ByteString接腾讯人脸识别
  • ​你们这样子,耽误我的工作进度怎么办?
  • #1015 : KMP算法
  • (1)Jupyter Notebook 下载及安装
  • (C语言)编写程序将一个4×4的数组进行顺时针旋转90度后输出。
  • (C语言)输入一个序列,判断是否为奇偶交叉数
  • (java版)排序算法----【冒泡,选择,插入,希尔,快速排序,归并排序,基数排序】超详细~~
  • (二)延时任务篇——通过redis的key监听,实现延迟任务实战
  • (附源码)springboot“微印象”在线打印预约系统 毕业设计 061642
  • (附源码)ssm基于jsp的在线点餐系统 毕业设计 111016
  • (更新)A股上市公司华证ESG评级得分稳健性校验ESG得分年均值中位数(2009-2023年.12)
  • (离散数学)逻辑连接词
  • (一)ClickHouse 中的 `MaterializedMySQL` 数据库引擎的使用方法、设置、特性和限制。
  • (已解决)vue+element-ui实现个人中心,仿照原神
  • (转)PlayerPrefs在Windows下存到哪里去了?
  • (转)创业的注意事项
  • (转)可以带来幸福的一本书
  • ***监测系统的构建(chkrootkit )
  • . NET自动找可写目录
  • .NET 8.0 发布到 IIS
  • .net Application的目录
  • .NET Micro Framework初体验
  • .NET 命令行参数包含应用程序路径吗?
  • .NET/C# 获取一个正在运行的进程的命令行参数
  • .NET编程——利用C#调用海康机器人工业相机SDK实现回调取图与软触发取图【含免费源码】