JAVA面试题

1、你所知道的网络协议有哪些?

HTTP:超文本传输协议

FTP:文件传输协议

SMPT:简单邮件协议

TELENET:远程终端协议

POP3:邮件读取协议

2、Java有那些平台

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

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

JAVA  EE:主要用于web开发

3、什么使JVM?JVM虚拟机包括什么?

JVM:java虚拟机,运行在硬件或者软件手段实现的虚拟的计算机,主要包括:寄存器、堆栈、处理器

4、Java是否需要开发人员回收内存垃圾?

大多数情况下是不需要的,因为Java有自己的垃圾处理器也就是GC,Java提供了一个线程来跟踪内存分配,不再使用的内存区将会自动回收

5、什么是JDK?什么使JRE?

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

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

6、什么是数据结构?

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

7、什么使B/S架构?什么是C/S架构?

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

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

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

线性表(ArrayList)

链表(LinkedList)

栈(Stack)

队列(Queue)

图(Map)

树(Tree)

9、什么是OOP?

面向对象编程(Object Oriented Programming)

10、什么是面向对象?

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

11、类与对象的关系?

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

12、Java中有几种数据类型

整形

浮点型

字符型

布尔型

13、什么使隐式转换,什么使显示转换?

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

14、char类型能不能转换为int类型?能不能转换为string类型,能不能转换为double类型?

char在Java中使比较特殊的类型,他的int值是从1开始,一共有2的16次方个数据;char<int<long<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、数据实例化有几种方式?

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

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

23、Java常用包有哪些?

java.lang

java.io

java.sql

java.util

java.awt

java.net

java.math

24、Java最顶级的父类使那个?

Objetc:所有类都要继承Object类

25、Object类的常用方法有哪些?

Equals

Hashcode

toString

wait

notify

clone

getClass

26、Java中有没有指针?

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

27、Java中是值传递还是引用传递?

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

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

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

29、实例化数组后,能不能改变数组长度?

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

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

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

31、形参和实参?

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

实参:全称为“实际参数”,使调用方法时传递给该方法的实际值

32、构造方法能不能显示调用?

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

33、构造方法能不能重写?能不能重载?

可以重写,也可以重载

34、什么使方法重载?

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

35、什么使方法重写?

重写发生在子类中,子类重写父类中的一个方法

两同:方法名相同,参数类型相同

两小:子类返回类型小于等于父类方法的返回类型

          子类抛出的异常小于等于父类方法抛出异常

一大:子类访问权限大于等于父类方法访问权限

36、==与equlas有什么区别?

==可以判断基本数据类型是否相等,也可以判断两个对象指向的内存地址是否相同,也就是说判断两个对象是否是同一个对下岗,Equlas通常用来做字符串比较

47、如何将字符串反转?

将String变为StringBuffer或者StringBuilder,然后使用reverse方法,最后转为String 

48、面向对象的特征

继承,多态,封装

49、java中的继承使单继承还是多继承?

Java既有单继承,又有多继承,对于Java类来说只能有一个父类,但对于接口来说可以同时继承多个结构

50、如果父类只有有参构造函数,那么子类必须要重写构造方法吗?

必须重写

51、当父类引用指向子类对象的时候,子类重写了父类方法和属性,那么当访问属性的时候,访问的是谁的属性?访问方法时,调用的是谁的方法?

访问的是父类的属性,调用的使子类的方法

52、抽象类必须有抽象方法吗?

不需要,抽象类可以没有抽象方法

53、抽象类与接口的区别

1)、抽象类中可以包含普通方法和抽象方法,而接口就是多个抽象方法的集合,只能存在抽象方法,

2)、含有抽象方法的类一定是抽象类

3)、抽象类有构造方法,而接口中没有构造方法

4)、抽象类是单继承的,而接口可以多继承

 

53、抽象类可以使用final修饰吗?

不能,抽象类作为子类的父类,会被修改和重写,而final修饰的类为最终类,不可以被重写,final修饰的类不能被继承

54、普通类和抽象类的区别?

1)、普通类不能包含抽象方法,抽象类可以包含抽象方法

2)、抽象类不能够实例化,而普通类可以实例化

 

55、什么是接口

接口就是某个事物对外提供的一些功能的声明,使一种特殊的Java类

56、接口有什么特点?

接口中声明的全部使public static final 修饰的常量

接口中的所有方法都是抽象方法

接口不能直接实例化

接口可以多继承

57、java中的异常分为哪两类?

编译时异常

运行时异常

58、常见异常有那些?

空指针异常

数组越界异常

数字转换异常

参数不匹配异常

对象初始化异常

算术异常

59、异常的处理机制有哪些?

异常捕获:try catch   finally   异常抛出:throws

60、如何定义一个异常?

继承一个异常,通常是RuntimeException  或者Exception

61、在捕捉异常时,如果发生异常,那么try catch finally块外的returne 语句会执行吗?

会执行,会在finally 之后执行,如果没有finally 会在catch之后执行

62、try catch finally是必须要存在的吗?

try 必须存在,catch   finally至少存在一个

63、throw 和Throws的区别?

throw写在代码块内,throw后跟的是一个具体的异常实例

throws写在方法后面,Throws后跟的使异常类,异常类可以出现多个

64、Error 和Exception的区别?

Error是编译时异常,会被系统检测出来,不能通过程序来进行错误处理

Exception使运行时异常,异常可以通过程序来捕捉,或者优化程序来避免

65、使用log4j对程序有影响吗?

有,log4j是用来日志记录的,记录一些关键敏感的信息,通常会将日志记录到本地文件或者数据库中,记录在本地文件中会有频繁的io操作,会耗费一些系统资源,记录在数据库中会频繁的操作数据库表,对系统性能也有一定的影响,但是为了成像安全以及数据的恢复或者bug的跟踪,这点资源消耗使可以承受的

67.Java反射创建对象效率高还是通过new创建对象的效率高?

通过new创建对象的效率比较高。通过反射时,先找查找类资源,使用类加载器创建,过程比较繁琐,所以效率较低

68.线程与进程的区别

进程是系统进行资源分配和调度的一个独立单位,线程是CPU调度和分派的基本单位

进程和线程的关系:

  1. 一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程。
  2. 资源分配给进程,同一进程的所有线程共享该进程的所有资源。
  3. 线程在执行过程中,需要协作同步。不同进程的线程间要利用消息通信的办法实现同步。
  4. 线程是指进程内的一个执行单元,也是进程内的可调度实体。

线程与进程的区别:

  1. 调度:线程作为调度和分配的基本单位,进程作为拥有资源的基本单位。
  2. 并发性:不仅进程之间可以并发执行,同一个进程的多个线程之间也可以并发执行。
  3. 拥有资源:进程是拥有资源的一个独立单位,线程不拥有系统资源,但可以访问隶属于进程的资源。
  4. 系统开销:在创建或撤销进程的时候,由于系统都要为之分配和回收资源,导致系统的明显大于创建或撤销线程时的开销。但进程有独立的地址空间,进程崩溃后,在保护模式下不会对其他的进程产生影响,而线程只是一个进程中的不同的执行路径。线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但是在进程切换时,耗费的资源较大,效率要差些。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值