秋招面经

时间 面试/笔试 结果
7.18 字节提前批一面 ×
7.22 字节提前批一面 ×
8.3 字节提前批一面
8.5 字节提前批二面 ×
8.9 字节提前批一面 ×
9.1 字节正式批一面 ×

7.18 字节提前批一面

内容:javascript, css, http, vue

  1. js 类型判断
  2. 节点遍历
  3. 事件循环
  4. 盒模型
  5. box-sizing
  6. 前端调用api是用了浏览器的什么api
  7. css 分栏布局:两侧固定宽度,中间自适应
  8. flex 布局
  9. httpRequest怎么用
  10. http 请求头
  11. 304 状态码
  12. 缓存有关的请求头
  13. vue: v-forkey的作用
  14. http 文件上传
  15. content-type 请求头和响应头
  16. promise catch
  17. 盒模型
  18. box-sizing
  19. vue 的特性
1
2
3
4
5
6
7
8
9
10
.div1 {
height: 20px;
margin: 20px;
}
.div2 {
height: 20px;
margin: 20px;
}

// 总高度是多少?改为 padding 呢?

总结:没复习,很多都忘了

7.22 字节提前批一面

内容:小程序, javascript, vue, 算法题

  1. 为什么选择 h5 or 小程序
  2. 小程序和 h5 的区别在哪里?
  3. 小程序是怎么调用 native 方法的
  4. 小程序双线程是怎么通信的
  5. jsapi 是怎么调用 native 方法的
  6. 介绍一下 js 中事件循环
  7. 什么时候用宏任务,什么时候用微任务
  8. 自己实现一下兼容性比较好的 promise
  9. vuevdomdiff 算法,有何优化
  10. vue3 中做了什么优化?(双向数据流 & diff 算法)
  11. 算法题:简单动态规划

总结:算法题生疏了;javascript 中的代码题需加强

8.3 字节提前批一面

感觉还行?

  1. 蚂蚁实习做了什么
  2. bff, RPC 的了解
  3. 怎么做移动端适配
  4. 算法:反转二叉树(自顶向下递归,自底向上递归)
  5. 缓存
  6. js 中的深拷贝和浅拷贝,深拷贝方法有哪些
  7. http 和 https
  8. http 状态码
  9. 简述一下防抖,实现一下
  10. 在搜索框中多次搜索,怎么保证返回结果的有序性
  11. 怎么实现登陆

8.5 字节提前批二面

暴击😭😭😭

  1. 在蚂蚁实习做了什么
  2. 前端学习过程
  3. css 动画有了解过吗
  4. css 伪类和伪元素
  5. 怎么实现夜间模式
  6. less 和 sass 有了解过吗
  7. 说一下盒模型
  8. z-index 不生效的情况
  9. CPU 读取内存的过程
  10. 局域网(在 NAT 内)和公网之间的访问过程
  11. js 的数据类型
  12. js 的内置对象类型
  13. js 创建一个没有原型的对象
  14. js 中使用 new constructor() 创建对象底层发生了什么
  15. 代码:事件总线有了解吗?自己实现一下
  16. 代码:阿拉伯数字 -> 中文 123 -> 一百二十三, 1003 -> 一千零三
  17. React 合成事件
  18. React 中 setState 的同步异步问题
  19. React hook 中 useLayout 有使用过吗
  20. 使用 React hook,每次进入页面后更改页面标题,useTitle ?
  21. http 各个版本的区别

8.9 字节提前批一面

抓着项目一直问。。。代码题给我考麻了

  1. 自我介绍
  2. 有挑战性的项目
  3. 项目中你负责什么呢
  4. 你觉得前端部分有挑战性的在哪里
  5. 怎么对前端做优化
  6. cdn 的原理
  7. 缓存有哪些
  8. 跨域是什么
  9. 前端安全问题
  10. http 和 https 的区别
  11. 说一下 Vue
  12. MVVM 模型和 MVC 模型的优劣
  13. 说一下小程序为什么体验比较好
  14. jspromise, async, await 的关系
  15. promise 怎么捕获异常
  16. js 异步,事件循环
  17. h5 怎么调用 native api
  18. 代码:数组合并排序
  19. 代码:js 实现异步调度器 https://blog.csdn.net/weixin_37680520/article/details/108244727

9.1 字节正式批一面

  1. 实习期间做了什么?(这个没答好,感觉要事先准备一下)

  2. 实习期间做的最有难度的一件事是什么?亮点在哪?

  3. 埋点是怎么实现的?用户行为链路是怎么实现的?

  4. bff 网关介绍一下,是如何完成鉴权的?

  5. Process.nextTick 的事件循环(node.js 的事件循环)

  6. 闭包和 var 的理解

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    // 以下输出是什么?

    for (let i = 0; i < 5; i++) {
    setTimeout(() => console.log(i), 0);
    }

    for (var i = 0; i < 5; i++) {
    (function() {
    setTimeout(() => console.log(i), 0);
    })();
    }

    for (var i = 0; i < 5; i++) {
    (function(j) {
    setTimeout(() => console.log(j), 0);
    })(i);
    }

    // 0 1 2 3 4
    // 5 5 5 5 5
    // 0 1 2 3 4
  7. 说一下 http 三次握手?

  8. syn 洪水攻击(DDOS 攻击)?和流量大崩溃有什么区别?什么时候需要消耗序列号?

  9. http 状态码 307 308 401 是什么?

  10. 浏览器渲染的过程?composition 的过程?依据什么进行 composition ?

  11. 浏览器滚动时发生了什么?

  12. CSS 中 absolute 的理解

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <div class="app">
    <div class="item" />
    </div>

    .item {
    position: absolute;
    top: 10px;
    }

    // 1. item 位置如何?
    // 2. app 为 relative 时,item 位置如何?
    // 3. app 为 relative, transform 时,item 位置如何?
  13. 说一下 serverless 和 BFF 的区别

  14. CSS 中 fix 的理解

  15. 浏览器 GPU 加速是什么?

  16. 代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    // 实现一下大数相乘

    function multiply (a, b) {
    const len1 = a.length;
    const len2 = b.length;
    let res = [];

    // 计算
    for (let i = len1 - 1; i >= 0; i--) {
    for (let j = len2 - 1; j >= 0; j--) {
    const index1 = len1 - 1 - i;
    const index2 = len2 - 1 - j;
    const num1 = a[i];
    const num2 = b[j];
    const tmp = num1 * num2;
    if (tmp < 10) {
    res[index1 + index2]
    = res[index1 + index2] ? res[index1 + index2] + tmp : tmp;
    } else {
    const tmp1 = tmp % 10;
    const tmp2 = (tmp - tmp1) / 10;
    res[index1 + index2]
    = res[index1 + index2] ? res[index1 + index2] + tmp1 : tmp1;
    res[index1 + index2 + 1]
    = res[index1 + index2 + 1]
    ? res[index1 + index2 + 1] + tmp2
    : tmp2;
    }
    }
    }

    // 进位处理
    for (let i = 0; i < res.length - 1; i++) {
    if (res[i] >= 10) {
    res[i + 1]
    = res[i + 1]
    ? (res[i] - res[i] % 10) / 10 + res[i + 1]
    : (res[i] - res[i] % 10) / 10;
    }
    res[i] = res[i] % 10;
    }

    // 转化为字符串
    let ret = '';
    for (let i = res.length - 1; i >= 0; i--) {
    ret += res[i];
    }

    return ret;
    }

    const res = multiply('2', '33');
    console.log(res);