JVM
JVM的内存模型
JVM内存模型常考吧,我面了几家都问了。
1. 线程私有:虚拟机栈,程序计数器,本地方法栈
2. 线程共享:堆,方法区(JDK1.8之后改为位于直接内存的元空间)
3. 直接内存
JVM的GC了解多少
我主要从触发GC方面回答的:
MinorGC: new出的对象一般进入到堆空间的新生代的Eden区(对象很大会直接放入老年代),如果此时Eden区已满,触发一次MinorGC,将Eden存活的对象连同ServivorFrom区存活的对象一同复制到ServivorTo区,ServivorFrom和ServivorTo区互换,存活下来的对象年龄+1。
MajorGC: 默认情况下,如果此时有对象年龄达到15,将晋身到老年代,如果此时导致老年代空间不够,则会触发MajorGC,回收老年代的垃圾对象。
- CAP 定理说一下,一般选择牺牲哪些特性?(CP, AP)
- 手撕算法:LeetCode 160
- 口撕算法:LeetCode 543
- class,abstract class,interface 区别?
- 类加载机制(双亲委派模型)
- GC 大概说一说(说书环节……具体就是背诵《深入理解 Java 虚拟机》)
- C/C++ 和 golang 了解过吗
- 一面结束后很快就约了二面,在一面三个小时之后
-
自我介绍
-
聊项目,主要是 Kafka connect 相关,还提了一下项目中 Redis 的应用场景
-
Redis 数据结构?
-
Redis hash 数据结构说一下(提到类似 Java 1.7 的 HashMap)
-
Java 1.8 之后的 HashMap 结构,为什么要这么设计?
-
Redis list 底层是什么数据结构?
-
Java int 和 Integer 区别?使用场景?
-
final 关键字
-
并发编程有实践过吗?说一说乐观锁,Java 的乐观锁底层怎么实现的?
-
Java 的异常体系(说了一下类/接口的继承结构,免检异常和受查异常的区别这些)
-
数据库索引(说了一下 InnoDB,聚簇索引,B+树,还有哈希索引)
-
B+树索引和哈希索引的区别?
-
只走索引就查询到全部数据的这种叫什么?(覆盖索引)