(java)春招 打卡day1

拒绝摆烂,每日开始打卡学习。

都是搜到看到的面试题,自己手打一遍,加强记忆。仅供参考。参考下面的大佬的

(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 的两个属性是有关,这样就确保了对象和对象地址之间的关联性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值