文档库

最新最全的文档下载
当前位置:文档库 > java软件工程师面试常问问题

java软件工程师面试常问问题

1.this与super的区别?

答:1)this表示当前对象,super表示父类对象,可以在子类中用this调用子类中的一些变量或方法,若子类中没有则自动调用父类中的变量或方法,而super就是直接调用父类的一些变量或方法。

2)this()调用本类中的构造方法,super()在子类中调用父类的构造方法。

2.jsp的工作原理

答:当jsp页面第一次被调用时,服务器会调用service方法把jsp文件翻译成servlet,放到tomcat 的work目录下,然后服务器再把servlet编译成class文件并加载到内存中执行,最后服务器把执行完毕生成的HTML代码响应给客户端。

3.servlet的生命周期

答:1)加载并实例化、2)初始化、3)服务、4)销毁

服务器启动时,会加载servlet的class文件,并实例化这个对象,当用户请求这个servlet的时候,服务器会自动调用init方法初始化这个对象,之后每次用户请求这个servlet的时候都会调用service方法,并用这个方法调用doget或dopost方法来响应客户端,当关闭服务器或长时间没有用户对这个servlet发出请求的情况下,服务器会调用destroy方法来销毁。

4.连接池的工作原理

答:连接池其实可以理解为是为数据库连接建立的一个缓冲池,预先在这个缓冲池里面放入一些连接,当需要建立连接的时候,只需要从这个缓冲池里取出连接使用,使用完毕后再放回去。提高了数据库访问的效率,很好地解决了对数据库并发访问的问题,也可以根据连接池的管理机制监视数据库的连接数量和使用情况。

5.连接池的一些基本属性

Name:名称

Auth:容器

Type:类型

maxAction:最大连接数

maxWait:最大等待时间(单位毫秒)

maxIdle:空闲连接

driverClassName:jdbc驱动

Url:连接地址

Username:账号

Password:密码

6.java面向对象的特征有哪些方面?

答:

1.抽象:抽象就是忽略与当前目标无关的那些方面,而专注于与当前目标有关的那些方面,进而把这些信息提取出来,抽象并不打算了解全部问题,而是选择性地了解一部分,暂时忽略部分细节。

2.封装:封装就是把类内部的信息隐藏起来,不允许被直接访问,而是通过类提供的一些接口,如get(),set()访问器来对类进行操作或访问。

3.继承:继承是很好的代码重用机制,新的类可以从已有类中派生,这个过程就叫做继承。新类继承了原始类的特性,新类就成为原始类的子类,原始类就称为新类的父类或基类。子类可以从父类那里继承方法和变量,并且可以对子类修改或增加是它能够更加适合一些特殊的需求。

多态:多态可以使程序的可扩展性及可维护性增强,它允许不同的对象对同一信息做出不同的响应,比较灵活,而且解决了方法命名同名的问题。

7.位逻辑操作与条件操作的区别?

答:

1.位逻辑运算符通常是针对数字来进行位操作,而条件运算符通常是针对表达式进行条件操作.

2.位逻辑操作符可以当做条件操作符来使用,它们的不同点是,当使用位逻辑操作符时,无论两边的表达式是否成立,它都要进行运算判断,而条件运算符则不同,他会通过左边的操作来判断是否需要执行右边的操作,倘若左边的表达式已经可以做出判断,它就不会再走右边的表达式。

8.public,private,protected,默认访问权限修饰符。

Public:类内,包内,包外

Protected:类内,包内,不同包的子类

默认:类内,包内

Private:类内

9.一个源文件是否可以包括多个类(不是内部类)。

答:可以,但是用public修饰的类的类名必须与源文件的类名相同。

10.java排序的几种方法。

1)冒泡排序、选择爱笑,插入排序、shell排序、快速排序等.

10.Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?

答:override是重写,子类覆盖父类的方法;overload是重载,同一个类中,方法名相同,参数个数或类型不同。两者都是多态的表现形式。Overloaded方法可以改变返回值类型。

11.Final类的特点。

答:属性都是常量;方法不可以被重写;不能被别的类继承。

12.什么是序列化,如何实现java序列化。

答:序列化是一种处理对象流的机制,也就是将对象的内容进行流化(只流化属性,不流化方法),是为了解决在对对象流进行读写的时候所引发的问题。

实现序列化:实现Serializable接口,这个接口下没有任何需要实现的方法,它只是对类进行标注,表示此类是可以被序列化的,然后使用一个输出流,如(FileOutputStream)来构造一个对象流(ObjectOutputStream)对象,接着使用ObjectOutputStream对象的writeObject(Object obj)就可以对一个对象进行写出。

13.抽象类和接口的区别?

答:1)抽象类只能被单一继承,接口可以多重实现

2)抽象类的字段默认修饰符为friendly,接口的字段默认修饰符为public satic final

3)抽象类可以有定义和实现,接口只能有定义

14.java反射机制

Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法;这种动态获取的以及动态调用对象的方法的功能称为java语言的反射机制。

Java反射机制主要提供了以下功能:在运行时判定任意一个对象所属的类;在运行时构造任意一个类的对象;在运行时判定任意一个类所具有的成员变量和方法;在运行时调用任意一个对象的方法;生成动态代理。

15.类的反射机制中的包及核心类。

http://www.wendangku.net/doc/bfdcb5727375a417876f8f4c.htmlng.Class

http://www.wendangku.net/doc/bfdcb5727375a417876f8f4c.htmlng.refrection.Method

http://www.wendangku.net/doc/bfdcb5727375a417876f8f4c.htmlng.refrection.Field

java软件工程师面试常问问题

http://www.wendangku.net/doc/bfdcb5727375a417876f8f4c.htmlng.refrection.Constructor

java软件工程师面试常问问题

http://www.wendangku.net/doc/bfdcb5727375a417876f8f4c.htmlng.refrection.Modifier

java软件工程师面试常问问题

http://www.wendangku.net/doc/bfdcb5727375a417876f8f4c.htmlng.refrection.Interface

java软件工程师面试常问问题

16.得到class的三种方法

java软件工程师面试常问问题

1)对象.getClass();2)Class.forName(http://www.wendangku.net/doc/bfdcb5727375a417876f8f4c.htmlng.String);3)类.class;

17.Math对数据的一些操作的方法

Floor:向下去整

Ceil:向上去整

Round:四舍五入

18.取得1970年到现在的毫秒数

Date date = new Date();

Long long =date.getTime();

19.对时间的一些操作

Calendar c=Calendar.getInstance();

c.setTime(new Date());

年:c.get(Calendar.YEAR)

月:c.get(Calendar.MONDAY)

日:c.get(Calendar.DAY_OF_YEAR)

20.String编码方式转换

String str= new String(“字符串”.getBytes(“iso-8859-1”),”utf-8”);

21.常用的类,包,接口

类:Integer,String,BufferedReader(字符流读取),BufferedWriter(字符流写入),FileReader(字节流读取),FileWriter(字节流写入),Math

包:http://www.wendangku.net/doc/bfdcb5727375a417876f8f4c.htmlng:java的核心类库,必不可少的系统类。

Java.io:java语言的输入输出类库

Java.util:java的工具类包

Java.sql:jdbc的类库

Java.awt:一些用于构建用户界面的类

http://www.wendangku.net/doc/bfdcb5727375a417876f8f4c.htmlng.reflect:用于类的反射的工具类

接口:List Map Document

22.java异常处理

Try:执行块,产生异常

Catch:捕捉异常

Finally:无论是否有异常都运行

Throws:在方法声明处声明要抛出的异常

Throw:抛出一个异常

23.String和StringBuffer的区别

String:长度给定不可变,当多个字符串联合时,需要先转成StringBuffer,再进行联合,效率较低,如果不转成StringBuffer直接相加的话,则会重新开辟一块空间。

StringBuffer:长度可变,可以直接多个字符串联合,效率高。

24,说出ArrayList,Vector, LinkedList的存储性能和特性HashMap和Hashtable的区别ArrayList、vector:以数组的方式存储,增,删慢,查,改快。

LinkedList:以单链表的方式存储,增,删快,查,改慢。

1)HashMap和HashTable都实现了Map接口,HsahMap可以用null做key但只能有一个,也可以做value,可以有多个,而HashTable不能用null做key和value

2)HashTable的方法是同步的,HashMap的方法不同步

25.Collection和Collections

Collention是集合的根接口,Collections则是一个提供了一些对集合操作的静态类26.==和equals()的区别

在本质上==和equals()是没有区别的,equals()是object类中的一个方法,他们都是用来比较基本数据类型和地址的,但是当equals()方法被子类重写之后,比如String 里面的equals()则是比较值而不比较地址。

27.Set集合和List集合的区别.

Set无序,不允许有重复值(会覆盖以前的),

List有序,允许有重复值

28.面向对象的特征有哪些方面?

1.抽象:万物皆对象,把对象的共性提取出来,封装成一个类,包括类的属性和方

法。

2.继承:很好的解决了代码重用的问题,子类继承父类,拥有父类的属性和方法,

可以使用,也可以覆盖。

3.封装:把一个类中的字段设为私有,不允许直接调用,而是通过提供的get、set

访问器来访问字段,隐藏了内部的细节,提高了安全性。

4.多态:静态:方法的重写,子类覆盖父类的方法。

动态:方法的重载,同一个类中的方法,方法名相同,参数的个数或类型

不同。

29.基本数据类型

Int byte double float short long char boolean

String 是一个final类,不可以被继承和修改,为了提高效率,最好实用StringBuffer

30int和Integer的区别

Int是基本数据类型,不是对象,没有方法。double,char,float,long

Inrteger是int的一个封装类,具有属性和方法。Double,Float,Long

31&和&&的区别

&在进行条件判断的时候,无论第一个条件是否成立,它都会走后面的

&&在进行条件判断的时候,只要第一个条件成立,它就不走后的了

32.final,finally,finalize的区别

Final:用户声明属性方法和类,用final修饰的属性是常量,不可以二次赋值,方法

不可以被重写,类不能被继承。

Finally:是异常处理结构的一部分,无论是非捕获异常都被执行。

Finalize:是object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的次

方法。

33.一些常见的异常

http://www.wendangku.net/doc/bfdcb5727375a417876f8f4c.htmlng.ArrayIndexOutOfBoundsException

http://www.wendangku.net/doc/bfdcb5727375a417876f8f4c.htmlng.ArithmeticException

http://www.wendangku.net/doc/bfdcb5727375a417876f8f4c.htmlng.NullPointerException

算术异常类:ArithmeticExecption 空指针异常类:NullPointerException

类型强制转换异常:ClassCastException 数组负下标异常:NegativeArrayException 数组下标越界异常:ArrayIndexOutOfBoundsException

违背安全原则异常:SecturityException

文件已结束异常:EOFException

文件未找到异常:FileNotFoundException

字符串转换为数字异常:NumberFormatException

34.Java中数组是否有leng();

数组没有length(),有length,Stirng有length();

35构造器Constructor是否可以被重写.

不能,因为Constructor不能被继承,所以也不能被重写,但可以重载

36.switch的参数

Int,short,char,btye;

37.serlvet九大内置对象及其作用

1)request:封装了用户的请求信息

2)response:对客户端进行响应

3)session:打开浏览器的时候被自动创建,完成回话期间的管理,关闭浏览器时被关闭。

4)application:整个应用,存在于服务器启动到关闭段时间内。

5)out:一个输出流对象,可以向客户端输出数据

6) page:页面对象

7)config:配置对象

8)pagecontext:页面上下文对象

9)exception:处理异常网页时,可以直接访问的隐式对象。

38谈谈你对MVC的理解?

MVC是把model,view,controller强制分开,它们各司其职,又互不干扰,分工明确,可以同时开发,增加了代码重用性,提高了开发效率,降低了业务逻辑和视图的耦合度,提高了软件的可拓展性和可维护性,比较灵活。

Model:封装了底层数据,负责为调用者提供数据

View:负责向用户展示数据和接受数据

Controll:负责进行一些业务逻辑操作

39.基本数据类型

java软件工程师面试常问问题

1byte=8bit

1英文字母=1bit 1汉字=2bit