某语音公司
1.http几个版本之间的区别
详见:www.jianshu.com/p/52d86558c…
2.web性能优化的方案
具体加雅虎35条军规

3.JavaScript设计模式及应用
4.react原理
5.react与vue有何不同,有啥优点
某国企
1.原型继承,原型链的作用
3.从输入url到显示页面整个流程
详见:segmentfault.com/a/119000001…
某房地产互联网平台
项目项目相关
- window.perfomance的接口相关
css类
- 垂直居中的几种方案
- css BFC的理解
- disable:none,和visiability:hidden的区别,属性都会继承吗,能否被点击 disable:none:该元素及其后代元素全部都被隐藏,该元素无法被点击,同时占据的空间消失 visiability:hidden:无法点击。父元素设置了visibility:hidden后,子元素也隐藏的深层原因在于子元素会继承父元素的visibility:hidden,因此,当我们需要隐藏父元素而又要显示部分子元素的时候,只需要把子元素继承的visibility改成默认的visible属性即可,这一点在被设置了display:none的元素上,根本不可能实现。
react相关
- react HOC
- react hooks的特性,跟purecomponent的区别
- react生命周期
- 状态管理机的实现
ES6
- ES6新特性
- Promise.all是什么时候执行then Promise.all() 传入的是 promise 数组,数组内所有 Promise 执行成功后,根据传入顺序返回各个 Promise 的结果数据,其中一个被拒绝,即会暂停,并返回错误信息
- 如何用async/await实现promise.all的功能 async/await好像无法实现多个请求同步吧
git
- 变基的理解
http
1. http和https的区别
- 1、http协议的报文传输时不加密的,有些隐私信息存在被窃听的风险。
- 2、http协议通信时无法验证通信方身份,可能存在伪装者(客户端、服务器)
- 3、http协议无法判断通信报文的完整性,通信报文在TCP/IP协议通信中可能会被篡改使用
- https协议就是为了解决以上的三个问题,咱们都知道https协议是http协议+ssl协议组成的,那么http协议的缺点,只能是ssl协议来完成
- 简单来说,HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全。
HTTPS和HTTP的区别主要如下:
1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。
2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
2. http缓存
浏览器缓存(Brower Caching)是浏览器对之前请求过的文件进行缓存,以便下一次访问时重复使用,节省带宽,提高访问速度,降低服务器压力 http缓存机制主要在http响应头中设定,响应头中相关字段为Expires、Cache-Control、Last-Modified、Etag。
浏览器缓存分为强缓存和协商缓存
强缓存:浏览器不会像服务器发送任何请求,直接从本地缓存中读取文件并返回Status Code: 200 OK
协商缓存: 向服务器发送请求,服务器会根据这个请求的request header的一些参数来判断是否命中协商缓存,如果命中,则返回304状态码并带上新的response header通知浏览器从缓存中读取资源;
强缓存: Expires:过期时间,如果设置了时间,则浏览器会在设置的时间内直接读取缓存,不再请求 Cache-Control:当值设为max-age=300时,则代表在这个请求正确返回时间(浏览器也会记录下来)的5分钟内再次加载资源,就会命中强缓存。 cache-control:除了该字段外,还有下面几个比较常用的设置值: (1) max-age:用来设置资源(representations)可以被缓存多长时间,单位为秒; (2) s-maxage:和max-age是一样的,不过它只针对代理服务器缓存而言; (3)public:指示响应可被任何缓存区缓存; (4)private:只能针对个人用户,而不能被代理服务器缓存; (5)no-cache:强制客户端直接向服务器发送请求,也就是说每次请求都必须向服务器发送。服务器接收到 请求,然后判断资源是否变更,是则返回新内容,否则返回304,未变更。这个很容易让人产生误解,使人误 以为是响应不被缓存。实际上Cache-Control: no-cache是会被缓存的,只不过每次在向客户端(浏览器)提供响应数据时,缓存都要向服务器评估缓存响应的有效性。 (6)no-store:禁止一切缓存(这个才是响应不被缓存的意思)。 复制代码
cache-control是http1.1的头字段,expires是http1.0的头字段,如果expires和cache-control同时存在,cache-control会覆盖expires,建议两个都写。
协商缓存: Last-Modifed/If-Modified-Since和Etag/If-None-Match是分别成对出现的,呈一一对应关系
3.强缓存的响应码
-200
浏览器
- 事件循环的理解,宏任务和微任务的执行顺序
SEO
1.对SEO的理解
(Search Engine Optimization),从字面概念理解来看可以汉译为搜索引擎优化。搜索引擎优化是一种利用搜索引擎的搜索规则来提高目的网站在有关搜索引擎内的排名的方式。当别人通过搜索引擎查询某一个关键词的时候,让你的相关网页展示到搜索引擎结果比较靠前的位置,实现这种最终效果的手段或途径就叫做SEO。
- 合理的 title、description、keywords:搜索对着三项的权重逐个减小,title 值强调重点即可,重要关键词出现不要超过 2 次,而且要靠前,不同页面 title 要有所不同;description 把页面内容高度概括,长度合适,不可过分堆砌关键词,不同页面 description 有所不同;keywords 列举出重要关键词即可
- 语义化的 HTML 代码,符合 W3C 规范:语义化代码让搜索引擎容易理解网页重要内容
- HTML 代码放在最前:搜索引擎抓取 HTML 顺序是从上到下,有的搜索引擎对抓取长度有限制,保证重要内容一定会被抓取
- 重要内容不要用 js 输出:爬虫不会执行 js 获取内容
- 少用 iframe:搜索引擎不会抓取 iframe 中的内容
- 非装饰性图片必须加 alt
- 提高网站速度,网站速度是搜索引擎排序的一个重要指标
浅拷贝深拷贝
浅拷贝(shallow copy):只复制指向某个对象的指针,而不复制对象本身,新旧对象共享一块内存; 深拷贝(deep copy):复制并创建一个一摸一样的对象,不共享内存,修改新对象,旧对象保持不变。
实现: 浅拷贝:最简单的利用 = 赋值操作符实现了一个浅拷贝 深拷贝: (1)数组的深拷贝 对于数组我们可以使用slice() 和 concat() 方法来解决上面的问题,slice和concat这两个方法,仅适用于对不包含引用对象的一维数组的深拷贝
ES6扩展运算符实现数组的深拷贝
(2)对象的深拷贝 对象的深拷贝实现原理: 定义一个新的对象,遍历源对象的属性 并 赋给新对象的属性 主要是两种:
- 利用递归来实现每一层都重新创建对象并赋值
- 利用 JSON 对象中的 parse 和 stringify:undefined、function、symbol对象,RegExp对象是无法通过这种方式深拷贝
- ES6扩展运算符实现对象的深拷贝