2020阿里年度总结的100+面试真题,你能答对多少?

前言

面向对象编程(OOP)具有多方面的吸引力。对管理人员,它实现了更快和更廉价的开发与维护过程。对分析与设计人员,建模处理变得更加简单,能生成清晰、易于维护的设计方案。对程序员,对象模型显得如此高雅和浅显。此外,面向对象工具以及库的巨大威力使编程成为一项更使人愉悦的任务。每个人都可从中获益,至少表面如此。

所有编程语言的最终目的都是解决企业又或者人在现实生活中所遇到的问题,最初我们的程序可能长这样“11111100001”,相信大家都不会陌生,只是大家没这么子去敲过代码。再后来出现了汇编语言,汇编语言便是对基础机器语言(二进制)的少量抽象,再到后来出现了许多“命令式”语言(如FORTRAN、BASIC和C),这些语言便是对汇编语言的一种抽象。这些语言都有了长足的进步,但它们的抽象原理依然要求我们着重考虑计算机的结构,而考虑的不是要解决的问题的本身结构。在机器与实际要解决的问题之间,程序员必须建立起一种联系,这个过程要求人们付出较大的精力,使得程序代码很难编写,写出来的代码又很难理解,要花较大的代价进行维护。关注公众号:麒麟改bug,领取这份:JavaOOP面试题108道面试题【答案解析】,Java核心技术知识点集锦200多页学习笔记。

面向对象的程序便很好的解决了这一问题,程序员可利用程序来表达实际问题中的元素,我们便将这些元素在程序中的表示称为“对象”。我们可以根据现实中的问题来灵活配置对象,以便与特定的问题配合。与之前的语言相比,这无疑是一种更加灵活、更加强大的语言抽象。总之OOP允许我们根据问题来描述问题,而不是根据问题在机器中的方案。与现实世界中的“对象”或者“物体”相比,编程对象与它们也存在共通的地方:它们都有自己的特征和行为。

JavaOOP面试题

1、什么是B/S架构?什么是C/S架构

  1. B/S(Browser/Server),浏览器/服务器程序
  2. C/S(Client/Server),客户端/服务端,桌面应用程序

2、Java都有那些开发平台?

3、什么是JDK?什么是JRE?

4、Java语言有哪些特点

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

6、什么是数据结构?

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

7、Java的数据结构有那些?

8、什么是OOP?

​ 面向对象编程

9、类与对象的关系?

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

10、Java中有几种数据类型

11、标识符的命名规则。

12、instanceof关键字的作用

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

14、Char类型能不能转成int类型?能不能转化成string类型,能不能转成double类型

15、什么是拆装箱?

16、Java中的包装类都是那些?

​ byte:Byte,short:Short,int:Integer,long:Long,float:Float,double:Double,char:Character ,boolean:Boolean

17、一个java类中包含那些内容?

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

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

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

19、面向对象的特征有哪些方面?

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

21、String 是最基本的数据类型吗?

22、float f=3.4;是否正确?

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

23、short s1 = 1; s1 = s1 + 1;有错吗?short s1 = 1; s1 += 1; 有错吗?

24、重载和重写的区别

25、equals与==的区别

36、++i与i++的区别

i++:先赋值,后计算 ++i:先计算,后赋值

37、程序的结构有那些?

  1. 顺序结构

  2. 选择结构

  3. 循环结构

38、数组实例化有几种方式?

39、Java中各种数据默认值

40、Java常用包有那些?

41、Object类常用方法有那些?

42、java中有没有指针?

有指针,但是隐藏了,开发人员无法直接操作指针,由jvm来操作指针

43、java中是值传递引用传递?

44、实例化数组后,能不能改变数组长度呢?

不能,数组一旦实例化,它的长度就是固定的

关注公众号:麒麟改bug,了解 JavaOOP面试题108道面试题【答案解析】

45、假设数组内有5个元素,如果对数组进行反序,该如何做?

创建一个新数组,从后到前循环遍历每个元素,将取出的元素依次顺序放入新数组中

46、形参与实参区别

47、构造方法能不能显式调用?

48、什么是方法重载?

49、构造方法能不能重写?能不能重载?

50、内部类与静态内部类的区别?

51、Static关键字有什么作用?

52、final在java中的作用,有哪些用法?

53、StringString StringBuffffer  StringBuilder 的区别是什么?

54、String str=”aaa”,与String str=new String(“aaa”)一样吗?

55、讲下java中的math类有那些常用方法?

56、String类的常用方法有那些?

57、Java中的继承是单继承还是多继承

Java中既有单继承,又有多继承。对于java类来说只能有一个父类,对于接口来说可以同时继承多个接口

58、Super与this表示什么?

Super表示当前类的父类对象 This表示当前类的对象

59、普通类与抽象类有什么区别?

普通类不能包含抽象方法,抽象类可以包含抽象方法 抽象类不能直接实例化,普通类可以直接实例化

60、什么是接口?为什么需要接口?

61、接口有什么特点?

接口中声明全是public static final修饰的常量 接口中所有方法都是抽象方法 接口是没有构造方法的 接口也不能直接实例化 接口可以多继承

62、抽象类和接口的区别?

63、Hashcode的作用

64、 Java的四种引用,强弱软虚

65、Java创建对象有几种方式?

66、有没有可能两个不相等的对象有相同的hashcode

67、拷贝和浅拷贝的区别是什么?

68、static都有哪些用法?

69、a=a+b与a+=b有什么区别吗?

70、final、finalize()、finally

71、JDBC操作的步骤

加载数据库驱动类 打开数据库连接 执行sql语句 处理返回结果 关闭资源

72、在使用jdbc的时候,如何防止出现sql注入的问题。

使用PreparedStatement类,而不是使用Statement类

73、怎么在JDBC内调用一个存储过程

使用CallableStatement

74、是否了解连接池,使用连接池有什么好处?

75、你所了解的数据源技术有那些?使用数据源有什么好处?

76、&和&&的区别

77、静态内部类如何定义

78、什么是成员内部类

79、Static Nested Class 和 Inner Class的不同

80、什么时候用assert

81、Java有没有goto

82、数组有没有length()这个方法? String有没有length()这个方法

83、用最有效率的方法算出2乘以8等於几

84、float型float f=3.4是否正确?

不正确。精度不准确,应该用强制类型转换,如下所示:float f=(float)3.4

85、排序都有哪几种方法?请列举!

关注公众号:麒麟改bug,了解 JavaOOP面试题108道面试题【答案解析】

86、静态变量和实例变量的区别?

static i = 10; //常量 class A a; a.i =10;//可变

87、说出一些常用的类,包,接口,请各举5个

88、a.hashCode() 有什么用?与 a.equals(b) 有什么关系?

89、Java 中的编译期常量是什么?使用它又什么风险?

90、在 Java 中,如何跳出当前的多重嵌套循环?

在最外层循环前加一个标记如 A,然后用 break A;可以跳出多重循环。(Java 中支持带标签的 break 和 continue 语句,作用有点类似于 C 和 C++中的 goto 语句,但是就像要避免使用 goto 一样,应该避免使用带标签的 break 和 continue,因为它不会让你的程序变得更优雅,很多时候甚至有相反的作用,所以这种语法其实不知道更好)

91、构造器(constructor)是否可被重写(override)?

构造器不能被继承,因此不能被重写,但可以被重载。

92、两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对?

93、是否可以继承 String 类?

String 类是 final 类,不可以被继承,继承 String 本身就是一个错误的行为,对 String 类型最好的重用方式是关 联关系(Has-A)和依赖关系(Use-A)而不是继承关系(Is-A)。

94、当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?

是值传递。Java 语言的方法调用只支持参数的值传递。当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的引用。对象的属性可以在被调用过程中被改变,但对对象引用的改变是不会影响到调用者的。C++和 C#中可以通过传引用或传输出参数来改变传入的参数的值。在 C#中可以编写如下所示的代码,但是在 Java 中却做不到。

95、String 和 StringBuilder、StringBuffer 的区别?

96、重载(Overload)和重写(Override)的区别。重载的方法能否根据返回类型进行区分?

97、char 型变量中能不能存贮一个中文汉字,为什么?

98、抽象类(abstract class)和接口(interface)有什么异同 ?

99、静态嵌套类(Static Nested Class)和内部类(Inner Class)的不同?

Static Nested Class 是被声明为静态(static)的内部类,它可以不依赖于外部类实例被实例化。而通常的内部类需要在外部类实例化后才能实例化,其语法看起来挺诡异的,如下所示

100、Java 中会存在内存泄漏吗,请简单描述。

101、抽象的(abstract)方法是否可同时是静态的(static),是否可同时是本地方法(native),是否可同时被 synchronized修饰?

102、是否可以从一个静态(static)方法内部发出对非静态(non-static)方法的调用?

103、如何实现对象克隆?

104、接口是否可继承(extends)接口?抽象类是否可实现(implements)接口?抽象类是否可继承具体类(concreteclass)?

105、一个”.java”源文件中是否可以包含多个类(不是内部类)?有什么限制?

106、Anonymous Inner Class(匿名内部类)是否可以继承其它类?是否可以实现接口?

107、内部类可以引用它的包含类(外部类)的成员吗?有没有什么限制?

108、Java 中的 final 关键字有哪些用法?

上面的面试题已经整理成PDF文档,关注公众号:麒麟改bug,了解 JavaOOP面试题108道面试题【答案解析】,还有Java核心技术知识点集锦200多页学习笔记,编程的世界永远向所有热爱编程的人开放,这是一个自由,平等,共享的世界,我始终是这样坚信的。

最后

欢迎大家一起交流,喜欢文章记得关注我点个赞哟,感谢支持!

猜你喜欢

转载自blog.csdn.net/QLCZ0809/article/details/112500572