2022-10-08大厂面经00

字节跳动面试

hr面

实习期间最大的收获?最大的遗憾?
未来的职业规划?
对团队的评价如何?
mentor是谁?评价如何?
再次入职时,会如何改进自身的不足?
有哪几个offer,最终如何考虑?
2022-10-02JavaScript00

JavaScript 进阶问题列表

从基础到进阶,测试你有多了解 JavaScript,刷新你的知识,或者帮助你的 coding 面试!

答案在问题下方的折叠部分,点击即可展开问题。祝你好运


1. 输出是什么?
function sayHi() {
  console.log(name)
  console.log(age)
  var name = 'Lydia'
  let age = 21
}

sayHi()
  • A: Lydiaundefined
  • B: LydiaReferenceError
  • C: ReferenceError21
  • D: undefinedReferenceError
答案

答案: D

在函数内部,我们首先通过 var 关键字声明了 name 变量。这意味着变量被提升了(内存空间在创建阶段就被设置好了),直到程序运行到定义变量位置之前默认值都是 undefined。因为当我们打印 name 变量时还没有执行到定义变量的位置,因此变量的值保持为 undefined

通过 letconst 关键字声明的变量也会提升,但是和 var 不同,它们不会被初始化。在我们声明(初始化)之前是不能访问它们的。这个行为被称之为暂时性死区。当我们试图在声明之前访问它们时,JavaScript 将会抛出一个 ReferenceError 错误。


2. 输出是什么?
for (var i = 0; i < 3; i++) {
  setTimeout(() => console.log(i), 1)
}

for (let i = 0; i < 3; i++) {
  setTimeout(() => console.log(i), 1)
}
  • A: 0 1 20 1 2
  • B: 0 1 23 3 3
  • C: 3 3 30 1 2
答案

答案: C

由于 JavaScript 的事件循环,setTimeout 回调会在遍历结束后才执行。因为在第一个遍历中遍历 i 是通过 var 关键字声明的,所以这个值是全局作用域下的。在遍历过程中,我们通过一元操作符 ++ 来每次递增 i 的值。当 setTimeout 回调执行的时候,i 的值等于 3。

在第二个遍历中,遍历 i 是通过 let 关键字声明的:通过 letconst 关键字声明的变量是拥有块级作用域(指的是任何在 {} 中的内容)。在每次的遍历过程中,i 都有一个新值,并且每个值都在循环内的作用域中。


2022-10-02大厂面经00

一面

  1. 自我介绍
  2. css水平垂直居中有哪些方法
  3. 伪类伪元素哪些
  4. not :last-child 具体指什么
  5. 说说 http 缓存
  6. cookie,sessionstorage,loaclstorage区别,哪个可以多页面访问
  7. 数组常用的api有哪些
  8. code:求1-n内的所有质数
  9. 说说useBoolean
  10. react函数和类式组件的区别
  11. webpack的打包流程
  12. 知道哪些前端的性能优化
  13. 实习的成长?
  14. 如何扩充自己的知识面
  15. 为什么选前端
  16. 反问
2022-10-02大厂面经00
  1. 自我介绍,介绍一个项目(说了一个最新的),项目讨论(思路和实现方案),Java socket用在哪个部分(OT),OT实现过程(举例说A和B互相发送数据),socket属于TCP还是UDP,TCP和UDP的区别,Java写socket为什么比python快,小程序怎么采集信息(类似蓝牙时刻保持开启)
  2. 本硕专业,为什么选前端(经验,兴趣),计算机方面有什么优势(统筹,问题建模)
  3. 说一个之前的课设,怎么统筹的,负责什么部分,后端接口怎么实现,登陆注册怎么实现,cookie设置24h过期怎么实现
  4. 系统学习前端的时间,怎么学习前端(学习过程),react的虚拟DOM解释,有什么作用,文本框左侧添加文字过程,虚拟DOM发生了什么
  5. 介绍一下本科学的课程,哪门印象最深,介绍一下。
  6. js写深拷贝,js快排
  7. js数组原型方法
  8. CSS position,absolute一定相对父元素偏移吗,浏览器兼容,DOCTYPE作用
  9. 平常写html还是xml(html),小程序为什么是wxml(...)
  10. 反问(没有问的,已经累了)
2022-09-30JavaScript00

数组扁平化是指将一个多维数组变为一维数组

[1, [2, 3, [4, 5]]]------ > [1, 2, 3, 4, 5];

递归法:

function flatten(arr) {
  let res = [];
  arr.map((item) => {
    if (Array.isArray(item)) {
      res = res.concat(flatten(item));
    } else {
      res.push(item);
    }
  });
  return res;
}