一次前端面试

1,345 阅读2分钟

自我介绍

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服务进行代理,服务器之间请求不存在跨域,跨域是浏览器的一种安全机制

HTTP

数据结构算法题

二分法

在排序数组中查找数字 I

递归

10- I. 斐波那契数列

栈的压入、弹出序列