今日头条web前端一面

  • 1.浏览器缓存策略,重点Cache-Control选项(强缓存、协商缓存,Cache-Control: max-age, s-maxage, public, private, no-store, no-cache等)
  • 2.状态码:301 302 307 (301永久,302临时,307临时且不允许变method和body)
  • 3.Cookie和Session是什么?Token有啥用?登录检验过程(没说清楚)
  • 4.Cookie是怎么设置的,里面有哪些选项?Secure选项是做什么的?(主要说到HttpOnly防止脚本读取,SameSite防止跨站攻击,Secure是Https加密传输用的)
  • 5.https握手过程,指纹是怎么得到的?http2和http1.1有啥区别吗?(指纹忘记了,http2只说了头部压缩和多路复用)
  • 6.跨域方式哪几种?cors头字段有哪些?有什么要注意的?(cors说了非简单请求和withCredentials)
  • 7.前端事件?哪些是宏任务哪些是微任务?
  • 8.前端主要的攻击方式,CSRF攻击的细节,XSS和CSRF怎么结合的?CSP是什么?(说着说着就懵逼了,还是菜)
  • 9.怎么避免自己的页面被iframe嵌套 (不知道)
  • 10.Vue computed的原理是什么?为什么避免在computed里面进行修改数据的操作?(答出懒求值应该就可以,实际是特殊watcher)
  • 11.实现字符串模板,写代码, 输入
    'I am ${name}, ${age} years old', {name: 'xiaoming', age: 2}
    形式差不多这样, 可以调试,面试官让讲下思路,然后就结束了。
    function templateString(template, target) {
      return template.replace(/\$\{([^\}]*?)\}/g, ($0, $1) => {
          return target[$1.replace(/\s/g, '')]
      })
    }
    其实大括号可以不用转义的