美团移动端一面面经
问答环节
实验室项目相关
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))
反问环节
业务是?
我的表现?更自信一点