小程序面试
基础知识什么是微信小程序?它的基本架构是怎样的?
答:微信小程序是由微信团队提供的一种新的开放能力,开发者可以快速开发一个小程序。小程序的基本架构包括以下几个部分:
页面:由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进入就是谷歌登录
快手面试
JavaScript 中的数组对象提供了一系列方法来执行增加、删除、修改和查询操作。这些方法中,有些会直接修改原数组,而另一些则不会改变原数组,而是返回一个新数组或其他值。下面是常用的数组API及其对原数组的影响:
增加元素
push() - 在数组的末尾添加一个或多个元素,并返回新的长度。这个方法会修改原数组。
unshift() - 在数组的开头添加一个或多个元素,并返回新的长度。这个方法会修改原数组。
splice() - 从数组中添加/删除项目,然后返回被删除的项目。这个方法会修改原数组。
删除元素
pop() - 删除数组的最后一个元素并返回删除的元素。这个方法会修改原数组。
shift() - 删除数组的第一个元素并返回删除的元素。这个方法会修改原数组。
splice() - 同上,可以用于删除元素,并会修改原数组。
修改元素
splice() - 除了添加和删除,还可以用于替换元素,会修改原数组。
直接索引赋值 - 使用索引直接修改数组,如 arr[0] = 'new value';,会修改原数组。
查询元素
indexOf() - 返回在 ...
美团面试
123456789101112131415161718192021222324// server1 addapp.send('eventName', args);app.on('eventName2', (args)=>{app.on('eventName',(args)=>{ add();})app.send('add',[a,b]);app.on('a',(args)=>{ return args;} );});// server2 app.send('eventName2', args);app.on('eventName', (args)=>{});app.on('add',([a,b])=>{app.send('a',add(a,b))})function add(a ...
代码输出题
数据类型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; }
...