之前在学校举办的活动上,认识了一个学妹。我死磨硬泡终于加了她的微信,经常给她发微信。
可是她总是对我爱答不理的,我心里总有一天让你高攀不起,后来就很少联系了。今天突然主动联系我:
这么久没联系了,一上来就让我帮忙?这照片拍的,手抖的像是得了帕金森似的,字都有重影。
放大照片仔细看,这应该是某大厂的笔试题吧。
这些题都不是很难,答案脱口而出。
面向对象的三个特性分别是哪些?
封装
封装是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。
继承
继承是让某个类获得另一个类的属性和方法。它可以使用现有类的除了私有以外的所有功能,不需要重新编写原来的类的情况下对这些功能进行扩展。
多态
多态是一个类实例的相同方法在不同情形有不同表现形式,多态机制使具有不同内部结构的对象可以共享相同的外部接口。
什么是双亲委派模型?
类加载器收到类加载的请求后,它不会首先自己去尝试加载这个类,而是把这个请求委派给父类加载器去尝试加载。
只有当父类加载器反馈自己无法完成这个加载请求(它的搜索范围中没有找到所需的类)时,子加载器才会尝试自己去加载。
JVM的内存分几个区域?
程序计数器
当前线程所执行的字节码的行号指示器。
虚拟机栈
Java方法执行的内存模型,用于存储局部变量表、操作数栈、动态链接、方法出口等信息。
本地方法栈
本地方法执行的内存模型,和虚拟机栈非常相似,其区别是本地方法栈为JVM使用到的Native方法服务。
堆
用于存储对象实例,是垃圾收集器管理的主要区域。
方法区
用于存储已被JVM加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。
JVM是如何判断对象是否可以被回收的?
一个对象到GC Roots没有任何引用链相连,JVM就可以对这些对象进行回收了。
要是再答上哪些是 GC Roots就更加分了:
- Java虚拟机栈中引用的对象
- 本地方法栈中引用的对象
- 静态属性引用的对象
- 常量引用的对象
分代垃圾回收器是如何工作的?
堆被划分为年轻代Young Generation)和老年代(Old Generation)。
年轻代又被划分为一个Eden区和两个Survivor区,大部分对象在Eden区中生成。当Eden空间不足时,触发Minor GC,Eden空间和一个Survivor区中存活的对象将被转移到另外一个Survivor区。
移动时存活的对象年龄加1,当年龄到达指定值后移动到老年代。当老年代空间不足时,触发Full GC,回收整个堆的垃圾。
由此我不禁想起了《倚天屠龙记》的一句台词:
如果是你,你会怎么做?在评论区告诉我!感谢一键三连!
文章持续更新,微信搜索「万猫学社」第一时间阅读。
关注后回复「电子书」,免费获取12本Java必读技术书籍。