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