面试题之Java篇
Java开发工程师招聘面试题与参考回答2025年

2025年招聘Java开发工程师面试题与参考回答面试问答题(总共10个问题)第一题:请描述一下Java中的反射机制及其在Java编程中的应用场景。
答案:Java的反射机制是指在运行时,程序能够取得任何类或对象的内部信息,并且动态创建对象、调用对象的方法以及获取对象的属性。
以下是反射机制的一些关键点:1.反射机制允许在运行时动态地加载和调用类的方法。
2.反射机制可以获取类的构造方法、字段、方法和注解等信息。
3.反射机制提供了访问和修改类内部状态的能力。
应用场景:1.创建对象:通过反射机制,可以在运行时创建任意类的实例。
2.方法调用:在运行时动态调用任意对象的方法。
3.获取类信息:在运行时获取类的名称、父类、接口等信息。
4.动态代理:在实现动态代理时,通过反射机制动态创建代理对象。
5.脚本语言集成:某些脚本语言可以通过反射机制与Java代码进行交互。
解析:反射机制在Java编程中具有广泛的应用,以下是几个具体的例子:•在框架开发中,如Spring框架,反射机制被用来动态地注册和管理Bean。
•在插件系统中,反射机制允许在运行时动态加载和调用插件。
•在测试框架中,如JUnit,反射机制被用来动态调用测试方法。
•在JDBC编程中,反射机制可以用来动态创建数据库连接和执行SQL语句。
反射机制虽然功能强大,但也存在一些缺点,如性能开销大、代码难以理解等。
因此,在使用反射时,应尽量减少不必要的反射操作。
第二题:请简述Java中的多态性及其实现方式,并举例说明在Java中如何通过多态来简化代码设计。
答案:多态性是面向对象编程中的一个核心概念,它允许同一个接口或父类在不同的情况下表现出不同的行为。
在Java中,多态性主要通过继承和接口实现。
1.继承:当一个子类继承了父类后,子类对象可以调用父类的方法和属性,如果子类对父类的方法进行了重写(即子类提供了与父类方法相同签名但不同实现的方法),那么在调用该方法时,就会根据对象的实际类型来执行对应的方法。
java面试题库java面试题目及答案(3篇)

第1篇一、基础知识1. Java简介题目:请简述Java的基本特点。
答案:- 简单易学:Java设计之初就考虑了易学性,使用面向对象编程。
- 原生跨平台:Java通过JVM(Java虚拟机)实现跨平台运行。
- 安全性:Java提供了强大的安全机制,如沙箱安全模型。
- 体系结构中立:Java不依赖于特定的硬件或操作系统。
- 高效:Java的运行速度接近C/C++。
- 多线程:Java内置多线程支持,便于实现并发处理。
- 动态性:Java在运行时可以进行扩展和修改。
2. Java虚拟机题目:请解释Java虚拟机(JVM)的作用。
答案:JVM是Java程序的运行环境,其主要作用包括:- 将Java字节码转换为本地机器码。
- 管理内存,包括堆、栈、方法区等。
- 提供垃圾回收机制。
- 管理线程和同步。
3. Java内存模型题目:请简述Java内存模型的组成。
答案:Java内存模型主要由以下部分组成:- 堆(Heap):存储对象实例和数组。
- 栈(Stack):存储局部变量和方法调用。
- 方法区(Method Area):存储类信息、常量、静态变量等。
- 本地方法栈(Native Method Stack):存储本地方法调用的相关数据。
- 程序计数器(Program Counter Register):存储线程的当前指令地址。
4. Java关键字题目:请列举并解释Java中的几个关键字。
答案:- `public`:表示访问权限为公开。
- `private`:表示访问权限为私有。
- `protected`:表示访问权限为受保护。
- `static`:表示属于类本身,而非对象实例。
- `final`:表示常量或方法不能被修改。
- `synchronized`:表示线程同步。
- `transient`:表示数据在序列化时不会被持久化。
二、面向对象编程5. 类和对象题目:请解释类和对象之间的关系。
答案:类是对象的模板,对象是类的实例。
携程java面试题目(3篇)

第1篇一、自我介绍1. 请做一个简短的自我介绍,包括你的姓名、毕业院校、专业、工作经历等。
2. 请简要介绍一下你的技术栈和熟悉的项目。
3. 你在求职过程中,最看重的是公司的哪些方面?二、Java基础1. 请解释Java中的final、static、synchronized关键字的作用和区别。
2. 请简述Java中的异常处理机制。
3. 请说明Java中的四种访问控制符的作用和区别。
4. 请描述Java中的集合框架,包括List、Set、Map等常用集合类的特点和应用场景。
5. 请解释Java中的反射机制及其应用场景。
6. 请简述Java中的多线程编程,包括线程创建、同步、通信等。
7. 请说明Java中的四种垃圾回收算法及其特点。
8. 请描述Java中的四种JVM内存区域及其作用。
9. 请解释Java中的类加载器及其作用。
10. 请说明Java中的四种设计模式及其应用场景。
三、项目经验1. 请简要介绍你参与过的项目,包括项目背景、目标、技术栈等。
2. 请描述你在项目中遇到的问题及解决方案。
3. 请举例说明你在项目中如何进行性能优化。
4. 请说明你在项目中如何进行代码优化。
5. 请描述你在项目中如何进行团队协作。
6. 请说明你在项目中如何进行需求分析。
7. 请描述你在项目中如何进行风险管理。
8. 请说明你在项目中如何进行项目进度管理。
9. 请描述你在项目中如何进行项目文档管理。
10. 请说明你在项目中如何进行项目测试。
四、数据库1. 请简述MySQL的存储引擎及其特点。
2. 请说明MySQL的索引类型及其作用。
3. 请描述MySQL的锁机制及其应用场景。
4. 请说明MySQL的视图、存储过程、触发器的应用场景。
5. 请描述MySQL的SQL优化方法。
6. 请说明MySQL的事务处理及其特点。
7. 请描述MySQL的备份与恢复方法。
8. 请说明MySQL的分区表及其应用场景。
9. 请描述MySQL的读写分离及其实现方法。
java模拟面试题目(3篇)

第1篇一、Java基础知识1. 请简述Java语言的特点。
2. 什么是Java虚拟机(JVM)?它有什么作用?3. 什么是Java的内存模型?请解释Java内存模型中的几个关键概念:堆、栈、方法区、程序计数器、本地方法栈。
4. 什么是Java中的反射机制?请举例说明反射在Java中的应用。
5. 什么是Java中的泛型?请解释泛型的原理和作用。
6. 请简述Java中的四种访问控制符:public、protected、default、private。
7. 什么是Java中的继承和多态?请举例说明继承和多态在实际开发中的应用。
8. 什么是Java中的封装?请举例说明封装在实际开发中的应用。
9. 什么是Java中的接口和抽象类?它们之间有什么区别?10. 什么是Java中的异常处理?请解释try-catch-finally语句的执行顺序。
二、Java集合框架1. 请列举Java集合框架中的常用集合类及其特点。
2. 请简述ArrayList、LinkedList、HashMap、HashSet的区别。
3. 什么是Java中的泛型集合?请举例说明泛型集合的应用。
4. 什么是Java中的迭代器(Iterator)和枚举器(Enum)?请比较它们的区别。
5. 什么是Java中的List、Set、Map的遍历方法?6. 请解释Java中的ArrayList和LinkedList的内部实现原理。
7. 什么是Java中的HashMap的扩容机制?8. 什么是Java中的HashSet的内部实现原理?9. 请解释Java中的线程安全集合类,如CopyOnWriteArrayList、ConcurrentHashMap。
三、Java多线程与并发1. 什么是Java中的线程?请解释线程的创建、调度和同步。
2. 请简述Java中的线程状态,如新建、就绪、运行、阻塞、等待、超时等待、终止。
3. 什么是Java中的同步机制?请解释synchronized关键字的作用。
java高级面试题及答案

java高级面试题及答案一、基础理论知识1. 请解释Java中的四种访问修饰符及其作用范围。
答:Java中的四种访问修饰符分别是public、protected、default(无修饰符)和private。
public修饰的类或成员可以被任何其他类访问;protected修饰的成员可以被同一个包内的类以及子类访问;default(无修饰符)的成员只能被同一个包内的类访问;private修饰的成员只能在声明它的类内部访问。
2. 什么是Java的序列化和反序列化?请举例说明。
答:Java序列化是将对象的状态信息转换为字节流的过程,以便于存储或传输。
反序列化则是将字节流恢复为原来的对象。
例如,通过ObjectOutputStream和ObjectInputStream类可以实现对象的序列化和反序列化。
3. 解释Java中的多态性及其优势。
答:多态性是指允许使用子类对象来替代父类对象的能力。
在Java中,这是通过继承和接口实现的。
多态性的优势包括代码的可扩展性和可维护性,以及能够编写更通用的代码。
二、Java集合框架1. 请比较ArrayList和LinkedList的性能差异。
答:ArrayList是基于动态数组的数据结构,适合随机访问;LinkedList是基于双向链表的数据结构,适合频繁的插入和删除操作。
在随机访问大量元素时,ArrayList的性能优于LinkedList;而在插入和删除操作频繁时,LinkedList的性能更优。
2. 什么是HashMap的工作原理,以及如何解决它的线程安全问题?答:HashMap基于哈希表实现,通过键的哈希值来计算存储位置。
当两个不同的键具有相同的哈希值时,会发生哈希冲突,HashMap通过链表或红黑树来解决这个问题。
对于线程安全问题,可以使用ConcurrentHashMap,它通过锁分离技术来提供线程安全的映射。
三、异常处理1. 请解释Java中的异常处理机制。
java跳槽面试题目(3篇)

第1篇一、Java基础知识1. 请简述Java的基本特点。
解析:Java具有“一次编写,到处运行”的特点,具有跨平台性;具有简单易学、面向对象、分布式、解释型、健壮性、安全性、体系结构中立、多线程、动态性等特点。
2. 什么是JVM?请简述JVM的作用。
解析:JVM(Java虚拟机)是运行所有Java应用程序的虚拟机。
它的作用是执行Java字节码,为Java程序提供运行环境,保证Java程序跨平台运行。
3. 请简述Java中的四种访问控制符及其作用。
解析:- public:表示公开的访问控制符,可以在任何地方访问。
- private:表示私有的访问控制符,只能在类内部访问。
- protected:表示受保护的访问控制符,可以在类内部和子类中访问。
- default(无修饰符):表示默认的访问控制符,只能在本包内访问。
4. 什么是封装?请举例说明。
解析:封装是将类的属性和行为封装在一起,对外只提供有限的接口。
例如,一个学生类,包含姓名、年龄、性别等属性,以及学习、休息等方法。
5. 什么是继承?请举例说明。
解析:继承是子类继承父类的方法和属性。
例如,一个动物类,包含行走、吃食等方法,一个猫类继承自动物类,则猫类具有行走、吃食等方法。
6. 什么是多态?请举例说明。
解析:多态是指同一个方法在不同对象上有不同的行为。
例如,一个形状类,包含计算面积的方法,一个圆形和正方形类继承自形状类,计算面积的方法在圆形和正方形类中有不同的实现。
7. 什么是接口?请举例说明。
解析:接口是一种规范,定义了类应该具有的方法,但不提供具体实现。
例如,一个Comparable接口,定义了compareTo方法,用于比较两个对象的大小。
8. 什么是泛型?请举例说明。
解析:泛型是一种类型参数化技术,可以在编译时进行类型检查,提高代码的安全性。
例如,一个List<T>泛型集合,可以存储任意类型的元素。
二、Java集合框架1. 请简述Java集合框架中的常用类及其特点。
黑马程序员面试题目(3篇)
第1篇第一部分:Java基础知识1. Java基础- Java的内存模型:请解释Java内存模型,包括堆、栈、方法区、本地方法栈和程序计数器的作用及区别。
- Java的访问控制:描述Java中的访问控制符(public, private, protected, default),并说明它们如何影响类的成员访问。
- Java的继承:解释Java中的继承机制,包括单继承和多继承的优缺点。
- Java的多态:说明Java中的多态概念,并举例说明如何实现多态。
- Java的封装:解释Java中的封装概念,并说明如何通过访问控制符实现封装。
2. Java集合框架- ArrayList和LinkedList的区别:比较ArrayList和LinkedList在性能、内存使用、迭代器使用等方面的区别。
- HashMap和HashSet的区别:分析HashMap和HashSet在数据结构、性能、使用场景等方面的差异。
- Java集合的遍历:描述Java集合的几种遍历方式,如for循环、迭代器、forEach等。
3. Java异常处理- Java异常的分类:解释Java中的检查型异常(checked exceptions)和非检查型异常(unchecked exceptions)。
- try-catch-finally语句:说明try-catch-finally语句的使用场景和执行顺序。
- 自定义异常:解释如何自定义异常类,并举例说明。
4. Java泛型- 泛型的概念:描述Java泛型的概念,并说明泛型的使用优势。
- 泛型的限制:分析Java泛型的使用限制,如泛型类型擦除。
- 泛型通配符:解释泛型通配符(?)的作用和使用场景。
第二部分:Java高级特性1. Java并发编程- 线程和进程的区别:比较Java中的线程和进程,包括它们的创建方式、调度方式等。
- 线程的创建方法:列举并解释Java中创建线程的几种方法,如继承Thread类、实现Runnable接口、使用Callable接口等。
往年Java面试题大全
往年Java面试题大全一、基础篇1、Java创建对象有几种方式?【仅供参考】Java创建对象有以下几种方式:用new语句创建对象。
使用反射,使用Class.newInstance()创建对象。
调用对象的clone()方法。
运用反序列化手段,调用java.io.ObjectInputStream对象的readObject()方法。
2、构造器是否可被重写?【仅供参考】Constructor 不能被 override(重写),但是可以 overload(重载),所以你可以看到⼀个类中有多个构造函数的情况。
3、Java 中的 Math. round(-1. 5) 等于多少?【仅供参考】等于 -1,因为在数轴上取值时,中间值(0.5)向右取整,所以正 0.5 是往上取整,负 0.5 是直接舍弃。
4、Java 中操作字符串都有哪些类?它们之间有什么区别?【仅供参考】操作字符串的类有:String、StringBuffer、StringBuilder。
String 和 StringBuffer、StringBuilder 的区别在于 String 声明的是不可变的对象,每次操作都会生成新的 String 对象,然后将指针指向新的 String 对象,而 StringBuffer、StringBuilder 可以在原有对象的基础上进行操作,所以在经常改变字符串内容的情况下最好不要使用 String。
StringBuffer 和 StringBuilder 最大的区别在于,StringBuffer 是线程安全的,而 StringBuilder 是非线程安全的,但 StringBuilder 的性能却高于StringBuffer,所以在单线程环境下推荐使用 StringBuilder,多线程环境下推荐使用 StringBuffer。
5、String 类的常用方法都有那些?【仅供参考】indexOf():返回指定字符的索引。
2024年Java经典面试题及答案
2024年Java经典面试题及答案问:Java中的泛型是什么?它有什么作用?答:Java中的泛型是一种参数化类型,它允许使用一个占位符来代表各种类型。
它的作用是在编译时检测类型的一致性,避免了类型转换错误,并提高了代码的重用性。
问:Java中的静态方法和实例方法有什么区别?答:静态方法是属于类的方法,可以在不创建实例对象的情况下被调用,它可以直接通过类名来调用。
实例方法是属于具体实例对象的方法,需要先创建实例对象才能调用。
问:Java中的反射是什么?它有什么用途?答:反射是指在运行状态中,动态获取类的信息并操作类的属性和方法。
它的主要用途是在运行时动态创建对象、访问属性和调用方法,以及在编译时无法确定类型的情况下进行操作。
问:Java中的多线程是什么?如何创建多线程?答:多线程是指在一个程序中同时执行多个线程,每个线程可以独立执行不同的任务。
要创建多线程可以通过继承Thread 类或实现Runnable接口来实现。
问:Java中的异常处理是什么?有哪些常见的异常类型?答:异常处理是指在程序执行过程中处理各种错误或异常情况。
常见的异常类型包括NullPointerException、ArrayIndexOutOfBoundsExcpetion、IOException等。
问:Java中的集合框架是什么?它有哪些常见的接口和类?答:集合框架是Java中用于存储和操作对象的数据结构。
常见的接口包括List、Set、Map等,常见的类包括ArrayList、LinkedList、HashSet、HashMap等。
问:Java中的IO流是什么?它有哪些常见的流类型?答:IO流是用于输入和输出操作的流。
常见的流类型包括字节流和字符流,分别对应InputStream/OutputStream和Reader/Writer。
在Java编程中, IO流是非常重要的一个概念。
IO流是用于将数据从一个地方传输到另一个地方的机制,它允许程序通过输入和输出来访问数据。
超全java面试题库-第一篇(Java基础篇)
第一篇Java基础面试题1.说下面向对象四大特性封装性、继承性、多态性、抽象性。
2.Java语言有些特点简单性:Java没有像C++那样的指针,运算符重载,类的多继承。
并且实现了垃圾的自动回收,简化了程序开发者对于内存管理的工作。
面像对象:对象是指封装数据和操作方法的程序实体。
Java提供了简单的类机制以及动态接口。
表现形式是封装继承多态。
分布式:它有一套很齐全的通信及相关功能的程序库,可以处理TCP/IP协议也可以处理其他的协议。
健壮性:用Java编写的程序能在多种情况下稳定运行。
Java在运行和编译的时候都会对可能出现的错误进行检查验证。
通过集成异常处理机制,在编译时提示可能出现的但是未被处理的异常,以防止系统的崩溃。
可移植性:Java是与平台无关的,Java类库中也实现了与平台无关的接口,这样类库也是可以移植的。
多线程机制:Java具有多线程机制,使得程序能够并行执行,同步机制也保证了数据的共享,线程也有优先级别,有利于使用线程级别控制不同的任务。
3.什么是Java程序的主类?应用程序和小程序的主类有何不同?一个程序中可以有多个类,但只能有一个主类。
在Java应用程序中,这个类是指包含main ()方法的类。
而在Java小程序中,这个主类是一个继承子系统类JApplet或Applet的子类。
应用程序的主类不一定要求是public类但小程序的主类必须是public类。
主类是Java程序执行的入口点。
简单说应用程序是从主线程启动(也就是 main() 方法)。
applet 小程序没有 main() 方法,主要是嵌在浏览器页面上运行(调用init()或者run()来启动),嵌入浏览器这点跟 flash 的小游戏类似。
4.访问修饰符public,private,protected,以及不写(默认)时的区别?类的成员不写访问修饰时默认为default。
默认对于同一个包中的其他类相当于公开(publi c),对于不是同一个包中的其他类相当于私有(private)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
11、int 和 Integer 有什么区别?基本数据类型和基本数据类型包装类有什么异 同?为什么有基本数据类型还要有基本数据类型包装类?
Math.round(11.5)的返回值是 12,Math.round(-11.5)的返回值是-11。四舍五入的原 理是在参数上加 0.5 然后进行向下取整。(这其实就是简单的数学概念,明白四舍五入就错 不了)
10、String 是基本的数据类型吗?String 能被继承吗?
不是。Java 中的基本数据类型只有 8 个:byte、short、int、long、float、double、 char、boolean;除了基本类型(primitive type),剩下的都是引用类型(reference type), Java 5 以后引入的枚举类型也算是一种比较特殊的引用类型。
扩展:隐式转换,即自动转换,它不要求加以声明,是系统默认的。它是由小至大的转 换:
byte——>short——>int——>long——>float——>double char——>int——>long——>float——>double 显式转换,即强制转换,它是由大至小的转换,它的格式为: 类型 变量=(类型) 变量 2;
1
Java 面试题
象单一继承的关系。(多态就应该对重载和重写的概念很清楚,重载与重新是实现多态的重 要机制)
2、 Java 是如何实现“一次编译,随处运行的”?Java 能跨平台的原因?
Java 实现跨平台的原理是通过 Java 虚拟机来实现的,Java 源文件为后缀.java 的文件, 经过编译器编译为后缀.class 文件。这些.class 文件可以在 JVM(Java 虚拟机)中运行, 而 JVM 底层屏蔽了不同操作系统的差异,这样就使得能够“一次编译,随处运行”。
8、short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
Java 规范有这样的规则:1.高位转低位需要强制转换 2.低位转高位自动转.在 Java 中
5
Java 面试题
没小数点默认的为 int 类型,1 是 int 型,s1 是 short 型,通过加 1 运算后 s1 自动转为 int 型,所以要强制转换,改为 s1 = (short)s1 + 1;
3)包装数据类型都实现了 Serializable 接口,所以可以序列化和反序列化。 扩展:(1)把对象转换为字节序列的过程称为对象的序列化;把字节序列恢复为对象 的过程称为对象的反序列化。
} class Dog extends Animal{
@Override public void move(){
System.out.println("狗可以跑和走"); } public void bark(){
System.out.println("狗可以吠叫"); } }
5、 Java 中的数据类型有哪些?
2)封装:将对象中的数据封闭包装起来,只能通过方法/函数操作数据,使用者只能使 用对象的属性和方法/函数,而不知道对象的具体实现。
打个比喻就相当于一台自动贩卖机,这个贩卖机相当于对象,贩卖机中有各种饮料,贩 卖机有贩售饮料的方法,你只需要投币,就能拿到等值的饮料,但是你不知道你投币以后你 的饮料是怎样从贩卖机中出来的。(说到封装就不得不说 Java 中的访问限制 private、 default、protect、public),一个简单常见的例子就是 set、get 方法访问类中私有属性)。
} //以下两个参数类型顺序不同 public String test(int a, String s){
System.out.println("test3"); return "returntest3"; } public String test(String s,int a){ System.out.println("test4"); return "returntest4"; } public static void main(String[] args){ Overloading o = new Overloading(); System.out.println(o.test()); o.test(1); System.out.println(o.test(1,"test3")); System.out.println(o.test("test4",1)); } }
Java 是面向对象的程序设计语言,讲究的是万物皆对象的理念。而基本数据类型在某 些场景下无法使用,包装类可以向操作其它类一样简单操作对“基本数据类型进行操作”;
包装类提供了更多更实用的方法,如 hashCode 方法,equals 方法以及 valueOf 方法等 等,功能比基本数据类型丰富。从 Java 5 开始引入了自动装箱/拆箱机制,使得二者可以相 互转换。
6
Java 面试题
parseDouble、toHexString 等数值的常用进制转换方法等等。(使用包装类型进行值比较 时,建议使用 equals 方法,而不是使用==去进行值比较,这是因为包装类型中对一个范围 的数字使用了一种类似类似缓存池的东西,下面的例子将会介绍)
2)包装类可以为泛型参数,而基本数据类型不可以。例如我们定义一个 List 集合时, 可以使用包装类型,但是却无法使用基本数据类型。
7、定义变量 float f = 5.2;是否有问题?能否通过编译?
有问题,不能通过编译;在 Java 中没小数点的默认是 int,有小数点的默认是 double。 将 double 转换为 float 需要进行强制类型转换,如 float f = (float)5.2;或者 float f = 5.2f; 表示这是一个 float 类型的数据。
重载程序示例如下:
public class Overloading { public int test(){ System.out.println("test1"); return 1; }
2
Java 面Байду номын сангаас题
public void test(int a){ System.out.println("test2");
重写(Override): 又称动态多态,运行时多态:发生在两个类中;方法名、参数、返回 类型都与父类一致,不可以修改,但是里面的实现可以与被重写方法不同。(可以使用 @Overwrite 标签校验),重写示例程序如下:
3
Java 面试题
class Animal{ public void move(){ System.out.println("动物可以移动"); }
3)继承:继承性:继承是有联系的类所构成的层次模型。它可以重用类,并且提供了 明确表达共性的方式,即原始类的派生类(子类)可以从基类(父类)那里继承方法和实例 变量,并且类可以修改或增加新的方法使之更适合特殊的需要。这样使设计新类的过程大大 简化。Object 是所有类的超类。
4)多态:多态性:多态是在父类中定义的属性和方法被子类继承之后,可以具有不同 的数据类型或表现出不同的行为。多态性包括参数多态性和包含多态性。Java 编辑器会自 动根据所传递的参数进行判断,根据运行时对象的类型不同而执行不同的操作,这样很好地 解决了应用程序函数同名问题。多态性丰富了对象的内容,扩大了对象的适应性,改变了对
4)使用 private 修饰符的变量和方法,只能在当前类中使用。
访问修饰符
同一类中
同一包中
子类中
全局
public
可以
可以
可以
可以
protect
可以
可以
可以
不可以
不写默认下
可以
可以
不可以
不可以
private
可以
不可以
不可以
不可以
4、 重载和重写的区别?为什么不能根据返回类型来区分重载?
重载和重写是 Java 中实现多态的重要机制。重载(Overload):又称静态多态,编译 时多态: 重载发生在一个类中,同名的方法如果有不同的参数列表(参数类型不同、参数个 数不同或者二者都不同)则视为重载;
Java 面试题
面试题
Java 篇
(一)
一、Java 基础相关
1、 Java 有什么特性?面向对象的特征有哪些?Java 的重要特征?
抽象、封装、继承、多态为 Java 面向对象的最重要的四个特征(其它特征还有诸如多 线程、API 多、安全性高、跨平台等等)
1)抽象:Java 是面向对象的解释性编程语言,面向对象讲究的万物皆对象,是将一类 对象的共同特征总结出来构造类的过程,包括数据抽象(属性)和行为抽象(方法/函数), 而不会关注行为的细节是什么样子。
Java 中的数据类型分为基本数据类型和引用数据类型两大类; 基本数据类型 4 类(整形、浮点型、布尔型、字符型)8 种{byte(1 个字节)、short (2 个字节)、int(4 个字节)、long(8 个字节)、float(4 个字节)、double(8 个字 节)、boolean(一个字节)};引用数据类型(类、接口、数组、枚举类型);1 字节=16 位,可推算出表示范围,有符号(即从负数表示到正数,boolean、char 类型除外)例如 byte 可表示范围为:负 2 的 8 次方到正 2 的 8 次方-1,减去 1 是因为还有 0 要表示。boolean 类 型只有 true 或 false,char 类型是 2 个字节 16 位 Unicode 字符,从 0 到 2 的 16 次方-1; 数据类型字节数确定也是保证 Java 程序的可移植,跨平台的基础。