美团Java暑期一面

面试流程

算法题+SQL题——>Java八股——>简历项目——>场景题——>个人情况——>反问

算法题+SQL题

算法题

大数加法,给两个字符串,返回两个字符串的和,并以字符串的形式返回,时间复杂度O(n)。

例如:"787"+"350"="1137" (787+350=1137)、"321"+""=321(321+0=321)

顺便问下有没有评论区能看懂我写的这三个数字字符串是什么意思呢?

一开始思路错了,没A出来,面试官提醒了一下按照人的逻辑计算,这才想起来进位,完成了大概80%吧,剩下一些边界比较难处理,写完太费时间了。于是和面试官讲了一下思路。

SQL题

从学生表和成绩表中,查询学生学号、姓名、平均成绩

用到了LEFT JOIN、AVG、GROUP BY

成功通过

由于写第一个算法题耗费了不少时间,到现在都快过去40min了

Java八股

1.说一下HashMap和ConcurrentHashMap的区别?

2.说一下创建线程有哪些方式?

3.刚才你提及了线程池,你觉得用线程池有什么好处?(我回答了线程池的七个参数、线程优点)

4.刚你提到了线程池的一些参数,核心线程数和最大线程数,它们各自的作用是什么呢?

5.什么时候请求才会被拒绝呢?会直接拒绝掉吗?还是放到什么里面?(我回答放到一个队列里面)那么队列满了怎么办呢?(这个不会了)

6.用过MySQL吗?说一下MySQL为什么要用B+树用作索引结构?(这个题没有太回答到点子上)

7.说一下TCP三次握手的过程吧

8.平时用过消息队列吗?(回答没有)

9.有了解过微服务吗?(回答没有)RPC这个概念有了解过吗?

10.对JVM了解吗?(我回答说了解一些垃圾回收相关的)OK那说一下垃圾回收,就说一下内存区域有哪些划分?

11.知道Full GC是什么意思吗?

12.JVM内存区域里面堆、栈、方法区的概念了解吗?

基础知识了解的差不多吧,聊一下项目吧,聊的是我简历上点评项目

简历项目

简历项目为1-13,中间穿插一个场景题

1.我看你有提到缓存的一些概念,说一下缓存穿透、缓存击穿、缓存雪崩这三个问题和什么情况下会触发?

2.前面有提到缓存穿透可以存一个空值,那么存一个空值会带来什么负面影响?

3.用什么方法可以避免缓存中存放长期没有用的数据?

4.利用分布式锁解决缓存击穿的问题,说一下具体场景、和怎么实现的?

5.我看你用分布式锁用的Redission,而不是用原生的Redis,Redission有什么优势和特点?(这个一点印象也没有)

6.说一下为什么用SortedSet来做点赞排行榜?有什么好处?SortedSet对你这种场景而言有没有其他的优势?了解原理吗?了解SortedSet底层用到了哪些比较核心的技术?

场景题目

1.围绕点赞的,当数据量很大时候,到百万级别,用SortedSet实现点赞排行榜有可能遇到什么问题,你能想到的?你可以考虑一下他是基于什么实现的,可能有什么问题,从这个角度去想?(回答内存空间不足,只展示一些粉丝数比较多的用户,减轻压力。面试官评论说我这种方案属于一种冷热分离,冷的数据放数据库,热的数据库放缓存)

下面依然是简历项目问题7-13

7.你知道GEO底层使用的是什么数据结构吗?(我回答错了,面试官说没事,我是直接用没有很了解底层的东西)

8.使用Redis生成全局唯一ID,因为Redis什么特性才选用它生成唯一ID?唯一ID是用来做什么呢?所以你并不是用递增的方式来生成ID的吧?生成唯一ID有听说过雪花算法吗?

9.乐观锁解决超卖问题是怎么实现的?(回答先判断库存,再进行扣减)

10.假如真的是一个秒杀的场景,瞬时的QPS比较高,除了乐观锁,还有其他限流或者降级的方案吗?就是保证用户体验。了解降级或者限流的概念吗?(回答不是很了解,这个题放我一马了)

11.你知道Redis的热点key问题吗?比如说某一个优惠券是一个很热门的,你是存在Redis里面吗?相应的数据。Redis存在单节点的问题,如何避免呢?了解过Redis的集群吗?分片呢?(回答都没了解过)

12.基于BitMap存储用户签到数据,为什么要用BitMap呢?(回答节约存储空间)

13.假如说有很多很多用户,导致这个存储最后还是数据膨胀了,这时候应该怎么解决,有什么思路?(回答分库分表)

个人情况

1.你平时是怎么学习的?

2.简历中的这些项目是你自己自发的一个项目?还是什么情况呢?

反问

1.针对于这次面试,给我一些建议

(面试官说了一下我的优点,写代码风格挺好:会注释,整个逻辑先盘清了再着手。基础知识很流畅,准备的很好,八股文这块很OK的,深度也挺好的。项目这块,是自发的项目,是有愿意学习愿意实践的一个动力,还是挺好的。

劣势是项目没有去真正的在线上跑,有些东西掌握的不够深入。后面尽量加强我项目的熟悉度,增加一些适当的扩展,通常面试官会根据我的项目做适当的延伸,答不出来也是正常的,他只是想知道大概学到了哪一步而已。)

2.这次面试结果多久通知

(应该是这周有结果,然后问了一下我志愿更倾向于哪个城市)

面试官说应该会给我过(鼠鼠当时第一道算法题没有完全A出来,心里都凉了半截,感觉一面要挂了,心态有点不好),但顺便也给我提醒二面难度会更高一点,八股这部分背的再熟,二面面试官可能就会直接跳过问下一个问题,这部分优势会弱掉,可能会深挖我的项目和一些场景题,建议我这几天加强一下准备,因为面试官问我的时候有一些概念我都没听过。

这次的遇到的面试官人太好了,给我了很多有用有价值的建议,希望我也能当上团孝子吧。

互相致谢,然后面试结束。

希望大家在评论区针对我的简历项目问题提出一些更好的答案,这方面我回答的确实一般般。

#Java##暑期##美团#
全部评论
这个感觉是真好,像老师一样
点赞 回复 分享
发布于 04-17 06:58 美国

相关推荐

04-29 20:44
已编辑
西北大学 Java
美团一面4.25  (70min)### 介绍部分1. 自我介绍2. 选择一个项目进行介绍3. 项目的背景### 提问部分1. 把项目涉及的表都列出来,并设计ER关系图2. 把项目的订单表具体的每个字段写出来3. 查询订单表中,某个消费者(id)在某一个时间段(startTime, endTime)的订单状态为已完成(1)的订单信息4. 如果现在有一个联合索引:消费者ID,订单号ID、订单状态,这个查询语句可以命中几个索引?5. 怎么分析这个语句是否命中6. EXPLAIN关键字的key_len表示的什么7. MYSQL的InnoDB采用的是什么结构?有什么优点### 编码部分编写一个订单类,由消费者ID,订单ID,农产品ID这三部分,怎么去重?1. 介绍代码的设计思路2. 详细介绍equals和hashCode3. 为什么有了hashCode还要设重写equals4. hashset的底层原理是什么### 八股问题1. ThreadLocal为什么会内存泄漏?2. AOP的执行具体在哪部分?3. 如果给你一个新的技术栈,如何学习?### 反问1. 我们部门是Saas软硬件部门,那我们需要有一些嵌入式的背景知识吗?2. 我目前想要继续学习,请教一下是比较建议去在现有项目的基础上学习一些新的功能,还是去再做一些新的项目?美团二面4.29  (65min)### 介绍部分:1. 自我介绍2. 项目介绍(Java项目   1. 项目中主要负责了什么3. 你的优点4. 你的缺点### 面试官业务介绍:### 项目具体场景问题:1. ThreadLocal介绍一下具体是怎么使用的?   1. Threalocal的值可以同时被多个线程访问吗?   2. 子线程可以访问到Threadlocal的值吗?   3. 那有什么方法可以让子线程访问吗?2. 介绍一下 WebSocket实时通信 和 前端轮询通信方式 各自的优缺点   1. 有遇到过WebSocket断开的问题吗?(没有   2. 那你有做什么防止WebSocket断开后重连的策略吗?(心跳检测3. Redis是怎么保证数据和DB内的数据一致性的?   1. 介绍一下缓存穿透、击穿和雪崩,并有什么策略来解决?4. SpringTask如果限时1分钟,在59秒时用户发起支付,由于一些接口调用导致用户支付完成,但是SpringTask异步订单取消,这个差异怎么解决?(支付前二次验证5. LRU是啥,底层原理?   1. 对于限制容量为5,并按照123456123456的顺序,LRU有啥问题?   2. 怎么解决?(说结合LFU,但最后还是没有说出来)   3. WebSocket连接,有1台服务器和3000台用户端,如果需要断开一些WebSocket连接来保证实时通信的效率,应该怎么解决?(LRU和LFU结合,但其实具体细节说的不对)### 手撕1. 指定范围内翻转链表(力扣92题,头插法)
点赞 评论 收藏
分享
评论
8
53
分享

创作者周榜

更多
牛客网
牛客企业服务