美团-Java后端-平台技术部-一面凉经

暑期实习投递之旅差不多结束了,整理一下之前的面经,自己查漏补缺,也顺便分享一波,和牛油们互帮互助

算法

  • LC 2 两数相加——前一天第一次做,看题解挺顺畅以为还能秒,结果卡死了。大体思路可以,但 carry 进位位置一直放不对,含恨满半小时没 debug 成功,哎!太菜了也

30 min

MySQL

  • 什么是事务的隔离级别?区别是?——老八股了
  • 幻读是什么意思?——概念不清,乱解释自相矛盾了
  • 常用的存储引擎有哪些?区别是?——MyISAM 不了解,说不出东西,只能说 InnoDB 的特性
  • B 树和 B+树的区别?——答 B+树数据只存叶子结点,非叶子节点只存指针
    • 为什么要这么设计?——减少层数,IO 次数
    • 还有别的优势吗?——说了下叶子结点双向链表,方便范围查找
    • B+树什么时候分裂?——不会,勉强说结点的指针数量达到一个阈值后分裂;追问阈值多少,不会(查了下可能是页大小 16 kb)
  • 什么是悲观锁,什么是乐观锁?——麻绳专挑细处断,只能想起 Java 的定义了,MySQL 具体锁实现忘了,硬扯了共通定义
    • 举个例子(悲观锁)——愣了;什么样的 SQL 是悲观锁?——愣了,答 cud 都会加;不太满意的回答,继续问
    • 假设要同时修改一行 id=1 的数据,怎么加锁?——愣了,确实不知道,没学到位,哎(估计想问 select... for update/share 加 S 或者 X 锁,深了可能问间隙锁之类?猜测)
    • 那乐观锁呢?(概念)——按 Java 中的 CAS 概念勉强回答了
    • 举个例子(乐观锁)——愣了,不会,结束后看了下是在应用方面处理而不是 MySQL 自身有乐观锁,比如给数据库添加一列版本号字段用于乐观锁比较,能防 ABA;或者就跟原始值进行比较,简单不用动表结构,但是可能防不了 ABA 问题(或者加时间戳来避免 ABA?)
    • “那我指引你一下,比如说我们现在数据库里面……诶你会写 SQL 吗?”——扎心了,破防了,确实好久没写过了,从这开始感觉就凉了
  • “那我也不问你这个了;你知道数据库可能会出现死锁的情况吗?”——实话实说只能想起 Java 和 OS 方面的死锁,MySQL 死锁确实不熟

“那数据库咱们就问到这;嗯,你说你还会 Redis?”——“嗯,了解一些(硬着头皮答应,感觉又要被拷打)”

Redis

  • Redis 是单线程还是多线程?——都有,分情况
  • 那单线程好还是多线程好?——讲了讲为什么单线程为什么多线程,没有好坏,分情况使用
  • 分布式锁在 Redis 里面怎么做?——setnx
    • 怎么判断加没加上锁?——讲 setnx 机制
  • Redis 有哪些数据结构?——5 基本类型
    • 介绍一下 Hash——类似 Java HashMap,举例讲了应用存对象
  • 场景题,ABD 是资源,数字是城市 id,有这些数据;比如保存 A 资源这行信息时,要往 Redis 里面存缓存写数据,读取时要求查这个城市 id 下有哪些资源,应该 Redis 使用什么数据结构合适?
资源 城市 id
A 1,3,5
B 2,5
D 1,5,7

——没思路,乱猜:想了想只是判断有哪些资源,说可能set 合适一些

  • 那你讲讲 set 什么样的数据结构,key 和 value 是什么?——乱答,汗流浃背,不知道是紧张还是确实对 set 概念不清,不知道说什么
  • “你说你哪里不理解,我可以指引你的”——感动,但是我稀里糊涂都不知道现在卡在哪,脑子空白了已经
  • “是对 set 不了解吗”“应该是吧”(我也找不到理由只能顺着走,哎)
  • “那 String 结构你了解吗?”“您是说 SDS 吗”“不,我就是想知道你会不会用这个东西,还是说只是停留在背上”(麻了,心凉)
  • 那我让你用 String 解决这个问题,你怎么存?——我脑子已经不转了,面试官带着我指引告诉我怎么整,让我模仿填后面的,大概结构如下: 1 A_D 2 B 3 A 5 A_B_D 7 D 然后讲字符串需要分隔拼接拆开,set 不需要,瞬间好像就领悟 set 了,呜,但是晚了。面试官反问我理解 set 了吗,我稀里糊涂说了一堆,然后替我圆场说我应该是理解 set 的,但是不知道我思路卡在哪(感动,惭愧)
  • 加点难度,A 资源数据更新成 2,4,怎么存?——脑子又懵了,哎。卡半天继续被指引,最后面试官替我总结结论是拿到老数据 1,3,5,然后找对应 key,里面找 A,把 A 删掉。我只能嗯嗯,也没别的思路了。说没问题,接下来问问 Java(感觉还是有问题)

Java

  • volatile 关键字有用过吗?——凭印象讲概念,提到缓存但是具体说不上来;
    • 照你说的那 a = 1; a = 2; print(a); 结果是 1 吗?——愣了,确实自己有些对概念不清,只能答不是,印象中与多线程有关,但具体案例和原因忘了,哎,答得好烂(回头查了下,Volatile 是让每个线程不读自己的工作缓存,共享变量被修改实时会被其它线程感知到,或者说不存储其缓存每次拿最新的值,确保可见性和禁止指令重排)
  • 讲讲内存泄露和溢出?——说不上具体定义,硬扯 ThreadLocal 可能出现内存泄露,试图凭印象讲弱引用线程池等等蒙混过关,然后被拷打
    • 为什么没法被垃圾回收?或者说垃圾回收什么?——ThreadLocal 扯自己绕进去了,没看明白凭印象讲感觉自己逻辑都顺不通(现在整明白了,ThreadLocal 在线程池环境下,Thread 会复用,所以 ThreadLocalMap 会复用;ThreadLocal 作为 key不用了因为是弱引用可以被回收;但 Value 被 Map 强引用,key 没了也没法 remove() Value,Map 和 Thread 都复用就不会被回收,所以不主动 remove () 则 value 没法被回收从而内存泄漏!)
    • 什么是 OOM?——刚刚光说溢出了,能答上来的只是说新建对象堆内存分配内存不够会出现 OOM。听完感觉不是很满意就结束了(现在想了想前面问内存泄露,也可以说内存泄漏越来越多从而导致内存溢出,能说的点挺多的,可惜自己把握不住)

+1h = 1h24min

反问

  • “我这边准备的问题都问完了,你有什么想问我的吗?想要了解的,或者你想说什么都可以。”——太温柔了哥!真是想说一大堆想问一大堆但到嘴边只剩沉默,遗憾
  • 求建议——“你有参加过其他公司的面试吗?”,直接被看穿了呜。“你现在复习方向是靠背吗“,汗流浃背,然后给我提了很多建议和指导性的学习方法,感谢面试官!
  • 问业务——美团首页相关,讲了很多他们做的业务,还热心的讲了如果我能去他们组可以学到的东西,太心动了,人太好了,这时候还在安慰我,遗憾自己菜,错失良机!

1h35min 结束!

总结

2024-04-17

处女面是美团,面试官很好很善良,可惜自己菜没把握住。晚上没动静,第二天早上没动静,上午看挂了,晚上收到感谢信。 遗憾,但也认识到很多问题,学到很多,碰到这么好的面试官开局真的我感觉好幸福,起码让我对面试没那么恐惧了。

后记:0422 上午,用美团用最后一张要过期的券点完午饭,没一会来邮件了,复活了,还是同一部门,联系人不同,第二天晚上面。 复活了!说明我答那么烂面试官好人还没给我写差面评,甚至可能还不错所以第二周一开始就捞了,太感谢了!真是福气!

牛友们觉得有用的话,收藏同时顺便点点赞呗~谢谢!

#软件开发2024笔面经##美团#
Kiro面经 文章被收录于专栏

Java后端,自己的面经整理总结

全部评论
本篇面经讲解+学习资料指引:https://www.nowcoder.com/discuss/1306002
5 回复 分享
发布于 2024-05-11 16:51 四川
我觉得 mysql中的快照读 是通过mvcc实现的 这就是乐观锁 当前度是加锁 这就是悲观锁
2 回复 分享
发布于 2024-05-09 18:30 湖北
《……诶你会写 SQL 吗?》哈哈哈哈哈哈
1 回复 分享
发布于 2024-05-13 08:47 福建
大佬🐮
1 回复 分享
发布于 2024-05-11 17:33 广东
你好,请问一面不问项目吗
点赞 回复 分享
发布于 03-18 14:25 陕西
兄弟 算法是leetcode模式 还是acm模式
点赞 回复 分享
发布于 2024-05-16 14:50 广东
佬,复活的面试了嘛?怎么样?
点赞 回复 分享
发布于 2024-05-10 21:46 辽宁
请问现在准备后端的面试还要背计网吗 感觉看了些面经问计网的不多了
点赞 回复 分享
发布于 2024-05-10 15:30 日本

相关推荐

温州头等大孝子:你们的确很幸福,但是有一个小问题:谁问你了?我的意思是,谁在意?我告诉你,根本没人问你,在我们之中0人问了你,我把所有问你的人都请来 party 了,到场人数是0个人,誰问你了?WHO ASKED?谁问汝矣?誰があなたに聞きましたか?누가 물어봤어?我爬上了珠穆朗玛峰也没找到谁问你了,我刚刚潜入了世界上最大的射电望远镜也没开到那个问你的人的盒,在找到谁问你之前我连癌症的解药都发明了出来,我开了最大距离渲染也没找到谁问你了我活在这个被辐射蹂躏了多年的破碎世界的坟墓里目睹全球核战争把人类文明毁灭也没见到谁问你了
字节跳动开奖370人在聊
点赞 评论 收藏
分享
07-02 22:46
门头沟学院 Java
码农索隆:hr:“管你投没投,先挂了再说”
点赞 评论 收藏
分享
牛马为难牛马中,疑似阿里的员工看某个从拼多多跳槽过来的员工抢他的A+绩效不顺眼,反手向多多举报的,结果导致人家竞业被发现了,违约金5w,赔偿100+w上海长宁区劳动人事争议仲裁委公告显示:上海寻梦信息技术有限公司(拼多多主体)与一名员工的劳动争议案,因被申请人未到庭,仲裁委依法缺席裁决。结果是,该员工需要返还已发放的竞业补偿58,211.29元,并按约支付违约金1,089,103元。公告自发布30日后视为送达,15日内不诉即生效
nova!1028:竞业避坑指南:1、平时戴口罩及帽子、墨镜,不在公共场所露面 2、不在现有公司收快递 3、自己竞业期间社保缴纳不挂靠,最好不交 4、三方公司不能对外说可挂医社保 5、记住社保缴纳地的地址 6、注意陌生可疑电话,比如猎头 7、自己名下车子不要出入到服务的场所 8、竞业到期后不能马上出现在竞对公司股东信息上 9、注意平台简历内容,会被取证 10、竞业期过后,不要透露过往,以防被追溯 11、非必要不开大会和培训,注意公司内鬼 12、不在社交平台展示自己 13、电话卡不用自己名字登记 14、注意陌生的外卖 15、注意动车票信息 16、竞业期低调不结仇 复制过来的
点赞 评论 收藏
分享
评论
18
54
分享

创作者周榜

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