vite相关面试题
Webpack 和 Vite 是两种流行的 JavaScript 构建工具,它们在设计理念、工作原理和使用场景上有一些显著的区别:
设计理念
Webpack:
捆绑工具:Webpack 是一个模块打包器,主要目的是将不同类型的资源(JavaScript、CSS、图片等)捆绑成一个或多个打包文件。
配置驱动:Webpack 配置较为复杂,需要详细配置才能达到最佳效果,尤其是在大规模项目中。
Vite:
开发工具:Vite 专注于开发阶段的高效、快速的热更新和模块解析。
约定优于配置:Vite 提供了一些默认配置,用户不需要大量配置即可上手,适合快速开发和原型设计。
工作原理
Webpack:
打包和编译:Webpack 在开发和生产环境中都会对所有资源进行打包和编译。它使用了一个复杂的依赖图,从入口文件开始,递归地解析和打包所有依赖。
代码分割:Webpack 支持代码分割,通过动态导入(dynamic import)实现按需加载。
Vite:
原生 ES 模块:Vite 利用浏览器原生支持 ES 模块的能力,在开发阶段无需打包,通过按需加载模块来加快启动速度。
轻 ...
小程序面试
基础知识什么是微信小程序?它的基本架构是怎样的?
答:微信小程序是由微信团队提供的一种新的开放能力,开发者可以快速开发一个小程序。小程序的基本架构包括以下几个部分:
页面:由WXML(视图层)、WXSS(样式层)和JavaScript(逻辑层)组成。
App:整个小程序的入口文件,包含app.json(全局配置)、app.js(全局逻辑)、app.wxss(全局样式)。
配置文件:project.config.json,用于项目的配置。
其他文件:如图片、字体、其他静态资源等。
小程序的生命周期有哪些?每个阶段的主要作用是什么?
答:
App生命周期:
onLaunch:小程序初始化时触发,全局只触发一次。
onShow:小程序启动或从后台进入前台显示时触发。
onHide:小程序从前台进入后台时触发。
页面生命周期:
onLoad:页面加载时触发。
onShow:页面显示时触发。
onReady:页面初次渲染完成时触发。
onHide:页面隐藏时触发。
onUnload:页面卸载时触发。
小程序的页面通信方式有哪些?
答:小程序页面之间的通信方式包括:
全局 ...
2025-前端面试总结
微前端技术选型优缺点比较
为什么要在项目中引入微前端
qiankun的实现原理,微前端环境如何隔离
qiankun的css隔离原理
js隔离原理
设计一个沙箱机制
vite 和 webpack 的区别
前端性能优化方式
单点登录方案
讲一下 Outh2.0
OAuth 2.0 是一种授权框架,用于让应用程序可以安全地访问用户资源,而无需直接处理用户的凭据(如用户名和密码)。它提供了一种机制,使第三方应用能够访问用户的资源,并在授权的范围内操作,而无需用户直接向第三方提供其凭据。
OAuth 2.0 的核心概念
**授权服务器 (Authorization Server)**:负责验证用户身份,并颁发访问令牌 (Access Token)。授权服务器通常与身份提供者 (Identity Provider) 结合使用,如 Google、Facebook、GitHub 等。
**资源服务器 (Resource Server)**:存储用户的资源,并负责保护这些资源。它验证访问令牌并处理授权请求。
**客户端 (Client)**:请求访问资源的应用程序或服务。客户端可以是第三方应用、 ...
hexo创建博客
hexo部署博客的命令Create a new post1$ hexo new "My New Post"
More info: Writing
Run server1$ hexo server
More info: Server
Generate static files1$ hexo generate
More info: Generating
Deploy to remote sites1$ hexo deploy
More info: Deployment
前端场景题
点击按钮不重复发送请求 一个按钮,用户点击会发送请求,如何做才能在用户反复点击按钮时不重复发送请求?
要防止用户在反复点击按钮时重复发送请求,可以使用以下几种策略:
禁用按钮在发送请求时禁用按钮,直到请求完成。这样可以防止用户在请求未完成前再次点击按钮。
使用节流(Throttle)节流函数在特定时间段内只允许触发一次操作,无论用户点击按钮多少次。
使用防抖(Debounce)防抖函数可以确保在一段时间内只执行一次函数。
使用请求状态管理维护请求状态,防止重复发送请求。
总结
禁用按钮:简单直接,适合多数情况。
节流:限制函数调用频率,适用于频繁点击。
防抖:确保函数在最后一次点击后执行一次,适用于短时间内多次点击的情况。
请求状态管理:跟踪请求状态,避免重复请求。
控制请求并发的数量,例如有8个请求需要发送,如何控制同时只能并行发送两个请求要控制请求的并发数量,比如限制同时只能并行发送两个请求,可以使用以下几种方法:
使用并发限制库使用现成的库,如 p-limit 或 async,可以很方便地限制并发请求的数量。
使用 p-limit1npm install p-limit
12 ...
javascript代码输出题
let var constvar变量提升1234567891011121314151617181920function testVar() { var x = 1; if (true) { var x = 2; console.log(x); // 输出什么?2 } console.log(x); // 输出什么?2}function testLet() { let y = 1; if (true) { let y = 2; console.log(y); // 输出什么?2 } console.log(y); // 输出什么?1}testVar();testLet();
const定义数据的不可变12345678910111213141516const z = 1;try { z = 2; // 会发生什么?} catch (e) { console.log(e.message); // 输出什么?}const obj ...
算法分类笔记
排序算法
冒泡排序、选择排序、插入排序、归并排序、快速排序、堆排序等
排序算法有很多种,根据它们的特性和适用场景可以分为几大类。
比较排序算法
冒泡排序 (Bubble Sort)
描述:重复地遍历列表,比较相邻的元素并交换它们,如果它们的顺序错误。遍历列表直到没有需要交换的元素为止。
时间复杂度:O(n^2)
空间复杂度:O(1)
选择排序 (Selection Sort)
描述:每次从未排序部分中选出最小(或最大)的元素,将其放在已排序部分的末尾。
时间复杂度:O(n^2)
空间复杂度:O(1)
插入排序 (Insertion Sort)
描述:构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。
时间复杂度:O(n^2)
空间复杂度:O(1)
归并排序 (Merge Sort)
描述:使用分治法将数组分成两个子数组,分别排序,然后合并这两个子数组以得到最终的排序结果。
时间复杂度:O(n log n)
空间复杂度:O(n)
快速排序 (Quick Sort)
描述:选择一个基准元素,将数组分为小于基准和大于基准的两部分,递归地 ...
PAT项目
user–客户使用端
聊天页面
选择不同的AI模型进入,然后进行聊天,左侧的页面可以设置参数,
backend–策略模型使用
admin–用户运营后台项目管理
左侧固定的导航栏,右侧是表格,表格上面是tab切换,设置了模糊搜索,右侧有一个固定按钮
PAT项目
财务项目
AI-partner
111
chats进入就是谷歌登录
代码输出题
数据类型instanceof实现方式:原型链检测是否是某个构造函数的实例,在原型链的尽头是Object.prototype,这是所有对象的原型。
1234567891011121314function myInstanceOf(obj,constructor){ if(obj===null||typeof(obj)!=='object'||typeof(constructor)!=='function'){ return false; } let proto=Object.getPrototypeOf(obj); while(proto!==null){ if(proto===constructor){ return true; } proto=Object.getPrototypeOf(ptroto); } return false; }
...
小米实习面经
HTML语义化新标签webworkerspostmessage
onmessage
websocket一次连接
WebSocket 协议本身并没有内置的短线重连机制,但可以通过在客户端实现相应的重连逻辑来实现短线重连。通常,客户端会在连接断开后尝试重新连接到 WebSocket 服务器,并且在一定的策略下进行重连,以确保连接的稳定性和可靠性。
以下是一种简单的 WebSocket 短线重连的实现方式:
重连策略:客户端可以实现一个重连策略,决定在何种情况下进行重连,以及重连的间隔时间。例如,可以在连接断开后立即进行第一次重连,然后采用指数退避的方式进行后续重连,即每次重连间隔时间逐渐增加。
监听连接状态:客户端需要监听 WebSocket 连接的状态,包括连接成功、连接断开、连接错误等。当连接断开时,触发重连逻辑。
重连逻辑:当连接断开时,客户端根据重连策略进行重连。通常,客户端会尝试重新连接到服务器,并且在连接失败后等待一定的时间后再次尝试重连。可以根据实际情况设定重连的最大次数,避免无限重连造成资源浪费。
断线检测:客户端可以周期性地向服务器发送心跳包,以检测连接是否断开。 ...