美团
1,详细介绍一下你的项目
2,项目中碰到的难点
3,Vue你常用的生命周期
created: 在模板渲染成html前调用,即通常初始化某些属性值,然后再渲染成视图。
mounted: 在模板渲染成html后调用,通常是初始化页面完成后,再对html的dom节点进行一些需要的操作。
update: 虚拟dOm重新渲染和打补丁之后,页面dom加载结束后调用该钩子。
actived keep-alive激活组件时调用。
4,http常用的请求头和响应头
请求头
1,accept :text/html
表示客户端期望接收到的数据类型;
但无论服务器返回什么类型的数据,客户端都会接收
2,accept-encoding :gzip,deflate,br
表示客户端支持的解码(解压缩)方式;
网络中的数据传输是占据带宽的,文件数据压缩可以降低数据量,减少传输时间,所以通常服务器返回客户端的数据都是经过压缩的;我们主动发送的ajax请求通常数据量较小,不需要进行压缩
3,Accept-language:zh-CN,zh
表示客户端支持的语言类型
4,Accept-CharSet:utf-8 gbk
表示客户端支持的编码格式(如果服务器不按照指定编码格式返回数数据时可能会乱码)
5,refer:http://localhost/src/image
表示请求是从哪个地址发起的
应用:防盗链 referrer-policy可以设置refer;
6, if modified sence
表示客户端缓存文件的时间(如果从...时间开始文件发生了改变,就请再重新给我发一份文件)
上一次返回时响应头中的(last modified)
浏览器一般只对html,css,jpg等进行缓存;
7, if none match
表示其实文件是否是最新的,是此时文件内容的哈希值(服务器响应头中的etag);优先级高于if modified sence
8,catch-control
表示缓存控制;几个字段来控制缓存机制
public/private/no-cache/max-age
public表示客户端和代理服务器都可以缓存
private 表示仅客户端可以缓存,代理服务器不能缓存
no-cache表示需要先与服务器确认返回的响应是否被更改,未被更改时,才能给后面的响应提供服务
max-age 表示请求的过期时间(通常是多少秒之后),只在http1.1可用
9,userAgent
表示客户端的软件环境,包括系统,浏览器等
10,host
表示请求者的主机地址和端口号
11,connection :keep-alive/upgrade
表示客户端想要优先响应的连接类型
12,cookie
响应头
1,content-length
表示响应报文的长度;可以根据它做进度条
2,Accept-Ranges:bytes
表示服务器支持http中的range功能,能够分段请求客户端,分段请求浏览器
3,Access Control Allow Origin
表示服务器允许跨域的请求头;
4,content-Language
表示响应内容使用的语言
5,content-Encoding
表示响应内容使用的编码方式
6,etag
表示响应内容的哈希值用来判断资源文件是否发生改变
在nginx系统中是根据last-modified 和 content-length组合成16进制生成的
7,expires
表示资源文件的过期时间
8,location
表示创建某个新资源时使用
9,status
表示当前http的响应状态
5,冒泡排序
6,快速排序
7,常用的设计模式
8,观察者模式和发布订阅模式
9,拿到一个字符串中每个字符出现的个数
10,Promise
11,http缓存
12,你有哪里准备好了但是没有被提问吗?
顺丰同城
1,es6新特性
2,为什么typeof null==Object;
因为起初JS是32位的系统,为了性能优化,使用低位来代表存储变量的类型
数据类型 机器码标识 对象(Object) 000 整数 1 浮点数 010 字符串 100 布尔 110 undefined -2^31(即全为1) null 全为0 typeof就是根据低位存储判断类型的,所以就产生了null的判断错误
3,js的精度缺失
常见问题
1,0.1+0.2!==0.3 //true
原因:由于js的精度缺失问题;
十进制小数转化为二进制:乘二进位顺位相接;
十进制转化成二进制时就已经不是一个准确的数;相加后自然也不准确
2,
双精度存储,一共时64bit;
1位符号位,
11位指数位
52位尾数;
通常不能超过16位(最大安全数-2^53——2^53-1)