Loading

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,回收老年代的垃圾对象。

没有说的太细节,例如MinorGC过程中,如果ServivorTo区空间不够,会直接放入老年区,年龄信息放在对象头部占用4位,所以最大只能是15。GC算法也没提   
 


操作系统
进程线程
分页分段➕虚拟内存➕动态链接静态链接
Linux内存布局  用户态内核态

JVM
如何判断一个对象死亡? 可达性算法三色图  增量更新   oopmap  卡片集
类加载机制   双亲委派模型   解决问题
synchronized  锁优化


Java
从aop到代理模式  静态代理 动态代理  cglib
范型擦除
interrupt方法乐观锁悲观锁

 

 
 

  • CAP 定理说一下,一般选择牺牲哪些特性?(CP, AP)
  • 手撕算法:LeetCode 160
  • 口撕算法:LeetCode 543
  • class,abstract class,interface 区别?
  • 类加载机制(双亲委派模型)

  • GC 大概说一说(说书环节……具体就是背诵《深入理解 Java 虚拟机》)
  • C/C++ 和 golang 了解过吗


    • 一面结束后很快就约了二面,在一面三个小时之后
    1. 自我介绍

    2. 聊项目,主要是 Kafka connect 相关,还提了一下项目中 Redis 的应用场景

    3. Redis 数据结构?

    4. Redis hash 数据结构说一下(提到类似 Java 1.7 的 HashMap)

    5. Java 1.8 之后的 HashMap 结构,为什么要这么设计?

    6. Redis list 底层是什么数据结构?

    7. Java int 和 Integer 区别?使用场景?

    8. final 关键字

    9. 并发编程有实践过吗?说一说乐观锁,Java 的乐观锁底层怎么实现的?

    10. Java 的异常体系(说了一下类/接口的继承结构,免检异常和受查异常的区别这些)

    11. 数据库索引(说了一下 InnoDB,聚簇索引,B+树,还有哈希索引)

    12. B+树索引和哈希索引的区别?

    13. 只走索引就查询到全部数据的这种叫什么?(覆盖索引)

posted @ 2020-08-06 09:35  FishLight  阅读(95)  评论(0编辑  收藏  举报