为了保证制作简历的安全性和流畅性,建议您使用Chrome浏览器进行访问
gxx 大连理工大学·2022届
APP 内打开
分享
20
53

美团面试-到店-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。经过一番抉择最终放弃了考研。这是人生的第一次大厂面试,还是菜,复盘才发现有很多问题没有讲清楚。再多复习复习,准备之后的秋招吧。


发布时间:2021年05月18日
用户头像
我来说两句…
共 20 条评论
胖虎乱溜达 山东科技大学·2022届
老哥,简历是写了什么项目
2021年05月19日 回复
gxx 胖虎乱溜达: 老师带的 计算机视觉相关 我应该多弄些和岗位高度相关的
2021年05月19日 回复
QED 中国药科大学·2022届
HashMap多线程下,jdk1. 7是头插法导致死循环,1. 8是尾插法造成数据覆盖。
2021年05月19日 回复
gxx QED: 确实,之前复习没注意到这一点,这下一辈子忘不掉了
2021年05月19日 回复
笨虎 浙江工商大学·2022届
大根堆那么堆里是一千万个元素,然后10次取堆顶,占用内存大。用小根堆堆里就10个元素,第11个元素进入后调整堆,弹出堆顶的那个最小元素,那么就可以保证堆里的元素就是最大的那10个,省内存。
2021年05月19日 回复
丁三胖 中国科学院大学·2022届
是小根堆
2021年05月19日 回复
gxx 丁三胖: 我的天哪 谢谢你告诉我 但是我心情一下子不好了😫
2021年05月19日 回复
sev7en庄 天津大学·2022届
我感觉一个小时内答那么多还加手撕代码很紧凑啊
2021年05月19日 回复
gxx sev7en庄: 哈哈哈哈哈哈没错
2021年05月19日 回复
Ringo 西南大学·2022届
楼主什么时候面试的
2021年05月19日 回复
满天花雨洒金钱 广东金融学院·2022届
确实是要用小根堆的
2021年05月19日 回复
用户15049
2021年05月19日 回复
皮皮虾 香港科技大学·2022届
很详实的记录,感谢!
2021年05月19日 回复
宋雪贤 上海理工大学·2022届
你复盘后会发现很多问题
2021年05月19日 回复
🚛日常 中央民族大学·2022届
估计这个部门比较核心所以面试问得比较深入
2021年05月19日 回复
佳佳舒 上海大学·2022届
感觉你基础还好啊
2021年05月19日 回复
刘强 东华大学·2022届
码住
2021年05月19日 回复
尼尔哥哥Neil.J 华东师范大学·2022届
同22届,加油加油
2021年05月19日 回复
Rachel小姐 安徽财经大学·2022届
楼主面成了吗
2021年05月19日 回复
我爱飞机 多伦多大学·2022届
😂楼主紧张了吧
2021年05月19日 回复