美团二面凉经

9.12 美团二面,细问java八股文,给我问懵了,项目问题一点没有,白看了好久的场景题🤡

  1. 自我介绍
  2. 问点Java集合类,arraylist和hashmap简单介绍一下(底层数据结构,扩容机制,查询的时间复杂度)
  3. 提到了hashmap的查询效率是O(1),为什么呢?(数组在内存中是连续内存,所以查询时间复杂度是O(1))
  4. hashmap遇到冲突是怎么解决的?(链地址法,rehash法,开放寻址法,(公共溢出区等))
  5. 刚才说hashmap的查询时间复杂度是O(1),但是遇到hash冲突hashmap会转变为链表或者树的形式,这样的查询时间复杂度好像不是O(1),为什么最终结论是hashmap的查询时间复杂度为O(1)呢?(当时说不知道,(应该是在数据量小的时候,是O(1),在数据量大的时候是链表的O(n)或者是树的O(logn),理想情况下是O(1)的)
  6. 刚刚说arraylist是什么时候扩容来着? (1.5 倍扩容,当当前数据量达到最大数据量的0.75的时候会扩容)
  7. 那hashmap是什么时候扩容?(先说了hashmap的链表转红黑树的时机,再说了当当前数据量大于等于数组长度*loadFactor(16 * 0.75)的时候进行扩容)
  8. 为什么hashmap是0.75呢?是1行吗?是2行吗?(当时答是妥协的因素,设为1和2是可以的,避免了hashmap在大量插入数据的情况下的扩容问题,扩容影响性能。为什么是0.75:泊松分布 ,看来还是考察的还是hashmap的源码,orz忙着看项目了,没背java基础,给跪了)扩容因子为0.75的好处:如果扩展因子过小,HashMap 将会频繁地扩展容量,导致较多的内存开销和较慢的查询速度;如果扩展因子过大,HashMap 将较少地扩展容量,导致冲突的可能性增加,查询速度可能会变慢。
  9. 为什么arraylist也有一个0.75呢?(底层arraylist在扩容时,会调用System.copy()方法,它会先生成一个新数组进行拷贝,所以扩容会消耗一定的内存资源)
  10. jdk还看过什么源码?(线程池)
  11. java里面线程有几种状态?(就绪,运行,等待,等待一段时间,终止)
  12. 阻塞和等待有什么区别?(没答好,查了一下,阻塞会持有临界资源并等待,等待会释放临界资源,不过概念还是比较模糊)
  13. 线程调用sleep方法,sleep(10s),结束后,调用sleep的线程处于什么状态?(在sleep的时间内,线程不会释放临界资源,在sleep结束之后,线程正常运行,sleep一般是模拟一些业务,之后unlock就释放了临界资源,比如锁)然后就被套路了。。。 orz
  14. 那还是那个问题,sleep 10s 后线程就会立马被唤醒起来执行吗?(答的不会立马执行,sleep之后接notify/notifyAll才能唤醒。应该是会立即执行,自己脑子被绕进入了,orz)
  15. 线程池源码的一段话。。。 讲的是线程池创建线程,执行任务的过程。。。
  16. 问了创建了一个corePoolSize=maxPoolSize=5的线程池,不放任务,线程池中有多少个线程? (0个)
  17. 放了一个任务,线程池中有多少个线程?(1个)
  18. 任务结束了,线程池中有多少个线程?(1个)
  19. 放了10个任务,线程池中有多少个线程?(5个,还有5个任务在阻塞队列)
  20. 算法题,金字塔型数组,寻找从上到下的最小和,dfs秒了,问还有更优的吗,dp
  21. mysql判断题: select * from table where a=x and b=y and c=z,a,b,c 各有一个索引(总索引数为3),问,mysql执行这个sql语句走什么索引? (高版本mysql走联合索引,减少回表,但是面试官好像不太认可这个答案,orz)
  22. sql题:问table表中有日期date和订单号order_id,写sql语句求出在2023-01-01之后的重复订单
select 
	order_id 
from 
	(select 
     	order_id,
     	count(order_id) 
     from table 
     where date >= '2023-01-01' 
     group by order_id 
     having count(order_id) > 1) t
  1. 问 select * from table where a=5 for update 加了什么锁?

答:行锁,是表锁行锁的行锁(面试官不太满意),当前读+临建锁,不过好像也不太对,orz

应该是锁了a这个索引吧,具体细节没怎么问

  1. 最近看什么书?
  2. 你跟前端起冲突了怎么解决?
  3. 反问:
  4. 在哪方面需要提升?
  5. 多关注基础知识,不要只提升广度,更要提升知识的深度。要不断的保持学习和知识的注入,多看东西部门做什么业务
  6. 本次面试的结果多久通知?
  7. 听hr统一的安排
  8. 本次面试,您更在乎的是基础,业务方面对应届生有多高的要求呢?
  9. 社招和校招不一样,社招需要你带来一些经验。公司会耐心的去逐步培养同学,所以校招更侧重专业能力,学习能力,好奇心和解决问题的能力等等。因此更加注重基础一些。
#你收到了团子的OC了吗##我的失利项目复盘#
全部评论
22题我觉得不需要子查询啊, 直接 select order_id from table where date > '2023-01-01' group by order_id having count(order_id) > 1; 还是我想错了
4 回复 分享
发布于 2023-09-14 22:12 四川
ArrayList是不是没有0.75啊,不是minCapacity超的时候才扩容吗
3 回复 分享
发布于 2023-09-14 18:17 四川
可以问问场景题在哪里看吗
2 回复 分享
发布于 2023-09-16 12:47 四川
问下佬是不是因为项目比较常见所以没问呢
2 回复 分享
发布于 2023-09-14 11:04 广东
请问佬什么岗
1 回复 分享
发布于 2023-09-14 12:38 浙江
请问二面完多久知道挂了的啊
点赞 回复 分享
发布于 2023-09-15 13:32 浙江
哪个部门啊
点赞 回复 分享
发布于 2023-09-14 18:15 广东
二面过了吗,我一面手撕代码4个题都不会,但是居然过了,然后部门让我二面,又要被拷打了
点赞 回复 分享
发布于 2023-09-14 14:45 北京

相关推荐

小鹏面试 1. 一个线程中执行的任务如何确保顺序执行;2. binder无参调用如何知道client是谁;3.anr是如何分析的;中教云写一个api能够访问所有制定类型的文件中教云二面;TCP三次握手四次回收,线程死锁;实现O(1)复杂度的LRU最近最久未使用DNS如何解析域名访问一个网站的过程美团外卖一面1. 进程和线程的区别;2. 死锁的概念,如何预防死锁;3. onnewInent什么时候调用如果在 AndroidManifest.xml 中,将 Activity 的 launchMode 设置成了 “singleTop” 模式,或者在调用 startActivity(Intent) 时,设置了FLAG_ACTIVITY_SINGLE_TOP标识,那么,当该 Activity 再次被启动时,如果它依然存在于Activity栈中,并且刚好处于栈的最顶层时,那么它将不会被重新创建,而是直接使用原来的实例,此时,onNewIntent(Intent)将会被调用,后续生命周期中的其它方法,就可以使用 onNewIntent(Intent)传递过来的新的Intent参数了。也就是说,调用顺序如下:onNewIntent() -> onRestart() -> onStart() -> onResume()activity栈唯一(singleTask)原则下,通过Intent启动一个Activity,如果系统已经存在一个实例,系统就会将请求发送到这个实例上,但这个时候,系统就不会再创建一个新的实例,不会调用onCreate方法,而是调用onNewIntent方法4. RecyclerView 如何区分header和footer5. 跨进程通信的方式有哪些6.hashmap的底层原理,不安全的原因,如何确保安全支付宝一面1.http和https区别2.安卓的安全机制有哪些;3.安卓的art虚拟机;4.安卓的启动流程有哪几个阶段;5.手机按下电源键启动内核;6.Linux启动模型;7.网络如何确保安全,如何确保秘钥的正确性;8.网络层次的七层结构;9.Socket位于哪一层;10.内存溢出;11.热修复方案;
查看25道真题和解析
点赞 评论 收藏
分享
06-28 18:58
已编辑
东北大学 Java
1.自我介绍2.List和Set分别有什么实现了线程安全的集合?ConcurrentHashMap线程安全的执行流程?3.介绍一下CAS的原理,是乐观锁还是悲观锁?4.讲一下任务进入线程池后的执行流程5.有很多线程执行的时间不一样,怎么安排执行?有一个线程依赖于上边这些线程所产生的结果,Java有什么类可以实现这个功能?6.如果一个大型项目,某一个时间所有的CPU的已经被占用了,导致服务不可用,我们开发人员应该如何使服务器尽快恢复正常7.讲一下Java的内存模型8.volatile关键字9.介绍一下单例模式,双重检查锁定的流程10.volatile除了可以保证线程之间的可见性外,还有什么功能?11.有哪些垃圾回收算法?G1用的是什么回收算法?12.老年代无法正常回收,可能是什么原因?13.讲一下Redis的淘汰策略, LRU的底层实现14.你认为,用LRU来进行淘汰,合理吗?如果存放的数量级很大,那么Redis要维护这么大的一个双向链表,这个开销是不是就很大了?应该如何解决这个问题15.讲一下MySQL的索引优化策略,讲一下索引覆盖16.有了解过索引下推吗?17.项目是实验室项目,还是网上找的练手项目?18.微服务是通过什么通信的?19.介绍一下项目用到的 Guava,项目里边你认为比较复杂的地方20.项目里Redis的BitMap是如何实现人群标签的21.准备给项目加上一些什么别的内容?22.有没有对AI,大模型的相关知识有学习,有运用吗?平常用什么AI大模型23. 手撕,给一个n*m的网格,每个网格都有一个值,求到达右下角终点的路径,并且路径和最小。一面过了
查看23道真题和解析
点赞 评论 收藏
分享
评论
24
112
分享

创作者周榜

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