字节跳动面试题

649 阅读2分钟

1.讲一下线程参数的含义

2.innodb的索引实现

3.为什么是B+树

4.Redis的使用,分布式锁的实现

5.操作系统虚拟内存换页的过程

6.TCP的三次握手

7.volatile关键字的作用

8.乐观锁和悲观锁

9.HashMap 结构,是否线程安全? ConcurrentHashMap如何保证线程安全?

10.之前用过的设计模式?

11.B树和B+树的区别

12.Redis的扩容机制(渐进式单线程扩容)

13.Spring AOP的原理

14.Spring loC的原理,如何实现,如何解决循环依赖

15.两线程对变量i进行加1操作,结果如何?为什么?如何解决?

16.CAS概念,原子类实现原理

17.synchronize底层实现,如何实现Lock?

18.手写ajax

19.介绍各种网络协议

20.DNS在网络层用哪个协议,为什么

21.介绍HTTPS协议,详述SSL建立连接过程

22.手写反转单链表

23.手写复杂链表复制

24.代码题:数组a,先单调地址再单调递减,输出数组中不同元素个数,要求。O(1)空间复杂度,不能改变原数组

25.详尽Java和js的垃圾回收机制

26.64匹马,8个赛道,找出最快的四匹。

27.64匹马,8个赛道,找出最快的8匹

28.给出两个升序数组A,B和长度m,n,求K个大的

29.给出数组A,长度n,数组中元素的值位于[0,n-1]之间,求是否有重复元素

30.讲一下浏览器执行过程,多线程与多进程的区别

31.JVM中什么时候进行垃圾回收,什么样的对象可以回收。js是怎么样进行垃圾回收的,请用代码模拟。

32.Spring的主要思想是什么?

33.算法题:实现一个镜像二叉树

34.讲一下js的eventloop

35.TCP为什么是三次握手四次挥手

36.平常做过哪些优化

37.webpack的作用是什么,有写过webpack插件吗

38.vue的路由是怎么实现的

39.为什么有了ip地址,还需要mac地址

40.http 1.x,https,http2都有哪些优点和缺点

41.代码题:实现防抖和节流

42.模拟一下:浏览器请求url到页面加载过程

43.有没有做过数据库优化

44.什么是闭包,你在哪些场景一下用到了闭包

45.你设计一个组件考虑了哪些?

46.说一下js对象的几种继承方式,各有什么缺点?