前端面试题(二)
6. 深入 JavaScript
-
this关键字的指向是什么?this的指向是在函数执行时决定的。默认情况下,非严格模式下this指向全局对象(浏览器中为window),严格模式下this为undefined。在对象方法中,this通常指向调用该方法的对象。而在事件处理器、构造函数等场景中,this的指向不同。可以通过call、apply和bind方法显式改变this的指向。
-
什么是原型链?
- 每个 JavaScript 对象都有一个内部属性
[[Prototype]](在现代浏览器中可以通过__proto__访问),它指向该对象的原型。原型链就是对象通过[[Prototype]]层层向上寻找属性或方法,直到找到或到达原型链的顶端(即null)。
- 每个 JavaScript 对象都有一个内部属性
-
如何实现 JavaScript 的继承?
- 常见的继承方法有:
- 原型继承:通过将子类构造函数的
prototype指向父类的实例。 - 组合继承:结合构造函数和原型链继承。
- ES6 class 继承:通过
class和extends关键字实现继承。
- 原型继承:通过将子类构造函数的
- 常见的继承方法有:
-
什么是事件循环(Event Loop)?
- JavaScript 是单线程语言,事件循环是用于处理异步操作的机制。事件循环从任务队列中获取任务执行,任务分为微任务(Microtask,如
Promise)和宏任务(Macrotask,如setTimeout)。事件循环优先执行当前的微任务队列,执行完后再处理宏任务。
- JavaScript 是单线程语言,事件循环是用于处理异步操作的机制。事件循环从任务队列中获取任务执行,任务分为微任务(Microtask,如
7. 网络与性能优化
-
什么是浏览器的回流(Reflow)和重绘(Repaint)?
- 回流 是当元素的尺寸、布局或位置变化时,浏览器重新计算布局的过程,代价较大。重绘 是元素的外观样式(如颜色)发生变化时,浏览器重新绘制的过程,相比回流,重绘的代价较小。
- 优化建议包括减少对 DOM 的频繁操作、使用
transform和opacity来避免触发回流、批量更新 DOM。
-
如何减少页面加载时间?
- 代码分割:通过按需加载减少初始加载体积,如使用 Webpack 的代码分割功能。
- 懒加载:仅在需要时加载图片和其他资源。
- 缓存:利用 HTTP 缓存(如
Cache-Control、ETag)减少重复资源加载。 - CDN:将静态资源分发到多个地理位置靠近的服务器,提高下载速度。
- 合并和压缩:将 CSS 和 JS 文件合并,减少 HTTP 请求,并压缩代码减少文件体积。
-
解释 HTTP/2 和 HTTP/3 的改进?
- HTTP/2 通过引入二进制帧、多路复用(允许一个连接中同时传输多个请求),以及服务器推送(server push)等优化了 HTTP 性能。
- HTTP/3 则使用了 QUIC 协议,基于 UDP,进一步减少了连接延迟,提高了安全性和速度,尤其在不稳定的网络环境下表现优异。
8. Vue.js 和 React 深入
-
Vue 中的
watch和computed有什么区别?computed是基于依赖的缓存属性,只有依赖的数据变化时,才会重新计算。适合用于有复杂计算的场景。watch是用于监听特定数据的变化,并在变化时执行回调,适合用于响应某些数据变化时执行副作用操作,如调用 API。
-
React 中的
useEffect和useLayoutEffect有什么区别?useEffect在浏览器完成渲染后异步执行,适合处理不影响页面布局的副作用。useLayoutEffect会在 DOM 更新后立即同步执行,适合操作 DOM 或需要提前完成计算的场景。
-
React 中的
key属性的作用是什么?key用于帮助 React 识别哪些元素在列表中发生了变化(如被添加或移除)。有助于提高渲染性能,避免不必要的 DOM 更新。通常应当为key提供唯一的标识符。
9. 安全与防护
-
什么是 XSS(跨站脚本攻击)?如何防御?
- XSS 是攻击者向网页中注入恶意代码,通常通过输入框、URL 参数等传递。防御措施包括:
- 对输入进行转义和过滤(如使用
encodeURIComponent处理 URL 中的参数)。 - 使用 CSP(内容安全策略)限制可以执行的脚本源。
- 对输入进行转义和过滤(如使用
- XSS 是攻击者向网页中注入恶意代码,通常通过输入框、URL 参数等传递。防御措施包括:
-
什么是 CSRF(跨站请求伪造)?如何防御?
- CSRF 是攻击者诱使用户在已登录的情况下向受信任的网站发起非预期的请求。防御措施包括:
- 使用 CSRF token 来验证请求的合法性。
- 使用 SameSite Cookie 标志,限制跨站点的 Cookie 发送。
- CSRF 是攻击者诱使用户在已登录的情况下向受信任的网站发起非预期的请求。防御措施包括:
10. 前端测试与自动化
-
前端如何进行单元测试?
- 使用如 Jest、Mocha 等测试框架进行 JavaScript 函数和组件的单元测试。通过断言库(如 Chai)编写测试用例,确保各模块的输入输出符合预期。
-
什么是端到端测试?
- 端到端测试(E2E testing) 是通过模拟用户操作来测试整个应用程序的功能是否正常,常用工具如 Cypress 或 Selenium。它测试应用的整体流程,而不仅仅是某个独立模块。
相关文章:
前端面试题(二)
6. 深入 JavaScript this 关键字的指向是什么? this 的指向是在函数执行时决定的。默认情况下,非严格模式下 this 指向全局对象(浏览器中为 window),严格模式下 this 为 undefined。在对象方法中,this 通常…...
【C++】stack和queue的使用及模拟实现
stack就是栈的意思,这个结构遵循后进先出(LIFO)的原则,可以将栈想象为一个子弹夹,先进去的子弹后出来。 queue就是队列的意思,这个结构遵循先进先出(FIFO)的原则,可以将对列想象成我们排队买饭的场景,先排…...
MongoDB解说
MongoDB 是一个流行的开源 NoSQL 数据库,它使用了一种被称为文档存储的数据库模型。 与传统的关系型数据库管理系统(RDBMS)不同,MongoDB 不使用表格来存储数据,而是使用了一种更为灵活的格式——JSON 样式的文档。 这…...
问:JAVA中唤醒阻塞的线程有哪些?
在Java中,唤醒阻塞线程的方法有多种,以下是常见的线程唤醒方法。 唤醒方法 使用notify()和notifyAll()方法 synchronized (obj) {obj.notify(); // 唤醒单个等待线程// obj.notifyAll(); // 唤醒所有等待线程 }使用interrupt()方法 Thread thread n…...
Github Webhook触发Jenkins自动构建
1.功能说明 Github Webhook可以触发Jenkins自动构建,通过配置Github Webhook,每次代码变更之后(例如push操作),Webhook会自动通知Jenkins服务器,Jenkins会自动执行预定义的构建任务(如Jenkins …...
ESP32-WROOM-32 [创建AP站点-客户端-TCP透传]
简介 基于ESP32-WROOM-32 开篇(刚买), 本篇讲的是基于固件 ESP32-WROOM-32-AT-V3.4.0.0(内含用户指南, 有AT指令说明)的TCP透传设置与使用 设备连接 TTL转USB线, 接ESP32 板 的 GND,RX2, TX2 指令介绍 注意,下面指…...
新闻文本分类识别系统Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+TensorFlow+Django网页界面
一、介绍 文本分类识别系统。本系统使用Python作为主要开发语言,首先收集了10种中文文本数据集(“体育类”, “财经类”, “房产类”, “家居类”, “教育类”, “科技类”, “时尚类”, “时政类”, “游戏类”, “娱乐类”),然…...
Java使用Map数据结构配合函数式接口存储方法引用
Java使用Map数据结构配合函数式接口存储方法引用 背景 需求中存在这样一直情况 一个国家下面有很多的州 每个州对应的计算日期方法是不同的 这个时候 就面临 可能会有很多if else 为了后期维护尽量还是不想采用这个方式,那么就可以使用策略模式 但是 使用策略带来的…...
LeetCode:2207. 字符串中最多数目的子序列(Java)
目录 2207. 字符串中最多数目的子序列 题目描述: 实现代码与解析: 遍历: 原理思路: 2207. 字符串中最多数目的子序列 题目描述: 给你一个下标从 0 开始的字符串 text 和另一个下标从 0 开始且长度为 2 的字符串 p…...
win10开机自启动方案总汇
win10开机自启动方案总汇 一、开始文件目录添加二、添加注册表启动程序三、服务启动3.1. 将程序注册为服务使用命令行创建服务设置服务启动类型启动服务 3.2. 使用 Windows 服务管理器配置服务3.3. 删除服务 四、定时任务或程序4.1 设置程序自启动(使用任务计划程序…...
【自动驾驶】基于车辆几何模型的横向控制算法 | Stanley 算法详解与编程实现
写在前面: 🌟 欢迎光临 清流君 的博客小天地,这里是我分享技术与心得的温馨角落。📝 个人主页:清流君_CSDN博客,期待与您一同探索 移动机器人 领域的无限可能。 🔍 本文系 清流君 原创之作&…...
微服务--初识MQ
在微服务架构中,MQ(Message Queue,消息队列)作为一种重要的通信机制,扮演着至关重要的角色。 MQ,即消息队列,是一种在不同服务或系统之间传递消息的中间件。它允许消息的发送者(生产…...
车辆识别数据集,图片数量20500,模型已训练200轮
车辆识别数据集(Vehicle Recognition Dataset, VDRD) 摘要 VDRD 是一个专为车辆识别设计的大规模数据集,它包含了20500张不同类型的汽车、货车、公交车以及其他类型车辆的图像。数据集提供了四种车辆类别:汽车、货车、其他车辆和…...
MES系统如何提升制造企业的运营效率和灵活性
参考拓展:苏州稳联-西门子MES系统-赋能智能制造的核心引擎 制造执行系统(MES)在提升制造企业运营效率和灵活性方面发挥着关键作用。 一、MES系统的基本概念和功能 MES系统是连接企业管理层与生产现场的重要桥梁。它主要负责生产调度、资源管理、质量控制等多个方…...
Nexpose 6.6.270 发布下载,新增功能概览
Nexpose 6.6.270 for Linux & Windows - 漏洞扫描 Rapid7 Vulnerability Management, release Sep 18, 2024 请访问原文链接:https://sysin.org/blog/nexpose-6/,查看最新版。原创作品,转载请保留出处。 作者主页:sysin.or…...
【数据库】sqlite
文章目录 1. 基本概述2. 主要特点3. 应用场景4. 优缺点5. 基本使用示例6. 在编程语言中的使用连接到 SQLite 数据库(如果文件不存在会自动创建)创建表插入数据提交事务查询数据关闭连接 7. 总结 SQLite 是一个轻量级的关系型数据库管理系统(R…...
详解 C++中的模板
目录 前言 一、函数模板 1.定义 2.函数模板的实现 3.模板函数的实例化 4.模板参数的省略 1.函数模板的实参推导 2.类模板的实参推导 3.默认模板参数 4.特殊情况:无法推导的模板 5.推导失败的情况 二、类模板 1.概念和定义 2.类模板定义 3.类模板的使用 4.类模板…...
基于DAMODEL——Faster-RCNN 训练与测试指南
Faster-RCNN 训练与测试指南 前言 今天我们要来实现一个经典的目标检测模型:Faster-Rcnn。我们使用DAMODEL云平台来实现,这是个很强大的云端平台,功能众多,你可以投你所好去进行你想做的事情。 1. 环境与工具准备 1.1 远程连接…...
考研数据结构——C语言实现冒泡排序
冒泡排序是一种简单的排序算法,它重复地遍历要排序的列表,比较每对相邻元素,并在顺序错误的情况下交换它们。这个过程重复进行,直到没有需要交换的元素,这意味着列表已经排序完成。冒泡排序的名字来源于较小的元素会逐…...
labview更换操作系统后打开原VI闪退
labview更换操作系统后打开原VI闪退 问题描述: Windows11由家庭版更换为专业版后,重新安装labview2021,打开原来的项目,项目管理器可以正常打开,但是打开VI却闪退,并报错如下 出现这种原因主要是labview在…...
技术深度解析:Fritzing电路仿真与自动布线实现原理
技术深度解析:Fritzing电路仿真与自动布线实现原理 【免费下载链接】fritzing-app Fritzing desktop application 项目地址: https://gitcode.com/gh_mirrors/fr/fritzing-app Fritzing作为一款开源的电子设计自动化工具,其核心价值在于将复杂的电…...
基于51单片机与HX711的智能电子秤Proteus仿真与计价系统实现
1. 项目背景与核心功能 最近在整理实验室材料时,发现很多同学对电子秤项目的仿真实现存在困惑。这个基于51单片机和HX711的智能电子秤系统,不仅能够完成基础称重,还能实现商品计价、LCD显示等完整超市电子秤功能。我在实际调试中发现…...
Linux下Conda+R+RStudio环境配置全攻略:从零搭建高效数据分析平台
1. 为什么选择Conda管理R环境? 很多数据分析师习惯直接在系统里安装R和R包,但很快就会遇到版本冲突的麻烦。比如你需要安装一个要求R 4.3.0的包,但系统里装的是R 4.2.0,更糟的是其他所有包都是基于4.2.0编译的。这时候conda的价值…...
信号分析避坑指南:MATLAB里算相位差,为什么你的结果总是不准?
MATLAB相位差计算避坑指南:从频谱泄漏到四象限陷阱的深度解析 在信号处理领域,相位差计算看似简单却暗藏玄机。许多工程师在使用MATLAB进行相位差分析时,经常会遇到结果跳变、误差过大甚至完全不符合预期的情况。这并非MATLAB的"bug&quo…...
三、从零解析Franka ROS2控制器:以关节位置控制为例
1. Franka机械臂与ROS2控制器基础 如果你刚接触机器人控制,Franka机械臂搭配ROS2绝对是个不错的起点。Franka Emika机械臂以其高精度和易用性著称,而ROS2作为机器人操作系统的最新版本,提供了更强大的实时性和分布式能力。我第一次用Franka做…...
千问3.5-27B效果展示:手写笔记图片→文字转录→知识点归类→复习卡片生成
千问3.5-27B效果展示:手写笔记图片→文字转录→知识点归类→复习卡片生成 1. 模型核心能力概览 Qwen3.5-27B作为一款视觉多模态理解模型,在知识处理领域展现出独特优势。它不仅能理解图片内容,还能对信息进行深度加工。本次重点展示其从手写…...
5步精通OpenPose:从环境评估到人体姿态检测全流程
5步精通OpenPose:从环境评估到人体姿态检测全流程 【免费下载链接】openpose 项目地址: https://gitcode.com/gh_mirrors/op/openpose 环境评估:系统兼容性与硬件要求 在开始OpenPose的安装之旅前,需要确保你的系统环境满足以下条件…...
WeKnora镜像免配置教程:支持知识库版本管理与灰度问答切换机制
WeKnora镜像免配置教程:支持知识库版本管理与灰度问答切换机制 1. 引言:告别AI幻觉,让知识问答精准可控 你有没有遇到过这种情况?你给AI看了一份产品说明书,然后问它一个具体参数,结果它回答得头头是道&a…...
如何用AI提升视频画质?Video2X全攻略:从技术原理到实践应用
如何用AI提升视频画质?Video2X全攻略:从技术原理到实践应用 【免费下载链接】video2x A lossless video/GIF/image upscaler achieved with waifu2x, Anime4K, SRMD and RealSR. Started in Hack the Valley II, 2018. 项目地址: https://gitcode.com/…...
海康MVS安装注意事项
⒈目的 掌握海康MVS相机配置软件安装技巧,以便在MvCameraControlNet的演示案例运行时不报错(通常为找不到MvCameraControl.dll),问题为MVS安装时无法对安装环境进行配置。 ⒉安装资源 在海康机器人官网上:海康机器人…...
