2024年Java最全2024年25大一线互联网高频Java面试题(一):JavaOOP面试题,网易java面试题和答案

最后

现在其实从大厂招聘需求可见,在招聘要求上有高并发经验优先,包括很多朋友之前都是做传统行业或者外包项目,一直在小公司,技术搞的比较简单,没有怎么搞过分布式系统,但是现在互联网公司一般都是做分布式系统。

所以说,如果你想进大厂,想脱离传统行业,这些技术知识都是你必备的,下面自己手打了一份Java并发体系思维导图,希望对你有所帮助。

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

//false,在JavaSE规范中对instanceof运算符的规定就是:如果obj为null,那么将返回false。

System.out.println(nullinstanceofObject);

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


显示转换就是类型强转,把一个大类型的数据强制赋值给小类型的数据;隐式转换就是大范围的变量能够接受小范围的数据;隐式转换和显

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

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


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

Char<int<long<float<double;Char类型可以隐式转成int,double类型,但是不能隐式转换成string;如果char类

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

15、什么是拆装箱?


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

valueOf(int) 方法

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

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

Integer i = new Integer(10);

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

样就可以了:

Integer i = 10;

面试题1: 以下代码会输出什么?

public class Main {

public static void main(String[] args) {

Integer i1 = 100;

Integer i2 = 100;

Integer i3 = 200;

Integer i4 = 200;

System.out.println(i1==i2);

System.out.println(i3==i4);

}

}

结果:

true

false

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


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

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


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

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


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

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


抽象:

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

性和行为,并不关注这些行为的细节是什么。

继承:

继承是从已有类得到继承信息创建新类的过程.提供继承信息的类被称为父类(超类、基类) ;得到继承信息的类被称

为子类(派生类)。继承让变化中的软件系统有了一定的延续性 ,同时继承也是封装程序中可变因素的重要手段(如果不能理解请阅读阎宏博土的《Java 与模式》或《设计模式精解》中.关于桥梁模式的部分)。

封装:

通常认为封装是把数据和操作数据的方法绑定起来,对数据的访问

只能通过已定义的接口。面向对象的本质就是将现实世界描绘成一系列完全自

治、封闭的对象。我们在类中编写的方法就是对实现细节的一种封装;我们编写

一个类就是对数据和数据操作的封装。可以说,封装就是隐藏一切可隐藏的东西,

只向外界提供最简单的编程接口(可以想想普通洗衣机和全自动洗衣机的差别,

明显全自动洗衣机封装更好因此操作起来更简单;我们现在使用的智能手机也是

封装得足够好的,因为几个按键就搞定了所有的事情)。

多态性:

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

简单的说就是用同样的对象引用调用同样的方法但是做了不同的事情。多态性分

为编译时的多态性和运行时的多态性。如果将对象的方法视为对象向外界提供的

服务,那么运行时的多态性可以解释为:当 A 系统访问 B 系统提供的服务时,B

系统有多种提供服务的方式,但一切对 A 系统来说都是透明的(就像电动剃须

刀是 A 系统,它的供电系统是 B 系统,B 系统可以使用电池供电或者用交流电,

甚至还有可能是太阳能,A 系统只会通过 B 类对象调用供电的方法,但并不知道

供电系统的底层实现是什么,究竟通过何种方式获得了动力)。方法重载

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

实现的是运行时的多态性(也称为后绑定)。运行时的多态是面向对象最精髓的

东西,要实现多态需要做两件事:1). 方法重写(子类继承父类并重写父类中已

有的或抽象的方法);2). 对象造型(用父类型引用引用子类型对象,这样同样

的引用调用同样的方法就会根据子类对象的不同而表现出不同的行为)。

在这里插入图片描述

类中方法的返回值是父类中方法返回值的子类时)都相同的情况下, 对方法体进行修改或重写,这就是重写。但要

注意子类函数的访问修饰权限不能少于父类的。

public class Father {

public static void main(String[] args) {

// TODO Auto-generated method stub

Son s = new Son();

s.sayHello();

}

public void sayHello() {

System.out.println(“Hello”);

}

}

class Son extends Father{

@Override

public void sayHello() {

// TODO Auto-generated method stub

System.out.println("hello by ");

}

}

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

重写 总结:

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

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

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

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

重载(Overload)

在一个类中,同名的方法如果有不同的参数列表(参数类型不同、参数个数不同甚至是参数顺序不同)

则视为重载。同时,重载对返回类型没有要求,可以相同也可以不同,但不能通过返回类型是否相同来

判断重载。

public class Father {

public static void main(String[] args) {

// TODO Auto-generated method stub

Father s = new Father();

s.sayHello();

s.sayHello(“wintershii”);

}

public void sayHello() {

System.out.println(“Hello”);

}

public void sayHello(String name) {

System.out.println(“Hello” + " " + name);

}

}

重载总结:

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

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

3.重载的时候,返回值类型可以相同也可以不相同。无法以返回型别作为重载函数的区分标准

25、equals与== * 的区别


  • == 比较的是变量(栈)内存中存放的对象的(堆)内存地址,用来判断两个对象的地址是否相同,即是否是

指相同一个对象。比较的是真正意义上的指针操作。

1、比较的是操作符两端的操作数是否是同一个对象。

2、两边的操作数必须是同一类型的(可以是父子类之间)才能编译通过。

3、比较的是地址,如果是具体的阿拉伯数字的比较,值相等则为true,如:

int a=10 与 long b=10L 与 double c=10.0都是相同的(为true),因为他们都指向地址为10的堆。

equals:

equals用来比较的是两个对象的内容是否相等,由于所有的类都是继承自java.lang.Object类的,所以

适用于所有对象,如果没有对该方法进行覆盖的话,调用的仍然是Object类中的方法,而Object中的

equals方法返回的却是== 的判断。

总结:

所有比较是否相等时,都是用equals 并且在对常量相比较时,把常量写在前面,因为使用object的

equals object可能为null 则空指针

在阿里的代码规范中只使用equals ,阿里插件默认会识别,并可以快速修改,推荐安装阿里插件来排

查老代码使用“==”,替换成equals

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


i++:先赋值,后计算

++i:先计算,后赋值

37、程序的结构有那些?


顺序结构

选择结构

循环结构

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


静态实例化:创建数组的时候已经指定数组中的元素,

动态实例化:实例化数组的时候,只指定了数组程度,数组中所有元素都是数组类型的默认值

39、Java中各种数据默认值


Byte,short,int,long默认是都是0

Boolean默认值是false

Char类型的默认值是’’

Float与double类型的默认是0.0

对象类型的默认值是null

40、Java常用包有那些?


Java.lang

Java.io

Java.sql

Java.util

Java.awt

1200页Java架构面试专题及答案

小编整理不易,对这份1200页Java架构面试专题及答案感兴趣劳烦帮忙转发/点赞

百度、字节、美团等大厂常见面试题

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

Java.lang

Java.io

Java.sql

Java.util

Java.awt

1200页Java架构面试专题及答案

小编整理不易,对这份1200页Java架构面试专题及答案感兴趣劳烦帮忙转发/点赞

[外链图片转存中…(img-4XOmnOw8-1714847549083)]

[外链图片转存中…(img-MbcdxXue-1714847549083)]

百度、字节、美团等大厂常见面试题

[外链图片转存中…(img-vsvFZ8Np-1714847549083)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值