美团面试-到店-Java后端一面

美团面试-到店-Java后端一面(凉)

真实时长:60min

一、面试官的介绍(5min)

面试官的部门介绍:具体是酒店订单等、团购等(餐厅、预订位置)、到店综合(订KTV等),这三块面试官说是比较核心的业务,虽然不如外卖,但利润强过外卖。

部门的服务:千万级商家的服务、平台化(通用业务下沉、为爆发业务单独做一些系统、下沉支持更多业务)、BP业务;网关、权限、商家等级划分、订单的JMV(不懂什么是JMV)

我问有什么问题?

二、正式面试 (55min)

个人介绍:项目、个人表现、我主要说了成绩、奖学金、辅修情况;最后说了面试的目的,是为了提升自己的软件开发水平。

项目:

面试官问了创训的项目;我详细介绍了自己的创训项目;哪个地方最有挑战? 哪里的技术是比较困难的?

这里我项目的算法设计已经忘得差不多了,所以举了一个类似CNN的例子,回答了面试的问题;

语言、你熟悉Python还是Java?(简历里有写)

1.String 为什么设计为final?

2.hashCode和equals的区别?(这里说的不太好)

3.hashCode用来做什么?

4.hashCode冲突怎么解决?我简要说了数据结构字典中对于hash冲突的解决方法:拉链法、开地址法,面试官问我还有吗?我就愣住了,随后就具体讲了讲hashMap的再散列过程+HashMap里的拉链法。

5.hashCode和equals什么时候重写?(没答好)

6.重载和重写(马的一时最瓢说错了,重写是对父类方法的重写,我扯到接口方法的实现了)

7.Java的异常分类(我只讲到了顶层的分类,具体的分支没有讲到,面试官想要知道更细化的分类,受检都有哪些)

8.Java容器的分类 Collection 和 Map 两大类 让我继续划分,没说出来;这里的类的结构很重要

9.用Map存储有序,保证插入顺序的意思?LinkedHash、TreeMap的具体应用需要了解一下,比如他们在什么场景;

10.HashMap的put过程

11.又具体问了,扫描每个桶链表的细节。我不知道他为啥问这个,我之前在put已经说过了,估计他没听。但这里说到了头插法,似乎让他很感兴趣。为什么不用尾插法?我说头插法,一是查找效率高,二是插入的快。这里他又给我辩论了很多,尾插***不会发生死锁,循环嵌套?我这里扯到同步队列去了,操,因为实在不知道单线程情况下尾插法为什么会出现死锁循环,而头插法不会出现死锁循环。

12.线程池的原理,我讲了大概设计的原理:

核心线程池、最大线程数量、工作队列、拒绝策略的四个方面。

13.线程池满,你是指什么?我这里的意思最大线程满了,所以会发生拒绝策略。而只有核心满了,对于满队列而不了队列的工作会再创建线程去处理,因为这时候整个线程池只有核心满了,还是可以创建的。

14.拒绝策略有哪些?(没答好)

15.线程状态,等待态和阻塞态的区别要注意下。

16.什么情况下线程会阻塞?(获取不到锁)

17.wait(10)会让线程进入什么状态?wait()究竟有什么用?我讲到进程间的通知等待模式

数据库:

1.索引的分类(搞清楚聚集索引、非聚集索引)

2.mysql的索引数据结构?innodb(哈哈我还真不会这个引擎,说了个b+树)

3.为什么用b+树,而不用二叉树呢?为什么不用b树?

4.你说你看过b、b+树的结构,那么删除、新增是如何变化?我不清楚b+树的增加删除操作,我讲了b树的增加和删除的流程。

5.事务有几种隔离级别(这方面看的少,就说了有四种,具体说出了两个)

6.可重复读解决了什么?我说了不可重读带来的问题

框架:

我直接说不了解了,她想问Spring

JavaIO:

我说没来及了解,异步IO

计算机网络:

1.TCP为什么能建立可靠的连接?我讲了三次握手的过程、三次握手解决的问题;

2.拒绝服务攻击,你了解吗?我说我不知道。他讲了三次握手可以防御这个,防御大量的伪造链接。然后我问说:这个跟DDOS是一样的吗?他表示赞同。

3.TCP除了三次握手、四次挥手,还有没有什么机制保证可靠传输?我讲了滑动窗口,控制流量这一方面的问题。(这里说的不好)

4.快重传(没答上来)

5.Http状态码,有哪些分类?每一类知道一两个可能比较好。

6.Http首部的构造,通常有什么字段?我就记住了我在季节兄弟说的content-length这一个非常重要的字段,不知道说错了没;(详细的字段没说好)

7.一个URL输入到地址发生了什么?

8.Http的缓存机制(没答上来,我说了缓存机制在1.0和1.1的不同,比如请求对象,他说行)

设计模式:

1.你知道哪些?

我说单例(饿汉、懒汉)、迭代器、适配器,我就知道这三个,详细说了下。但面试官想听到更多。

本来我想引导他让我写单例,但是他没那意思。

手撕代码(15min):

1.手撕之前,问我,一千万个数据,找前十个数据?堆排序,大根堆。(找最大的10个就维护一个大小为10的小根堆,否则反之)

然后面试官问,你说大根堆?为什么不用小根堆?我说大根堆最顶是最大的元素啊,因为要找前十个最大的。他又反复问我,我还是坚持了大根堆。这里我其实不太确定了,我觉得应该没错。

2.两个栈实现一个队列(很简单,他没让我做)

3.删除链表倒数第N个结点(原地翻转,删除第n个,再翻转)A了。

反问环节

面试官评价:你现在最大缺的就是项目,多去实习实习;多多实习没关系的。(我就是在等你给实习机会呀!笑了哈哈)

倒没说我基础不足啥的,虽然我确实基础不好,但他没说,却说了项目太少,有价值的项目。

总结

不管怎么样,继续学习吧。我非常想进大厂,身边有同学已经早早拿到了字节和美团的实习offer。经过一番抉择最终放弃了考研。这是人生的第一次大厂面试,还是菜,复盘才发现有很多问题没有讲清楚。再多复习复习,准备之后的秋招吧。

最后希望一面能通过

#实习##面经##美团##Java工程师#
全部评论
大根堆那么堆里是一千万个元素,然后10次取堆顶,占用内存大。用小根堆堆里就10个元素,第11个元素进入后调整堆,弹出堆顶的那个最小元素,那么就可以保证堆里的元素就是最大的那10个,省内存。
5 回复 分享
发布于 2021-05-17 00:56
HashMap多线程下,jdk1. 7是头插法导致死循环,1. 8是尾插法造成数据覆盖。
3 回复 分享
发布于 2021-05-17 10:52
确实是要用小根堆的
3 回复 分享
发布于 2021-05-16 22:16
是小根堆
1 回复 分享
发布于 2021-05-16 23:05
同,面试答得还挺好,凉
点赞 回复 分享
发布于 2021-09-03 15:12
堆排序手撕了吗
点赞 回复 分享
发布于 2021-05-20 12:07
估计这个部门比较核心所以面试问得比较深入🤣
点赞 回复 分享
发布于 2021-05-17 21:45
同22届,加油加油
点赞 回复 分享
发布于 2021-05-17 18:56
老哥,简历是写了什么项目
点赞 回复 分享
发布于 2021-05-17 13:31
😂楼主紧张了吧
点赞 回复 分享
发布于 2021-05-17 06:25
我感觉一个小时内答那么多还加手撕代码很紧凑啊
点赞 回复 分享
发布于 2021-05-17 03:29
想问下楼主什么时候面试的
点赞 回复 分享
发布于 2021-05-16 21:58

相关推荐

一、开场与项目基础先做个自我介绍。为什么用消息订阅异步落库,而不是同步写库?系统峰值大概在什么级别?有考虑过为什么库支撑不了吗?二、消息队列可靠性MQ 写失败了,怎么保证消息不丢?是先批量更新数据库,再写推送状态吗?先更新数据库再推送?如果推送状态写失败了会怎么办?可以支持重试吗?如果更新成功、推送也成功,重试一次会怎么样?会推两条吗?三、分布式锁项目里用的分布式锁具体怎么实现?锁是怎么释放的?锁过期时间设 30 天,30 天内重试会有什么问题?正常用 Redis 实现防并发的分布式锁,应该怎么实现?释放锁在哪里释放?正常请求结束后,在哪个环节释放锁?四、MySQL 优化线上一条 SQL 执行 5 秒,怎么优化?这 4 种 SQL case,哪些能命中索引,哪些命中不了?知道什么是 ICP 优化吗?五、高并发:商品超卖活动限量 100 件,说出三种防止超卖的方案,并对比优缺点。详细说下 Redis + DB 这种方案,怎么保证 Redis 和 DB 的一致性?这种方案和第二种 Redis + MQ 方案有区别吗?Redis + MQ 方式下,怎么保证 Redis 和 DB 的数据一致性?比如 Redis 扣减成功、MQ 写失败怎么办?如果加入对账机制,对账需要哪些数据?上游、下游分别要存哪些数据?六、大数据量分页与分库分表订单表 5000 万数据,分页查询怎么优化?订单表达到 1 亿条,单表查询越来越慢,怎么处理?水平分表具体怎么分?用户订单表,根据什么字段切分比较合适?七、数据库死锁数据库死锁产生的原因是什么?怎么避免?生产或日常开发中有没有遇到过死锁问题?八、Redis 缓存问题什么是缓存雪崩、缓存穿透、缓存击穿?分别怎么解决?九、缓存更新策略先更新数据库还是先更新 / 删除缓存?方案是什么?先更新 DB 再删缓存,那什么时候写缓存?十、限流方案实现严格一分钟内的请求限流,用 Redis 怎么做?还有其他限流方法吗?滑动窗口(ZSET)、令牌桶、漏桶这几种方案有什么区别?适用场景分别是什么?十一、前端基础前端平时有接触吗?比如 JS?什么是跨域?为什么会有跨域?怎么解决?了解 CSRF 攻击吗?怎么防御?防 CSRF 的 Token 怎么生成?十二、分布式事务了解什么是分布式事务吗?说一下两阶段提交。十三、算法题完成两道算法题,并讲解代码思路。十四、AI 工具与 Agent日常开发用过哪些 AI 工具?豆包帮你解决了什么问题?Cursor 是付费会员吗?怎么付费?AI 生成的代码怎么验证正确性?让 AI 写一个 Redis 分布式锁工具类,你会怎么描述需求、怎么写 Prompt?系统客服角色接入大模型做智能问答,整体架构和流程怎么设计?RAG 的整体流程是什么?一份文档怎么向量化接入?向量检索后,是把所有相关 wiki 都交给大模型吗?检索出的内容做精简压缩用什么实现?什么是 AI Agent?和普通写 Prompt 有什么区别?
点赞 评论 收藏
分享
评论
22
181
分享

创作者周榜

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