「校招记录」字节跳动一面

什么也不会,直接干懵了。

正文

  • 先自我介绍一下。
  • 你这些项目都是自己鼓捣的吗?是的。然后就没问这些项目的事情了。
    • 仓鼠(我的舍友)说是面试官觉得 To-do List 没必要问。
  • 答题环节(代码测试环节之后还问了一些,就直接合并到这里吧)。
    • JS:
      • varconstlet 的区别。
        • 就答了变量提升、块级作用域。实际还有很多没答。
        • “为什么 const 指向的对象是可以改变的?”回答:不太懂,但是 JS 里指向对象都是引用,而指向的那个对象都是可改变的,要不改变需要 Object.freeze
          • 这个也是浅 freeze,如果要完全冻结要手写递归。
          • “有没有别的方法?”没答出来,可以用 Object.defineProperty(obj, prop, { enumerable: false, configurable: false, writable: false, value: val });,或者在类里面修改 set
      • 简单介绍一下原型链。答了获取属性的过程。
        • __proto__prototype 的区别?”“原型是对象吗,原型的构造方法是对象吗?”都没答上来。
          • 前者:__proto__Object(实例)的属性,指向构造函数的原型对象;prototypeFunction(构造方法)的属性,指向原型对象。
            • e.g. const foo = new Foo();foo.__proto__ === Foo.prototypeFoo.__proto__ = function.prototype
          • 后者:都是对象,JS 除简单数据类型,一切皆对象。
      • 介绍一下 this。答错了。
        • this 永远指向调用它的对象。
          • 构造函数中写 this.x = 1 则必须要用 new f(); 才会更改 this 到这个对象,不然 this 指向全局对象。
          • 补充:构造函数如果返回一个 object 且不是 null,则返回值会覆盖前面做的所有改动。
        • 特殊情况:箭头函数中的 this 指向定义时的 this,编译时就已经确定死了,不适用这一条件(类似于直接做了个 bind)。
      • 看你写过 Promise/A+,介绍一下 Promise
        • 回答可以用来替代若干个回调的 setTimeout,面试官还问我你确定是替代 setTimeout 吗,我说是吧。实际上并不是,是替代任意含有回调的异步函数的。
    • CSS:
      • position 的取值,忘了 fixed,也不知道 relative 的用法。
      • float 的应用,没用过。
      • BFC,不会。
      • 块级元素和行内元素的区别,没答完整。
        • inline 元素设置 margin-top 有用吗,不知道。
    • React:
      • 问了 diff 算法,不会,没问了。
    • Linux:
      • 问文件读写权限,只答说有 rwx 和三种用户类别(实际上是所有者 / 所有者所在用户组 / 其他人),没问了。
    • Git:
      • 问了 git rebase,不会,没问了。
    • HTTP:不会。计网是真的一点没看。
  • 代码测试环节。
    • JS 题:实现 Promise.all,并写一些小测试。
      • 应该是比较好地完成了。
      • 过程中还问了一下 Promise.allPromise.allSettled 的区别,问返回值,不知道后者有返回值。
      • 没给 counter 加锁(参见尾注)。
    • 算法题:求最长上升子序列。
      • 写了 $O(n^2)$ 的 DP 算法。
      • 写完发现要求返回的是一个合法解而不是长度,再改。
      • 没写 $O(n \log n)$ 算法,面试官没问,我想着没问就不说了。
        • 仓鼠说要答,有简单贪心 + 二分算法,况且如果说了数据结构 + DP 面试官不知道也会加一点点分。
    • CSS 题:tranform: translate(10px) rotate(135deg);transform: rotate(135deg) translate(10px); 一样吗?没见过 transform,不会。
  • 有没有什么想问面试官。想了半天想不出来,感觉自己不会的东西太多太多了,面试像在做压力测试,都是想了半天不会。

感想

面试官人其实很好,甚至问了 git rebase 这种明显送分的题。

基础很不扎实,多准备准备再来吧 TAT

尾注

作者

Tsukimaru Oshawott

发布于

2024-05-08

更新于

2024-05-09

许可协议

评论