2022前端常见面试题

137 阅读2分钟

1、简单说一下你对304的理解

304 Not Modified 未修改。所请求的资源未修改,服务器返回此状态码时,不会返回任何资源。客户端通常会缓存访问过的资源,通过提供一个头信息指出客户端希望只返回在指定日期之后修改的资源。

2、安全攻击的方式有哪些

XSS是通过inject(注入)有害代码来实现攻击方案的,也就是说XSS的攻击方案是注入,这里一般是通过注入脚本,由于浏览器中dom、bom的为js提供了接口,因而js可以操作html和css,其也可以插入html片段等。

XSS攻击其核心都是利用了脚本注入,因此我们解决办法其实很简单,不信赖用户输入,对特殊字符如”<”,”>”转义,就可以从根本上防止这一问题

SQL注入攻击:1、增加黑名单或者白名单验证 2、安全检测 3、防止系统敏感信息泄露

CSRF攻击:使用验证码

3、手写sleep函数

function sleep(delay) { var start = (new Date()).getTime(); while ((new Date()).getTime() - start < delay) { continue; } }

function test() { console.log('111'); sleep(2000); console.log('222'); }

test()

4、手写instanceOf

function myInstanceof(left,right){ //获取(构造)函数的(显式)原型 let rp = right.prototype; //获取对象的(隐式)原型 left = left.proto; //判断对象的(隐式)原型是否等于(构造)函数的(显式)原型 while(true){ if(left === null){ return false } if(left === rp){ return true } left = left.proto } } let a = /12/; let b = '123'; console.log(a instanceof RegExp,myInstanceof(a,RegExp)); //true,true console.log(b instanceof RegExp,myInstanceof(b,RegExp)); //false,false

5、React的render的异常在哪捕获?

#### 以前使用componentDidCatch,现在使用getDerivedStateFromError

6、为什么eggjs是企业级的框架

eggjs在koajs的基础上增加了一些规范和约束,从而解决了koajs自由度高,不适用于企业的缺点。