美团一面 8.29 17:00pm
美团一面面试分享:
面试官很和蔼,一开始先让我自我介绍,然后问我是使用Java是吗?我说是的,然后说问一些Java基础吧
final 修饰符的含义?
final修饰不可变是什么意思,能具体说清楚些吗?
回答:对于值类型,final修饰指的是值不可变,对于引用类型,则是引用不可变,也就是内存地址不可变
static 关键字的含义?
为什么equals方法要和hashcode方法同时重写?
回答:从Object类的这两个方法说起,引出第一条约定(equals相等的两个对象,hashcode一定相等),其他继承Object的类都遵守该约定。
举例HashMap,如果只重写了equals方法,而不重写hashcode,可能会导致HashMap中存在两个key值相同的元素(put时,hashcode不同会被认为是两个不同的key)
hashMap中的桶(buckets)是什么?以及hashMap是否安全?
ConcurrentHashMap如何保证安全?
答:分段锁
Segment是什么?
既然Segment继承自ReentrantLock,那么谈谈你对ReentrantLock的理解?
回答:从ReentrantLock与Synchronized的比较进行回答
AQS的原理是什么?
AQS是双端队列,讲了一下具体的应用:比如 CountdownLatch 、CyclicBarrier、Semaphore等
公平锁是什么?
对于jvm了解吗?
谈谈五大内存区域?
说说了解的垃圾回收算法?
知道哪些垃圾收集器?
类加载的阶段有哪些?
双亲委派模型知道吗?
数据库了解吗?
InnoDB和MyISAM的区别?
B+树的特点?
哪四种隔离级别?
什么是聚簇索引?
如果我想在索引时,先用a字段进行索引,再用b字段进行索引,该怎么做?
我答的是使用联合索引,面试官说也可以。(不知道最好应该用什么?)
场景设计题:如果让你设计类似于滴滴打车的软件,只考虑后端,那么你会设计哪些模块?
编程题:
-
给定一个单向链表,里面存放着数字,例如 1 2 3 2 1 ,判断该链表中存放的数字是不是回文数?比如 1 2 3 2 1 就是回文数,而 1 2 3 4 不是。
-
给定一个数组, 4 5 6 1 2 3 ,是由1 2 3 4 5 6翻转过来的,也可以翻转成 6 1 2 3 4 5 、 3 4 5 6 1 2 ,如何快速在里面查找某个数字的下标,如果找不到,则返回-1