java面试八股文-基础篇

1、 java语言具有哪些特点?

(1)java语言是一种高级计算语言,是一种面向对象的编程语言,在java的世界中,万物皆为对象;

(2)跨平台性,可能你听说过java的一句经典的话:Write once and run everywhere,一次编写 ,到处运行,这是为什么呢?java利用java虚拟机运行字节码文件,所以不管是什么系统的平台,只要能对java程序进行编译,都是可以运行的;

(3)java是一种解释型语言,编译器把java代码编译成平台无关的中间代码,然后jvm上运行;

(4)java提供很多的内置类库,例如对多线程,对网络通信支持,还有垃圾回收器;

(5)java具有较好的安全性和健壮性,java没有了c++中复杂的指针,还提供了异常处理和垃圾回收机制;

(6)现在在web应用的开发,一般都是使用java语言。

2、面向对象的三大特性

(1)封装:对类的某些数据进行隐藏,外界只能通过对象的方法来获取对象的信息,我们常见的get/set方法和对类的属性私有化就是封装的应用场景。

(2)继承:对象的一个新类可以从现有的类中派生,派生类(子类)可以从它的基类(父类)那继承方法,也可以修改或者新增新的方法;

(3)多态:多态就是不同对象对同一物体或事件发出不同的反应或响应,举个例子:上体育课,铃响了,有的人打篮球,有的人踢毽子,但是都是上体育课,存在多态的必要条件:继承、重写、向上转型(向下转型)。

3、jdk和jre有什么区别?

(1)jdk:java开发工具包,提供了java的开发环境和运行环境

(2)jre:java运行环境,提供了java运行所需的环境

从上面的定义我们就知道了两者的区别在于jdk包含了jre,如果只运行java程序,我们只需要安装jre即可,但是我们要编写java程序,必须得安装jdk。

4、简述一下java修饰符

java常见的几个修饰符有:public、private、protected、default

(1)public:对所有类可见

(2)private:在同一类内可见,但是不能修饰类

(3)default:默认访问修饰符,在同一个包内可见

(4)protected:对同一包内的类和子类可见,不能修饰类

5、构造方法、成员变量初始化以及静态成员变量三者初始化顺序?

(1)先后顺序:静态成员变量、成员变量、构造方法。

(2)详细的先后顺序:父类静态变量、父类静态代码块、子类静态变量、子类静态代码块、父类非静态变量、父类非静态代码块、父类构造函数、子类非静态变量、子类非静态代码块、子类构造函数。

6、接口和抽象类的相同点和区别?

相同点:

(1)都不能被实例化

(2)接口对应的实现类或抽象类对应的子类都需要实现对应的方法才能被实例化

区别:

(1)接口只能有方法的定义,不能有方法的实现,而抽象类可以有方法的定义与实现

(2)实现接口的关键字为implements,继承抽象类的关键字为extends,一个类可以实现多个接口,一个类只能继承一个抽象类,抽象类可以说是一种特殊的类

(3)当子类和父类之间存在逻辑上的层次结构,推荐使用抽象类,有利于功能的积累;而接口的使用为了减低系统的耦合度,方便 日后的维护或添加删除方法。

7、java提供的多态机制

java提供了两种用于多态的机制,分别是重载与覆盖 (1)重载:重载是指同一个类中有多个同名的方法,但是这些方法有不同的参数,在编译期就可以确定调用那个方法;

(2)覆盖(重写):覆盖是指派生类重写基类的方法,使用基类指向子类的实例对象,或接口的引用变量指向其实现类的实例对象,在程序调用的运行期根据引用变量所指的具体实例对象调用正在运行的那个对象的方法,即需要运行期才能确定调用那个方法。

8、重载与重写的区别

(1)重写是父类与子类之间的关系,是垂直关系;重载是同一个类多个方法之间的关系,是水平关系;

(2)重写只能由一个方法或者一对方法产生关系,重载是多个方法之间的关系;

&

你可能感兴趣的:(后端,java,面试,jvm,架构,职场和发展)