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调度和分派的基本单位
进程和线程的关系:
- 一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程。
- 资源分配给进程,同一进程的所有线程共享该进程的所有资源。
- 线程在执行过程中,需要协作同步。不同进程的线程间要利用消息通信的办法实现同步。
- 线程是指进程内的一个执行单元,也是进程内的可调度实体。
线程与进程的区别:
- 调度:线程作为调度和分配的基本单位,进程作为拥有资源的基本单位。
- 并发性:不仅进程之间可以并发执行,同一个进程的多个线程之间也可以并发执行。
- 拥有资源:进程是拥有资源的一个独立单位,线程不拥有系统资源,但可以访问隶属于进程的资源。
- 系统开销:在创建或撤销进程的时候,由于系统都要为之分配和回收资源,导致系统的明显大于创建或撤销线程时的开销。但进程有独立的地址空间,进程崩溃后,在保护模式下不会对其他的进程产生影响,而线程只是一个进程中的不同的执行路径。线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但是在进程切换时,耗费的资源较大,效率要差些。