前言:
对于Java的学习,很多⼈可能学了之后,不知道⾃⼰处于哪个阶段,也不到究竟要学到哪个程度,帅地觉得,验证⾃⼰学得如何最好的⾯试,就是尝试去⾯试,⽽⾯试⽆⾮就是问你⼀些⾯试题,所以呢,帅地整理了这些 Java ⾯试题,从 Java 基础,集合,并发到虚拟机,并且附带了详细的答案,⽆论是想⾯试还是想看看⾃⼰学得如何,那么这份⾯试题,都值得你去学习
学习内容:
一、Java基础
1.解释下什么事面向对象?面向对象和面向过程的区别
面向对象是一种基于面向过程编程思想,是向现实世界模型的自然延伸,这是一种“万物皆对象”的编程思想。有执行者变为指挥者,在现实生活中的任何物体都可以贵为一类事物,而每一个个题都是一类事物的实例。绵阳对象的编程一对象为中心,以消息为驱动。
区别:
(1)编程思路不同:面向过程以实现功能的函数开发为主,而面向对象要首先抽象处类、属性及其方法,然后通过实例化类、指向方法来完成功能。
(2)封装性:都具有封装性但是面向过程是封装的功能,而面向对象封装是数据和功能。
(3)面向对象具有继承性和多态性,而面向过程没有继承性和多态性,所以面向对象优势很明显。
二、面向对象三大特性?分别解释下?
(1)封装:通常认为封装是把数据和操作数据的方法封装起来,对数据的访问只能通过已定义的接口。
(2)继承:继承是从已有类得到继承信息创建类的过程。提供继承信息的类被称为父类(超类/基类),得到继承信息的被称为子类(派生类)。
(3)动态:分为编译是多台(方法重载)和运行时对台(方法重写)。要实现多台需要做两件事:一是子类继承父类并重写父类并重写父类中的方法,二是用父类引用子类型对象,这样同样的引用调用同样的方法就会根据子类对象的不同而变现不同的行为。
3、JDK、JRE、JVM三者之间的关系?
(1)JDK(Java Development Kit):是java的开发工具包,是整个Java的核心,包括了Java运行环境JRE、Java工具和Java基础类库。
(2)JRE(Java Runtime Evironment):是Java运行环境,包含JVM标准实现及Java核心库类。
(3)JVM(Java Virttual Machine):是Java虚拟机,是整个Java实现跨平台的核心的部分,能够运行以Java语言写作的软件程序。所有的Java程序会首先编译为.class 的类文件,这种文件可以在虚拟机上执行。
4、重载和重写的区别?
(1)重载:编译时多态、同一个类中同名的方法具有不同的参数列表、不能根据返回类型进行区分【因为:函数调用时不能指定类型信息、编译器不知道你要调哪个函数】;
(2)重写(即:覆盖):运行时多态、子类与父类之间、子类重父类的方法具有相同的返回类型、更改的访问权限。
5、Java中是否可以重写一个private或者static方法?
(1)Java中static方法不能覆盖,因为方法覆盖是基于运行时动态绑定的、而static方法是编译时静态绑定的。static方法跟类的任何实例不相关、所以概念上不适用。
(2)Java 中也不可以覆盖 private 的⽅法,因为 private 修饰的变量和⽅法只能在当前类中使⽤, 如果是其他的类继承当前类是不能访问到 private 变量或⽅法的,当然也不能覆盖。
静态⽅法补充:静态的⽅法可以被继承,但是不能重写。如果⽗类和⼦类中存在同样名称和参数的静态⽅法,那么该⼦类的⽅法会把原来继承过来的⽗类的⽅法隐藏,⽽不是重写。通俗的讲就是⽗类的⽅法和⼦类的⽅法是两个没有关系的⽅法,具体调⽤哪⼀个⽅法是看是哪个对象的引⽤;这种⽗⼦类⽅法也不在存在多态的性质。
免责声明
如有侵权,⻢上联系我博客。