1、简单说明什么是递归?什么情况会使用?
递归做为一种算法在程序设计语言中广泛应用。是指函数/过程/子程序在运行过程中直 接或间接调用自身而产生的重入现象。
递归一般的作用用于解决三类问题:
(1)数据的定义是按递归定义的,例如斐波那契函数。 (2)问题解法按递归算法实现。这类问题虽则本身没有明显的递归结构,但用递归求解
比迭代求解更简单,如Hanoi问题,回溯算法。
(3)数据的结构形式是按递归定义的,例如树的遍历,图的搜索。
2、面向对象的特征?分别什么意思?
(1)抽象:
抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有 关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽 象包括两个方面,一是过程抽象,二是数据抽象。
(2)继承:
多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那个类即可。
(3)封装:
隐藏对象的属性和实现细节,仅对外提供公共访问方式
(4)多态性:
一个对象在程序不同运行时刻代表的多种状态,父类或者接口的引用指向子类对象
3、基本类型和引用类型在内存中的存储方式上有什么区别?
基本数据类型:基本数据类型的值直接存在栈内存中
引用数据类型(除了 8 种基本数据类型以外的数据类型):
在栈内存中存放该对象具体的内容
在堆内存中对应的地址信息,在堆内存中存放该对象的具体信息,如果栈内存中该引 用类型变量没有指向任何对内存区域,则该对象就为 null,此时访问其中的属性或方法就会 出现 NullPointerException。
其中 static 修饰的变量会被存储在方法区(也叫静态存储区,里面还有能被所有线程共享 的 class 文件信息和一些静态数据或方法信息)
4、方法可以由哪些修饰符修饰?
权限修饰符(public,protected,default,private)
abstract—抽象方法 synchronized—同步方法 static—静态方法 native—本地方法 final—不能被重写的最终方法
default—Java8 中的新特性,不破坏 Java 现有实现架构的情况下能往接口里增加新方法,可 以再接口中添加该方法的实现,这也是和以往版本不同的。
想了解更多关于Java面试题,欢迎关注上元IT公众号,更多惊喜等你!