最近又被字节捞了,这次是抖音部门。就写个面经,给大家提供一点参考。
楼主面试的语言是Java,问题大部分也是以Java为主
一面:60min左右
1.volatile的作用
(1)多线程下的可见性保证
(2)double long类型操作的原子化
(3)避免指令重排
2.volatile指令重排有什么好处?举一个具体的例子
解决多线程环境下,指令的错误执行?(不清楚)
例子:DCL懒汉式的单例,变量必须用volatile修饰,不然双检锁判定可能失效
3.JVM垃圾回收的基本流程:
答:CMS的基本回收方式:初始标记 - 并发标记 - 重新标记 - 并发清除 + 产生内存碎片,结合Serial Old达到清除
4.为什么初识标记阶段要STW
答:不知道。。。
5.常见的GC Root有哪些:
答:线程类、类加载器,模板类。(还有JNI Local JNI Gloabal和JVM持有的对象)
6.各种垃圾回收算法分别在哪些区,是怎么应用的:
答:分代的基本处理方式之类的。(引申答了一些)
7.MySQL方面:有哪些索引?
答:主要分类是B+树索引和哈希索引。
8.B+树有哪些特点?和红黑树对比有什么优势?
答:B+树的高度一般控制在3~5层,主要是为了避免磁盘的读取次数过多,非叶子节点不存数据,数据都在叶子结点保存。并且叶子结点间通过一个指针连接。
红黑树的索引时间复杂度稳定在O(logn),但是在硬盘读取的条件下,会导致读取的数据较多(磁盘读取的基本单位为扇区),而根据空间局部性原理,需要的数据
它周边的数据也可能读取到,因此使用B+树更好。
题:先序遍历和后序遍历还原二叉树, LeetCode105.
二面:60min
1.主要是问了很多项目相关的东西
2.问的问题记不住了。。。
题:缺失的第一个最小正整数。leetcode 41
全部评论
(5) 回帖