转载自 JAVA面试常考系列一

题目一

什么是Java虚拟机?为什么Java被称为平台无关的编程语言?

java虚拟机是一个可以执行字节码文件(.class)的虚拟机进程。

为什么java与平台无关呢?因为java源程序(.java)首先被编译器编译成字节码文件(.class),然后java虚拟机将字节码文件解释成机器码。而不同的操作平台,装有不同的java虚拟机(JVM),能够将相同的字节码文件(.class)解释为对应平台所需要的机器码。所以,java是一种与平台无关的编程语言。

题目二

JDK和JRE的区别是什么?

JDK是完整的Java软件开发包,包括编译器、Java运行时环境和其它的工具(比如:JavaDoc,Java调试器),可以让开发者开发、编译、执行Java应用程序。

JRE是Java运行时环境,它是JDK的一个组成部分,只包括Java虚拟机、Java核心类库和支持文件。

题目三

可否在static环境中访问非static变量?

static变量在Java中是属于类的,它在所有的实例中的值是一样的。当类被Java虚拟机载入的时候,会对static变量进行初始化。如果代码尝试不用实例来访问非static的变量,编译器会报错,因为这些变量还没有被创建出来,还没有跟任何实例关联上。

题目四

Java支持的数据类型有哪些?什么是自动拆装箱?

支持类型

Java支持8种基本数据类型:

其中整数值型有四种:byte,short,int,long,

字符型一种:char

浮点类型两种:float,double

布尔型一种:boolean

整数默认int型,小数默认是double型。Float和long类型的必须加后缀。

Java还支持引用数据类型,引用类型包括类、接口、数组等。引用类型声明的变量是指该变量在内存中实际存储的是一个引用地址,实体在堆中。而包装类就属于引用类型。

自动拆装箱

自动装箱和拆箱就是基本类型和引用类型之间的转换,转换的目的是因为基本类型转换为引用类型后,就可以new对象,从而调用包装类中封装好的方法进行基本类型之间的转换或者toString,还有就是如果集合中想存放基本类型,泛型的限定类型只能是对应的包装类型。

题目五

“static”关键字是什么意思?Java中是否可以覆盖(override)一个private或者是static的方法?

“static”关键字表明一个成员变量或者是成员方法可以在没有所属类的实例变量的情况下被访问。

Java中static方法不能被覆盖,因为static方法是编译时静态绑定的,而方法覆盖是基于运行时动态绑定的。static方法跟类的任何实例都不相关,所以概念上不适用。

java中也不可以覆盖private的方法,因为private修饰的变量和方法只能在当前类中使用,如果是其他的类继承当前类是不能访问到private变量或方法的,当然也不能覆盖。

题目六

Java中的方法覆盖(Overriding)和方法重载(Overloading)是什么意思?

方法覆盖

Java中方法覆盖(Overriding)是指子类重新定义了父类的方法。方法覆盖必须有相同的方法名,参数列表和返回类型。覆盖者可能不会限制它所覆盖的方法的访问。重写方法不能为private,运用中最典型的就是对接口方法的覆盖。

方法重载

Java中方法重载(Overloading)就是具有相同函数名,返回类型可以不同,参数个数、顺序、类型不同的函数。Overloading发生在同一个类里面具有两个或者是更多的函数具有相同名字的情况下。

题目七

Java中,什么是构造函数?什么是构造函数重载?什么是复制构造函数?

构造函数是对象被创建时初始化对象的成员方法,它具有和它所在的类完全一样的名字。构造函数只能有入口参数,没有返回类型,因为一个类的构造方法的返回类就是类本身。构造函数定义后,创建对象时就会自动调用它,对新创建的对象分配内存空间和初始化。每一个类都有构造函数。在程序员没有给类提供构造函数的情况下,Java编译器会为这个类创建一个默认的构造函数。

方法名称相同,参数项不相同。那么认为一个方法是另一个方法的重载方法。重载只跟参数有关,与返回类型无关。方法名和参数相同而返回类型不相同,不能说是重载。

构造方法重载是方法重载的一个典型的特例。参数列表不同。

题目八

Java为什么不支持多继承?

Java中类不支持多继承,因为两个继承于中一个父类的子类,被同一个子类继承时,会出现方法的引用歧义,所以Java中只支持单继承,即一个类只有一个父类。

java中的接口支持多继承,即一个子接口可以有多个父接口。接口的作用是用来扩展对象的功能,一个子接口继承多个父接口,说明子接口扩展了多个功能,当类实现接口时,类就扩展了相应的功能。

题目九

什么是值传递和引用传递?

值传递

值传递:(形式参数类型是基本数据类型):方法调用时,实际参数把它的值传递给对应的形式参数,形式参数只是用实际参数的值初始化自己的存储单元内容,是两个不同的存储单元,所以方法执行中形式参数值的改变不影响实际参数的值。

引用传递

引用传递:(形式参数类型是引用数据类型参数):也称为传地址。方法调用时,实际参数是对象(或数组),这时实际参数与形式参数指向同一个地址,在方法执行中,对形式参数的操作实际上就是对实际参数的操作,这个结果在方法结束后被保留了下来,所以方法执行中形式参数的改变将会影响实际参数。

题目十

接口和抽象类的区别是什么?

接口是对动作的抽象,抽象类是对根源的抽象。

抽象类表示的是,这个对象是什么。接口表示的是,这个对象能做什么。比如,大猫,小猫,来定义两个类,他们的抽象类是猫。说明,他们都是猫。猫可以奔跑,狗也可以奔跑,把“奔跑”定义成一个接口,然后让这些类去实现它。

所以,在高级语言上,一个类只能继承一个类(抽象类)(正如猫不可能同时是动物和植物),但是可以实现多个接口(吃奔跑口、跳跃接口)。

区别如下:

1、抽象类和接口都不能直接实例化,如果要实例化,抽象类变量必须指向实现所有抽象方法的子类对象,接口变量必须指向实现所有接口方法的类对象。

2、抽象类要被子类继承,接口要被类实现。

3、接口只能做方法申明,抽象类中可以做方法申明,也可以做方法实现。

4、接口里定义的变量只能是公共的静态的常量,抽象类中的变量是普通变量。

5、抽象类里的抽象方法必须全部被子类所实现,如果子类不能全部实现父类抽象方法,那么该子类只能是抽象类。同样,一个实现接口的时候,如不能全部实现接口方法,那么该类也只能为抽象类。

6、抽象方法只能申明,不能实现,接口是设计的结果 ,抽象类是重构的结果。

7、抽象类里可以没有抽象方法。

8、如果一个类里有抽象方法,那么这个类只能是抽象类。

9、抽象方法要被实现,所以不能是静态的,也不能是私有的。

10、接口可继承接口,并可多继承接口,但类只能单根继承。

JAVA面试常考系列一相关推荐

  1. JAVA面试常考系列十

    转载自 JAVA面试常考系列十 题目一 Servlet是什么? Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,是用Java编写的服务器端程序 ...

  2. JAVA面试常考系列十一

    转载自 JAVA面试常考系列十一 题目一 什么是JSP? JSP(Java Server Page)是一个文本文档,是一种将静态内容和动态生成内容混合在一起的技术. JSP包含两种类型的文本:静态数据 ...

  3. JAVA面试常考系列九

    转载自 JAVA面试常考系列九 题目一 RMI架构层的结构是如何组成的? RMI体系结构由三层组成,分别是: 存根和骨架层(Stub and Skeleton Layer) 远程引用层(Remote ...

  4. JAVA面试常考系列八

    转载自 JAVA面试常考系列八 题目一 JDBC是什么? JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系 ...

  5. JAVA面试常考系列六

    转载自 JAVA面试常考系列六 题目一 一个Applet有哪些生命周期? 一个Applet的生命周期分为以下四个阶段: Init 每次加载时都会初始化一个小程序.此方法通知Applet,方法已经被装入 ...

  6. JAVA面试常考系列五

    转载自 JAVA面试常考系列五 题目一 串行(serial)收集器和吞吐量(throughput)收集器的区别是什么? 吞吐量收集器使用并行版本的新生代垃圾收集器,它用于中等规模和大规模数据的应用程序 ...

  7. java面试常考系列四

    转载自 java面试常考系列四 题目一 大O符号(big-O notation)的作用是什么?有哪些使用方法? 大O符号描述了当数据结构里面的元素增加的时候,算法的规模或者是性能在最坏的场景下有多么好 ...

  8. JAVA面试常考系列三

    转载自 JAVA面试常考系列三 题目一 什么是迭代器(Iterator)? 迭代器(iterator)是一种对象,它能够用来遍历标准模板库容器中的部分或全部元素,每个迭代器对象代表容器中确定的地址.迭 ...

  9. JAVA面试常考系列二

    转载自 JAVA面试常考系列二 题目一 解释一下线程和进程 进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位. 线程是进程的一个实体,是CPU调 ...

最新文章

  1. NLP专题论文解读:从Chatbot、NER到QA系统...
  2. @override注解可以不写吗
  3. MySQL-获取有性能问题SQL的方法_慢查询 实时获取
  4. php读取excel的公式,PHPExcel在解析xlsx文件中的公式时返回零“0”
  5. linux磁盘冗余阵列
  6. Linux 复习重点目录
  7. android 坐标点计算器,Android实现简易计算器
  8. c++thread里暂停线程_Java线程的 6 种状态
  9. 双十一快到了,快递却不干了?
  10. bash的算术运算和条件测试语句
  11. Dockerfile自动创建镜像
  12. 总结——pandas/numpy处理数据中文手册速查
  13. 手机如何使用USSD命令设置呼叫转移
  14. 雅虎助手,thanks
  15. Cadence16.6 最新83号补丁下载-Hotfix_SPB16.60.083_wint_1of1.exe
  16. libcurl返回DNS无法解析的问题
  17. 京东商品长图功能来啦 不用改图一键生成长图
  18. MVC框架运行流程和目录结构
  19. python 设计模式
  20. 汽车零件分型面的构建思路之补孔技巧

热门文章

  1. python定义一个_Python,包括定义一个类
  2. 2019年第十届蓝桥杯国赛B组试题A-平方序列-枚举
  3. jsbridge实现及原理_JSBridge 实现原理解析
  4. linux连接http报301解决,https下不加www的301强制跳转
  5. 邻接表1 - 试在邻接表存储结构上实现图的基本操作 insert_vertex 和 insert_arc-数据结构-图-icoding
  6. JVM(1)——JVM内存分区
  7. 2019-03-14-算法-进化(移动零)
  8. ARC080F - Prime Flip(贪心,差分,二分图匹配)
  9. CF1063B Labyrinth
  10. CF1305E Kuroni and the Score Distribution