自我介绍
HTML5
CSS 相关
了解BFC吗 flex实现两列和三列布局 grid实现两列和三列布局
JS
es6
- es6中有那些内容
- 先简单介绍promise,关键词:异步编程解决方案,两个特点(三种状态,状态不可逆)
- promise输出题
console.log(1)
new Promise((resolve, reject) => {
reject(true)
setTimeout(() => {
console.log(2)
resolve(false)
}, 0)
}).then((value) => {
console.log(3)
console.log(value)
}).catch((error) => {
console.log(4)
}).finally(() => {
console.log(5)
})
console.log(6)
// 1, 6, 4, 5, 2
- function输出阅读题
var a = 1;
function A() {
a = 2 // 3
function a() { // 1
console.log(222)
}
function B() { // 2
console.log(a); // 5
}
a = 2 // 3
B(); // 4
}
A() // 输出2。 1,2,3,4,5为执行顺序,主要考察function a()声明会被提升到函数顶部, a=2 在function a()之后运行
网络相关
浏览器缓存策略
强缓存 (Cache-Control > Expires)
缓存有效,直接使用本地缓存
- Cache-Control 可设置 no-store, no-cache, max-age(单位默认为s)
- Expires 受限于本地时间,如果修改了本地时间,可能会造成缓存失效。
协商缓存 (ETag > Last-Modified)
请求后端,后端返回304,则使用本地缓存
Last-Modified
- 以秒计时,1秒内对文件的修改,可能不会正确感知。
- 文件打开Last-Modified值就会发生改变,即便内容没有改变
ETag
- 文件指纹,根据文件内容生成值, 和后端比对ETag值返回状态码304
跨域
- 什么是跨域,造成跨域的原因
- 线上代码解决,解决跨域的办法有哪些
- jsonp 方式通过<script>标签, 只能是get请求
- CORS 服务器配置Access-Control-Allow-Origin
- 本地开发时,解决跨域的办法
- webpack配置proxy, 解决的原因是什么,本地启动了一个node服务进行代理,服务器之间请求不存在跨域,跨域是浏览器的一种安全机制