这是一个雾霾的下午,我来到了美团的办公楼,开始了面试,不知怎么的,来之前,底气有些不足
面的越多,就会越知道自己的不足吧。
事实证明,美团的面试确实不简单,要比百度的更加详细一些,非常的具体,每个问题基本都是技术的更进一步,怎么理解呢?
基本上就是日常工作中多问几个为什么,还真的需要积累
美团的面试只有一轮,在我这里(以下问题不根据时间排序)
java方面¶
-
java中的引用有几种?
- 强引用,正常创建的new的对象,这些对象一旦被创建,不会被垃圾回收线程销毁
- 软引用,如果内存空间够,那么不会被回收,如果空间不够,那么会被回收
- 弱引用,下一次垃圾回收肯定会被回收
- 虚引用,和回收队列联合使用
- final引用
-
Java中的threadlocal是怎么用的? threadlocal中的内部实现是怎么样的? 哪种引用?
- java中的”final”关键字在多线程的语义中,有什么含义
- 说说nio的架构,为什么变快了,说说select和buffer都是怎么用的?
- 在操作系统中的实现原理? 如果都是cpu轮训话,会不会对cpu影响太大?
- 应用到了linux中的什么特性?
- nio中, 如果不显式的调用
system.gc()
那会出现什么问题? - jvm的垃圾回收分为哪些种类?每一种都是怎么去实现的?讲述一下G1的回收策略?
7.
jvm中的参数分为哪些种类,都是做什么的?jvm的监控怎么做?实际项目上线以后的监控怎么做? - JVM中,如果把堆内存参数配置的超过了本地内存,会怎么样?
- JVM中的内存结构分为哪些方面?
- 栈空间是怎么样的?每个线程只有一个栈吗?
- 栈空间的内部结构是怎么样的?
- 堆内存为什么要设计为分代?
ArrayList
的实现原理,如何测试ArrayList
动态分配内存中带来的内存、cpu变化ArrayList
是不是线程安全的? 怎么实现线程安全的?synchronized
和lock
有什么区别?volatile
的作用,如果volatile
修饰的对象经过了大量的写,会出现什么问题?String
的+和StringBuilder
有什么区别? 放在循环中有什么问题?- 日志打印的过程中,使用
String
的+操作和使用占位符输出,对性能上有什么区别 SimpleDateFormat
如果是一个全局变量的话,有什么问题?HashMap
的操作中,直接使用keySet()
遍历有什么问题?Random
中,种子一样的话,就一定会生成一样的随机数吗?- spring的aop是怎么实现的?除了字节码扩展以外,还有其他实现机制吗?
- 类加载器的概念,简述一个类加载器的加载过程
- 简述一个类的加载过程
计算机结构方面¶
- linux中awk命令的使用?
- nginx是多线程还是单线程?
- linux中如何监控和查看内存、cpu情况?
- 负载分为哪些类别和层次?你们项目中是怎么用的?
- mq是如何使用的?
- http协议建立连接的过程是怎么样的?
- https建立连接的的过程是怎么样的?
- forward和redirect有什么区别?
5.
linux如何实现nginx的高性能?有什么特性被应用了?直接来说,就是基于linux的网络编程 - redis中,是如何进行
数据库方面¶
- 数据流的锁级别,乐观锁和悲观锁的概念,是不是只有悲观锁?
- 数据库如何实现事务?
- 有没有什么研究深入的技术,或者比较满意的项目?