9月20日美团Java后台两面面经
面经发出来,求个好运气。
一面
1,你说你熟悉数据库,索引的实现?
2,B树和B 树的区别?
3,HashMap原理?那说说下ConcurrentHashMap的实现。为什么resize的时候多个线程会加入这个过程?
4,ArrayList呢
5,你平常还看过什么源码?答AQS和Lock
6,你通过看源码对你平常写代码有什么可以借鉴的?
7,你看源码是为了应付面试吗?
8,如果让你设计一个消息队列你会如何考虑?你如何保证多个机器间消息的生产和消费的同步?答用一台机器保存每个消息的标识号,每次生产和消费消息要到这个机器注册,注册的过程在一台机器上可以保证同步。如果这台机器挂了呢?答用一台备用的机器。备用机器如何恢复消息队列到原先的状态?答两台机器主从复制。如果消息队列的机器挂了,消息怎么办?答可以持久化。持久化失败呢?如果你设计的消息队列一切正常如何提高效率?答可以借鉴tcp累积确认的方式将注册操作累积注册。你觉得你设计的消息队列有哪些问题?答效率和安全问题。
9,有什么要问的?答美团在上海的业务主要有哪些?
[总结] 女面试官人很和蔼,一直追问我,答不出来笑而相视。
二面
1,进程的结构。答不知,说了我对线程和进程的认识。
2,说说class文件加载到虚拟机的过程。加载验证准备解析以及初始化。
3,说说Java虚拟机运行时内存区域,哪些地方会发生OOM?
4,有哪些垃圾回收算法?说说标记清除。
5,说一下tcp四次挥手。用标准术语说出每次的状态,以及报文段的标志位。
6,解释一下left join。出了一个数据库题让我写SQL语句。
7,数据库连接池的的结构。答可以借鉴线程池的思路,说了一下线程的保存方式。这里面试官没理解我的意思。后面反应过来说可以用队列保存连接请求,数据库连接不断读队列。问你这个很浪费连接资源,答可以根据队列任务的多少创建或销毁连接。那这个连接池应该会有哪些方法,答获取连接,初始化池子,销毁池子的方法。
8,说说spring的ioc和aop。可以给final类生成***吗?
9,spring中常用注解?component和service注解的区别?
10,智力题?有一堆桃子,一个猴子一天吃一半加一个,第十天还剩一个,问总共有多少个?面试官离开一会回来提示说用递归。答假设有n个桃子...被打断
11,有什么要问的?
[总结] 二面面试官表情很严肃,可能我太渣了吧。