Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Java基础面试题及答案

Java基础面试题及答案

作者头像
用户7886150
修改于 2021-02-01 02:39:48
修改于 2021-02-01 02:39:48
9100
举报
文章被收录于专栏:bit哲学院bit哲学院

参考链接: 抽象类和接口之间的差异

面向对象编程(OOP) 

Java是支持并发,基于类的以及面向对象的一种计算机编程语言. 以下列举了面向对象编程的优势: 

 模块化编程,使维护和修改更加容易  代码重用  提高代码的可靠性以及灵活性  提高代码可读性  

面向对象编程有其非常明显的特性,比如说封装,继承,多态和抽象. 下面我们来分析一下每种特性. 

封装(Encapsulation) 

封装,提供的对象隐藏内部特性和行为的一种能力,每个对象提供了一些方法,其他的对象可以访问并改变其内部数据。在Java中,提供了三种访问修饰符: 公有的,私有的以及保护的。每个修饰符都设定了不同的访问权限,这个权限设置不会因为包的不同而有差异。 

下面是使用封装的一些优点: 

 通过隐藏属性来保护对象的内部信息  因为可以独立的修改或者扩展对象的行为,从而提高代码的可用性以及维护性  隔离,通过阻止对象使用不希望的互动方式来交互,以此来提高模块化程度。  

你可以通过链接访问我们的教程查看关于封装更多的细节和实例. 

多态(Polymorphism) 

多态就是针对不同的基础数据类型呈现相同接口的一种能力,多态类型就是其操作可以适用于不同类型值的一种类型。 

继承(Inheritance) 

继承提供了一个对象从基类获取字段和方法的一种能力.继承提供了代码的重用性,并且在不更改现有类的情况下,对现有类增加额外的功能。 

抽象(Abstraction) 

抽象是从具体的实例中分离想法的过程,根据他们各自的功能而非具体的实现来开发类. Java中支持创建和存在暴露接口的抽象类, 而没有包括方法的具体实现。抽象方法的宗旨就是将类的行为和具体实现分离开。 

抽象和封装的异同 

抽象和封装是个互补的概念。一方面,抽象专注在对象的行为上,而另外一方面,封装专注于对象的行为的具体实现。封装是通过隐藏对象的内部信息来实现的,因此也可以被看做是抽象的一种策略。 

有关Java的一般问题 

1. 什么是JVM? 为什么称Java为跨平台的编程语言? 

Java虚拟机(Java Virtual Machine)是可以执行Java字节码的虚拟机,每个Java源文件将被编译成字节码文件,然后在JVM中执行。Java之所以被设计成可以在任意的平台运行,而不需要重写或者在不同的平台下重新编译,这些都要归功于Java虚拟机(JVM),因为JVM非常了解特定的指令的长度以及底层硬件平台的特殊性。 

2. JDK和JRE之间的差异是什么? 

Java运行环境(Java Runtime Enviroment) 是运行Java程序的基本的Java虚拟机,包括执行applet的浏览器插件。JDK (Java Development Kit) 是为了开发,编译和执行Java应用程序,针对Java的全功能的软件开发包,包含了JRE,编译器和工具(比如说  JavaDoc 和Java Debugger)。 

3. “static” 关键字是什么意思?在Java里可以 override private 或 static 的方法吗? keyword mean ? Can you override private or static method in Java ? 

static 关键字表示,访问这个成员变量或方法时,不必获取它属于的类的实例。 

Java 里的 static 方法不能被 override,因为 override 的机制是运行时(runtime)的动态绑定,而 static 方法是在编译时静态绑定的。static 方法并不与任何类的具体实例有关,因此无法应用继承的概念。 

4. 在静态方法里可以访问非静态变量吗? 

Java 中的 static 变量归相应的类所有,它的值对于类的所有实例都是相同的。static 变量是在 JVM 加载类的时候初始化的。如果代码试图访问非静态的变量,而且不是通过类的实例去访问,编译器会报错,因为这些非静态变量还没有被创建呢,并且它们没有与实例相关联。 

5. Java 支持哪些数据类型?什么是 Autoboxing 和 Unboxing? Java语言支持的8个基本数据类型如下: 

 byte  short  int  long  float  double  boolean  char  

Autoboxing 是指在基本数据类型和对应的包装(wrapper)类之间Java 编译器所做的自动转换。例如,编译器将 int 转换为 Integer,将 [double 转换为 ]{}Double ,等等。逆向的转换称为 unboxing。 

6. 在Java中什么是方法的 Override(覆盖) 和 Overload(重载)? Java中方法的 overload 发生的条件是,同一个类里,有两个或以上的方法名称完全相同,但参数列表不同。另一方面,方法的 override 是指,子类重定义了父类里的同一个方法。Override 的方法必须方法名、参数列表和返回类型都完全相同。Override 的方法不会限制原方法的访问权限。 

7.Java中构造函数、构造函数重载的概念和拷贝构造函数 

当类的对象被创建的时候,调用它的构造函数。每个类都有一个构造函数。如果程序员没有为类编写构造函数,Java编译器自动为类创建一个缺省的构造函数。 

构造函数重载和Java中函数重载类似,可以为同一个类创建不同的构造函数,每个构造函数必须拥有唯一的参数列表。 

Java与C++不同,它不支持拷贝构造函数,但是区别仅仅是,如果你没有编写类的拷贝构造函数,Java不会自动创建它。 

8.Java支持多继承吗? 

Java不支持多继承,每个类只允许继承一个类,但是可以实现多个接口。 

9.接口和抽象类有什么不同? 

Java同时提供和支持抽象类和接口,它们的实现有一些共同的特点,也有如下不同: 

 接口中所有的方法默认都是抽象的,而抽象类可以同时包含抽象和非抽象的方法。  一个类可以实现多个接口,但它只能继承一个抽象类。  一个类要实现某个接口,必须实现这个接口声明的所有方法。而一个类不需要实现抽象父类中声明的所有方法,不过,这时候这个类也必须声明为抽象类。  抽象类可以实现接口,而且不需要实现接口中的方法。  接口中声明的变量默认是final的,而抽象类可以包含非final的变量。  接口中的成员默认是public的,而抽象类的成员可以是private,protected,或public的。  接口是绝对抽象的,不可实例化,抽象类也不可以实例化,但可以在main方法中触发实例化(注:通过匿名类实现)。  

也可以查阅       Abstract class and Interface differences for JDK 8   。   

10.传引用和传值   

当对象通过传值调用时,传递的是这个对象的一个拷贝。因此,即使函数修改这个对象,也不会影响原对象的值。   

当对象通过传引用调用时,对象本身没有被传递,而传递的是对象的一个引用。因此,外部函数对这个对象的修改,也会反映到任何出现这个对象的地方。     

Java 线程 

11. 进程与线程的区别 ? 进程是一个程序的执行(即正在运行的程序), 然而线程是在进程中独立的执行序列. 一个进程可以包含很多线程. 线程有时被称为轻量级的进程. 

12. 说下创建线程的不同方式. 你倾向于哪种方式并说明原因 ? 有三种创建线程的方式: 

 继承Thread类.  实现Runnable接口.  通过Executor框架创建线程池.  

首选方式是实现Runnable接口, 因为它不需要继承Thread类. 当你的程序设计需要多继承时, 使用接口会有所帮助. 另外, 线程池效率是很高的, 并且实施起来也很简单. 

13. 解释下可用的线程状态. 在执行期间, 线程会处于以下状态中的一种: 

 Runnable: 线程已准备就绪, 但没有立即运行.  Running: 处理器正在执行的线程代码.  Waiting: 处于阻塞状态的线程, 等待外部某种处理的结束.  Sleeping: 被强制休眠的线程.  Blocked on I/O: 等待I/O操作的完成.  Blocked on Synchronization: 等待取得线程锁.  Dead: 线程已经执行结束.  

14. 同步方法与同步块的区别 ? 在Java程序中, 每个对象都拥有一个锁. 线程可以通过使用synchronized关键字来获取一个对象上的锁. synchronized关键字可以用于方法级别(粗粒度锁)或代码块级别(细粒度锁).

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Java面试题库及答案解析
1、面向对象编程(OOP)有哪些优点? 代码开发模块化,更易维护和修改。 代码复用。 增强代码的可靠性和灵活性。 增加代码的可理解性。 2、面向对象编程有哪些特性? 封装、继承、多态、抽象 封装 封装给对象提供了隐藏内部特性和行为的能力。对象提供一些能被其他对象访问的方法来改变它内部的数据。在Java当中,有3种修饰符:public,private和protected。每一种修饰符给其他的位于同一个包或者不同包下的对象赋予了不同的访问权限。 下面列出了使用封装的好处: 通过隐藏对象的属性来保护对象内部的状态
nnngu
2018/03/15
1.2K0
Java中级面试题1
1. 什么是 Java 虚拟机?为什么 Java 被称作是“平台无关的编程语言”? a) Java 虚拟机是一个可以执行 Java 字节码的虚拟机进程。Java 源文件被编译成能被 Java 虚拟 机执行的字节码文件。Java 被设计成允许应用程序可以运行在任意的平台,而不需要程序员为每一个平台单独重写 或者是重新编译。Java 虚拟机让这个变为可能,因为它知道底层硬件平台的指令长度和其他 特性。 2. JDK 和 JRE 的区别是什么? a) Java 运行时环境(JRE)是将要执行 Java 程序的 J
java金融
2020/08/05
4440
java50道基础面试题
欢迎关注java技术学习之道,本公众号长期分享各种技术文章。 1.什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”? Java虚拟机是一个可以执行Java字节码的虚拟机进程。Java源文件被编译成能被Java虚拟机执行的字节码文件。 Java被设计成允许应用程序可以运行在任意的平台,而不需要程序员为每一个平台单独重写或者是重新编译。Java虚拟机让这个变为可能,因为它知道底层硬件平台的指令长度和其他特性。 2.JDK和JRE的区别是什么? Java运行时环境(JRE)是将要执行Java程序
Tanyboye
2018/07/02
6500
30道最常问的Java基础面试题
**优点:** 性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机、嵌入式开发、Linux/Unix等一般采用面向过程开发,性能是最重要的因素。
TimeFriends
2022/07/20
3160
Java面试题及答案解析
Java是一个支持并发、基于类和面向对象的计算机编程语言。下面列出了面向对象软件开发的优点:
yaohong
2019/09/11
9490
【Java面试总结】Java基础(上篇)
Java虚拟机(JVM)是运行Java字节码的虚拟机。JVM 有针对不同系统的特定实现(windows,Linux,macOS),目的是使用相同的字节码,它们都会给出相同的结果。
Rochester
2020/09/07
5610
Java经典面试题答案解析(1-80题)
前几天,在茫茫的互联网海洋中寻寻觅觅,把收藏的800道Java经典面试题都发出来,有小伙伴私聊我要答案。所以感觉没有答案的面试题是没有灵魂的,于是今天先整理基础篇的前80道答案出来哈~
捡田螺的小男孩
2020/05/22
6570
Java开发岗面试题--基础篇(一)
老哥们,本期文章为大家奉上Java开发岗面试题--基础篇(一),希望对正在找工作的你有所帮助。话不多说,干货走起!!
C you again
2020/09/10
2K0
【2022最新Java面试宝典】—— Java基础知识面试题(91道含答案)
所谓跨平台性,是指java语言编写的程序,一次编译后,可以在多个系统平台上运行。 实现原理:Java程序是通过java虚拟机在系统平台上运行的,只要该系统可以安装相应的java虚拟 机,该系统就可以运行java程序。
全栈程序员站长
2022/11/06
7240
【2022最新Java面试宝典】—— Java基础知识面试题(91道含答案)
Java基础知识面试题(2020最新版)
Java面试总结汇总,整理了包括Java基础知识,集合容器,并发编程,JVM,常用开源框架Spring,MyBatis,数据库,中间件等,包含了作为一个Java工程师在面试中需要用到或者可能用到的绝大部分知识。欢迎大家阅读,本人见识有限,写的博客难免有错误或者疏忽的地方,还望各位大佬指点,在此表示感激不尽。文章持续更新中…
Java架构师必看
2020/04/10
9950
程序员的56大Java基础面试问题及答案
首先,属性可用来描述同一类事物的特征,方法可描述一类事物可做的操作。封装就是把属于同一类事物的共性(包括属性与方法)归到一个类中,以方便使用。
鱼找水需要时间
2023/12/23
1940
程序员的56大Java基础面试问题及答案
Java基础面试系列(一)
可以到.java文件通过Java编译器(javac.exe)编译成为.class文件。这个.class文件就是字节码文件,它是一种提供给JVM解释执行的文件。每一个平台的都相同,由于通过不同的Java解释器解释形成不同的机器码文件,使操作系统执行。
石的三次方
2021/01/05
3640
常见c和cpp面试题目汇总(一)
STL包括两部分内容:容器和算法;容器即存放数据的地方,比如array, vector,分为两类,序列式容器和关联式容器:
用户6280468
2022/03/21
1.5K0
Java常见面试题及答案
Java 虚拟机是一个可以执行 Java 字节码的虚拟机进程。Java 源文件被编译成能被 Java 虚拟机执行的字节码文件。 Java 被设计成允许应用程序可以运行在任意的平台,而不需要程序员为每一个平台单独重写或者是重新编译。 Java 虚拟机让这个变为可能,因为它知道底层硬件平台的指令长度和其他特性。
Java编程指南
2019/08/02
5770
2024年java面试准备--java基础篇
这些java基础的相关知识是我准备实习期间总结一些网上java基础和自己被面试官询问到的一些知识点,供大家学习参考,有问题可私信我,后续会更新集合、spring、线程、mysql、redis等相关知识点和面试易考点~~
终有救赎
2023/10/16
5150
Java面试题合集
1.抽象类与接口的区别是什么? 一个类可以实现多个接口,但是只能继承以及抽象类。类如果要实现一个接口,它必须要实现接口声明的所有方法。但是,类可以不实现抽象类声明的所有方法,当然,在这种情况下,类也必
Java高级架构
2018/04/19
7960
Java面试题合集
BATJ面试必会之常见Java基础面试题(附答案)
Byte short int long float double boolean char
乔戈里
2019/09/10
9110
BATJ面试必会之常见Java基础面试题(附答案)
Java的面试基础题(一)
Java虚拟机是一个可执行Java字节码的虚拟机进程。Java源文件被编译成能被Java虚拟机执行的字节码文件。 Java被设计成允许应用程序可以运行在任意的平台,而不需要程序员为每一个平台单独重写或者是重新编译。Java虚拟机让这个变为可能,因为它知道底层硬件平台的指令长度和其他特性
Demo_Yang
2019/03/20
1.6K0
Java的面试基础题(一)
Java面试题1:Java基础篇
(2)⼦类拥有⽗类对象所有的属性和⽅法(包括私有属性和私有⽅法),但是⽗类中的私有属性和⽅法⼦类是⽆法 访问,只是拥有。因为在⼀个⼦类被创建的时候,⾸先会在内存中创建⼀个⽗类对象,然后在⽗类对象外部放上⼦ 类独有的属性,两者合起来形成⼀个⼦类的对象; ⼦类可以拥有⾃⼰属性和⽅法; ⼦类可以⽤⾃⼰的 ⽅式实现⽗类的⽅法。(重写) ——————————————————————————————————
程序员洲洲
2024/06/06
3890
Java面试题1:Java基础篇
java常考面试题
Java虚拟机是一个可以执行Java字节码的虚拟机进程。Java源文件被编译成能被Java虚拟机执行的字节码文件。 Java被设计成允许应用程序可以运行在任意的平台,而不需要程序员为每一个平台单独重写或者是重新编译。Java虚拟机让这个变为可能,因为它知道底层硬件平台的指令长度和其他特性。
全栈程序员站长
2022/07/20
3590
相关推荐
Java面试题库及答案解析
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档