拒绝摆烂,每日开始打卡学习。
都是搜到看到的面试题,自己手打一遍,加强记忆。仅供参考。参考下面的大佬的
(27条消息) (Java实习生)每日10道面试题打卡——Java基础知识篇_兴趣使然的草帽路飞-CSDN博客
1.什么是面向对象
java是面向对象的,C是面向过程的。
面向对象:这种编程方式,程序会将要完成的写论文的任务拆分成如下两个对象。
人:人在写论文程序任务中有三个作用。拿出来电脑,打开电脑,打开word。
电脑:电脑在这里面有两个作用,编辑,保存。
面向过程:这种编辑方式,程序会将要完成的某一个任务拆解成一系列的小步骤(函数)
1、拿电脑。take()
2、开电脑。open()
3、打开word。open1()
4、编辑。edit()
5、保存。save()
总之,面向过程的编程方式比较直接且高效,而面向对象的编程方式更易复用、扩展和维护
2.面向对象的三个基本特征?
继承、封装、多态(重写和重载)。
1、继承:面向对象语言的一个主要功能。指的是这样一种能力,它可以使用现有类的所有功能,
并且在无需重新编写原来的类的情况下对这些功能进行扩展。
2、封装:是面向对象的特征之一。只对外暴露需要调用的接口(在接口中我们没有任何功能的实现,具体的实现交给实现类)只是定义了一些列抽象的方法声明于外部调用。
3、多态:指同一个行为具有多种不同的表现形式,在java中方法的重载和重写是实现多态的两种形式。
重载:发生在一个类中。同名的方法 如果有不同的参数列表(参数类型、参数个数、或二者都不同)则视为重载,方法体现了编译时的多态性。
重写:发生在子类和父类中。子类被重写方法必须与父类被重写方法有相同的返回类型,体现了运行时的多态性。
多态三要素:继承、重写、父类指向子类引用。
3、为什么说java是一种半解释半编译的程序设计语言呢?
编译型语言:把做好的程序编译成二进制代码的可运行程序,就可以直接运行这个程序,执行速度快,效率高,依靠编译器,跨平台性差。
解释型语言:把做好的源程序,翻译一局解释一句。速度慢效率低,依靠编译器,跨平台性稍好。
1.java是编译型语言。要运行java,第一步就是要使用javac进行编译,将java源文件编译成.class
二进制文件,没有编译,无法运行。
2.java又是解释型语言。java经过编译,javac将.java源文件编译成.class二进制文件,仍需要借助JVM的解释运行
4、java中8大基本类型
boolean char byte short int float double long
5、抽象类和接口有什么区别?
1、相同之处:都不能被实例化,需要被其他进行实现或继承。
都能包含抽象方法,实现接口或继承抽象类的子类都必须实现这些抽象方法。
2.不同之处:1、继承方面:抽象类只能单继承,接口可以多继承
2、成员属性方面:抽象类中可以有普通属性,也可以有常量。
接口中的成员变量全部默认是常量
3、代码块方面:抽象类可以含初始化块;接口不能含初始化块。
4、构造函数方面:抽象类可以有构造函数,接口不能有构造函数
5、方法方面:接口在JDK1.8之后可以定义抽象方法(无方法体)、default
修饰的默认方法(有方法体)、static
修饰的静态方法(有方法体),jdk1.8以前只能有抽象方法。
6.java中只有值传递,基本类型传递的是值的副本,引用类型传递是事引用的副本。
7、JVM/JRE/JDK的区别
JVM=java虚拟机 (java开发工具包)
JRE=JVM+基础类库 (java的运行环境)
JDK=JVM+基础类库+编译工具(java开发工具包)
8.方法重载和方法重写的区别?
重载:在同一个类中,重载的方法名必须不同,(参数的类型,参数的个数,方法的返回值和访问修饰符可以不同)
重写:在子父类中,重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。即外壳不变,核心重写。
9、请你说一下List接口和Set接口的区别?
List:有序,可重复集合,按照对象插入顺序保存数据,允许多个null元素对象,可以使用iterator迭代器遍历,也可以使用get()方法获取指定下标元素。
Set:无需、不可重复集合。只允许有一个null对象元素,取元素时,只能使用iterator迭代器煮逐一遍历
Map:key-value键值对形式的集合,添加或获取元素时,需要通过key来检索到value。
10、为什么重写了equals方法还需要重写hashCode方法
equals()
只是判断对象属性是否相同,hashCode()
要判断二者地址是否相同。java中如果要判断两个对象是否相等,需要同时满足地址 + 属性
都相同!
- 如果两个对象相同(即:用
equals()
比较返回true
),那么它们的hashCode
值一定要相同; - 如果两个对象的
hashCode
相同,它们并不一定相同
重写后返回的新的 hash 值与 Student
的两个属性是有关,这样就确保了对象和对象地址之间的关联性。