美团二面凉经

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-14 11:04 广东
可以问问场景题在哪里看吗
2 回复 分享
发布于 2023-09-16 12:47 四川
请问佬什么岗
1 回复 分享
发布于 2023-09-14 12:38 浙江
二面过了吗,我一面手撕代码4个题都不会,但是居然过了,然后部门让我二面,又要被拷打了
点赞 回复 分享
发布于 2023-09-14 14:45 北京
哪个部门啊
点赞 回复 分享
发布于 2023-09-14 18:15 广东
请问二面完多久知道挂了的啊
点赞 回复 分享
发布于 2023-09-15 13:32 浙江

相关推荐

点赞 评论 收藏
分享
评论
24
112
分享
牛客网
牛客企业服务