首页
学习
活动
专区
圈层
工具
发布

美团前端高频面试题集锦_2023-03-15

使用 JSX图片在回答问题之前,我首先解释下什么是 JSX 吧。...里面proxy则是关于代理的配置,该属性为对象的形式,对象中每一个属性就是一个代理的规则匹配属性的名称是需要被代理的请求路径前缀,一般为了辨别都会设置前缀为/api,值为对应的代理匹配规则,对应如下:target...inline-block; vertical-align: middle;}nextTicknextTick 可以让我们在下次 DOM 更新循环结束之后执行延迟回调,用于获得更新后的 DOMnextTick主要使用了宏任务和微任务...: 获取状态modules: 将state分成多个modules,便于管理状态 - statestate保存应用状态export default new Vuex.Store({ state: { counter...长轮询和短轮询比起来,它的优点是明显减少了很多不必要的 http 请求次数,相比之下节约了资源。长轮询的缺点在于,连接挂起也会导致资源的浪费。SSE 的基本思想: 服务器使用流信息向服务器推送信息。

1.1K40

【前端技术丨主题周】漫谈前端性能本质 突破React应用瓶颈

Event Loop: 它会“监视”(轮询)call stack 是否为空,call stack 为空时将会由 Event Loop 推送 next tick 中的任务到 call stack 中。...设想常见的一个场景:如果我们需要渲染一个很长的列表,列表由十万条数据组成,那么相比一次性渲染全部数据内容,我们可以将数据分段,使用 setTimeout API 去分步处理,构建列表的工作就被分成了不同的子任务在浏览器中执行...所以,浏览器主线程被 React 更新状态任务占据的时候,用户与浏览器进行任何的交互都不能得到反馈,只有等到任务结束,才能突然得到浏览器的响应。...在这个例子中,我们可以设置 NUMBER_OF_BLOCK 的值为 100000,将其变为一个“复杂”的网页。 点击按钮,触发 setState,页面开始更新。...Redux和Web Worker 既然 React 可以接入 Web Worker,状态管理工具 Redux 当然也能借鉴这样的思想,将 Redux 中 reducer 复杂的纯计算过程放在 worker

1.2K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    漫谈前端性能本质 突破React应用瓶颈

    Event Loop:它会“监视”(轮询)call stack是否为空,callstack为空时将会由Event Loop推送next tick中的任务到callstack中。...设想常见的一个场景:如果我们需要渲染一个很长的列表,列表由十万条数据组成,那么相比一次性渲染全部数据内容,我们可以将数据分段,使用setTimeout API去分步处理,构建列表的工作就被分成了不同的子任务在浏览器中执行...所以,浏览器主线程被React更新状态任务占据的时候,用户与浏览器进行任何的交互都不能得到反馈,只有等到任务结束,才能突然得到浏览器的响应。...在这个例子中,我们可以设置NUMBER_OF_BLOCK的值为100000,将其变为一个“复杂”的网页。点击按钮,触发setState,页面开始更新。...为了更加高效地维护React应用的数据状态,以Redux为代表的数据管理模式横空出世。

    1.4K10

    使用React和Node.js制作音乐类App的一次总结

    React V16版本的Fiber架构,跟之前的区别?...在http通信时,如果要将返回的数据setState,那么请注意setState的同异步场景,准确把控渲染和设置状态时间差逻辑,特别是多个请求,可以使用`promise.all 或者在setState的回调函数中发送请求...比如下面这段代码,需要发送10个请求并且将返回的数据整合,再把数组中的10个promise对象的值取出,设置成状态重新渲染。...` 本次构建过程中涉及到的一些面试题 http的ajax轮询 长轮询 keep-alive 和webSocket的区别 如何将一个元素从页面上隐藏 根据场景需求,配合React的Fiber和diff算法机制使用...高阶函数,高阶组件,函数柯里化的使用 如何在一个请求回来数据并且在设置状态成功后发送下面的请求(优雅发送请求,平铺数据)?

    2.5K10

    JavaScript执行机制

    将检测到状态变更时,如果设置有回调函数,异步线程就产生状态变更事件,将这个回调再放入事件队列中再由JavaScript引擎执行。...第二轮loop,清空完微任务队列之后取出宏任务队列中的children5所属宏任务进行执行,输出children5,然后将第一轮中的Promise状态置为完成态,事件处理线程会将其对应的.then的回调函数放入到对应的微任务队列中...如果轮询阶段变为空闲状态,并且脚本使用 setImmediate() 后被排列在队列中,则事件循环可能继续到 检查 阶段而不是等待。...它使用一个 libuv API 来安排回调在 轮询 阶段完成后执行。通常,在执行代码时,事件循环最终会命中轮询阶段,在那等待传入连接、请求等。...但是,如果回调已使用 setImmediate()调度过,并且轮询阶段变为空闲状态,则它将结束此阶段,并继续到检查阶段而不是继续等待轮询事件。

    1.2K33

    LLM 系列(十四):解读 Deep Research

    其操作由一个迭代循环定义,该循环将内部推理与外部工具使用紧密耦合,这一过程由复杂的状态和记忆管理系统实现。...这种紧密的耦合是 ReAct 强大的关键,推理(思考)将工具使用置于大的上下文背景下,防止了随机或不相关的行动。...• 有状态的 API 架构:OpenAI 的平台,以其现已弃用的 Assistants API 及其后继者 Responses API 为例,均提供了这种方法的典型案例。...API 管理 Run 的生命周期(例如,queued、in_progress、requires_action、completed),实现了异步执行,我们可以启动一个长期运行的任务并轮询其状态,而无需维持一个开放的连接...• 异步任务管理器: 对于可能需要几分钟的任务,例如一份全面的研究报告,即使是基于轮询的 API 模型也可能很繁琐。谷歌为其 deep research 功能采用的方法是一种新的 异步任务管理器。

    1.4K21

    React组件设计实践总结04 - 组件的思维

    官方的定义是: 是指一种在 React 组件之间使用一个值为函数的 prop 在 React 组件间共享代码的简单技术 React 并没有限定任何 props 的类型, 所以 props 也可以是函数形式...这是一个锁定机制, 后端一般使用类似心跳机制来维护这个’锁’, 这个锁可以显式释放,也可以在超过一定时间没有激活时自动释放,比如页面关闭. 所以前端通常会使用轮询机制来激活锁....分割抽离逻辑和 UI, 切割成更小粒度的组件 hooks 如何解决: Hooks 允许您根据相关部分(例如设置订阅或获取数据)将一个组件分割成更小的函数,而不是强制基于生命周期方法进行分割。...使用 render props 抽象 Modal 组件的状态 react-confirm How to use React’s new Context API to easily manage modals...Context 在 React 应用中使用非常频繁, 新的Context API也非常易用. Context 常用于以下场景: 共享那些被认为对于一个’组件树’而言是“全局”的数据.

    2.7K20

    151. 精读《@umijsuse-request》源码

    1 引言 与组件生命周期绑定的 Utils 非常适合基于 React Hooks 来做,比如可以将 “发请求” 这个功能与组件生命周期绑定,实现一些便捷的功能。...轮询请求:设置 options.pollingInterval 则进入轮询模式,可通过 run / cancel 开始与停止轮询。...并行请求:设置 options.fetchKey 可以对请求状态隔离,通过 fetches 拿到所有请求状态。 请求防抖:设置 options.debounceInterval 开启防抖。...手动触发请求 将触发取数的函数抽象出来并在 CustomHook 中 return。 轮询请求 在取数结束后设定 setTimeout 重新触发下一轮取数。...加载延迟 有加载延迟时,可以先将 loading 设置为 false,等延迟到了再设置为 true,如果此时取数提前完毕则销毁定时器,实现无 loading 取数。

    1K30

    轻松构建前端应用:前端开发工具的精髓 | 开源专题 No.54

    、平台和 JS 运行时的 Web 标准 API 上的一组开源软件包。...;使用 JSON Web Tokens 时,默认情况下会进行加密 (JWE),算法为 A256GCM; 支持选项卡/窗口同步和会话轮询以支持短期有效会话。...它拥有以下核心优势: 支持插件,只需将插件添加到存储库中即可 默认支持 Node,并且可以通过插件为其他语言提供支持 原生支持工作区,并且其 CLI 充分利用了这一特性 使用类似于 bash 的便携式...shell,使得包脚本在 Windows、Linux 和 macOS 上都能够运行 可以是一个可以以编程方式使用的 Node API (通过@yarnpkg/core) 采用 TypeScript 编写并进行完全类型检查...该项目的核心优势和主要功能包括: 可以理解未分段的 MP4 格式视频 使用 Web Workers 将任务独立线程进行处理 将视频片段转换为 144p 格式 实时渲染画布元素中的帧图像 从片段生成 WebM

    61610

    SSE技术实现与应用:实时状态推送的最佳实践

    本文将介绍我们如何在OnlineImageUpscaler(https://onlineimageupscaler.com)中采用Server-SentEvents(SSE)技术实现实时状态推送,以及这种技术带来的显著优势...实际效果:传统轮询(2秒间隔):平均延迟1-2秒SSE推送:延迟使用单个长连接,相比频繁的轮询请求,大大减少了:网络请求次数服务器处理负载带宽消耗数据对比:轮询(2秒间隔...5.安全性好SSE使用标准HTTP协议,可以:利用现有的认证机制通过HTTPS加密传输使用CORS控制跨域访问️实现方案架构设计在我们的OnlineImageUpscaler平台中,SSE主要用于实时推送图片处理状态...整体架构如下:展开代码语言:TXTAI代码解释用户上传图片↓创建处理任务(返回historyId)↓前端建立SSE连接(/api/realtime/status?...在传统方案中,用户需要:不断刷新页面查看状态或者等待页面自动轮询(浪费资源)使用SSE后:✅用户上传图片后,可以继续浏览其他内容✅处理完成后,立即收到通知✅无需频繁轮询,节省服务器资源✅体验流畅,接近原生应用实际效果用户体验提升

    22610

    React 并发原理

    ❞ 使用 useTransition 首先,确保你的项目已经升级到 React 18 或更高版本。 并且,在你的组件的顶层调用useTransition,以将某些状态更新标记为过渡。...然而要注意的是,startTransition 「并不是负责将任务分解为较小的任务」 首先,让我们测试一下上面所说的是否确实正确。...❝把控制权让给主线程意味着中断渲染过程,并让浏览器有机会执行其他任务,例如渲染、接收用户输入等。 ❞ React 如何将控制权让给主线程 有一些浏览器 API 允许 React 实现这一点。...这正是 React 如何使用 MessageChannel API 来安排在浏览器执行了一些基本任务后运行函数的方式: // 创建一个新的 MessageChannel const channel =...为什么会发生这种情况,尽管已经使用了 startTransition? 最初的问题是多个每个都需要 1 毫秒的较小任务会同步渲染(总渲染时间为 1ms * 小任务总数)。

    76630

    React 18 如何提升应用性能

    关于为何以50 毫秒为基准,我们在之前的浏览器之性能指标-TBT中介绍了 RAIL 性能模型. 这里就不再过多介绍. ---- 为了保持最佳性能,重要的是要尽量减少长任务的数量。...❞ 在这种情况下,React 将「每隔 5 毫秒让出主线程」,以查看是否有更重要的任务需要处理,比如用户输入,甚至是渲染其他 React 组件的状态更新,这些任务在当前时刻对用户体验更重要。...相反,我们可以将状态分成两个值,并在 searchQuery 的状态更新中使用 startTransition。...查看性能选项卡,将状态更新包装在 startTransition 中显著「减少了长时间任务的数量和总阻塞时间」,相比没有使用过渡的实现的性能图表。...❞ 通过声明式地定义加载状态,我们减少了对条件渲染逻辑的需求。将 Suspense 与 RSC结合使用,我们可以「直接访问服务器端的数据源」,而无需额外的 API 端点,比如数据库或文件系统。

    1.1K30

    前端路由的原理及应用

    主要有两种方法: 1.设置a标签的href属性为一个hash值,当点击a标签时会在当前的url后面增加上hash值,同时触发'hashchange'事件;2.直接在js中对location.hash进行更改...history.pushState() 和 history.replaceState() 方法都需要三个参数: state--状态对象state,是一个JavaScript对象; title--标题,可以理解为...该参数是可选的,缺省为当前URL。 并且,这两个API都会操作浏览器的历史栈,而不会引起页面的刷新。...重定向时要使用replace。这也是React Router的组件中使用的方法。...下面来总结一下: hash方式:js通过hashChange事件来监听url的改变,浏览器兼容性较好,但是IE7及以下需要使用轮询方式; history API:url看起来像普通网站那样,以"/"分割

    3K20

    听说你还不知道React18新特性?看我给你整明白!

    本文将介绍 React 18 的升级内容、新特性、新的 API、底层逻辑更新等方面的内容,并通过示例展示其使用效果。...+ 1 }); }); 通过使用 flushSync 包裹 setState 的调用,您可以确保在执行下一个任务之前立即获取到更新后的状态。...startTransition 函数将异步请求和状态更新操作包裹起来,以告诉 React 在下一次重新渲染之前应该延迟更新状态。...而并发模式通过将任务分解为多个小步骤,让 React 在执行渲染和布局时可以中断和恢复任务,从而提供更平滑和响应式的用户体验。 在 React 并发模式中,引入了两个主要概念:任务调度和优先级。...利用并发模式,React 可以将渲染过程分解为多个小任务,并根据优先级来动态调整任务执行的顺序。

    2.9K50

    再也不用std::thread编写多线程了

    flag) { /* code */ } } /** * @brief * 方法二缺点: * * 1, * 该方法没有任何基于条件变量得设计得缺点:不需要互斥体,如果检测任务在反应任务开始轮询之前就设置了标志位...}); //在这里t处于暂定状态,在调用react之前 p.set_value();//取消暂停t,调用react //做其他工作 t.join()...;//设置t为不可连结状态 } //方法六 /** * @brief * 扩展方法五:实现可以是很多反应任务实施先暂停再取消暂停的功能 * * 1,关键在 react的代码中使用std::shared_futures...ai视为 0 ai = 10;//将ai 原子地设置为10 std::cout << ai <<std::endl;//原子地读取 ai的值 ++ai;//原子地将 ai自增为...vi = 10;//将vi设置为10 std::cout<<vi;//读取vi得值 ++vi;//将vi自增为11 --vi;//将vi自减为10 auto

    2.8K40

    React入门系列(四)组件的生命周期

    生命周期函数 组件的整个生命周期会涉及如下函数: 钩子函数 说明 getDefaultProps 设置props默认配置 getInitialState 设置state默认配置 componentWillMount...组件被注入DOM之前被调用 render 渲染组件时被调用 componentDidMount 组件被注入DOM之后被调用 componentWillReceiveProps 挂载的组件接收到新的props...在React中,调用setState方法,React不会立即对其更新,而是将其标记为“脏”状态 (组件状态更新不会立刻生效,React使用事件轮询对变更内容进行批量绘制)。...当事件轮询结束后,React将“脏”组件及其子节点进行重绘,所有后代节点的render方法都会被调用,哪怕它们没法发生变化。...那么,它们的使用场景是什么?有什么区别呢?下一节,我们将继续探索......

    1.1K30

    CodeSpirit.Amis.AiForm 智能表单使用指南

    AI表单特有属性 属性 类型 默认值 说明 StatusApi string - 必填,AI任务状态查询API地址 PollingInterval int 2000 轮询间隔(毫秒) MaxPollingTime...使用Amis的标准事件动作系统实现: 循环动作:使用 loop 动作类型进行循环轮询 等待间隔:使用 wait 动作设置轮询间隔(PollingInterval 毫秒) AJAX查询:使用 ajax...动作查询任务状态 条件判断:使用 condition 动作检查任务状态并执行相应操作 自动停止:任务完成或失败时自动停止轮询 超时控制:最大循环次数为 MaxPollingTime / PollingInterval...任务管理 使用 ISingletonDependency 确保任务状态在应用程序生命周期内保持 定期清理过期的任务记录 对于分布式部署,考虑使用Redis存储任务状态 2....API找不到:检查 StatusApi 路径是否正确 轮询超时:适当增加 MaxPollingTime 值 任务丢失:检查任务存储机制,确保任务状态持久化 调试技巧 查看浏览器网络面板的轮询请求 检查后端日志的任务创建和状态更新

    19710

    程序员必备!Prompt三大进阶技巧和实用模板

    01、基础优化技巧 1.1 明确角色定义 ❌ 低效写法: 帮我写个登录功能 ✅ 优化写法: 你是一个资深的全栈工程师,请为我设计一个基于 JWT 的用户登录系统, 包括前端表单验证、后端 API...按优先级排序(影响大小 × 实施难度) 项目信息:SPA应用,webpack打包,有状态管理 2.5 对比分析法 技术选型对比:GraphQL vs REST API 请制作对比表格,包含以下维度...:优化这段 React 代码的性能 第一轮:基础优化 - 识别明显的性能问题 - 提供简单的修复方案 第二轮:深度优化 - 分析渲染性能 - 考虑状态管理优化 第三轮:架构级优化 - 考虑代码分割...React/Vue) - 项目时间线 (3个月内完成复杂交互动画) - 维护成本 (考虑长期迭代和人员变动) - 设计师协作 (设计团队使用 After Effects) 使用场景评估: - 页面转场动画...04、实用模板 4.1 代码生成模板 角色:{技术栈}专家 任务:实现{具体功能} 要求: - 代码风格:{编码规范} - 包含错误处理 - 添加必要注释 - 提供使用示例 - 考虑{特定约束}

    56211
    领券