1.OOP面试题

Java OOP面试题

  • Java OOP面试题
    • 1、什么是B/S架构么是C/S架构/li>
    • 2、Java都有那些开发平台/li>
    • 3、什么是JDK么是JRE/li>
    • 4、Java语言有哪些特点
    • 5、面向对象和面向过程的区别
    • 6、什么是数据结构/li>
    • 7、Java的数据结构有那些/li>
    • 8、什么是OOP/li>
    • 9、类与对象的关系/li>
    • 10、Java中有几种数据类型
    • 11、标识符的命名规则
    • 12、instanceof 关键字的作用
    • 13、什么是隐式转换,什么是显式转换
    • 14、char类型能不能转成int类型不能转化成String类型,能不能转成double类型/li>
    • 15、什么是拆装箱/li>
    • 16、Java中的包装类都是那些/li>
    • 17、一个java类中包含哪些内容/li>
    • 18、那针对浮点型数据运算出现的误差的问题,你怎么解决/li>
    • 19、面向对象的特征有哪些方面/li>
    • 20、访问修饰符 public,private,protected,以及不写(默认) 时的区别/li>
    • 21、String是基本数据类型吗/li>
    • 22、?oat f=3.4;是否正确/li>
    • 23、short s1 **=** **1; s1** **=** **s1** **+** 1;有错吗hort s1 **=** **1; s1** **+=** **1;**有错吗/li>
    • 24、重载和重写的区别
    • 25、equals与==的区别
    • 26、++i与i++的区别
    • 27、程序的结构有那些/li>
    • 28、数组实例化有几种方式/li>
    • 29、Java中各种数据默认值
    • 30、Java常用包有那些/li>
    • 31、Object类常用方法有那些/li>
    • 32、java中有没有指针/li>
    • 33、java中是值传递还是引用传递/li>
    • 34、实例化数组后,能不能改变数组长度呢/li>
    • 35、假设数组内有5个元素,如果对数组进行反序,该如何做/li>
    • 36、形参与实参区别
    • 37、构造方法能不能显式调用/li>
    • 38、什么是方法重载/li>
    • 39、构造方法能不能重写不能重载/li>
    • 40、内部类与静态内部类的区别/li>
    • 41、static关键字有什么作用/li>
    • 42、?nal在java中的作用,有哪些用法/li>
    • 43、String、StringBu?er 和 StringBuilder 的区别是什么/li>
    • 44、String str=”aaa”与String str=new String(“aaa”)一样吗/li>
    • 45、讲下java中的Math类有那些常用方法/li>
    • 46、String类的常用方法有那些/li>
    • 47、Java中的继承是单继承还是多继承
    • 48、super与this表示什么/li>
    • 49、普通类与抽象类有什么区别/li>
    • 50、什么是接口什么需要接口/li>
    • 51、接口有什么特点/li>
    • 52、抽象类和接口的区别/li>
    • 53、hashCode的作用
    • 54、Java的四种引用,强弱软虚(了解)
    • 55、Java创建对象有几种方式/li>
    • 56、有没有可能两个不相等的对象有相同的hashcode
    • 57、深拷贝和浅拷贝的区别是什么/li>
    • 58、static都有哪些用法/li>
    • 59、a=a+b与a+=b有什么区别吗/li>
    • 60、?nal、?nalize()、?nally
    • 61、&和&&的区别
    • 62、静态内部类如何定义
    • 63、什么是成员内部类
    • 64、Static Nested Class和Inner Class的不同
    • 65、什么时候用assert
    • 66、Java有没有goto
    • 67、数组有没有length()这个方法String有没有length()这个方法
    • 68、用最有效率的方法算出2乘以8等于几/li>
    • 69、?oat型?oat f=3.4是否正确/li>
    • 70、排序都有哪几种方法列举
    • 71、静态变量和实例变量的区别/li>
    • 72、说出一些常用的类,包,接口,请各举5个
    • 73、hashCode() **有什么用** **a.equals(b)** **有什么关系*
    • 74、Java中的编译期常量是什么用它又什么风险/li>
    • 75、在Java中,如何跳出当前的多重嵌套循环/li>
    • 76、两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对/li>
    • 77、是否可以继承String类/li>
    • 78、当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递/li>
    • 79、抽象的(abstract)方法是否可同时是静态的(static),是否可同时是本地方法(native),是否可同时被synchronized修饰/li>
    • 80、char型变量中能不能存贮一个中文汉字,为什么/li>
    • 81、Java中会存在内存泄漏吗,请简单描述。
    • 82、是否可以从一个静态(static)方法内部发出对非静态(non- static)方法的调用/li>
    • 83、如何实现对象克隆/li>
    • 84、接口是否可继承(extends)接口象类是否可实现implements接口象类是否可继承具体类(concreteclass)/li>
    • 85、一个.java源文件中是否可以包含多个类(不是内部类)什么限制/li>
    • 86、Anonymous Inner Class(匿名内部类)是否可以继承其它类否可以实现接口/li>
    • 87、内部类可以引用它的外部类的成员吗没有什么限制/li>
    • 88、JDBC操作的步骤
    • 89、在使用jdbc的时候,如何防止出现sql注入的问题。
    • 90、怎么在JDBC内调用一个存储过程/li>
    • 91、是否了解连接池,使用连接池有什么好处/li>
    • 92、你所了解的数据源技术有那些用数据源有什么好处/li>

Java OOP面试题

1、什么是B/S架构么是C/S架构/h2>

1.B/S(Browser/Server),浏览器/服务器程序,Web应用

2.C/S(Client/Server),客户端/服务端,桌面应用程序

2、Java都有那些开发平台/h2>

1.JAVASE:主要用在客户端开发

2.JAVAEE:主要用在web应用程序开发

3.JAVAME:主要用在嵌入式应用程序开发

3、什么是JDK么是JRE/h2>

1.JDK:java development kit:java开发工具包,是开发人员所需要安装的环境

2.JRE:java runtime environment:java运行环境,java程序运行所需要安装的环境

4、Java语言有哪些特点

1.简单易学、有丰富的类库

2.面向对象(Java最重要的特性,让程序耦合度更低,内聚性更高)

3.与平台无关性(JVM是Java跨平台使用的根本)

4.可靠安全

5.支持多线程

5、面向对象和面向过程的区别

1.面向过程:

? 一种较早的编程思想,顾名思义就是该思想是站着过程的角度思考问题,强调的就是功能行为,功能的执行过程,即先后顺序,而每一个功能我们都使用函数(类似于方法)把这些步骤一步一步实现。使用的时候依次调用函数就可以了。

2.面向对象:

? 一种基于面向过程的新编程思想,顾名思义就是该思想是站在对象的角度思考问题, 我们把多个功能合理放到不同对象里,强调的是具备某些功能的对象。具备某种功能的实体,称为对象。面向对象最小的程序单元是:类。面向对象更加符合常规的思维方式,稳定性好,可重用性强,易于开发大型软件产品,有良好的可维护性。在软件工程上,面向对象可以使工程更加模块化,实现更低的耦合和更高的内聚。

?

6、什么是数据结构/h2>

计算机保存,组织数据的方式

7、Java的数据结构有那些/h2>

1.线性表(ArrayList) 2.链表(LinkedList) 3.栈(Stack)

4.队列(Queue) 5.图(Map) 6.树(Tree)

8、什么是OOP/h2>

面向对象编程

9、类与对象的关系/h2>

类是对象的抽象,对象是类的具体,类是对象的模板,对象是类的实例

10、Java中有几种数据类型

整形:byte,short,int,long

浮点型:?oat,double

字符型:char

布尔型:boolean

11、标识符的命名规则

1.标识符的含义:

? 是指在程序中,我们自己定义的内容,譬如,类的名字,方法名称以及变量名称等等,都是标识符。

2.命名规则:(硬性要求)

? 标识符可以包含英文字母,0-9的数字,$以及_ ,标识符不能以数字开头

? 标识符不是关键字

3.命名规范:(非硬性要求)

? 类名规范:首字符大写,后面每个单词首字母大写(大驼峰式)。

? 变量名规范:首字母小写,后面每个单词首字母大写(小驼峰式)。

? 方法名规范:同变量名。

12、instanceof 关键字的作用

instanceof 严格来说是Java中的一个双目运算符,用来测试一个对象是否为一个类的实例。

用法为:

其中 obj 为一个对象,Class 表示一个类或者一个接口,当 obj 为 Class 的对象,或者是其直接或间接子类,或者是其接口的实现类,结果result 都返回 true,否则返回false。

注意:编译器会检查 obj 是否能转换成右边的class类型,如果不能转换则直接报错,如果不能确定类型,则通过编译,具体看运行时定。

13、什么是隐式转换,什么是显式转换

显示转换(强制类型转换),把一个大类型的数据强制赋值给小类型的数据;

隐式转换(自动类型转换),就是大范围的变量能够接受小范围的数据;

隐式转换和显式转换其实就是自动类型转换和强制类型转换。

14、char类型能不能转成int类型不能转化成String类型,能不能转成double类型/h2>

char在java中也是比较特殊的类型,它的int值从1开始,一共有2的16次方个数据;

char

如果char类型转成byte,short类型的时候,需要强转。

15、什么是拆装箱/h2>

1.装箱就是自动将基本数据类型转换为包装器类型(int–>Integer);调用方法Integer的valueOf(int)方法

2.拆箱就是自动将包装器类型转换为基本数据类型(Integer–>int)。调用方法Integer的intValue()方法

在JDK5之前,如果要生成一个数值为10的Integer对象,必须这样进行:

而在从JDK5开始就提供了自动装箱的特性,如果要生成一个数值为10的Integer对象,只需要这样就可以了:

面试题: 以下代码会输出什么/p>

16、Java中的包装类都是那些/h2>

byte:Byte,

short:Short,

int:Integer,

long:Long,

?oat:Float,

double:Double,

char: Character,

boolean:Boolean

17、一个java类中包含哪些内容/h2>

属性、方法、内部类、构造方法、代码块。

18、那针对浮点型数据运算出现的误差的问题,你怎么解决/h2>

使用BigDecimal类进行浮点型数据的运算

19、面向对象的特征有哪些方面/h2>

抽象:

? 抽象是将一类对象的共同特征总结出来构造类的过程, 包括数据抽象和行为抽象两方面。抽象只关注对象有哪些属性和行为,并不关注这些行为的细节是什么。

继承:

? 继承是从已有类得到继承信息创建新类的过程.提供继承信息的类被称为父类(超类、基类) ;得到继承信息的类被称为子类(派生类)。继承让变化中的软件系统有了一定的延续性 ,同时继承也是封装程序中可变因素的重要手段。

封装:

? 通常认为封装是把数据和操作数据的方法绑定起来,对数据的访问只能通过已定义的接口。面向对象的本质就是将现实世界描绘成一系列完全自治、封闭的对象。我们在类中编写的方法就是对实现细节的一种封装;我们编写一个类就是对数据和数据操作的封装。可以说,封装就是隐藏一切可隐藏的东西, 只向外界提供最简单的编程接口(可以想想普通洗衣机和全自动洗衣机的差别,明显全自动洗衣机封装更好因此操作起来更简单;我们现在使用的智能手机也是封装得足够好的,因为几个按键就搞定了所有的事情)。

多态性:

? 多态性是指允许不同子类型的对象对同一消息作出不同的响应。

? 简单的说就是用同样的对象引用调用同样的方法但是做了不同的事情。多态性分为编译时的多态性和运行时的多态性。如果将对象的方法视为对象向外界提供的 服务,那么运行时的多态性可以解释为:当 A 系统访问 B 系统提供的服务时,B 系统有多种提供服务的方式,但一切对 A 系统来说都是透明的(就像电动剃须刀是 A 系统,它的供电系统是 B 系统,B 系统可以使用电池供电或者用交流电, 甚至还有可能是太阳能,A 系统只会通过 B 类对象调用供电的方法,但并不知道供电系统的底层实现是什么,究竟通过何种方式获得了动力)。

方法重载(overload)实现的是编译时的多态性(也称为前绑定),

方法重写(override) 实现的是运行时的多态性(也称为后绑定)。

运行时的多态是面向对象最精髓的东西,要实现多态需要做两件事:1). 方法重写(子类继承父类并重写父类中已有的或抽象的方法);2). 对象造型(用父类型引用引用子类型对象,这样同样的引用调用同样的方法就会根据子类对象的不同而表现出不同的行为)。

20、访问修饰符 public,private,protected,以及不写(默认) 时的区别/h2>

修饰符 当前类 同 包 子 类 其他包
public
protected 不能
default 不能 不能
private 不能 不能 不能

? 类的成员不写访问修饰时默认为 default。默认对于同一个包中的其他类相当于公 开(public),对于不是同一个包中的其他类相当于私有(private)。受保护(protected)对子类相当于公开,对不是同一包中的没有父子关系的类相当于私 有。Java 中,外部类的修饰符只能是 public 或默认,类的成员(包括内部类)的 修饰符可以是以上四种。

21、String是基本数据类型吗/h2>

? 不是。Java 中的基本数据类型只有 8 个:byte、short、int、long、?oat、double、 char、boolean;除了基本类型(primitive type),剩下的都是引用类型(reference type),Java 5 以后引入的枚举类型也算是一种比较特殊的引用类型。

22、?oat f=3.4;是否正确/h2>

? 答:不正确。3.4 是双精度数,将双精度型(double)赋值给浮点型(?oat)属于 下转型(down- casting,也称为窄化)会造成精度损失,因此需要强制类型转换 ?oat f =(?oat)3.4; 或者写成 ?oat f =3.4F;。

23、short s1 = 1; s1 = s1 + 1;有错吗hort s1 = 1; s1 += **1;**有错吗/h2>

? 对于 short s1 = 1; s1 = s1 + 1;由于1是int类型,因此 s1+1 运算结果也是 int 型,需要强制转换类型才能赋值给short 型。而 short s1 = 1; s1 += 1;可以正确编译,因为 s1+= 1;相当于 s1 = (short)(s1 +1);其中有隐含的强制类型转换。

24、重载和重写的区别

重写(Override)

? 从字面上看,重写就是 重新写一遍的意思。其实就是在子类中把父类本身有的方法重新写一遍。子类继承了父类原有的方法,但有时子类并不想原封不动的继承父类中的某个方法,所以在方法名,参数列表,返回类 型(除过子类中方法的返回值是父类中方法返回值的子类时)都相同的情况下, 对方法体进行修改或重写,这就是重写。但要注意子类函数的访问修饰权限不能少于父类的。

原因: 在某个范围内的整型数值的个数是有限的,而浮点数却不是。

重写总结:

1.发生在父类与子类之间

2.方法名,参数列表,返回类型(除过子类中方法的返回类型是父类中返回类型的子类)必须相同

3.访问修饰符的限制一定要大于被重写方法的访问修饰符(public>protected>default>private)

4.重写方法一定不能抛出新的检查异常或者比被重写方法申明更加宽泛的检查型异常

重载(Overload)

? 在一个类中,同名的方法如果有不同的参数列表(参数类型不同、参数个数不同甚至是参数顺序不同) 则视为重载。同时,重载对返回类型没有要求,可以相同也可以不同,但不能通过返回类型是否相同来 判断重载

重载总结:

1.重载Overload是一个类中多态性的一种表现

2.重载要求同名方法的参数列表不同(参数类型,参数个数甚至是参数顺序)

3.重

来源:小白丿

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年11月22日
下一篇 2021年11月22日

相关推荐