头条三面凉经

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

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文件,对其进行快照,获得该时刻文件的快照。    要求在快照过程中,还可以将数据写入该文件中,或者修改该文件中的值。
答:建立一个缓冲区,把那些要改的数据和要更新的之前数据发到缓冲区里面(估计不对)   大佬,求答案!求答案!
一些建议,凉凉


#面经##春招##Java工程师##实习#
全部评论
你是深圳吗
1 回复
分享
发布于 2019-04-20 18:18
造一个Copy-On-Write的Hash容器,或者模仿MVCC的做法自己造一个。
点赞 回复
分享
发布于 2019-04-21 16:13
联易融
校招火热招聘中
官网直投
楼主什么岗位怎么会问java,头条不是不用java吗
点赞 回复
分享
发布于 2019-05-02 10:04
你怎么知道凉了,发消息了吗?
点赞 回复
分享
发布于 2019-04-20 17:32
应该是渐进式hash
点赞 回复
分享
发布于 2019-04-20 20:56
这让我想到了mvcc
点赞 回复
分享
发布于 2019-04-21 15:56
你这是暑期还是日常呢大佬
点赞 回复
分享
发布于 2019-04-22 00:00

相关推荐

点赞 97 评论
分享
牛客网
牛客企业服务