2020面试总结

(一)、跨域理解及HTTP与HTTPS区别,为啥HTTPS比HTTP更安全些?

跨域是浏览器对web生态的安全的一种限制,
跨域是指:一个域下对的文档或脚本去请求另外一个域下的资源
浏览器使用的是XmlHttpRequest(XHR), 请求type是 xhr,
解决跨域的有JsonP:(只要发送的请求不是xhr即可解决跨域问题)
jsonp概念:一种非官方跨域数据交互协议,信息传递双方约定的方法;
jsonp弊端:1. 需要服务端改动代码   2. 只支持get请求  3. 发送的不是xhr, 功能上不如xhr(比如异步)

解决办法:
1、被调用方支持跨域(在响应头中添加字段支持跨域)
2、影藏跨域(代理),在本域中开个API,相当于反问第三方中间添加本地服务器访问
资料:
https://www.cnblogs.com/kingchan/p/10959554.html

HTTP、HTTPS

都是网络传输协议
1.HTTPS是以安全为目标的 HTTP 通道,在HTTP的基础上通过传输加密和[身份认证]保证了传输过程的安全性 。HTTPS 在HTTP 的基础下加入[SSL]层,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL。 HTTPS 存在不同于 HTTP 的默认端口及一个加密/身份验证层

2.HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议,要比 HTTP 协议安全,可防止数据在传输过程中不被窃取、改变,确保数据的完整性
https://baike.baidu.com/item/https/285356?fr=aladdin

(二)、前端缓存

1、缓存的作用:

1)加快资源加载速度,提高用户体验
2)节省带宽,服务器端资源无需重新传输;甚至一些缓存无需进行http请求
3)服务器端缓存,如CDN,可以减缓多用户并行请求的压力,减轻服务器压力

2、缓存分类:服务器端缓存(CDN),客户端缓存(浏览器缓存)
3、浏览器缓存机制

1)强缓存:本地进行缓存过期时间的比较。若时间没有过期,则直接才从本地获取缓存的资源,无需向服务器端发起请求。
a、Expires:浏览器第一次发起请求,服务器端返回资源时带有一个Expires过期时间字段,该字段由服务器端计算所得,表示缓存过期的时间期限

// 具体判断是否过期(直接比较日期)
Expires < 当前客户端时间
// 比如:返回2021-10-20 号之前过期

该缓存有个弊端: Expires的时间是由服务器端计算所得,计算依据为服务器端第一次请求时间,而当前判断缓存时,与客户端时间做比较,倘若两端的时间不同呢?所以还是不够可靠;

b、Cache-Control:第一次发起请求,资源会存储当前时间,并且保存一个max-age(有效时间间隔比如2小时)。

// 具体判断是否过期
第一次请求的客户端时间 + max-age < 当前客户端时间
4、协商缓存

1)Last-Modified(最后修改时间), If-Modified-Since(资源过期)
Last-Modified:浏览器端第一次发送请求时,服务器端返回Last-Modified告诉浏览器资源最后修改的时间,浏览器则把该时间存储到资源中。

If-Modified-Since:当强缓存的资源过期时,若资源中有Last-Modified字段,则浏览器将Last-Modified的时间赋值给If-Modified-Since,浏览器发起请求,将If-modified-Since字段包含在请求Header中,服务器端获得该字段,将其与服务器端对应资源最后的修改时间进行对比,倘若服务器端时间较旧(还是之前的修改时间),则返回304,不包含消息体,告诉前端这个没改,让他继续用缓存;反之则正常请求。

5、添加hash的检测API

在请求大量数据之前先请求hash的API,与本地第一次存储的hash是否有变化,有变化的再请求数据API;
资料:https://www.cnblogs.com/Yoriluo/p/7513358.html

(三)、闭包作用及常用的场景

  • 常规方法:
function outer(){
  var num = 100;
  return num;
}
outer(); // 100
// 普通函数被调用后,他的局部变量就可以被释放了
  • 简单的闭包
function outer(){
  var num = 100;
  return function(){
    return num;
  };
}
var fun = outer(); //返回的是一个方法表达式
fun(); // 100
// 调用匿名函数fun(),函数中引用了外部的变量,所以调用outer()时外部变量不会被释放,
  • 闭包总结:有权访问函数内部中的变量的函数
  • 闭包用途:
    1、读取函数内部的变量
    2、让这些变量的值始终保持在内存中。不会再f1(外部函数)调用后被自动清除。
    3、方便调用上下文的局部变量。
    原因:f1是f2的父函数,f2被赋给了一个全局变量,f2始终存在内存中,f2的存在依赖f1,因此f1也始终存在内存中,不会在调用结束后,被垃圾回收机制回收
    4、优缺点
    优点:灵活且方便
    缺点:变量一直引用着造成空间浪费、内存泄露,性能消耗

资料:https://www.cnblogs.com/Renyi-Fan/p/11590231.html
阮一峰
http://www.ruanyifeng.com/blog/2009/08/learning_javascript_closures.html

(四)、js深拷贝和浅拷贝区别

深拷贝浅拷贝最根本的区别在于是否是真正获取了一个对象的复制实体,而不是引用,\color{red}{深拷贝在计算机中开辟了一块内存地址用于存放复制的对象},而\color{blue}{浅拷贝仅仅是指向被拷贝的内存地址},如果原地址中对象被改变了,那么浅拷贝出来的对象也会相应改变

1.深拷贝

1.1 JSON.parse(JSON.stringify(o))

function deepCopy(o) {
    return JSON.parse(JSON.stringify(o))
}

var c = {
    age: 1,
    name: undefined,
    sex: null,
    tel: /^1[34578]\d{9}$/,
    say: () => {
        console.log('hahha')
    }
}
deepCopy(c) // { age: 1, sex: null, tel: {} }

需要注意的是:这种拷贝方法不可以拷贝一些特殊的属性(例如正则表达式,undefine,function)


1.2. 用递归去复制所有层级属性

function deepCopyTwo(obj) {
    let objClone = Array.isArray(obj) ? [] : {};
    if (obj && typeof obj == 'object') {
        for (const key in obj) {
            //判断obj子元素是否为对象,如果是,递归复制
            if (obj[key] && typeof obj[key] === "object") {
                objClone[key] = deepCopyTwo(obj[key]);
            } else {
                //如果不是,简单复制
                objClone[key] = obj[key];
            }
        }
    }
    return objClone;
}
2. 浅拷贝

2.1. object.assign(target,source)
Object.assign 方法只复制源对象中可枚举的属性和对象自身的属性
如果目标对象中的属性具有相同的键,则属性将被源中的属性覆盖。后来的源的属性将类似地覆盖早先的属性
Object.assign 会跳过那些值为 [null] null 是一个 JavaScript 字面量,表示空值(null or an "empty" value),即没有对象被呈现(no object value is present)。它是 JavaScript 原始值 之一。") 或 [undefined]的源对象

js实现方法

var obj = { a:1, arr: [2,3] };
var shallowObj = shallowCopy(obj);

function shallowCopy(src) {
  var dst = {};
  for (var prop in src) {
    if (src.hasOwnProperty(prop)) {
      dst[prop] = src[prop];
    }
  }
  return dst;
}

//当一个对象属性的引用值改变时将导致另一个也改变
shallowObj.arr[1] = 5;
obj.arr[1]   // = 5

*浅拷贝只是应用关系


(五)、何为原型链及使用场景

(六)、React 性能优化技巧总结

(七)、react的面试题

1、react diff算法原理
https://www.jianshu.com/p/3ba0822018cf

(八)、前端cookie、localStorage、sessionStorage的区别

一、 cookie:能存储内容较小,在4k左右,一般用作保存用户登录状态、记住密码,记住账号使用。不清除的话会一直存在,可以设置过期时间自动清除,设置的时候可以设置在不同的域下面。每次在和服务端交互都会放在header里面,所以若是储存太多会影响性能。

二、 localStorage:HTML5 标准中新加入的技术,可保存内容在5M左右,不会自动清除,除非手动进行删除。

三、 sessionStorage:和localStorage类似,他们唯一区别就是sessionStorage保存在当前会话中,会话结束sessionStorage失效。会话一般是在关闭页面或者关闭浏览器失效

https://blog.csdn.net/shenxianhui1995/article/details/93010158


(九)、px、em、rem区别介绍

1、px、em、rem区别
https://www.cnblogs.com/webdragon/p/11185979.html
2、sp,dp,px,pt的区别以及各自的用法

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
禁止转载,如需转载请通过简信或评论联系作者。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,490评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,581评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,830评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,957评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,974评论 6 393
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,754评论 1 307
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,464评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,357评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,847评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,995评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,137评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,819评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,482评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,023评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,149评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,409评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,086评论 2 355

推荐阅读更多精彩内容