9.12 美团二面,细问java八股文,给我问懵了,项目问题一点没有,白看了好久的场景题🤡自我介绍问点Java集合类,arraylist和hashmap简单介绍一下(底层数据结构,扩容机制,查询的时间复杂度)提到了hashmap的查询效率是O(1),为什么呢?(数组在内存中是连续内存,所以查询时间复杂度是O(1))hashmap遇到冲突是怎么解决的?(链地址法,rehash法,开放寻址法,(公共溢出区等))刚才说hashmap的查询时间复杂度是O(1),但是遇到hash冲突hashmap会转变为链表或者树的形式,这样的查询时间复杂度好像不是O(1),为什么最终结论是hashmap的查询时间复杂度为O(1)呢?(当时说不知道,(应该是在数据量小的时候,是O(1),在数据量大的时候是链表的O(n)或者是树的O(logn),理想情况下是O(1)的)刚刚说arraylist是什么时候扩容来着? (1.5 倍扩容,当当前数据量达到最大数据量的0.75的时候会扩容)那hashmap是什么时候扩容?(先说了hashmap的链表转红黑树的时机,再说了当当前数据量大于等于数组长度*loadFactor(16 * 0.75)的时候进行扩容)为什么hashmap是0.75呢?是1行吗?是2行吗?(当时答是妥协的因素,设为1和2是可以的,避免了hashmap在大量插入数据的情况下的扩容问题,扩容影响性能。为什么是0.75:泊松分布 ,看来还是考察的还是hashmap的源码,orz忙着看项目了,没背java基础,给跪了)扩容因子为0.75的好处:如果扩展因子过小,HashMap 将会频繁地扩展容量,导致较多的内存开销和较慢的查询速度;如果扩展因子过大,HashMap 将较少地扩展容量,导致冲突的可能性增加,查询速度可能会变慢。为什么arraylist也有一个0.75呢?(底层arraylist在扩容时,会调用System.copy()方法,它会先生成一个新数组进行拷贝,所以扩容会消耗一定的内存资源)jdk还看过什么源码?(线程池)java里面线程有几种状态?(就绪,运行,等待,等待一段时间,终止)阻塞和等待有什么区别?(没答好,查了一下,阻塞会持有临界资源并等待,等待会释放临界资源,不过概念还是比较模糊)线程调用sleep方法,sleep(10s),结束后,调用sleep的线程处于什么状态?(在sleep的时间内,线程不会释放临界资源,在sleep结束之后,线程正常运行,sleep一般是模拟一些业务,之后unlock就释放了临界资源,比如锁)然后就被套路了。。。 orz那还是那个问题,sleep 10s 后线程就会立马被唤醒起来执行吗?(答的不会立马执行,sleep之后接notify/notifyAll才能唤醒。应该是会立即执行,自己脑子被绕进入了,orz)线程池源码的一段话。。。 讲的是线程池创建线程,执行任务的过程。。。问了创建了一个corePoolSize=maxPoolSize=5的线程池,不放任务,线程池中有多少个线程? (0个)放了一个任务,线程池中有多少个线程?(1个)任务结束了,线程池中有多少个线程?(1个)放了10个任务,线程池中有多少个线程?(5个,还有5个任务在阻塞队列)算法题,金字塔型数组,寻找从上到下的最小和,dfs秒了,问还有更优的吗,dpmysql判断题: select * from table where a=x and b=y and c=z,a,b,c 各有一个索引(总索引数为3),问,mysql执行这个sql语句走什么索引? (高版本mysql走联合索引,减少回表,但是面试官好像不太认可这个答案,orz)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问 select * from table where a=5 for update 加了什么锁?        答:行锁,是表锁行锁的行锁(面试官不太满意),当前读+临建锁,不过好像也不太对,orz        应该是锁了a这个索引吧,具体细节没怎么问最近看什么书?你跟前端起冲突了怎么解决?反问:在哪方面需要提升?多关注基础知识,不要只提升广度,更要提升知识的深度。要不断的保持学习和知识的注入,多看东西部门做什么业务本次面试的结果多久通知?听hr统一的安排本次面试,您更在乎的是基础,业务方面对应届生有多高的要求呢?社招和校招不一样,社招需要你带来一些经验。公司会耐心的去逐步培养同学,所以校招更侧重专业能力,学习能力,好奇心和解决问题的能力等等。因此更加注重基础一些。
点赞 24
评论 8
全部评论

相关推荐

08-16 00:44
已编辑
华南理工大学 Java
LazyBreeze:项目尽量体现你对技术的理解和深度,不是说把中间件用一下就完事了,你项目里面提到集群和分布式,你真在服务器上部署过吗,感觉太假了,第二个项目说自己用了微服务的什么组件,只是用了没有自己的思考,很难让面试官注意到你的简历。针对某几个技术点自己多思考一下,考虑一下有没有别的替代方案,可以写一下,即使没有真的实现
点赞 评论 收藏
分享
程序员牛肉:1.大头肯定是院校问题,这个没啥说的。 2.虽然有实习,但是实习的内容太水了,在公司待了七个月的时间,看起来就只做了jwt和接入redis。爬取新闻,数据导入。这几个需求值得你做七个月吗?这不就是三四个月的工作量吗?我要是面试官的话真心会认为你能力不太行。所以既然有实习了,一定要好好写,像是Swagger这种东西是真没必要写上去,就拉一个包的事情。 3.我个人觉得话,在校生不要把自己当社招看,除非你的项目是特别牛逼,特别有名的含金量,否则不要写这种密密麻麻的一串子工作职责。你的项目只有一个作用,就是供面试官从中来抽取八股对你进行拷打。 但是你现在这个看不来什么技术点,可以改一下,详细表述一下你用什么技术实现了什么功能,在实现这个功能的过程中,你解决了什么难题。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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