MT

美团(成都)Java研发工程师一面面经
作者:玄奇子
链接:https://www.nowcoder.com/discuss/712956
来源:牛客网

8.19 18:45 一面(65min)

有两三题没答出来。。按照今年成都的内卷程度感觉寄了
项目
实习的项目重构主要是按照什么标准?

基础
操作系统

  1. 进程和线程的区别?

  2. 什么是临界区?

  3. 进程间通信的方法?

  4. 进程有哪些调度算法?

  5. 什么是死锁?死锁的条件?
    计算机网络

  6. HTTP属于哪一层?

  7. TCP和UDP处于哪一层?

  8. TCP和UDP有什么运用场景?有哪些区别?

  9. TCP为什么需要三次握手和四次挥手?

  10. 浏览器输入网址之后发生了什么?

  11. Cookie和Session的区别?
    追问:分布式Session如何实现?
    Java基础

  12. Java的异常体系?

  13. 遇见过什么Error?
    答:OOM
    追问:OOM你是怎么排查的?

  14. 遇到过NoSuchMethodException吗?
    有见过,但是没啥印象是什么场景了。。

  15. Integer类有缓存吗?为什么需要缓存?

  16. 我可以自己实现一个包名和类名都一样的Integer类吗?
    JVM

  17. JVM的类加载机制

  18. 有几种类加载器?为什么要有双亲委派模型?

  19. 打破双亲委派模型的例子

  20. Java的锁升级机制?
    追问:锁升级机制怎么实现的?可以从对象头来说

  21. Java有哪些GC算法?

  22. 了解过G1收集器吗?
    追问:四个步骤中哪些步骤会STW?

  23. Java的内存区域
    Java数据结构

  24. HashMap底层实现

  25. HashMap扩容时发生死循环是什么情况?

  26. ConcurrentHashMap底层
    追问:ConcurrentHashMap扩容机制

  27. LinkedHashMap了解过吗?用于解决什么问题?

  28. ArrayList和LinkedList的区别?
    逻辑题

40亿个不重复、未排序的unsigned int,给一个x,有2G内存,如果判断x是否在这40亿个数之中?
算法题

LeetCode 88 合并两个有序数组

二面 8.23 15:30 (50min)
项目

主要问的实习项目的整体作用,以及过程中遇到的难点
基础
Java并发

  1. ConcurrentHashMap和HashMap的区别?

  2. ConcurrentHashMap锁的粒度?

  3. Java与并发相关的关键字?
    谈了一下synchronized,主要说了一下锁升级。

  4. 同步方法和同步代码块?
    追问:一般更推荐用哪种?
    计算机网络

  5. 得到网页的IP地址之后是如何建立连接的?
    MySQL

  6. 索引设计的原则
    追问:给一个简单的SQL,问如何设计索引。
    追问:两个用=判断的可以变换顺序吗?

  7. 脏读、幻读是如何解决的?
    追问:next-key lock的上锁区间是如何确定的?
    这块问的比较细,追问了挺多关于锁的细节的,具体有点记不起了。
    Redis

  8. Redis是单线程还是多线程?单线程为什么依然快?

  9. Redis的多路复用是如何保证读写的顺序正确?

  10. Redis实现分布式锁
    计组

  11. 从磁盘I/O的大致过程?
    算法

LeetCode 2 两数相加
逻辑题
要吃一颗A药一颗B药,两种药看起来一样,现在手上有一粒A两粒B,怎样吃才能不浪费?
1000瓶液体,1瓶有毒,一小时毒发,需要多少只老鼠才能一小时试出哪瓶有毒?

美团成都,后端,java开发,一二面面经
作者:Jann
链接:https://www.nowcoder.com/discuss/714054?source_id=discuss_experience_nctrack&channel=-1
来源:牛客网

一面

聊实习项目和rpc

为什么用zookeeper做注册中心,zookeeper做注册中心存在什么问题(我讲了可用性不好,他意思还有别的问题,我不清楚了)

如果用redis做注册中心怎么做

zookeeper是AP还是CP型(我讲了顺序一致和线性一致)

讲一致性哈希的实现方式,一致性哈希扩容怎么做

讲 1.7 版本的 JVM 结构。。。

讲垃圾收集,CMS为什么不整理内存,G1为什么要整理内存

讲java的锁(讲了一下synchronized的锁升级过程)

java线程池参数

MySQL索引,索引优化,索引失效,explain
MySQL的ACID,原子性怎么实现的,隔离级别

二面

rpc的网络协议可以用哪些(http,tcp,udp)

用tcp和用http有些什么区别(只考虑到带宽占用,读写数据多少不同的性能差别,他说安全性,我觉得http和tcp没差)

http的3xx状态码,https握手过程

golang里面协程间通信的方式

redis数据结构,redis的哈希表有什么独特的(渐进式rehash,为什么要用渐进式rehash),redis的跳表原理和效率

缓存击穿,一般是怎么造成的缓存击穿,一般怎么解决。怎么解决缓存数据和db数据不一致的问题

top 命令,有个 load average,三个数字是什么意思?(不知道),cpu负载的百分数 是什么意思?(答错了)

进程和线程,线程通信方式

fd的默认上限是多少?(不知道), io的本质(socket文件读写)

同步异步io,select和epoll

红黑树和AVL数的差别,应用场景

事务的隔离级别,MVCC原理,InnoDB索引,是不是所有场景都B+树适用

索引和锁的关系?(我讲了可重复读索引的行要加锁,他问行锁怎么加的,加到哪儿,不懂)

实习项目
算法题:二叉树层序遍历

效率很高,都是面完当天反馈,昨天面了一面,然后很快就约今天二面了,今天刚面完二面,又约hr了,开始许愿~

美团+java开发+秋招
作者:blingbling的小狮子
链接:https://www.nowcoder.com/discuss/713085?source_id=discuss_experience_nctrack&channel=-1
来源:牛客网

一面(90mins)2021/8/19

自我介绍
mysql四大隔离级别
脏读,幻读,不可重复读
MVCC底层原理
当前读和快照读及使用场景
mvcc线程安全吗?
对于 读读, 读写, 写写,mvcc会发生线程不安全问题?
Myisam 和innodb, memory区别
mysql中行锁,表锁,及使用情况
举例innodb中行锁,表锁的使用情场景(面试官:where索引主键:行锁,where索引列:表锁,无where索引:表锁,EXPLAIN中的type字段:七大访问级别)
mq消息中间件
mybatis
redis 的应用场景
jvm模型及其各部分的作用
jvm 1.7和1.8的区别
concurrent包中都有什么?
CAS原理,ABA问题如何解决
经典线程池有哪些?每个的底层原理是什么?
线程池的七大参数,及其工作过程
线程池四大拒绝策略
7大阻塞队列及其应用场景
为什么有survivor区?survivor的作用是什么?(面试官:防止碎片化)
survivor区为什么分为to区和form区?为什么不分为三个区或四个区?
hashmap 1.7和1.8的区别?
hashmap 1.8删除节点,红黑树会不会退化为链表?
ConcurrentHashmap底层原理和hashmap的区别
ConcurrentHashmap的层的vector,和lock的原理
hashmap和hashtable的区别
lock和sychronice的区别
AQS和lock的比较
Tcp三次握手,四次挥手,过程及原因
tcp,udp位于OSI哪一层?
tcp和udp的区别
spring AOP底层原理
AOP 代理常用的都有哪些
手撕:链表的就地逆置问题
手撕:寻找链表的循环节点
反问

美团提前批面经(已OC)一面+二面+三面+hr面
作者:0xCAFEBABE_
链接:https://www.nowcoder.com/discuss/711968?source_id=discuss_experience_nctrack&channel=-1
来源:牛客网

一面 7.28 60min

基本上就是项目介绍+Java基础

自我介绍
项目中遇到的比较困难的事情如何解决的?
谈一下Java面向对象,什么是多态?
final关键字。(答了对类、方法、变量的修饰)又问final修饰的对象和引用之类的。提到了static final 是常量,编译时确定,所以顺便又答了static关键字。
abstract关键字,啥是抽象类。和interface区别?你认为为什么要有抽象类?等等。
重载和重写的区别。后又聊到多态,方法签名。
Java中集合类的架构(答了一下Collection下面List、set之类的继承关系)
ArrayList与LinkedList的区别,实现、操作、扩容等。
Java中为什么要有封装类?比如有int为什么要有Integer?(谈到在集合类中的使用,比如昨晚键值,面向对象的统一性,都继承自Object)
Object有哪些方法,谈谈都有什么用?谈谈HashCode方法。
equals和==,
什么是反射?反射能获取private属性的嘛?哪里地方用到了反射?
Java创建线程的方法有哪些?谈谈Callble。
Java Swing的事件机制是怎样的?答了怎么做,实现action匿名内部类方法。。但是面试官想问底层怎么实现的
线程进程?什么是线程安全?Java中保证线程安全有什么办法?(答了Synchronized、Lock、AQS、CAS之类的)
Synchronized和Lock的区别?
OSI七层模型,每层有哪些协议?
HTTPS如何保证安全的?具体加密过程?(两次HTTP传输、对称非对称加密、8步)
算法,二分查找。在此基础上的旋转数组的二分查找。
反问。介绍了部门和组做的事情

二面 8.4 70min

二面面试官感觉是个领导,很友好和善,面试中卡壳的地方会说:没关系,我们继续。所以整个面试节奏很快、容量很大。

自我介绍
介绍一下项目。并谈谈项目中遇到的问题,在这样的情景下,进行怎样的改善的几个点。
如果叫你重新做这个项目,你有怎样的心得体会?有哪些经验教训?
你认为客户端开发步骤流程怎样的?开发中需要关注哪些点?
为什么要设计抽象方法、抽象类、接口?(一面问过,答得就不好,下去也没看呜呜呜)
Java中的权限关键字,protected的含义
String abc = new String("abc"); 创建了几个对象?
StringBuilder和StirngBuffer的区别。
线程和进程的区别?死锁。线程切换为什么比进程快?
线程状态
Java运行时内存区域划分。还问了几个很细的问题
synchronized关键字
谈谈CAS,哪些地方用到了CAS?
谈谈AQS。公平锁和非公平锁?
volatile关键字。追问了能保证线程安全嘛?为什么有重排序?
GC(算法、各种垃圾回收器)工作、回收线程并发、STW。如何判断是否应该回收?哪些部分可以作为GCRoots?(此时)
如果一个对象太大,或者说创建了很多大对象,会造成什么情况?(OOM)除此之外还有哪些情况会造成OOM?
用过Linux吗?问了一些命令:创建一个文件夹并在其里面创建文件、查看文件、修改权限(命令含义)、统计行数,grep使用方法,管道用法?
数据库熟悉吗?谈谈什么是第一第二第三范式。
写一个SQL,连表查询。有几种连表方式
谈谈知道的设计模式。(乌拉乌拉说了一堆)
代理模式怎么实现的?反射是什么,具体实现?能不能通过反射修改变量值?那能不能修改方法的内容呢?
原型模式中的深拷贝怎么实现?(答的序列化)
你在项目中使用了反射通过方法名调用了方法,有没有其他更好的办法呢?
设计模式中,简单工厂、工厂方法模式、抽象工厂之间有什么区别?
有哪些排序?稳定性是什么,哪些稳定?
自己遇到困难、压力特别大(比如任务完不成、难题突破不了)时会怎么做?有过这种情况嘛?
有什么业余爱好吗?(面试官:我们这可以打乒乓球😂~)
写一个插入排序、一个堆排序
反问

整体而言比较基础,但有些也挖挺深的。
三面 8.6 40min

三面感觉是leader的leader,感觉大都问的问题挺深的,,开局两个就没答上来

自我介绍
Java中多态的实现机制(答了是什么,然后依稀记得一些动态链接、虚方法什么的。。唉基础不牢啊)
Java中泛型的实现机制
线程安全的单例模式,并解释两个if和volatile
JMM模型
Java中的四种与引用(强软弱虚),软引用应用。
谈谈内存管理方式?虚拟内存是什么
算法:买卖股票问题
反问

面完当场以为挂了,因为好几个问题没答上来,算法题也有点小问题。。感觉都凉凉了,结果周五面完,周一(8.9)晚上接到了约hr面的电话。
hr面 8.12 25min
我看面经hr面都挺轻松愉悦的,为啥到我这hr面感觉比技术面还严肃 😂 😂

自我介绍
个人经历(由于跨专业考,多问了一些)
项目经历、遇到困难、如何解决的
人生经历中觉得最成长的一件事
觉得自己性格做事如何,有哪些有待加强的地方?
职业规划(具体是对客户端几大方向)
反问

面完内心:完了,那么严肃,问的问题又那么标准,还没有问意向工作地,估计凉凉了

面试复盘|美团-优选
作者:李爱乐
链接:https://www.nowcoder.com/discuss/711452?source_id=discuss_experience_nctrack&channel=-1
来源:牛客网

一面-816-1h左右

1.自我介绍。
2. Concurrent包用过没?用过哪些?说下ConcurrentHashMap的构造,为啥可以保证多线程安全?加锁加的是哪,扩容时怎扩容?
这里其实知识点特别多,建议大家从HashMap1.8开始看到ConcurrentHashMap,比如为啥HashMap1.8后结构的变化(桶数组),链表,红黑树。为啥必须是2的次方的初始化,为啥初始是16,链表是8(即注释里面那一大块数字表示的其实是概率),扩容的方式和触发条件,为啥用尾插。然后ConcurrentHashMap的volatile体现在哪,锁加载哪,那后扩容是哪个线程负责的?扩容在什么情况下会两个线程进行。
3.网络TCP和UDP的区别?使用场景?UDP一定不可信吗?为什么三次握手,为什么四次挥手?面向场景可以具体一点吗

4.操作系统:内存页面换出算法

我答了LRU和LFU,还有先进先出,问还有吗?我忘了。这个还有要别的吗

5.问问LRU和LFU的具体实习?
我说了LRU的两种实现,LinkedHashMap的实现、还有HashMap中套双向链表的实现。然后就问我LRU,尴尬的地方来了。
LFU这里确实记不清了,只记得是双HashMap实现,但是我记得双HashMap实现时间复杂度都是O(1)啊,面试官非说不可能O(1),一定是log(n),要是O(1)能引起业界的变革。下来查了一下,确实是O(1),尴尬。具体实现方式大家看下LeetCode,双HashMap确实是O(1)啊。

6.为啥用线程池?多线程和多进程切换的区别?
我回答线程的创建和销毁有代价,频繁创建不合算,所以用池化的思想。然后问我除了这个以外呢。我答无法控制线程数量吧。
多线程和多进程这里从单个进程的多个线程进行回答即可。
7.问Redis的过期?和内存淘汰策略(就LRU和LFU在Redis中的具体实现)。zset的实现。
跳表,跳表的实现。过期A开题和V开头检查范围的不同。

8.问我MySQL几种隔离级别?然后问我分别解决了啥?让我举例子不可重复读,问不可重复读和脏读的区别?这里其实我忘了细节了,尴尬,一般问的是幻读和不可重复读的区别,我想了半天忘了。

其实下来一查,脏读是A一个事务没提交B事务就读到了,不可重复读是B事务过程中,A事务调交前和A事务提交后读取同一列的值得到的结果不一样。主要就是看A提交与否。

9.然后问幻读咋解决?

其实这里有很大的歧义,从理论上讲InnoDB的不可重复读模式解决了一部分幻读,即快照读的幻读。但未解决当前读的幻读。上次京东面试官问我,我说不可重复读就解决了幻读,他说没有,不可重复读并未解决,要在业务上做保证。其实不就是加GAP锁和行锁变为next key锁么。即加for update等字段。因为我这样回答,京东以为我这里的知识点是混乱的,没给我解释的机会,自己在那给我说没解决,要在业务上做保证,就换下一个问题了。

我这里受京东影响说没解决,美团后面说其实算解决了,很尴尬。虽然存在当前读的问题。

但是我这次吸取上传的教训,咔咔咔提前把为啥没解决说了,面试官说他知道我明白。
其实这个问题大家一定要小心,我实习面美团的时候,知道这个,但是我当时对当前读和快照读的概念没有严格定义,从undolog的实现上解释了这个问题(其实是丁奇老师MySQL36讲里这里的内容),其实是正确的,但是面试官说和这个无关。(再次尴尬)。
追问我MVVC到底是用来弄啥的?我说一个乐观锁的实现,空间换时间,保证隔离级别的同时,还能提高并发程度。

10.撕题,最近公共父节点。

11.问你现在是否有offer。

12.反问。

美团优选,Java技术栈,to B。

供应链中招商家,对商家进行评级等各个模块。

美团的整体面试喜欢刨根问底,会反问你为啥,你答一部分会问你另一部分。但总体体验还行,没出现太大问题。
二面-818-45min左右

总体没问多少技术,一直问一些管理上的问题,包括技术踩坑。

1.自我介绍。
2.问我为啥技术栈有些多?我说项目原因以及甲方要求使得我不得不上手这些。

3.项目过程中沟通问题?最不能忍受同伴的编程问题?
4.如何和甲方沟通?
5.项目中为什么会出现跨域?说一下具体场景?
6.同伴沟通的新的。

撕题:

1.跳台阶。2.合并区间。

反问技术栈:SpringBoot做了些封装。
HR面-818-30min

效率快得和网上传闻的字节一样(而我字节很慢)。

1.自我介绍

2.职业规划

3.意向城市

4.本科专业和学校

5.已有offer

6.家庭情况

7.对美团的看法
8.工作环境和节奏的要求
反问我问了工作地点,朝阳区望京附近。然后问多长时间能出结果?3-5天。

全部评论

相关推荐

1 1 评论
分享
牛客网
牛客企业服务