分享头条面试题

150 阅读3分钟

1、按需加载怎么实现,具体原理

2、webpack插件原理

3、vue性能瓶颈

4、react setState异步更新时间

5、css图片垂直居中基线位置

1、Koa中间层,ejs模板,服务端渲染,之后重构到nuxt服务端渲染

2、为什么重构到nuxt

3、Vue3做了哪些性能优化,编译阶段,犹雨溪分享

4、compositionAPI和hook解决的痛点

5、Vue3用tree-shaking剪枝,编译过程中减掉不用的代码

只有import支持,require是不支持的,所以Vue2没法用tree-shaking优化

6、引申说明import和require区别

7、vue3监控数据变化的proxy和vue2的defineproperty的区别

—————以上是从自我介绍引申的技术点

8、详细说明浏览器渲染出页面的过程

9、上边说到缓存,详细说明缓存过程

10、强制缓存的实现,有三个字段,cache-control和max-press,一个是相对时间,一个是绝对时间格林尼治时间,

为什么会有两个时间字段判断缓存,可能是因为怕相对时间客户端时间和服务器时间不同步,所以绝对时间优先级高于相对时间

11、协商缓存的判断,详细过程,last-modefined和e-tag两个字段,因为last-modefined是秒级别的,不能监控一秒内资源的修改,所以需要e-tag字段区分,e-tag是文件的md5值类似的字符串

12、304协商缓存,301临时重定向,302永久重定向

13、http和https的区别,https详细的浏览器和服务器非对称加密和对称加密过程,签名的验证

14、浏览器安全性问题有多少

· xss攻击,预防办法转义
· csrf攻击,钓鱼网站攻击,预防办法增加验证码或者自定义header头token
· 第三方拦截抓包,修改请求体之类的

代码题

以下数据结构中,id 代表部门编号,name 是部门名称,parentId 是父部门编号,为 0 代表一级部门,现在要求实现一个 convert 方法,把原始 list 转换成树形结构,parentId 为多少就挂载在该 id 的属性 children 数组下,结构如下:

// 原始 list 如下
let list =[    {id:1,name:'部门A',parentId:0},
    {id:2,name:'部门B',parentId:0},
    {id:3,name:'部门C',parentId:1},
    {id:4,name:'部门D',parentId:1},
    {id:5,name:'部门E',parentId:2},
    {id:6,name:'部门F',parentId:3},
    {id:7,name:'部门G',parentId:2},
    {id:8,name:'部门H',parentId:4}
];
const result = convert(list, ...);


// 转换后的结果如下
let result = [    {
      id: 1,
      name: '部门A',
      parentId: 0,
      children: [        {
          id: 3,
          name: '部门C',
          parentId: 1,
          children: [            {
              id: 6,
              name: '部门F',
              parentId: 3
            }, {
              id: 16,
              name: '部门L',
              parentId: 3
            }
          ]
        },
        {
          id: 4,
          name: '部门D',
          parentId: 1,
          children: [            {
              id: 8,
              name: '部门H',
              parentId: 4
            }
          ]
        }
      ]
    },
  ···
];

第二题

var a = 1;
(() => {
    console.log(a);
    a = 2;
})();
// 输出 undefined,变量声明提升

var a = 1;
(() => {
    console.log(a);
    var a = 2;
})();
// 输出 undefined

var a = 1;
(() => {
    console.log(a);
    let a = 2;
})();
// 输出 报错

这是昨天头条面试的过程

vite www.jianshu.com/p/07960e4bb…