2019独角兽企业重金招聘Python工程师标准>>>
1.JVM的class文件的原理机制? 由类加载器(ClassLoader)和它的子类实现的。java中的类加载器是一个重要的java运行时系统组件,它负责在运行后是查找和装入类文件中的类。 当java程序需要某个类时,JVM会确保这个类已经被加载,连接和初始化。类的加载是指把类的.class文件中的数据读入到内存中。通常是创建一个字节数组读入.class文件,然后产生与所加载类对应的class对象。加载完成后,Class对象还不完整,所以此时的类还不可用。当类被加载后就进入连接阶段,这一阶段包括验证,准备(为静态变量分配内存并设置默认的初始值)和解析(将符号引用替换为直接引用)三个步骤。最后JVM对类进行初始化。 包括:1.如果类存在直接的弗雷并且这个类没有被初始化,那么久先初始化父类;2.如果类存在初始化语句,就一次执行初始化语句 2.java使用的编码是Unicode,使用Unicode意味着字符在JVM内部和外部有不同的表现形式,在JVM内部使用Unicode,当这个字符被从JVM转移到外部时(例如存入文件系统中),需要进行编码转换。所以java中有字节流和字符流,一级在字符流和字节流之间进行转换的转换流。 应为java中是用的Unicode为不选择任何特定的编码,直接使用字符在字符集中的编号,一个插入类型占连个字节,16比特,所以放一个中文是没有问题的。 3.抽象类和接口: a:都不能被实例化,但是可以定义引用。 b:接口比抽象类更抽象。 c:接口的成员都是用public的。 4抽象方法是需要被子类重写,而静态方法是无法被重写的,因此二者是矛盾的。本地是由本地代码实现的方法,二抽象方法是没有实现的,也是矛盾的。synchronized和方法的实现细节有关,抽象方法不涉及实现细节,因此也是相矛盾的。 5.一个“.java”源文件中可以有多个类(内部类不算),但是最多只能有一个公开类(public),而且文件名必须和公开类的类名完全保持一致。 6.java和javaScript的异同 a:基于对象和面向对象,java为面向对象,js是脚本语言,用来制作与网络无关的,与用户交互作用的负责软件,他是一种基于对象和时间驱动的编程语言, b:解释和编译。java的源代码在执行之前,必须经过编译,js是一种解释性编程语言,其源代码不需要经过编译,由浏览器解释执行。 c:java采用墙类型变量检查,即所有变量在编译之前必须做生命;js中的变量属于弱变量,甚至在使用变量前可以不作声明,js的解释器在运行时检查推断其数据类型。 d:代码格式不一样 e:java是静态语言,java中类时一等公民,而在js中方法是一等公民。因此js支持函数式编程。