javaweb常见面试题及参考答案
javaweb个人求职者要去参加面试之前,得先了解一下javaweb面试中一些常见的面试题并学会怎么回答。下面是学习啦小编为大家带来的javaweb常见面试题及参考答案,相信对你会有帮助的。
javaweb常见面试题及参考答案
(1)下列各题ABCD四个选顼中,只有一个选项是正确的,请将正确选项填写在答题纸上
(1)下列关于栈的描述中错误的是( B)
A. 栈是先进后出的线性表
B 栈只能顺序存储
C 栈具有记忆作用
D 对栈的插入弓删除操作中,不需要改变栈底指针
正确答案: B
分析: 栈是链式存储的
(2)对于长度为n的线性表,在最坏情况下,下列各排序法所对应的比较次数中正确的是( )
A 冒泡排序为n/2
B 冒泡排序为n
C 快速排序为n
D 快速排序为n(n-l)/2
正确答案: D
分析:
想想快速排序,每次都会选取线性表的轴值,随后以此轴值划分为两个子线性表再分别进行快排,在最坏情况下,也就是说每次选出的线性表轴值完全不能将这个线性表划分为两个子线性表。那么此时快速排序退化为冒泡排序了。
那么第一趟排序时,轴值(线性表的中间位置)被选出,这个值绝对是这个线性表中最大的(不然也不能是最坏情况),其他值都比他小,那么线性表现在分为完全不对等的两段(一段是0,另一段是n - 1),一段是这个值,一段是其他值。同样第二趟排序在刚才剩下的值中选中间值(剩余值中最大的那个),又分为不对等两段,依次递推。也就是说每次都比较了N - 1个元素(轴值选出后都与它比较大小),那么肯定是比较了n - 1次(如第一次先挑了个轴值,然后剩下n - 1比较),n代表当前子线性表中元素个数 由此最白痴的数列问题出现了,如下
1 + 2 + 3 + .......... + n - 2 + n - 1 = n(n - 1) / 2
还有一种投机取巧的方法,在最垃圾情况下既然快排变为冒泡,那由时间复杂度知其必为o(n ^ 2)的复杂度,答案中ABC都是线性时间复杂,显然错误
(3)下列对于线性链表的描述中正确的是( )
A 存储空间间不一定是连续,且各元素的存储顺序是任意的
B 存储空间不一定是连续,且前件元素一定存储在后件元素的前面
C 存储定间必须连续,且前件元素一定存储在后件元素的前面
D 存储空间必须连续,且各元素的存储顺序是任意的
答案是A, 分析 链接存储并不要求存储空间连续,存储位置也不用有序
(4)为了使模块爆可能独立,要求( )
A 模块的内聚程度要尽量高,且各模块间的耦合程度要尽量强
B 模块的内聚程度要尽量高,且各模块间的耦合程度要尽量弱
C 模块的内聚程度要尽量低,且各模块间的耦合程度要尽量弱
D 模块的内聚程度要尽量低,且各模块间的耦合程度要尽量强
答案:B
分析:高内聚,低耦合。
5)下列叙述中,正确的是( )
A Java语言的标识符是区分大小写的
B 源文件名与public类名可以不相同
C 源文件扩展名为.jar
D 源文件中public类的数目不限
答案:A
6)下列属于合法的Java标识符是( )
A _cat
B 5books
C +static
D -3.14159
答案:A
7) 在Java中,表示换行符的转义字符是( )
A \n
B \f
C ‘n’
D \dd
答案:A
( 8)扯Java中,所有类的根类是( )
A. java.lang.Object
B.java.lang.Class
C.java.applet.Applet
D.java.awt.Frame
答案:A
(9).在Java+中,用Package语句说明一个包时,该包的层次结构必须是(
A 与文件的结构相同
B 与文件目录的层次相同 )
C 与文件类型相同
D 与文件大小相同
答案:A
(10)在读字符文件Employee.dat时,使用该文件作为参数的类是( )。
A BufferReader
B DatalnputStream
C DataOutoutStream
D FileInputStream
答案:D
(11)在Java中,能实现多重继承效果的方式是( )。
A 内部类
B 适配器
C 接口
D 同步
答案:C
(12) char类型的取值范围是( )。
A 2-7~27-1
B 0~216-1
C -215~215—1
D 0~28-1
答案:A
(13)下列方法中可以用来创建一个新线程的是( )。
A 实现java.lang.Runnable接口并重写start0方法
B 实现java.iang.Runnable接口并重写run0方法
C 继承java.lang.Thread类并重写run0方法
D 继承java.lang.Thread类并重写start0方法
答案:C
(14)下列关于线程优先级的说法中,正确的是( )。
A.线程的优先级是不能改变的
B.线程的优先级是在创建线程时设置的
C.在创建线程后的任何时候都可以设置
D. B和C
答案:C
(15)下列代码中,将引起一个编译错误的行是( )。
1) public class Test{
2) int m, n;
3) public Test(){}
4)
5)
6)
7)
8)
9)
10)
11)
12)} public Test(int a){ m=a;) public static void main(String args0){ Test t1, t2; int j, k; j=0; k=0; t1 = new Test(); } t2 = new Test(j,k);
A.第3行
B.第5行
C.第6行
D.第10行
答案:D
(16)阅读下列代码后
public class Person{
int arr[]=new int[10];
public static void main(String args[ ]){
System.out.println(arr[l]);
正确的说法是( )。
A 编译时将产生错误
B 编译时正确,运行时将产生错误
C 输出零
D 输出空
答案:A
(17) AIDL支持以下哪种数据类型?l)string 2)list 3)map 4)All native java datatype( ){,
A.1,2和3
B.4
C.以上所有
D.都不支持
答案:C
分析:
AIDL 服务只支持有限的数据类型,如果用AIDL服务传递一些复杂的数据就需要做更一步处理,AIDL 服务支持的数据类型如下:
1. Java 的原生类型
2. String 和CharSequence
3. List 和 Map ,List和Map 对象的元素必须是AIDL支持的数据类型;
以上三种类型都不需要导入(import)
4. AIDL 自动生成的接口
需要导入(import)
5. 实现android.os.Parcelable 接口的类. 需要导入(import)。
二、多项选择题
下列各题A.、B.、C.、D.四个选项中,有一个或多个选项是正确的, (l)下列说法正确的有( )。
A. 环境变量可在编译source code时指定.
B.在编译程序时,所能指定的环境变盛不包括class path
C.javac -次可同时编译数个Java源文件
D. javac.exe能指定编译结果要置于哪个目录(directory)
答案:BCD
(2)不能用来修饰interface的有( )
A. private B.public C.protected D.static
答案:ACD
(3)下列说法错误的有( )
A.在类方法中可用this来调用本类的类方法
B。在类方法中调用本类的类方法时可直接调用
C.在类方法中只能调用本类中的类方法
D.在类方法中绝对不能调用实例方法
答案:ACD
请将正确选项填写在答题纸上
(4)下列说法错误的有( )
A. Java面向对象语言容许单独的过程与函数存在
B. Java面向对象语言容许单独的方法存在
C. Java语亩中的方法属于类中的成员(member)
D. Java语言中的方法必定隶属于某…类(对象),调用方法与过程或函数相同 答案:ABC
(5)下列说法错误的有( )。
A.能被java.exe成功运行的java class文件必须有main()方法
B.J2SDK就是Java API
C. Appletviewer.exe可利用jar选项运行Jar文件
D.能被Appletviewer成功运行的java class文件必须有main()方法
答案:BCD
三、判断题
请将每空的正确答案写在答题纸上,答在试卷上不得分。
(1) Java程序中的起始类名称必须与存放该类的文件名相同。(对)
(2) Unicode是用16位来表示一个字的。(对)
(3) 原生类中的数据类型均可任意转换。(对)
三、填空题
请将每空的正确答案写在答题纸上【l】至【25】序号的横线上,答在试卷上不得分。 (l)某二叉树中度为2的结点有18个,则该二叉树中有【1】 二叉树的终端结点(叶子结点)数等于双分支结点数加1。
(2)在面向对象方法中,类的实例称为【2】
(3)诊断和改正程序中错误的工作通常称为【3】
(4)在关系数据库中,把数据表示成二维表,每一个二维表称为【4】
(5)Java 源文件中最多只能有一个【5】 public 类, 其他类的个数不限。
(6)线程在生命周期中要经历5中状态,分别是新建状态(准备)、可运行状态(就绪)、运行状态(运行)。【6】 暂停(阻塞) 状态和终止状态(死亡)。
(7)FileInputStream 是字节流;BufferedWriter是字符流, ObjectOutputStream是 【7】 对象序列化流
(8)当使用Thread t = new Thread(r)创建一个线程时,表达式r instance of Thread 的值为【8】 false 。 r instanceOf Runnable
1.抽象类和接口的区别?
抽象类:
1)抽象方法,只有行为的概念,没有具体的行为实现。使用abstract
关键字修饰,没有方法体。子类必须重写这些抽象方法。
2)包含抽象方法的类,一定是抽象类。
3)抽象类只能被继承,一个类只能继承一个抽象类。
接口:
1)全部的方法都是抽象方法,属型都是常量
2)不能实例化,可以定义变量。 3)接口变量可以引用具体实现类的实例 4)接口只能被实现,一个具体类实现接口,必须实现全部的抽象方法 5)接口之间可以多实现 6)一个具体类可以实现多个接口,实现多继承现象
2.列举你所知道的线程同步的方法:
1)wait():让线程等待。将线程存储到一个线程池中。
2)notify():唤醒被等待的线程。通常都唤醒线程池中的第一个。让被唤醒的线程处于临时阻塞状态。
3)notifyAll(): 唤醒所有的等待线程。将线程池中的所有线程都唤醒。
3.equals()方法和“==”操作符的区别是什
么?重写equals()方法的时候,我们还需要重写哪些方法?为什么?
“==”比较的是一个对象在内存中的地址值,栈中的内容是否相同
equals()是针对引用的,比较的是引用类型的内容一样不一样,堆中的内容是否相同
重写equals()方法的时候,需重写hashcode方法,这样比较的时候,比较的是两个对象的hash值,不同对象的hash值不同。
7.写一个函数计算但参数为n(n很大)时
的值1-2+3-4+5-6+7„„+n。(提示:考虑程序执行效率)
private static void jisuan(int n) {
int sum=0;
if(n%2==0){
sum=-(n/2);
(11)简述String和StringBuffer、ArrayList和LinkedList、HashMap和HashTable的特点及区别。
答:String 对象的长度一旦定义就固定就不可以改变,对于已经存在的String对象的修改都是创建一个新的对象,然后把新的值存进去,String类不能被继承。StringBuffer是一个可变对象,当对它进行修改的时候不会像String那样重新建立对象。它只能通过构造函数来建立对象。另外StringBuffer还是一个线程安全的类。
ArrayList是实现了基于动态数组的数据结构用于,LinkedList基于连表的数据结构,二者都可以存储对象的引用。对于随机访问get和set,ArrayList优于LinkedList,因为LinkedList要移动指针。对于新增和删除操作add和remove,LinkedList比较占优势,因为ArrayList要移动数据。
HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,在只有一个线程访问的情况下,效率要高于Hashtable。
HashMap允许将null作为一个entry的key或者value,而Hashtable不允许。 HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因为contains方法容易让人引起误解。
Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现。
最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap 就必须
} System.out.println(""+sum); }else{ sum=-(n-1)/2+n; System.out.println(""+sum); }
为之提供外同步。
点击下页还有更多>>>javaweb常见面试题及参考答案