美团移动端一面面经
问答环节
实验室项目相关
final关键字
ArrayList 和 LinkedList 区别
如何使用java如何线程创建
数据库建立表需要注意? 说了说数据库三大范式
HTTP状态码
POST GET区别
说到了幂等,他问什么是幂等
ARP协议? 不知道
equal hashcode
UDP怎么保证可靠。提了一下QUIC,但是他继续问 如果让你自己设计如何让UDP可靠
什么是同步
什么情况下会死锁
死锁的四个必要条件
算法环节
写一个死锁。写完之后问是不是一定会出现死锁,并解释原因
// 参考代码
import java.util.concurrent.TimeUnit;
public class DeadLock {
public static void main(String[] args) {
Object lock1 = new Object();
Object lock2 = new Object();
new Thread(() -> {
synchronized (lock1) {
System.out.println("我是线程1 我获取了 lock 1");
try {
TimeUnit.SECONDS.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("我是线程1 我开始尝试获取 lock 2 ");
synchronized (lock2) {
System.out.println("我是线程1 我获取了 lock 2");
}
}
}).start();
new Thread(() -> {
synchronized (lock2) {
System.out.println("我是线程2 我获取了 lock 2");
try {
TimeUnit.SECONDS.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("我是线程2 我开始尝试获取 lock 1 ");
synchronized (lock1) {
System.out.println("我是线程2 我获取了 lock 1");
}
}
}).start();
}
}
多叉树的深度 力扣559
# 参考代码
class TreeNode:
def __init__(self, val=None, children=None):
self.val = val
self.children = children # types List or None
class Solution:
def __init__(self):
self.res = 0
def recur(self, node, depth):
if not node: return
if not node.children:
self.res = max(self.res, depth)
else:
for chi in node.children:
self.recur(chi, depth + 1)
def solve(self, node):
self.recur(node, 1)
return self.res
if __name__ == '__main__':
root = TreeNode(1, [
TreeNode(2, [TreeNode(4)]),
TreeNode(3),
TreeNode(2, [TreeNode(4)])
]
)
sol = Solution()
print(sol.solve(root)) 反问环节
业务是?
我的表现?更自信一点