zoukankan      html  css  js  c++  java
  • Java虚拟机基础知识你知道多少?

    http://www.cnblogs.com/qlky/p/7401841.html

    java虚拟机结构

    http://liuwangshu.cn/java/jvm/1-runtime-data-area.html

    class类文件

    http://www.cnblogs.com/qlky/p/7401849.html

    • 魔数是什么?有什么作用?
    • accessflag存放什么?
    • this_class, super_class, interface存放什么?
    • fields存放什么?包括在方法内存放的变量吗?方法内的变量存在哪?
    • methods存放什么?包括父类方法吗?
    • 什么是特征签名?为什么返回值不能重载已有方法?
    • attributes存放什么?
    • code属性存放什么?接口或抽象类有code属性吗?
    • exception属性存放什么?
    • constantValue属性存放什么?与static,final的关系是什么?
    • 类变量(static变量)有哪几种赋值方式?
    • 非static变量的赋值在哪里进行?
    • final, static, static final的区别?
    • static变量有默认值吗?final变量呢?

    类加载器

    • 系统类加载器有几种类型?分别有什么作用?
    • 自定义类加载器需要继承什么实现?

    内存模型

    https://blog.csdn.net/ns_code/article/details/17565503

    线程共享区域有哪些?私有区域有哪些?

    为什么更重视共享区域的GC问题?

    PC计数器的作用?

    虚拟机栈

    • 栈帧是什么?由什么组成?与什么相关?作用?
    • 栈帧需要多少内存在什么时候确定?编译or运行
    • 两种异常情况?
    • 局部变量表存放什么?
    • 操作数栈存放什么?
    • 基于栈的指令集(Java) vs 基于寄存器的指令集(Android) 各自特点?
    • 动态连接区存放什么?
    • 方法返回地址区作用?

    本地方法栈

    • 和虚拟机栈的区别?

    Java堆

    • 主要作用?
    • 包括哪几个部分?
    • 内存分布是物理连续还是逻辑连续?
    • 什么是新生代和老生代?
    • 新生代分为哪几个区域?怎么做GC?
    • 老生代分为哪几个区域?怎么做GC?
    • 对象存放在新生代还是老生代的逻辑?

    方法区

    • 方法区主要存放什么?
    • 内存分布是物理连续还是逻辑连续?
    • 运行时常量池存放什么?哪两类常量?
    • 符号引用包括哪几类常量?
    • 符号引用 vs 直接引用
    • 符号引用在哪个阶段被转换为直接引用?

    以下操作分别测试哪个区域的内存溢出

    • 循环new新的对象并保存于list
    • 生成大量动态类并保存于list
    • 循环调用String.intern()生成大量string实例并保存于list
    • 递归调用一个简单的方法
    • 循环创建线程并在内部不断申请内存

    对于Object object = new Object(),以下分别储存于哪个区域

    • Object引用
    • Object实例
    • object内部的方法,接口,父类,对象类型

    引用类型应该怎么定位到对象实例?

    • 句柄访问是什么?
    • 直接指针访问是什么?
    • 优缺点?java的hotspot默认使用哪个?

    类加载

    • 分为几个阶段?哪两个阶段是不一定按顺序的?
    • 这些阶段标识的是开始顺序,进行顺序还是完成顺序?是按顺序线性执行的吗?
    •  什么是静态绑定和动态绑定?
    • 哪些是静态绑定的?

    加载

    • 用什么对什么进行加载?
    • 做了哪几件事?
    • 加载完成后运行时数据结构被储存在哪?
    • 生成了什么对象保存在哪?
    • 自定义类加载器用途有哪些?
    • 什么是类加载器的双亲委派模式?有什么好处?

    验证

    • 四个阶段是什么?

    准备

    • 主要工作?
    • 实例变量内存在什么时候分配?
    • 类变量(static)内存在哪里分配?
    • 此时类变量的值是多少?什么时候会进行用户代码赋值?
    • 数组初始化时没有对元素赋值可以直接使用吗?

    解析

    • 主要工作?
    • 对哪里的符号引用进行解析?
    • 主要解析的符号引用有哪几类?
    • 可能对一个符号引用进行多次解析吗?一般怎么处理?
    • 类或接口解析流程?
    • 字段解析流程?
    • 类方法解析流程?
    • 接口方法解析流程?

    初始化

    • 主要工作?初始化的是什么变量?
    • <clinit>执行规则?
    • <clinit>与类构造函数<init>的区别?JAVA里第一个被执行<clinit>函数的对象是什么?
    • 接口中会有<clinit>赋值吗?和类有什么区别?
    • 类一定会有<clinit>赋值吗?

    多态性

    http://www.cnblogs.com/qlky/p/7420795.html

    • 静态解析成立条件?
    • 什么是动态连接?
    • 四种方法调用字节指令?
    • 什么是非虚方法?包括哪些?
    • 静态分派是什么?
    • 静态分派发生在哪个时期?是由虚拟机执行还是编译器?
    • 什么是静态类型和实际类型?
    • 动态分派是什么?
    • 根据变量的什么类型决定分方法的执行版本?
    • 动态分派在什么时期执行?
    • 什么是单分派?什么是多分派?
    • 什么是方法的宗量?
    • Java静态分派的宗量有几个?动态分派的宗量有几个?
    • 方法重载属于静态分派还是动态分派?

     GC

    什么是四种引用类型?JAVA 四种引用类型

    强引用

    • 强引用怎么使用?
    • 程序空间不足时会抛出oom异常还是回收强引用?
    • 怎样才能回收强引用?
    • 强引用保存在哪个区域?引用对象在哪个区域?
    • 为什么全局变量需要赋值为null,局部变量一般不用?
    • ArrayList类型应该怎样释放强引用?

    软引用

    • 软引用怎么使用?
    • 软引用在什么情况下不会被回收?什么情况下会?
    • 引用队列如何使用?有什么作用?
    • 应用场景?
    • 浏览器的后退按钮。按后退时,这个后退时显示的网页内容是重新进行请求还是从缓存中取出呢?

    弱引用

    • 怎么使用?有什么作用?
    • 弱引用在什么情况下不会被回收?什么情况下会?
    • 与软引用的区别?
    • 应用场景?

    虚引用

    • 怎么使用?有什么作用?
    • 弱引用在什么情况下不会被回收?什么情况下会?
    • 怎么判断引用对象是否即将进行GC?

    垃圾对象搜索算法

    • 什么是引用计数算法?
    • 为什么JAVA没有使用引用计数算法?
    • 什么是根搜索算法?根是什么?
    • 根搜索算法的两次标记过程是怎样的?
    • 被垃圾回收的对象在什么时候执行finialize()方法?
    • 怎么判断需不需要执行finialize()方法?
    • 被第一次标记的对象将会怎样被回收?
    • 怎么在finialize()方法里避免被回收?

    垃圾收集算法

    • 什么是标记清除算法?有什么优缺点?
    • 什么是复制算法?有什么优缺点?适用于老生代还是新生代?
    • 什么是标记整理算法?有什么优缺点?适用于老生代还是新生代?

    内存分配策略

    • 对象优先在哪个区分配内存?
    • 什么对象会进入老生代?
    • 老生代进行GC时,对direct memory有影响吗?
  • 相关阅读:
    Flowplayer-一款免费的WEB视频播放器
    nginx windows 版 创建windows 服务
    Windows Service Wrapper
    angular模板加载 ----ng-template
    理解AngularJS的作用域Scope
    Jquery使用ajax以及angularjs 动态模板加载并进行渲染
    angular.element方法汇总以及AngularJS 动态添加元素和删除元素
    JavaScript文件中调用AngularJS内部方法或改变$scope变量
    The repository for high quality TypeScript type definitions
    jspm 是浏览器包管理工具
  • 原文地址:https://www.cnblogs.com/qlky/p/10663969.html
Copyright © 2011-2022 走看看