4.2号参加了美团笔试,4.3号上午接到电话一面,下午接到电话二面,感觉一面聊的还挺好,二面聊的不好。最近心态很差,也看到牛客很多同学和我一样有些急躁,希望我们都能尽快地平静下来总结、学习,接下来顺顺利利。许愿美团hr面,许愿美团offer。
一面
自我介绍,不够流畅,项目介绍的不清楚。
太紧张了,还好面试官非常和蔼,先聊了一会儿才开始。
平时怎么学Java、怎么学习知识,看过哪些公司技术团队的文章。
先问Java相关的知识
Java内存模型说说
垃圾收集算法说说
垃圾收集器说说
可达性分析中GC roots包括哪些,为什么选择这些作为GC roots,有没有看过线上的GC日志
HashMap源码介绍,keySet方法如何实现
后问数据库
InnoDB的索引结构说说
Sql问题,limit子句,如果数据量很大,需要查找中间部分,如何避免存储引擎获取到所有数据返回给服务器曾后才用limit子句切分。
然后问多线程、并发
ThreadLocal了解吗,怎么实现的
线程池用过吗,有哪些重要的参数设置,如果让你实现线程池,怎么实现,newFixedThreadPool和cachedThreadPool有哪些区别,怎么区分实现(应该是考察线程池源码、底层原理有没有看过吧)
再问设计模式
了解哪些设计模式,说一说?
单例有几种实现方式?写一写双重加锁的方式。
算法题
动态规划,爬楼梯
爬楼梯升级版,如果这个人左腿每次只能爬一层,而且爬一层之后不能接着爬需要休息,右腿正常每次都可以爬一层或者两层,且可以连续。
- 有什么想问我的?
二面
自我介绍
你都看过哪些容器的源码?说一说ArrayList扩容的机制,看过HashMap吗,说一说桶数组长度的特点,为什么是2的整数次幂,除了你说的与运算还有别的优势吗,结合扩容reHash说一说,ConcurrentHashMap怎么保证线程安全的
- 结合ConcurrentHashMap,举了一个场景问题,从容器过渡到了并发安全,使用ConcurrentHashMap,存储用户订单和订单商品列表,key为用户id,value是商品列表的ArrayList对象,你觉得线程安全吗,谈谈你的想法,那怎么才能保证线程安全呢?有哪些线程安全的List类,CopyOnWriteArrayList怎么实现的线程安全
- Volatile关键字了解吗,你说volatile变量的读是每次都从主内存读到工作内存的吗?什么机制实现的保证volatile可见性(还是知识掌握的不牢固,明明看过这个但是一时想不起来),最后提示可以主内存修改后把工作内存中的该变量失效。
- 线程池了解吗,用过哪种?newFixedThreadPool有哪些参数设置比较重要,你设置过哪些,你设置的线程数量和过期时间是多少。线程池内部维护一个队列,考虑一个场景问题,假如队列大小设置很大1千万,提交任务的速度远大于线程执行任务的速度,会有什么问题,(可能会造成内存溢出?),你有没有什么想法,如何解决这种问题(感觉没回答到点子上)
- 虚拟机有了解吗,了解哪些垃圾收集器,那就说说CMS吧,CMS怎么收集新生代的,过程是啥?(这是挖了个坑吧,CMS是老年代收集器,新生代需要搭配其它收集器),CMS的垃圾收集的过程说一下,清除的完整过程是什么。为什么划分新生代和老年代。通过什么命令能够查看GC的情况。
MySQL索引的结构说一下,索引顺序是什么(问最左前缀法则),然后举例分析走不走索引,有索引(a,b,c),where b = 1 and a = 2;where c = 1 and a = 2;走不走索引?
怎么查看sql语句执行计划,explain都关注哪些信息。InnoDB存储引擎有哪些锁,说说next_key lock(我说了行锁、间隙锁还说了多版本并发控制机制,面试官问还有别的锁吗)
Redis都说是单线程的,具体是怎么处理请求的(这里应该是回答Redis的架构,整体的模块结构,这种方式和Java中的什么很像,我说NIO,然后面试官问实际用过NIO吗)
你用Redis实现过分布式锁,那有别的方案可以实现分布式锁吗
熟悉Spring吗,我回答会用,原理了解的很少,没继续深入问
算法问题,输入字符串A,B,将A中所有在B中也存在的字符删掉
A:I am a student
B:aet
结果:I m sudn
可以原地实现吗,不申请额外的空间?
有什么想问的?
感觉二面答得很差,但还是许愿美团offer,希望大家都能静下来,继续努力吧,希望4月份能够顺顺利利,大家加油啊(也是在给自己打气,沉住气、不浮躁、多思考、多学习、多总结)。
全部评论
(11) 回帖