30岁被裁,7年前端,备战,找工作第一天(1.21)
todo
- 简历大纲整理
- 面试题整理
zoom面试题整理
事件循环机制
js的事件循环(event loop), 用来管控的异步任务的机制,因为js是单线程,一些异步任务的执行,比如:定时器,事件处理,网络请求等,从而使得有序执行,不阻塞主线程;
node.js 和浏览器为宿主环境的事件循环机制不一致
- js的事件循环基于js引擎(v8), node.js的事件循环基于(libuv)
宏任务和微任务, 为什么要定义两种任务类型
根据任务的优先级来区分,比如宏任务是相对较大的任务,优先级较低;微任务是优先级轻量级,但是较为紧急的任务;
宏任务:setTimeout setInterval setImmediate, UI渲染 I/O操作;
微任务:promise, mutationObserver, process.nextTick;
ES模块和CommonJS模块化的方案区别
- ESMAScript制定的标准,属于JS语言本身,是js标准模块化的方案; CommonJS是在node.js中使用的模块化规范,在node.js生态体系中广泛应用;
- ES模块是静态解析的 ,编译时确定引用关系,所以可以做Tree shaking, CommonJS是动态,运行时确定依赖关系;
ES模块中export对象可以被修改吗?
只能是只读的,不能被修改;
ES和CommonJS如何分别处理循环引用
ESmodule会报错,语法错误,提示依赖循环引用,CommonJS会警告处理,导出的是值,循环引用中,可以导出部分已赋值的值;
使用过deocrator和symbol吗?
装饰器新的一种语法, @用来在类,方法,参数或者属性声明语法,用来增强功能;
symbol ES6新提出的一种数据结构,一般用来做唯一值的确定;
TS中never和void有什么区别
- never:永不会到达的值,比如error,或者无限循环等;
- void: 空值,比如函数不返回值;
说一下重绘,重排,getBoundingClientRect会导致重排吗?
- 重绘:只会更新元素的样式,不会影响元素的布局;比如改变元素的颜色等;
- 重排:元素的几何属性发生变化,需要页面重新布局;比如改变元素的尺寸,位置,显隐等;
getBoundingClientRect不会导致重排;
requestAnimationFrame和requestIdleCallback区别是什么
- requestAnimationFrame 浏览器下一次重绘之前,调用该回调函数,应用在动画的渲染过程中,1S里面渲染60帧;
- requstIdleCallback 判断浏览器主线程是否处于空闲状态, 做一些低优先级的任务,比如预加载资源等;
有一起找工作的可以多多交流,持续更新,分享备战,面经有岗位的可以私私私;