Java校招笔试题-Java基础部分(三)

导语
  Java 面试题集2021版

Java基础部分三

26、说说has a 与is a的区别

  is-a表示的是属于的关系,也就是说马是属于动物的一种表示的是一种继承的关系。
  has-a 表示的是包含的关系,例如一匹马有一个头,四条腿,等,表示的是关联聚合的一种关系。

27、一个房间里有一把椅子,椅子有四条腿,房子和椅子是什么关系,椅子和椅子腿是什么关系?

  如果房子里有多个椅子,就是聚集的关系,否则则是一种关联关系也就是一一对应的,椅子与椅子腿应该是一种聚合关系。

28、什么是参数?参数化的意义是什么?

  参数就是用来代替一个数的未知数,参数表示的就是一符号,没有实际意义,要让它有实际的意义,就给对应的参数赋值就可以。例如定义一个方法来计算两个数字的和,那么该方法就必须要有两个参数来标识两个加数,但是只有当调用该方法时,给该方法的两个参数赋值后才能执行该方法,例如int add(int a,int b) 方法,只有调用的时候使用具体的数字代替ab两个参数之后才能执行并获取到最终的结果。

  参数化的意义:在数据库调用的过程中,参数化能有效的防止注入式的攻击,在程序方法中,参数化能避免泄漏程序的运行机制与原理,同时也降低了方法的冗余度,提到代码的可读性。

29、构造器Constructor(构造方法)是否可被override重写

  在之前的问题中提到过override与overload的区别,对于override来说就是通过继承的方式来修改某个类的某个方法,但是构造器方法不能被继承,所以不能被重写,但是构造器可以通过参数列表的不同实现重载。

30、接口是否可以继承接口?抽象类是否可实现接口?抽象类是否已可以继承具体的某个类?抽象类中是否可有静态的Main方法?

  接口是可以继承接口,抽象类可以实现接口,抽象类可以继承具体的类。抽象类中可以有main方法。
  只要明白了接口和抽象类的本质和作用,这些问题都是可以分析的,当然有一点需要记住,抽象类与普通类的唯一区别就是不能创建实例对象和允许有abstract方法。

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

  计算机软件系统是现实生活的业务在计算机中的映射,而在现实生活中的业务其实就是一个个对象协作的过程,面向对象变成就是按实现的业务一样的方式将程序代码按一个个对象进行组织和编写,为了能上吉斯算计能够识别和理解用对象的方式组织和编写程序代码,这样就可以把现实生活中的业务对象映射到计算机系统中。

  面向对象的编程语言有继承、封装、多态三个基本特征。

1、封装
  封装是保证软件部件具有优良的模块性基础,封装的目标就是要实现软件部件的“高内聚,低耦合”,防止程序相互依赖性带来的变动影响。在面向对象的编程语言中,对象是封装的基本单位,面向对象的封装比传统语言的封装更为清晰,更为有力。面向对象的封装就是把描述一个对象的属性和行为的代码封装在一个模块中,也就是一个类中,属性用变量的方式定义,行为用方法的方式进行定义,方法可以直接访问同一个对象中的属性。
2、继承
  在定义和实现一个类的时候,可以在一个已经存在的类的基础上来进行,把这个已经存在的类所定义的内容作为自己的内容,并可以加入若干的新内容,或者修改原来的方法使之更适合特殊的需要,这就是继承。继承是子类自动共享父类数据和方法的机制,这是两个类之间的一种关系,使用这种方式来实现的软件的可重用性和可扩展性。
3、多态
  多态是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程的时候的不确定性,而在程序运行的过程中才能进行确定,即一个引用变量到底会指向那个实力对象,该引用变量发出的方法调用到底是那个类中实现的方法,必须在由程序运行期间才能决定。因为在程序运行的时候才能产生具体的类,这样就可以不用修改源代码,流可以让引用变量绑定到各种不同的实现类上,这样就可以引用到具体的方法上,即不修改程序代码就可以改变程序运行时所绑定的具体代码,让程序可以选择多个运行状态,这个就是多态性。多态性增强了软件的灵活性和扩展性。

32、说出常用的类,包,接口,请各举五个

  • 1.java.lang.Object
  • 2.java.lang.String
  • 3.java.lang.System
  • 4.java.io.file
  • 5.java.io.FileInputStream

  • 1.java.lang
  • 2.java.io
  • 3.java.awt
  • 4.java.util
  • 5.java.sql

接口

  • 1.java.util.List
  • 2.java.util.Map
  • 3.java.util.Iterator
  • 4.java.sql.CallableStatemtent
  • 5.java.lang.Comparable

33、写出JDK中至少5个以上的包名。

  • 1、java.lang 包:Java的核心类库,包含了运行Java程序必不可少的系统类,如基本数据类型,基本数学函数,字符串处理、线程、异常处理类等等,系统缺省加载这个包。
  • 2、java.io 包:Java 语言的标准输入/输出类库,如基本输入/输出流、文件输入/输出、过滤输出入/输出流等等
  • 3、java.util包:包含处理时间date类,处理编程数组的Vector类,以及stack和HashTable类
  • 4、java.lang.reflect包:提供用于反射对象的工具类包
  • 5、java.net 包:实现网络功能的类库有Socket类。ServerSocket类
  • 6、java.sql 包:提供使用Java编程语言访问并处理存储在数据源(通常是一个关系数据库)中的数据的API
  • 7、java.awt 包:构建图形用户界面GUI的类库,低级绘图操作Graphics类,图形界面组件和布局管理等,例如CheckBox类、等,以及界面用户控制和事件响应等等。

34、Java 中实现多态的机制是什么?

  Java中实现多态是靠父类或者接口定义的引用变量可以指向子类或者具体实现类的实例对象,而程序调用方法在运行期才动态绑定,就是引用变量所指向的具体实例对象的方法,也就是内存里正在运行的那个对象的方法,而不是引用变量的类型中定义的方法。

35、abstract class 和 interface 有什么区别

  Java中含有abstract修饰符的class即为抽象类,abstract类不能创建实例对象。含有abstract方法的类必须定位为abstract class,abstract class 类中的方法不必是抽象的。 abstract class类中定义抽象方法必须在具体(Concrete)子类中实现,所以不能有抽象方法或者抽象静态方法。如果子类中没有实现父类中的抽象方法,那么子类必须定义为abstract类型。
  接口(interface) 可以说成是抽象类型的一种特例,接口中的所有方法都必须是抽象的。接口中的方法定义默认为public abstract 类型,接口中的成员变量类型默认为public static final 。

  比较两者的语法区别:

  • 1、抽象类可以有构造方法,接口中不能有构造方法。
  • 2、抽象类中可以有普通成员变量,接口中没有普通成员变量
  • 3、抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的普通方法。
  • 4、抽象类中的抽象方法的访问类型可以是public ,protected和默认作用域,但接口中的抽象方法只能是public类型,并且默认即为public abstract类型。
  • 5、抽象类中可以包含静态方法,接口中不能包含静态方法
  • 6、抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是public static final 类型,并且默认就是 public static final 类型。
  • 7、一个类可以实现多个接口,但只能继承一个抽象类。

36、Java 的接口和C++虚类的相同和不同之处

  C++虚类相当于Java中的抽象类,与接口的不同之处如下

  • 1、一个子类只能继承一个抽象类,但能实现多个接口
  • 2、一个抽象类可以有构造方法,接口没有构造方法
  • 3、一个抽象类中的方法不一定是抽象方法,即其中的方法可以有实现,接口中的方法都是抽象方法,不能有方法体,只有方法声明
  • 4、一个抽象类可以是public、private、protected、default 接口只有public
  • 5、一个抽象类中的方法可以是public、private、protected、default,接口中的方法只能是public和default修饰,实现上都是public 的abstract方法。

相同之处:都不能进行实例化对象。

上一篇:E. Placing Rooks


下一篇:#离线#洛谷 5358 [SDOI2019]快速查询