字节跳动面试

一面:

线程和进程的区别

  1. 进程是资源分配的基本单位,也是调度运行的基本单位。
  2. 线程是进程中的每一个执行单元,当一个java程序启动时,就会产生一个进程,该进程会默认创建一个线程,称为主线程。
  3. 单线程进程的执行过程在宏观上是线性的,在微观上也只有单一的执行过程,而多线程进程的执行过程在宏观上是线性的,在微观上却有多个执行过程。
  4. 进程有自己的地址空间,而线程没有自己的地址空间,共享它所属进程的资源。

点击获得更多详细内容

sort()用到的排序算法

其实sort()是根据需要排序的数组的长度进行区分的

  1. 当你的数组长度小于60时,它会直接进行一个插入排序。原因是,在数据量比较小的时候.插入排序的常数代价非常低,虽然时间复杂度是O(n2),但是常数项比较低,所以在数据量比较小的时候,优势就展现出来了。

  2. 当长度大于60时,有可能会merge排序或者是quick排序,merge和quick会将整个数组进行划分,进行递归,一旦划分的子数组长度小于60时,将不再递归划分,直接进行插入排序。

当数据量比较大需要进行划分的时候,什么时候用merge,什么时候用quick呢?

  • 这就要取决数组的类型了,当是基本数据类型的时候,会用quick,当是对象类型的时候会用merge。

  • 因为当是基本数据类型的时候不需要考虑稳定性的因素,但是对象类型就要考虑了,因为对象用来排序的可能有多个属性,在此番排序之后还需要保证数组的稳定性。

求一个数组中的第K大个元素, 并说明算法复杂度?

[3,2,4,7,10,23]

k=3 ret=7

数据库中的索引 事务(原子 隔离 一致 持久性)

二面:

Symbol有哪些用途
作为对象的属性名,防止命名冲突
Vue中数据双向绑定的原理

防抖和节流的实现源码

position:static(position:absolute在找有定位属性的父级元素时不考虑static)

变量提升
变量申明会提升,但是变量赋值不会提升
微任务和宏任务
参见CVTE面试中的微任务和宏任务

打字游戏:浏览器的重绘和重排
肯定会触发浏览器的重绘和重排,因为添加或删除可见的DOM元素了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值