美团 面经 Java
美团一面:8.25
项目实习;
智力:有一个大圆盘,你和另一个人依次往圆盘里面放同样大小的小圆盘,直到放不下为止,最后一个放的人获胜,问获胜策略。
代码:给出一对对父子节点,打印父子节点的相对结构(输入不存在环),例如(a,b)(a,c)(b,d)(d,f)(e,g),打印:
基础知识:
- b+树优势?什么情况用到它?
- 有时候内存里也会用到b+树这种数据结构,这样的考量是什么?
- GC
- 你认为c++与java的区别?
美团二面(8.26约面):8.31
- 项目是算法相关,为什么投开发?
- 你了解的垃圾回收器有哪些?我说我了解CMS
- CMS过程?需要指出STW发生的阶段
- GCRoots是哪些对象?
- Jvm内存模型?5大块
- 堆区是怎么分的?
- 新生代为什么要有eden和两个survivor区?我从CMS回收算法角度答的
- 如果申请内存大小大于eden区剩余空间,怎么办?
- 老代的垃圾回收如何触发?
- HashMap和ConcurrentHashMap区别?
- ConcurrentHashMap如何保证线程安全?
- Synchronized什么时候用到?put和扩容
- Put找到桶加了锁然后呢?
- 扩容过程?
- 多线程扩容的线程是哪里来的?
- 面试官让我对比C++的map和Java的map,我说我C++不记得了。。。。
- HashMap和HashTable的区别?我说我不记得HashTable了。。。
- Synchronized加到类上和加到对象上有什么区别?这块面试官给了具体的场景让我判断是否可以同步执行。
- 回顾一面代码。
- 撕题:两个线程交替打印AB。我说不会写,就只讲了我的思路:使用Synchronized+wait+notify,一个线程打印一个字母之后,唤醒另一个线程,挂起当前线程,另一个线程也是如此。面试官说思路没问题。
- 然后面试官就说换一个题,写了一个简单的sql。
- 数据库聚集索引与非聚集索引区别?
- 开放题:数据库表存全国学生的成绩信息,全国老师可以修改,全国家长可以查看,面对巨大的流量与高并发,如何使得数据库健壮?(没有这方面经验,面试官一直在引导我,奈何自己太菜不上道。。。。。。)
面试官人都很nice,不懂的问题会进行引导。
#美团##面经##java工程师#