字节前端社招面经

国际化电商挂了之后,面国际化建站。

一面:
自我介绍之后,说会问一些基础问题。

  1. 你知道的前端安全知识说一下?(说了xss和csrf以及一些防范手段)
  2. 你知道的Http请求头和响应头有哪些?
  3. 你说的协商缓存请求字段有哪些?
  4. 你说有个if-range,那么你是什么场景下用到过吗?(我说没用到过,只是一些请求上看到过这个字段)
  5. 协商缓存有两种手段,时间和etag,两者有什么优劣?(last-modified不能准确表示文件变化)
  6. 做题,你用两个栈实现一下队列。
  7. OK,接着说强缓存和协商缓存有什么不同,还有什么是强缓存。
  8. 跨域了解过么?跨域请求头有哪些?
  9. 你提到cache control,那么no-cache和no-store有什么区别?
  10. 再来一道题,实现Promise的timeout功能(这里我忘了,我用race实现的,fetch有signal,不过没写过还是算了)。
  11. 你这道题是不是没取消,如果你页面里面有两个tab,切换了就会发请求,有个用户疯狂切换tab,那你这个是不是会出现数据混乱问题?怎么解决(fetch不会写,所以说了加个防抖)?
  12. 你们用的http版本是多少?(http 1.1,估计这里是想问Http/2的内容)
  13. OK,再写一道题,实现一下koa的compose函数。实现类似中间件的效果。
const plugin1 = next => ctx => {
  console.log(1);
  ctx.plugin1 = 'aa';
  next();
}

const plugin2 = next => ctx => {
  console.log(2);
  ctx.plugin2 = 'bb';
  next();
  ctx.plugin22 = 'dd';
  console.log(3);
}

const plugin3 = next => ctx => {
  console.log(4);
  ctx.plugin3 = 'cc';
  next();
  ctx.plugin33 = 'ee';
  console.log(5);
}

const plugin4 = next => ctx => {
  console.log(6);
  ctx.plugin4 = 'dd';
  next();
  console.log(7);
  ctx.plugin44 = 'ff';
}

const ctx = {};
compose(plugin1, plugin2, plugin3, plugin4)(ctx); // 实现compose
// 输出1 2 4 6 7 5 3
console.log(ctx);
// ctx: {
//  plugin1: 'aa',
//  plugin2: 'bb',
//  plugin22: 'dd',
//  plugin3: 'cc',
//  plugin33: 'ee',
//  plugin4: 'dd',
//  plugin44: 'ff',
// }
  1. 你说一下从new Vue开始的整个流程吧。

反问阶段。然后说我通过了,等会二面面试官来通知你。

二面:

  1. 自我介绍
  2. 然后面试官介绍了一下部门。
  3. 开始做题
    3.1 实现Promise.all
    3.2 实现蛇形打印二叉树
    3.3 说一下node事件循环的输出顺序。
  4. 我们从基础问题开始,你先说一下for of 和for in 有什么区别吧?
  5. for in和Object.keys有什么区别?
  6. TCP三次握手说一下?
  7. TCP保证可靠性传输的手段说一下?
  8. TCP拥塞控制怎么控制的?(快重传,慢开始和滑动窗口,我忘了,只记得慢开始)
  9. 能说一下Vue3的新特性有哪些吗?(说了下composition api和v-model以及多事件处理器,setup替换created,其他忘了)。
  10. Vue3改成Proxy之后有什么好处?(巴拉巴拉)
  11. 你们前端监控怎么做的?(我说用sentry收集错误)
  12. 接口监控呢?(没涉猎)
  13. 平时有遇到一些性能问题吗?(因为C侧的页面都比较小巧,所以也没有遇到什么性能问题)?
  14. 知道单域名下的连接数有限制吗(单域名为6个连接)?
  15. 静态资源转到CDN是因为之前的资源都放在服务器那边?(对的)
  16. 有了解过webpack vue-loader怎么实现的吗?(之前看到过vue-loader引用了vue-template-compiler,所以猜测是和Vue里面的编译方式接近,所以就说了这点)。追问vue-loader需要一个插件,你记得是什么插件吗?(忘了)
  17. 有了解过loader和plugin之间的差异吗?(巴拉巴拉)
  18. 有没有看过webpack动态模块的实现原理?(不了解)
  19. 说一下项目吧,你挑一些觉得还可以的项目说一下。(巴拉巴拉,面试官说不是很复杂嘛,我说是的)。
  20. 对后端有什么了解吗?(有了解过restful api,写过后台也接过数据库)。
  21. 有没有遇到过大的qps的情况?(我说node后台是内部使用的,所以也没有达到需要压测的标准)。

反问。

你可能感兴趣的:(字节前端社招面经)