美团暑实面经 已offer

一面:
1. SpingBoot的自动装配
2. 多线程了解吗,说一下线程池的核心参数和工作原理
3. 项目相关,大概5-6个问题
4. sql题:student表和score表,找平均分大于85的学生
5. 栈和队列的区别
6. 手撕:用两个栈实现一个队列(说我代码习惯挺好的)
7. B+树了解吗
8. 最左匹配原则是什么
9. Redis分布式锁怎么实现
10. watchdog机制了解吗,用过还是看过
11. 手撕:链表版两数相加 lc2

二面:
1. 分享一个项目中解决问题的思路过程
2. 若干项目问题
3. sql题:scores(id,student_id,course_id, score)查询每门课成绩都在60分以上的同学
4. 根据最左匹配原则判断索引 index i(a,b),8条(其中有一条模糊匹配判断错了)
5. 为什么模糊匹配不走索引?(原理,B+树特点)
6. 为什么要遵循最左匹配原则?
7. 两个sql语句,一个查询条件(ab),一个查询条件(abc),说说区别,在Mysql的执行过程中
8. 给了一个调用sum(a,b) { return a+b; }的代码,从计算机/底层的角度,CPU的角度描述一下如何完成这个函数调用过程
9. 智力题:64枚硬币,每次可以取1,2,3,4枚,不可以不取,取到最后一枚的赢,你怎么保证你会赢(✅)
  1. 如果取到最后一枚的输呢,怎么修改策略(✅)
  2. 如果不允许双方取3枚,怎么修改策略(引导后✅)
10. volatile字段的作用
11. 说一下ClassLoader怎么加载Java程序的,机制(说到双亲委派被打断)
12. 手撕:重排链表 LeetCode143,限制了时间/空间复杂度 O(n)/O(1)

timeline:
投递:3.30
笔试:4.5
一面:4.21
二面:4.23
oc:4.27
offer:4.29
#我的OC时间线#
全部评论
mark
2 回复 分享
发布于 05-02 13:45 广西
cpu角度 有点过于刁难,过不了我直接你手撕一个汇编代码出来我看看
点赞 回复 分享
发布于 06-19 10:23 广东
class Solution: def middleNode(self, head: Optional[ListNode]) -> Optional[ListNode]: slow = fast = head while fast and fast.next: slow = slow.next fast = fast.next.next return slow def reverseList(self, head: Optional[ListNode]) -> Optional[ListNode]: pre, cur = None, head while cur: nxt = cur.next cur.next = pre pre = cur cur = nxt return pre def reorderList(self, head: Optional[ListNode]) -> None: mid = self.middleNode(head) head2 = self.reverseList(mid) while head2.next: nxt = head.next nxt2 = head2.next head.next = head2 head2.next = nxt head = nxt head2 = nxt2
点赞 回复 分享
发布于 06-19 10:05 广东
这是经典的博弈论取硬币问题,核心策略就是控制“5的倍数”这个关键点哦~具体操作很简单: 1. 先手第一步:先取4枚硬币,让剩余硬币数变成60(60是5的倍数)。 2. 后续每轮:对手取x枚(1≤x≤4),你就取“5-x”枚。这样每轮结束后,剩余硬币数始终保持是5的倍数。 3. 最后阶段:当剩余5枚硬币时,对手不管取1-4枚中的多少,你都能取走剩下的所有硬币,赢! 比如对手取2枚,你就取3枚;对手取4枚,你就取1枚,始终把总数控制在5的倍数上~这样一步步就能把最后一枚硬币稳稳拿到手啦~
点赞 回复 分享
发布于 06-19 09:31 广东
因为联合索引是按最左列排序的,跳过最左列会导致索引失效,数据库只能全表扫描
点赞 回复 分享
发布于 06-19 09:28 广东
class ListNode: def __init__(self, val=0, next=None): self.val = val self.next = next def addTwoNumbers(l1: ListNode, l2: ListNode) -> ListNode: dummy = ListNode() curr = dummy carry = 0 while l1 or l2 or carry: sum_val = carry if l1: sum_val += l1.val l1 = l1.next if l2: sum_val += l2.val l2 = l2.next carry, val = divmod(sum_val, 10) curr.next = ListNode(val) curr = curr.next return dummy.next
点赞 回复 分享
发布于 06-19 09:23 广东
class MyQueue: def __init__(self): self.stack_in = [] self.stack_out = [] def push(self, x): self.stack_in.append(x) def pop(self): if not self.stack_out: while self.stack_in: self.stack_out.append(self.stack_in.pop()) return self.stack_out.pop() def peek(self): if not self.stack_out: while self.stack_in: self.stack_out.append(self.stack_in.pop()) return self.stack_out[-1] def empty(self): return not self.stack_in and not self.stack_out
点赞 回复 分享
发布于 06-19 09:20 广东
mark
点赞 回复 分享
发布于 06-08 18:05 广东
mark
点赞 回复 分享
发布于 06-06 00:28 福建
mark
点赞 回复 分享
发布于 06-04 15:03 江西
mark
点赞 回复 分享
发布于 06-03 11:34 山东
mark
点赞 回复 分享
发布于 06-03 11:03 广东
mark
点赞 回复 分享
发布于 05-29 10:50 辽宁
mark
点赞 回复 分享
发布于 05-27 19:46 贵州
mark
点赞 回复 分享
发布于 05-27 11:00 江苏
m
点赞 回复 分享
发布于 05-26 16:22 湖北
接好运
点赞 回复 分享
发布于 05-20 18:19 浙江
接好运
点赞 回复 分享
发布于 05-18 11:14 浙江
mark
点赞 回复 分享
发布于 05-18 09:45 河北
mark
点赞 回复 分享
发布于 05-17 20:26 辽宁

相关推荐

不愿透露姓名的神秘牛友
05-28 23:26
双非本,刚学完Redis,项目只有外卖和点评,八股没准备,算法只有lqb省一,感觉敲的项目也是一言难尽没怎么吸收。怎么你们都有实习了
大牛之途:27急个锤子,你投日常实习最好的时间就是9,10月份,那时候暑期实习都结束了,正是缺人的时候。这份日常又能给你的暑期实习增加竞争力,暑期找的好了秋招也不怕了,都是环环相扣的
点赞 评论 收藏
分享
评论
43
228
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务