Java夏招必知必会八股文122题,看完offer拿到手软

 不积跬步无以至千里,下面的内容是对网上原有的Java面试题集及答案进行了全面修订之后给出的负责任的题目和答案,原来的题目中有很多重复题目和无价值的题目,还有不少的参考答案也是错误的,修改后的Java面试题集参照了JDK最新版本,去掉了EJB 2.x等无用内容,补充了数据结构和算法相关的题目、经典面试编程题、大型网站技术架构、操作系统、数据库、软件测试、设计模式、UML等内容,同时还对很多知识点进行了深入的剖析,例如hashCode方法的设计、垃圾收集的堆和代、Java新的并发编程、NIO.2等,相信对准备入职的Java程序员一定有所裨益。

这里会不断收集和更新Java基础相关的面试题,目前已收集122题。

文章目录

1.什么是B/S架构?什么是C/S架构
2.你所知道网络协议有那些?
3.Java都有那些开发平台?
4.什么是JVM?java虚拟机包括什么?
5.Java是否需要开发人员回收内存垃圾吗?
6.什么是JDK?什么是JRE?
7.什么是数据结构?
8.Java的数据结构有那些?
9.什么是OOP?
10.什么是面向对象?
11.类与对象的关系?
12.Java中有几种数据类型
13.什么是隐式转换,什么是显式转换
14.Char类型能不能转成int类型?能不能转化成string类型,能不能转成double类型
15.什么是拆装箱?
16.Java中的包装类都是那些?
17.一个java类中包含那些内容?
18.例如:if(a+1.0=4.0),这样做好吗?
19.那针对浮点型数据运算出现的误差的问题,你怎么解决?
20.++i与i++的区别
21.程序的结构有那些?
22.数组实例化有几种方式?
23.Java中各种数据默认值
24.Java常用包有那些?
25.Java最顶级的父类是哪个?
26.Object类常用方法有那些?
27.java中有没有指针?
28.java中是值传递引用传递?
29.假设把实例化的数组的变量当成方法参数,当方法执行的时候改变了数组内的元素,那么在方法外,数组元素有发生改变吗?
30.实例化数组后,能不能改变数组长度呢?
32.形参与实参
33.构造方法能不能显式调用?
34.构造方法能不能重写?能不能重载?
35.什么是方法重载?
36.内部类与静态内部类的区别?
37.Static关键字有什么作用?
38.Final在java中的作用
39.Java中操作字符串使用哪个类?
40.StringBuffer,Stringbuilder有什么区别?
41.String str=”aaa”,与String str=new String(“aaa”)一样吗?
42.String str=”aa”,String s=”bb”,String aa=aa+s;一种创建了几个对象?
43.将下java中的math类有那些常用方法?
44.String类的常用方法有那些?
45.判断两个对象是否相同,能使用equlas比较吗?
46.==与equlas有什么区别?
47.如何将字符串反转?
49.Java中的继承是单继承还是多继承
50.什么是重写?什么是重载
51.构造方法能不能重载?能不能重写?
52.如果父类只有有参构造方法,那么子类必须要重写父类的构造方法吗?
53.创建一个子类对象的时候,那么父类的构造方***执行吗?
56.Super与this表示什么?
57.抽象的关键字是什么?
58.抽象类必须要有抽象方法吗?
59.如果一个类中有抽象方法,那么这个一定是抽象类?
60.抽象类可以使用final修饰吗?
61.普通类与抽象类有什么区别?
62.什么是接口?
63.JAVA为什么需要接口?
64.接口有什么特点?
65.接口与抽象类有什么区别?
66.Java中异常分为哪两种?
67.说几个常见的编译时异常类?
68.异常的处理机制有几种?
69.如何自定义一个异常
70.在异常捕捉时,如果发生异常,那么try.catch.finally块外的return语句会执行吗?
71.Try.catch.finally是必须要存在的吗?
72.Thow与thorws区别
73.Error与Exception区别?
74.使用Log4j对程序有影响吗?
75.Log4j日志有几个级别?
76.除了使用new创建对象之外,还可以用什么方法创建对象?
77.Java反射创建对象效率高还是通过new创建对象的效率高?
78.Java中集合框架的有几个?
79.Collection接口下有那些集合框架?
80.List接口有什么特点?
81.Set接口有什么特点
82.ArrayList与LinkedList有什么区别?
83.Array与ArrayList有什么不一样?
84.Map有什么特点
85.JDBC操作的步骤
86.在使用jdbc的时候,如何防止出现sql注入的问题。
87.怎么在JDBC内调用一个存储过程
88.是否了解连接池,使用连接池有什么好处?
89.你所了解的数据源技术有那些?使用数据源有什么好处?
90.Java的io流分为哪两种?
91.常用io类有那些?
92.字节流与字符流的区别
93.final、finalize()、finally
94.抽象类和接口的区别?
95.线程同步的方法
96.线程与进程的区别
97.&和&&的区别
99.如果对象的引用被置为null,垃圾收集器是否会立即释放对象占用的内存?100.串行(serial)收100、集器和吞吐量
101、 面向对象和面向过程的区别
102、Java 语言有哪些特点?
103、JVM、JDK 、JRE
104、Java和C++的区别?
105、字符型常量和字符串常量的区别?
106、构造器 Constructor 是否可被 override?
107、重载和重写的区别?
108、Java 面向对象编程三大特性?
109、String、StringBuffer 和 StringBuilder 的区别是什么? String 为什么是不可变的?(重要)
110、自动装箱与拆箱
111、为什么不能从静态的方法里调用非静态的方法或变量?
112、静态方法和实例方法有何不同?
113、在 Java 中定义一个不做事且没有参数的构造方法的作用?
114、构造方法有哪些特性?
115、接口(interface)和抽象类(abstract class)的区别是什么?
116、成员变量与局部变量的区别有那些?
117、== 与 equals的区别?(重要)
118、为什么重写equals时必须重写hashCode方法?(重要)
119、Java 中 final、finally、finalize 的区别?
120、this、super
121、Java序列化中如果有些字段不想进行序列化,怎么办?
122、 获取用键盘输入常用的的两种方法

 

详细解析

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

B/S(Browser/Server),浏览器/服务器程序

C/S(Client/Server),客户端/服务端,桌面应用程序

2.你所知道网络协议有那些?

HTTP:超文本传输协议

FTP:文件传输协议SMPT:简单邮件协议TELNET:远程终端协议POP3:邮件读取协议

3.Java都有那些开发平台?

JAVA SE:主要用在客户端开发

JAVA EE:主要用在web应用程序开发

JAVA ME:主要用在嵌入式应用程序开发

4.什么是JVM?java虚拟机包括什么?

JVM:java虚拟机,运用硬件或软件手段实现的虚拟的计算机,Java虚拟机包括:寄存器,堆栈,处理器

5.Java是否需要开发人员回收内存垃圾吗?

大多情况下是不需要的。Java提供了一个系统级的线程来跟踪内存分配,不再使用的内存区将会自动回收

6.什么是JDK?什么是JRE?

JDK:java development kit:java开发工具包,是开发人员所需要安装的环境

JRE:java runtime environment:java运行环境,java程序运行所需要安装的环境

7.什么是数据结构?

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

8.Java的数据结构有那些?

线性表(ArrayList)

链表(LinkedList)

栈(Stack)

队列(Queue)

图(Map)

树(Tree)

9.什么是OOP?

面向对象编程

10.什么是面向对象?

世间万物都可以看成一个对象。每个物体包括动态的行为和静态的属性,这些就构成了一个对象。

11.类与对象的关系?

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

12.Java中有几种数据类型

整形:byte,short,int,long

浮点型:float,double

字符型:char

布尔型:boolean

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.什么是拆装箱?

拆箱:把包装类型转成基本数据类型

装箱:把基本数据类型转成包装类型

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

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

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

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

18.例如:if(a+1.0=4.0),这样做好吗?

不好,因为计算机在浮点型数据运算的时候,会有误差,尽量在布尔表达式中不使用浮点型数据(if,while,switch中判断条件不使用浮点型)

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

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

20.++i与i++的区别

++i:先赋值,后计算

i++:先计算,后赋值

21.程序的结构有那些?

顺序结构

选择结构

循环结构

22.数组实例化有几种方式?

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

int\[\] a=new int\[\]{1,3,3}

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

23.Java中各种数据默认值

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

Boolean默认值是false

Char类型的默认值是’’

Float与double类型的默认是0.0

对象类型的默认值是null

24.Java常用包有那些?

Java.lang

Java.io

Java.sql

Java.util

Java.awt

Java.net

Java.math

25.Java最顶级的父类是哪个?

Object

26.Object类常用方法有那些?

Equals

Hashcode

toString

wait

notify

clone

getClass

27.java中有没有指针?

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

28.java中是值传递引用传递?

理论上说,java都是引用传递,对于基本数据类型,传递是值的副本,而不是值本身。对于对象类型,传递是对象的引用,当在一个方法操作操作参数的时候,其实操作的是引用所指向的对象。

29.假设把实例化的数组的变量当成方法参数,当方法执行的时候改变了数组内的元素,那么在方法外,数组元素有发生改变吗?

改变了,因为传递是对象的引用,操作的是引用所指向的对象

30.实例化数组后,能不能改变数组长度呢?

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

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

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

32.形参与实参

形参:全称为“形式参数”,是在定义方法名和方法体的时候使用的参数,用于接收调用该方法时传入的实际值;实参:全称为“实际参数”,是在调用方法时传递给该方法的实际值。

33.构造方法能不能显式调用?

不能构造方法当成普通方法调用,只有在创建对象的时候它才会被系统调用

34.构造方法能不能重写?能不能重载?

可以重写,也可以重载

35.什么是方法重载?

方法的重载就是在同一个类中允许同时存在一个以上的同名方法,只要它们的参数个数或者类型不同即可。在这种情况下,该方法就叫被重载了,这个过程称为方法的重载(override)

36.内部类与静态内部类的区别?

静态内部类相对与外部类是独立存在的,在静态内部类中无法直接访问外部类中变量、方法。如果要访问的话,必须要new一个外部类的对象,使用new出来的对象来访问。但是可以直接访问静态的变量、调用静态的方法;

普通内部类作为外部类一个成员而存在,在普通内部类中可以直接访问外部类属性,调用外部类的方法。

如果外部类要访问内部类的属性或者调用内部类的方法,必须要创建一个内部类的对象,使用该对象访问属性或者调用方法。

如果其他的类要访问普通内部类的属性或者调用普通内部类的方法,必须要在外部类中创建一个普通内部类的对象作为一个属性,外同类可以通过该属性调用普通内部类的方法或者访问普通内部类的属性

如果其他的类要访问静态内部类的属性或者调用静态内部类的方法,直接创建一个静态内部类对象即可。

37.Static关键字有什么作用?

Static可以修饰内部类、方法、变量、代码块

Static修饰的类是静态内部类

Static修饰的方法是静态方法,表示该方法属于当前类的,而不属于某个对象的,静态方法也不能被重写,可以直接使用类名来调用。在static方法中不能使用this或者super关键字。

Static修饰变量是静态变量或者叫类变量,静态变量被所有实例所共享,不会依赖于对象。静态变量在内存中只有一份拷贝,在JVM加载类的时候,只为静态分配一次内存。

Static修饰的代码块叫静态代码块,通常用来做程序优化的。静态代码块中的代码在整个类加载的时候只会执行一次。静态代码块可以有多个,如果有多个,按照先后顺序依次执行。

38.Final在java中的作用

  1. Final可以修饰类,修饰方法,修饰变量。
  2. 修饰的类叫最终类。该类不能被继承。
  3. 修饰的方法不能被重写。
  4. 修饰的变量叫常量,常量必须初始化,一旦初始化后,常量的值不能发生改变。

39.Java中操作字符串使用哪个类?

String,StringBuffer,StringBuilder

40.StringBuffer,Stringbuilder有什么区别?

StringBuffer与StringBuilder都继承了AbstractStringBulder类,而AbtractStringBuilder又实现了CharSequence接口,两个类都是用来进行字符串操作的。

在做字符串拼接修改删除替换时,效率比string更高。

StringBuffer是线程安全的,Stringbuilder是非线程安全的。所以Stringbuilder比stringbuffer效率更高,StringBuffer的方法大多都加了synchronized关键字

 由于篇幅受限完整解析答案资料已存入文档,需要的朋友私信扣111

 感谢大家阅读,本人见识有限,写的博客难免有错误或者疏忽的地方,还望各位大佬指点,在此表示感激不尽。文章持续更新中…....

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值