首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

前端开发面试如何答题才能让面试官满意

图片setState 只有 React 自身合成事件和钩子函数异步原生事件和 setTimeout 中都是同步setState 异步并不是说内部由异步代码实现,其实本身执行过程和代码都是同步...变量对象是 js 代码进入执行上下文时,js 引擎在内存建立一个对象,用来存放当前执行环境变量。2....在上面的代码代码真正开始执行第一行 console.log() 开始,自这之前,执行上下文这样:// 创建过程EC= { VO: {}; // 创建变量对象 scopeChain: {...几种方式 js 脚本放在文档底部,来使 js 脚本尽可能最后来加载执行js 脚本添加 defer 属性,这个属性会让脚本加载与文档解析同步解析,然后文档解析完成后再执行这个脚本文件...503 Service Unavailable 服务器当前不能够处理客户端请求,一段时间之后,服务器可能会恢复正常。大概还有一些关于http请求和响应头信息介绍。

1.3K20

浏览器和Node.jsEventLoop事件循环机制知多少?

我们知道JS单线程上执行所有的操作,虽然单线程,但是总是能够高效地解决问题,并且会给我们带来一种『多线程』错觉。这其实是通过一些高效合理数据结构来达到这种效果。...事件队列(Event Queue) 事件队列:负责函数发送到队列中进行处理。事件执行队列符合数据结构队列,先进先出特性,当先进入事件先执行执行完毕先弹出。...setTimeout(func,0); 复制代码 你以为上面的代码会一次打印1和2,并不是。...因为JS事件循环机制,当执行setTimeout时会将事件进行挂起,执行一些其它系统任务,当其他执行完毕之后才会执行,因此执行时间间隔不可控。...每次DOM节点发生变化时候,渲染引擎变化记录封装成微任务,并将微任务添加到当前微任务队列

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

20道前端高频面试题(附答案)

语法上说,Promise 一个对象,它可以获取异步操作消息一般 Promise 执行过程,必然会处于以下几种状态之一。待定(pending):初始状态,既没有被完成,也没有被拒绝。...(4)504 Gateway Timeout该状态码表示网关或者代理服务器无法规定时间内获得想要响应。他HTTP 1.1新加入。使用场景:代码执行时间超时,或者发生了死循环。5....(最常用就是getElementById等等)当解析器到达script标签时候,发生下面四件事情html解析器停止解析,如果外部脚本,就从外部网络获取脚本代码控制权交给js引擎,执行js代码恢复...⽤户打开⽬标⽹站时,⽹站服务端恶意代码数据库取出,拼接在 HTML 返回给浏览器。⽤户浏览器接收到响应后解析执⾏,混在其中恶意代码也被执⾏。...2)反射型 XSS 攻击步骤:攻击者构造出特殊 URL,其中包含恶意代码。⽤户打开带有恶意代码 URL 时,⽹站服务端恶意代码 URL 取出,拼接在 HTML 返回给浏览器。

97130

来自大厂 10+ 前端面试题附答案(整理版)

如果 HTTP 1.0 版本协议,一般情况下,不支持长连接,因此每次请求发送完毕之后,TCP 连接即会断开,因此一个 TCP 发送一个 HTTP 请求,但是有一种情况可以一条 TCP 连接保持活跃状态...HTTP 响应由 3 个部分构成,分别是:状态行,响应头(Response Header),响应正文。HTTP 响应包含一个状态码,用来表示服务器对客户端响应结果。...503 Service Unavailable 服务器当前不能够处理客户端请求,一段时间之后,服务器可能会恢复正常。大概还有一些关于http请求和响应头信息介绍。如何防御 CSRF 攻击?...思路:setTimeout特性指定时间内只执行一次,我们只要在setInterval内部执行 callback 之后,把定时器关掉即可。...id="title">我标题 要求添加一个有内容 span 节点到 id 为 title 节点后面,做法就是:// 首先获取父节点

52130

前端面试中小型公司都考些什么

⽤户打开⽬标⽹站时,⽹站服务端恶意代码数据库取出,拼接在 HTML 返回给浏览器。⽤户浏览器接收到响应后解析执⾏,混在其中恶意代码也被执⾏。...⽤户浏览器接收到响应后解析执⾏,混在其中恶意代码也被执⾏。恶意代码窃取⽤户数据并发送到攻击者⽹站,或者冒充⽤户⾏为,调⽤⽬标⽹站接⼝执⾏攻击者指定操作。...⽤户浏览器接收到响应后解析执⾏,前端 JavaScript 取出 URL 恶意代码并执⾏。恶意代码窃取⽤户数据并发送到攻击者⽹站,或者冒充⽤户⾏为,调⽤⽬标⽹站接⼝执⾏攻击者指定操作。...频繁DOM操作时,我们就可以DOM元素插入DocumentFragment,之后一次性所有的子孙节点插入文档。...三者区别如下:script 立即停止页面渲染去加载资源文件,当资源加载完毕后立即执行js代码js代码执行完毕后继续渲染页面;async 在下载完成之后,立即异步加载,加载好后立即执行,多个带async

74730

分享 10 道 Nodejs EventLoop 和事件相关面试题

setTimeout/setInterval 定时器时间是否精确? Q1:Node.js 定时功能顺序怎样? Node.js 定时器模块提供了一段时间之后执行一些函数功能。...总结起来一句话概括,事件轮询 JS 实现异步具体解决方案,同步代码直接执行,异步函数或代码块先放在异步队列,待同步函数执行完毕,轮询执行异步队列函数。...一旦这个工作完成,将会触发相应回调响应结果返回给主线程 Event Loop 响应返回给客户端 下图展示了 Node.js EventLoop 体系结构 ?...; }); 执行流程如下所示: 以上我们代码会告诉这个节点有两个任务 read() and write() 需要执行之后会休息一下。...其实不然,例如代码setTimeout(function(){},5),虽然设置为 5,但并不能保证会在这个时间立即执行 JavaScript 代码执行时会在合适时间代码插入任务队列,真正执行要进到事件循环以后才开始

1.3K50

社招前端二面面试题(附答案)

同时,当这个函数被执行之后,这个局部变量也相应会被销毁。所以你会看到 getName 函数外面的 name 访问不到3....匹配时,找到相同节点,递归比较子节点在diff,只对同层节点进行比较,放弃跨级节点比较,使得时间复杂O(n^3)降低值O(n),也就是说,只有当新旧children都为多个子节点时才需要用核心...如果这些页面全部打包进一个 JS 文件的话,虽然多个请求合并了,但是同样也加载了很多并不需要代码,耗费了更长时间。...另外有意思,React 并没有直接事件附着到子元素上,而是以单一事件监听器方式所有的事件发送到顶层进行处理。...思路:setTimeout特性指定时间内只执行一次,我们只要在setInterval内部执行 callback 之后,把定时器关掉即可。

42820

web性能优化15条实用技巧

javascript浏览器运行性能,可以认为开发者所面临最严重可用性问题。...数据存取与JS性能 1.js,数据存储位置会对代码整体性能产生重大影响。数据存储共有4种方式:字面量,变量,数组项,对象成员。他们有着各自性能特点。...<通常做法减少访问DOM次数,把运算尽量留在JS这一端。 注:如过一个对性能要求比较高操作更新一段HTML,推荐使用innerHTML,因为它在绝大多数浏览器运行都很快。...长连接服务端推送技术) ⑤ Multipart XHR(允许客户端只用一个http请求就可以服务器向客户端传送多个资源) 2.单纯向服务端发送数据(beacons方法)——信标 // 唯一缺点接收到响应类型有限...建议TTL值设置为一天 // 客户端收到DNS记录平均TTL只有最大TTL值一半因为DNS解析器返回时间其记录TTL剩余时间,对于给定主机名,每次执行DNS查找时接收TTL值都会变化

59120

web性能优化15条实用技巧

javascript浏览器运行性能,可以认为开发者所面临最严重可用性问题。...数据存取与JS性能 1.js,数据存储位置会对代码整体性能产生重大影响。数据存储共有4种方式:字面量,变量,数组项,对象成员。他们有着各自性能特点。...<通常做法减少访问DOM次数,把运算尽量留在JS这一端。 注:如过一个对性能要求比较高操作更新一段HTML,推荐使用innerHTML,因为它在绝大多数浏览器运行都很快。...XHR(允许客户端只用一个http请求就可以服务器向客户端传送多个资源) 2.单纯向服务端发送数据(beacons方法)——信标 // 唯一缺点接收到响应类型有限var url = '/req.php...建议TTL值设置为一天 // 客户端收到DNS记录平均TTL只有最大TTL值一半因为DNS解析器返回时间其记录TTL剩余时间,对于给定主机名,每次执行DNS查找时接收TTL值都会变化

63550

react高频面试题总结(附答案)

(1)ReactsetState后发生了什么代码调用setState函数之后,React 会将传入参数对象与组件当前状态合并,然后触发调和过程(Reconciliation)。...“适时”地让出 CPU 执行权,除了可以让浏览器及时地响应用户交互,还有其他好处:分批延时对DOM进行操作,避免一次性操作大量 DOM 节点,可以得到更好用户体验;给浏览器一点喘息机会,它会对代码进行编译优化...组件或页面通过服务器生成html字符串,再发送到浏览器,最后静态标记"混合"为客户端上完全交互应用程序。...页面没使用服务渲染,当请求页面时,返回body里为空,之后执行jshtml结构注入到body里,结合css显示出来;SSR优势:对SEO友好所有的模版、图片等资源都存在服务器端一个html返回所有数据减少...HTTP请求响应快、用户体验好、首屏渲染快1)更利于SEO不同爬虫工作原理类似,只会爬取源码,不会执行网站任何脚本使用了React或者其它MVVM框架之后,页面大多数DOM元素都是客户端根据js动态生成

2.2K40

EventLoop 系列 - 单线程、调用栈、堆、队列、Eventloop 这些概念了解下~

我想以一种自己理解角度来讲,所以上来不会直接去讲浏览器 EventLoop 或 Node.js EventLoop。...此时 intro() 函数没有调用其它函数了,按照栈后进先出规则,intro() 函数开始执行直到完成第二个帧栈中弹出,之后开始执行 hello() 函数,执行完毕之后,第一个帧栈中弹出,栈也就被清空了...队列与回调函数 JavaScript 当调用栈有东西还在执行时,我们程序也不会空闲去执行其它操作,试想,如果调用栈出现一些很耗时任务,如果用在客户端用户会看到页面被卡住了,如果用在服务端会造成接口响应很慢...setTimeout 第一个参数我们传入 timer 这个我们需要执行代码,这里 timer 通常也是我们说回调函数。...setTimeout 不是由 JavaScript 引擎实现,这个由 JavaScript 程序所运行宿主环境提供,理解这个概念也不难,客户端我们宿主环境就是浏览器,如果在服务端就是 Node.js

96030

前端经典面试题(有答案)_2023-03-01

DOM 型指通过修改页面的 DOM 节点形成 XSS。 1)存储型 XSS 攻击步骤: 攻击者恶意代码提交到⽬标⽹站数据库。...⽤户打开⽬标⽹站时,⽹站服务端恶意代码数据库取出,拼接在 HTML 返回给浏览器。 ⽤户浏览器接收到响应后解析执⾏,混在其中恶意代码也被执⾏。...2)反射型 XSS 攻击步骤: 攻击者构造出特殊 URL,其中包含恶意代码。 ⽤户打开带有恶意代码 URL 时,⽹站服务端恶意代码 URL 取出,拼接在 HTML 返回给浏览器。...⽤户浏览器接收到响应后解析执⾏,前端 JavaScript 取出 URL 恶意代码并执⾏。 恶意代码窃取⽤户数据并发送到攻击者⽹站,或者冒充⽤户⾏为,调⽤⽬标⽹站接⼝执⾏攻击者指定操作。...: 首先执行同步带,打印出script start; 遇到定时器timer1将其加入宏任务队列; 之后执行Promise,打印出promise1,由于Promise没有返回值,所以后面的代码不会执行

1.2K20

来自大厂 10+ 前端面试题附答案(整理版)_2023-03-15

一个节点)Vue 响应式原理Vue 响应式原理核心通过 ES5 保护对象 Object.defindeProperty 访问器属性 get 和 set 方法,data 声明属性都被添加了访问器属性...下面我个人推荐回答:首先js 单线程运行代码执行时候,通过将不同函数执行上下文压入执行来保证代码有序执行执行同步代码时候,如果遇到了异步事件,js 引擎并不会一直等待其返回结果...,遇到setTimeoutsetTimeout回调函数丢到宏任务队列往下执行new Promise立即执行,输出2,then回调函数丢到微任务队列,再继续执行,遇到process.nextTick...第二轮:宏任务队列开始,发现setTimeout回调,输出1执行完毕,因此结果25431JS 执行过程中会产生执行环境,这些执行环境会被顺序加入到执行。...一旦执行栈为空,Event Loop 就会 Task 队列拿出需要执行代码并放入执行执行,所以本质上来说 JS 异步还是同步行为图片console.log('script start');

56720

客户端js js脚本引入 js解析过程

定义了一个配置项,由core.js读取。页面的参数传入库一种手法。 之间代码纯文本。...core.js执行时候读取这段文本,然后动态执行一次。浏览器不会执行之间代码 html事件处理程序 当脚本所在html文件被载入时候。脚本里js执行一次。...为了可交互,js会定义事件处理程序即web浏览器先注册函数,并在之后调用其作为事件响应。其中事件处理程序属性可以包含任意条js语句。相互之间用逗号分隔。...事件驱动js js还能通过注册事件程序函数写程序。之后发生该事件时候异步调用这些函数。 程序会响应一个事件,然后调用一个函数,该函数称为事件处理程序,事件监听器,或者回调,将该函数注册。  ...一个监听器和回调函数绑定,当监听器被触发时候,回调函数将会被触发。 客户端js线程模型 js客户端为单线程模型。

13.1K80

前端面试题

,首先js引擎一次事件循环中,会先执行js线程主任务,然后会去查找是否有微任务microtask(promise),如果有那就优先执行微任务,如果没有,去查找宏任务macrotask(setTimeout...捕获事件流节点开始执行,一直往子节点查找执行,直到查找执行到目标节点。 冒泡事件流目标节点开始执行,一直往父节点冒泡查找执行,直到查到到根节点。...针对于两次setTimeoutjs引擎会把这两个setState丢到事件队列,等待js空闲了去执行,而我们渲染函数render同步执行(react16版本默认没有开启异步渲染),所以等我们render...执行完全,也就是我们state被同步完后,取事件队列里面的setState进行执行setTimeout第二个setState也是一样,所以最后结果4。...然后另外一种协商缓存时使用ETag,原理与Last-Modified类似,就是第一次请求时候,服务端会根据资源内容或者最后修改时间生成一个标识,然后响应头里面设置为ETag返回给客户端客户端第二次请求时候会在请求头里面带上这个

1.9K31

前端性能优化七种方法_web前端性能

302则每一次访问http都会重定向到https页面,而永久重定向第一次http重定向到https之后,每次访问http,会直接返回https页面 1.3 使用缓存 使用cache-control...强缓存过期时候,会使用last-modified或etag这类协商缓存向服务器发起请求,如果资源没有变化,则服务器返回304响应,浏览器继续本地缓存加载资源,如果资源更新了,则服务器更新后资源发送到浏览器...,它能够实时地根据网络流量和各个节点连接、负载状况以及到用户距离和响应时间等综合信息将用户请求重新导向离用户最近服务节点上,其目的使用户可以就近取得所需内容,解决网络拥挤状况,提高网站响应速度...defer实际效果与代码放在body底部类似 async:异步加载,加载完成后立即执行 2、模块按需加载 SPA等业务比较复杂系统,需要根据路由来加载当前页面所需要业务模块 按需加载...这种方式实际上先把代码一些逻辑断点处分离开,然后一些代码完成某些操作后,立即引用另外一些新代码块。

2K11

常见react面试题

组件或页面通过服务器生成html字符串,再发送到浏览器,最后静态标记"混合"为客户端上完全交互应用程序。...页面没使用服务渲染,当请求页面时,返回body里为空,之后执行jshtml结构注入到body里,结合css显示出来; SSR优势: 对SEO友好 所有的模版、图片等资源都存在服务器端 一个html...返回所有数据 减少HTTP请求 响应快、用户体验好、首屏渲染快 1)更利于SEO 不同爬虫工作原理类似,只会爬取源码,不会执行网站任何脚本使用了React或者其它MVVM框架之后,页面大多数DOM元素都是客户端根据...另外,浏览器爬虫不会等待我们数据完成之后再去抓取页面数据。服务端渲染返回给客户端已经获取了异步数据并执行JavaScript脚本最终HTML,网络爬中就可以抓取到完整页面的信息。...而客户端渲染js代码下载、加载、解析完成后再请求数据渲染,等待过程页面是什么都没有的,就是用户看到白屏。

3K40

年底前端面试题总结(上)

对keep-alive理解HTTP1.0 默认每次请求/应答,客户端和服务器都要新建一个连接,完成之后立即断开连接,这就是短连接。...如果 JS 门多线程语言话,我们多个线程处理 DOM 就可能会发生问题(一个线程中新加节点,另一个线程删除节点),当然可以引入读写锁解决这个问题。...JS 执行过程中会产生执行环境,这些执行环境会被顺序加入到执行。如果遇到异步代码,会被挂起并加入到 Task(有多种 task) 队列。...一旦执行栈为空,Event Loop 就会 Task 队列拿出需要执行代码并放入执行执行,所以本质上来说 JS 异步还是同步行为。...:首先执行函数同步代码async1 start,之后遇到了await,它会阻塞async1后面代码执行,因此会先去执行async2同步代码async2,然后跳出async1;跳出async1函数后

74530

滴滴前端一面必会面试题汇总

如果 JS 门多线程语言话,我们多个线程处理 DOM 就可能会发生问题(一个线程中新加节点,另一个线程删除节点),当然可以引入读写锁解决这个问题。...JS 执行过程中会产生执行环境,这些执行环境会被顺序加入到执行。如果遇到异步代码,会被挂起并加入到 Task(有多种 task) 队列。...一旦执行栈为空,Event Loop 就会 Task 队列拿出需要执行代码并放入执行执行,所以本质上来说 JS 异步还是同步行为。...checkcheck 阶段执行 setImmediateclose callbacksclose callbacks 阶段执行 close 事件并且 Node ,有些情况下定时器执行顺序随机setTimeout...编译阶段由编译器完成,代码翻译成可执行代码,这个阶段作用域规则会确定。执行阶段由引擎完成,主要任务执行执行代码执行上下文在这个阶段创建。同样重定向,307,303,302区别?

44820

前端性能优化

性能优化把双刃剑,有好一面也有一面。好一面就是能提升网站性能,一面就是配置麻烦,或者要遵守规则太多。...使用 JavaScript 实现动画效果时候,最好情况就是每次代码都是开头开始执行。...,提取第三库代码,减少 ES6 转为 ES5 冗余代码 懒加载或者按需加载,一种很好优化网页或应用方式。...这种方式实际上先把你代码一些逻辑断点处分离开,然后一些代码完成某些操作后,立即引用或即将引用另外一些新代码块。...一个 worker 可以消息发送到创建它 JavaScript 代码, 通过消息发送到代码指定事件处理程序(反之亦然)。

1.2K20
领券