page contents

面经||【字节跳动】-Java岗-头条三面凉经

第一家撑到三面的公司,还是很开心的 1面: 1.算法题:求二叉树两节点的最长距离,搞了30分钟。。。 2.volatile修饰符的作用 答:volatile保证线程对该变量的可见性,根据JMM模型每个线程...

attachments-2021-12-0tuPSLjt61ce64d2a8f5a.png

第一家撑到三面的公司,还是很开心的

1面:

1.算法题:求二叉树两节点的最长距离,搞了30分钟。。。

2.volatile修饰符的作用

答:volatile保证线程对该变量的可见性,根据JMM模型每个线程都有一块抽象私有的本地内存区域,该区域与主内存进行交互(当对volatile变量进行写的时候,会是其他线程的内存中存储该变量的值失效)

3.能不能写一个函数,由于指令重排序导致其输出的结果不是想要的

4.解释下 happen-before的规则

2面:

1.算法题:求前序遍历的递归,非递归算法

2.算法题:求一个数组中连续子数组的最大值, 如 【3,-4,1,2】,最大值为3,子数组为【1,2】

3.画出TCP的4次挥手过程,为什么需要四次,不能三次吗

答:当服务端接收到客户端的FIN数据报时,服务端可能还有需要发送的数据,因此FIN与ACK不能合并到一起发送。如果合并到一起发送,就不能确定服务器发送的数据,客户端是否接收到了。

4.解释下TIME_WAIT, 为什么取值为2MSL

答:2MSL刚好是数据报进行一个来回的时间,目的是为了确认服务端没有再次发送FIN;

5.如果服务端中存在大量的TIME_WAIT请分析下原因

答:发送在服务端主动断开连接,并发送ACK响应,进入TIME_WAIT状态,如果客户端一直在向客户端发送FIN包,服务器就会一直发送

6.说下操作系统中页面置换算法

答:先进先出,LRU,

7.说下LRU的实现思路

8.概率题:甲和乙投掷硬币,谁先投到正面谁就赢。先投的人赢的概率是多少 答案应该是2/3,通过一个等比数列可以算出

3面

1.进程与线程的区别(这个不太清楚)
答:一个进程可以有多个线程,一个线程只能属于一个进程。进程的上下文切换的代价比较大:因为进程切换时,会导致高速缓冲区失效;线程上下文切换时,只需要替换程序计数器,还有线程私有内存区就行了。

2.进程切换还需要改变什么

答:进程还需要保存打开文件的状态描述符

3.线程进行替换时,哪些东西会变

4.了解过一些中间件吗,例如负载均衡,数据库,分布式
答:不太清楚

5.了解过b树与b+树的区别吗(我需要好好梳理一下)

答:b树的非叶子节点存储索引和数据,而b+树只在叶子节点存储

6.为什么b+树需要这么做

答与磁盘的IO读取有关,balala,不需要说到了b+树类似平衡树(感觉面试官开始怼了)

7.那么二叉平衡树也可以在非叶子节点存储索引,叶子节点存储数据。两者有什么不同

答:b+树叶子节点用了链表

8.那么二叉平衡树在叶子节点加链表。两者有什么不同

答:b+树是多叉树,这样可以减少树的深度

9.了解隔离性

答只知道有四种隔离

10.算法题: 将一个字符串改变其字符(假设需要将字符x变成y,则y也需要变成x),使其与另一个字符串相等
例子 字符串1: aabba -> 字符串2: eeffe //这里 字符串1a变成e,然后该字符串中如果存在e,也要把它变成a,这个返回ture

字符串1: asdf -> 字符串2: asag 返回false

11.工程题:

给你一个大的Hash文件,对其进行快照,获得该时刻文件的快照。 要求在快照过程中,还可以将数据写入该文件中,或者修改该文件中的值。

答:建立一个缓冲区,把那些要改的数据和要更新的之前数据发到缓冲区里面(估计不对)

以上就是本次分享内容,更多大厂面试经验持续关注六星社区

想要高效学习,指路微信公众号——【python编程学习圈】每日分享学习干货,关注即可免费领取整套Python零基础到入门资料及学习教程,走过路过,千万不要错过!!快行动起来!!

attachments-2022-05-ZwUUz0Co628f2e3079c7b.jpeg

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
小柒
小柒

1658 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. 小柒 1658 文章
  3. Pack 1135 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章