乐趣区

关于前端:前端工作常见题

第一道:有 3 个 div,呈竖向排列,第一个 div 贴顶,第三个 div 贴底,两头的 div 填满残余空间。该怎么做?
(flex,grid,js 动静计算)
第二道:我要写一个弹窗,须要程度竖直居中,同时它不能被其余元素遮掩。该怎么做?
(居中,zindex,zindex 的从父准则)

第三道:你的挪动端的自适应是怎么做的?
(rem,vwvh。其实这两个等比放大放大的自适应单位解决方案是不够完满的。内容用 px + 排版用自适应单位 + 布局采纳 flex/grid 才是解决挪动端自适应的最优解)

第四道:如何缩小重排。

js 会呈现不准确的问题
javascript 的 number 最大 9007199254740992,是 2 的 53 次方。如果超过这个值,那么 js 会呈现不准确的问题
如何解决数字精度失落的问题? 实践上用无限的空间来存储有限的小数是不可能保障准确的,但咱们能够解决一下失去咱们冀望的后果当你拿到 1.4000000000000001 这样的数据要展现时,倡议应用 toPrecision 凑整并 parseFloat 转成数字后再显示,如下:parseFloat(1.4000000000000001.toPrecision(12)) === 1.4 // True
封装成办法就是:function strip(num, precision = 12) {
return +parseFloat(num.toPrecision(precision));
}
最初还能够应用第三方库,如 Math.js、BigDecimal.js

什么是递归,
http 的 Content-Type

权限组件
node node 中间件

1、promiseApiPromise 构建进去的实例存在以下办法:
then() 是实例状态产生扭转时的回调函数,第一个参数是 resolved 状态的回调函数,
第二个参数是 rejected 状态的回调函数 catch()
用于指定产生谬误时的回调函数 finally() 用于指定不论 Promise 对象最初状态如何,都会执行的操作

Promise 构造函数存在以下办法:
all() 用于将多个 Promise 实例,包装成一个新的 Promise 实例
race() 同样是将多个 Promise 实例,包装成一个新的 Promise 实例
allSettled() allSettled() 将返回一个对象数组,而不是一个数组,它蕴含 {status, value, reason} 形容每个承诺是被履行还是被回绝

resolve()reject()try()

var、let、const 三者区别

能够围绕上面五点开展:
1. 变量晋升 var 申明的变量存在变量晋升,
即变量能够在申明之前调用,
值为 undefinedlet 和 const 不存在变量晋升,
即它们所申明的变量肯定要在申明后应用,否则报错

2. 暂时性死区
var 不存在暂时性死区 let 和 const 存在暂时性死区,
只有等到申明变量的那一行代码呈现,
才能够获取和应用该变量

3. 块级作用域 var 不存在块级作用域 let 和 const 存在块级作用域

4. 反复申明 var 容许反复申明变量 let 和 const 在同一作用域不容许反复申明

5. 变量批改 申明的变量 var 和 let 能够 const 申明一个只读的常量。一旦申明,常量的值就不能扭转应用能用 const 的状况尽量应用 const,其余状况下大多数应用 let,防止应用 var

bind、call、apply 区别
1.call 和 apply 会调用函数,且会扭转函数外部的 this 指向
2.call 和 apply 传递的参数不一样,call 传递参数 aru1,aru2. 模式 而 apply 必须是数组模式[arg]
3.bind 不会调用函数,能够扭转函数外部指向

利用场景:
1.call 常常做继承
2.apply 常常和数组有关系,比方借助于数学对象实现数组的 max、min
3.bind 不调用函数,但扭转 this 指向,比方扭转定时器外部的 this 指向 apply:调用一个对象的一个办法,用另一个对象替换以后对象。例如:B.apply(A, arguments); 即 A 对象利用 B 对象的办法。call:调用一个对象的一个办法,用另一个对象替换以后对象。例如:B.call(A, args1,args2); 即 A 对象调用 B 对象的办法。bind 除了返回是函数以外,它的参数和 call 一样。

vue3 相比拟于 vue2 在编译阶段有哪些改良
动态模板晋升(Static Template Hoisting):Vue 3 引入了动态模板晋升技术,通过对模板进行分
析和优化,将模板编译为更简洁、更高效的渲染函数。这种优化能够缩小不必要的运行时开销,并
进步组件的渲染性能。
Fragments 片段反对:Vue 3 反对应用 Fragments 片段来包裹多个根级元素,而不须要额定的父
元素。这样能够防止在编译阶段为每个组件生成额定的包裹元素,缩小了虚构 DOM 树的层级,提
高了渲染性能。
动态属性晋升(Static Props Hoisting):Vue 3 在编译阶段对动态属性进行了优化,将动态属性
从渲染函数中提取进去,只在组件初始化时计算一次,并在后续的渲染中重用。这样能够缩小不用
要的属性计算和传递,进步了组件的渲染性能。
事件处理函数的内联化:Vue 3 在编译阶段对事件处理函数进行了内联化,将事件处理函数间接写
入模板中,而不是在运行时动静生成。这样能够缩小运行时的事件绑定和查找开销,进步了事件处
理的性能。
动态节点晋升(Static Node Hoisting):Vue 3 通过动态节点晋升技术,将动态的节点在编译阶
段进行解决,防止了在每次渲染时对动态节点的比对和更新操作,进步了渲染性能。
缓存事件处理器(Cached Event Handlers):Vue 3 在编译阶段对事件处理器进行了缓存,防止
了反复创立事件处理函数的开销。对于雷同的事件处理器,只会创立一次,并在组件的生命周期中
重复使用,缩小了内存占用和运行时开销。
更细粒度的组件宰割(Fine-Grained Component Splitting):Vue 3 反对更细粒度的组件宰割,
能够将组件的模板、脚本和款式进行独立的编译和加载,以实现更好的代码拆分和按需加载,进步
了利用的加载速度和性能。
这些改良使得 Vue 3 在编译阶段可能生成更优化的代码,缩小了不必要的运行时开销,并进步了组件的渲
染性能和整体的运行效率。

退出移动版