0%

美团数据开发实习生二面面经

没自我介绍, 感觉这个面试官不太和蔼的样子, 非常严肃, 上来就直接问

volatile关键字讲一下

threadlocal讲一下, 里面的hashmap对应的key应该是线程对象而不是线程的id

说一下垃圾回收算法(标记算法和引用计数算法)

说一下引用计数算法, 这里一开始没明白面试官的意思, 后来才知道问的是三色标记算法.

说一下CMS收集器的四个过程.

说一下JVM锁膨胀的过程? 无锁, 偏向锁, 轻量级锁, 重量级锁

说一下java里面的四种引用, 分别有什么作用? 我只知道弱引用在WeakHashMap里有点用.

问了个jvm的题

1
2
3
4
5
6
7
8
9
10
11
12
13
下面这段代码,编译为字节码时,操作数栈的深度是多少,局部变量表中有几个变量

public class CalcCirc {
public int doCalc() {
int a=10;
int b=20;
int c=2;
return (a+b)*c;
}
}
操作数栈深度很显然是2. 先算a+b, 然后再乘c. 假如是a+b*c那深度就是3了

局部变量表应该是有4个变量的, 一定不能忘了非静态方法有this指针!!

说一下进程之间的通信方式?

说一下linux中管道的原理, 可以双向吗?

了解linux的IO吗? 说一下(这里我主要说的是epoll)

linux共享内存怎么解决多进程同时写的问题?

编程题, 之前做过, 直接a出来了

最后竟然面试完了直接就完了, 也没问我有什么问题. 估计是凉了吧. 但是我感觉我答的还不错啊, 除了java4种引用不会之外其他的地方都差不多答上来了. 希望能过. 求 offer

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
删除有序链表中重复出现的元素
给出一个升序排序的链表,删除链表中的所有重复出现的元素,只保留原链表中只出现一次的元素。
例如:
给出的链表为1233445, 返回125.
给出的链表为11123, 返回23.

import java.util.*;

/*
* public class ListNode {
* int val;
* ListNode next = null;
* }
*/

public class Solution {
/**
*
* @param head ListNode类
* @return ListNode类
*/
public ListNode deleteDuplicates (ListNode head) {
// write code here
if(head == null || head.next == null){
return head;
}
ListNode dummyHead = new ListNode(0);
dummyHead.next = head;
ListNode begin_prev = dummyHead;
ListNode begin = begin_prev.next;
ListNode end = begin;
while(begin != null){
while(end != null && end.val == begin.val){
end = end.next;
}
if(begin.next == end){
begin_prev = begin;
begin = end;
}
else{
begin_prev.next = end;
begin = end;
}

}
return dummyHead.next;
}
}