志在指尖
用双手敲打未来

java笔试题(java笔试题目及答案分析)

java笔试题

在任何Java面试傍边多线程和并发方面的问题都是必不可少的一部分。假如你想取得更多职位,那么你应该预备许多关于多线程的问题。
他们会问面试者许多令人混杂的Java线程问题。面试官只是想坚信面试者有满足的Java线程与并发方面的常识,由于候选人中有许多只浮于表面。现在引用Java5并发包关于并发东西和并发调集的问题正在增多。那些问题中ThreadLocal、BlockingQueue、CountingSemaphore和ConcurrentHashMap比较盛行。
15个Java多线程面试题及答复
1)现在有T1、T2、T3三个线程,你怎样保证T2在T1履行完后履行,T3在T2履行完后履行?
这个线程问题通常会在第一轮或电话面试阶段被问到,意图是检测你对”join”办法是否了解。这个多线程问题比较简略,能够用join办法完结。
2)在Java中Lock接口比synchronized块的优势是什么?你需求完结一个高效的缓存,它答应多个用户读,但只答应一个用户写,以此来坚持它的完整性,你会怎样去完结它?
lock接口在多线程和并发编程中最大的优势是它们为读和写别离供给了锁,它能满足你写像ConcurrentHashMap这样的高性能数据结构和有条件的堵塞。Java线程面试的问题越来越会根据面试者的答复来发问。我强烈建议在你去参加多线程的面试之前认真读一下Locks,由于当时其许多用于构建电子买卖终统的客户端缓存和买卖衔接空间。
3)在java中wait和sleep办法的不同?
通常会在电话面试中经常被问到的Java线程面试问题。最大的不同是在等候时wait会开释锁,而sleep一直持有锁。Wait通常被用于线程间交互,sleep通常被用于暂停履行。
4)用Java完结堵塞行列。
这是一个相对困难的多线程面试问题,它能到达许多的意图。第一,它能够检测侯选者是否能实践的用Java线程写程序;第二,能够检测侯选者对并发场景的理解,而且你能够根据这个问许多问题。假如他用wait()和notify()办法来完结堵塞行列,你能够要求他用最新的Java5中的并发类来再写一次。
5)用Java写代码来处理生产者——顾客问题。
与上面的问题很相似,但这个问题更经典,有些时分面试都会问下面的问题。在Java中怎样处理生产者——顾客问题,当然有许多处理办法,我现已分享了一种用堵塞行列完结的办法。有些时分他们甚至会问怎样完结哲学家进餐问题。
6)用Java编程一个会导致死锁的程序,你将怎样处理?
这是我最喜欢的Java线程面试问题,由于即便死锁问题在写多线程并发程序时十分普遍,可是许多侯选者并不能写deadlockfreecode(无死锁代码?),他们很挣扎。只要告知他们,你有N个资源和N个线程,而且你需求一切的资源来完结一个操作。为了简略这里的n能够替换为2,越大的数据会使问题看起来更复杂。经过防止Java中的死锁来得到关于死锁的更多信息。
7)什么是原子操作,Java中的原子操作是什么?
十分简略的java线程面试问题,接下来的问题是你需求同步一个原子操作。
8)Java中的volatile要害是什么效果?怎样运用它?在Java中它跟synchronized办法有什么不同?
自从Java5和Java内存模型改动以后,根据volatile要害字的线程问题越来越盛行。应该预备好答复关于volatile变量怎样在并发环境中保证可见性、顺序性和一致性。
9)什么是竞赛条件?你怎样发现和处理竞赛?
这是一道出现在多线程面试的高级阶段的问题。大多数的面试官会问最近你遇到的竞赛条件,以及你是怎样处理的。有些时刻他们会写简略的代码,然后让你检测出代码的竞赛条件。能够参考我之前发布的关于Java竞赛条件的文章。在我看来这是最好的java线程面试问题之一,它能够切当的检测候选者处理竞赛条件的经验,orwritingcodewhichisfreeofdataraceoranyotherracecondition。关于这方面最好的书是《ConcurrencypracticesinJava》。
10)你将怎样运用threaddump?你将怎样剖析Threaddump?
在UNIX中你能够运用kill-3,然后threaddump将会打印日志,在windows中你能够运用”CTRL+Break”。十分简略和专业的线程面试问题,可是假如他问你怎样剖析它,就会很扎手。
11)为什么我们调用start()办法时会履行run()办法,为什么我们不能直接调用run()办法?
这是另一个十分经典的java多线程面试问题。这也是我刚开始写线程程序时分的困惑。现在这个问题通常在电话面试或者是在初中级Java面试的第一轮被问到。这个问题的答复应该是这样的,当你调用start()办法时你将创立新的线程,而且履行在run()办法里的代码。可是假如你直接调用run()办法,它不会创立新的线程也不会履行调用线程的代码。阅读我之前写的《start与run办法的差异》这篇文章来取得更多信息。
12)Java中你怎样唤醒一个堵塞的线程?
这是个关于线程和堵塞的扎手的问题,它有许多处理办法。假如线程遇到了IO堵塞,我而且不认为有一种办法能够中止线程。假如线程由于调用wait()、sleep()、或者join()办法而导致的堵塞,你能够中断线程,而且经过抛出InterruptedException来唤醒它。我之前写的《Howtodealwithblockingmethodsinjava》有许多关于处理线程堵塞的信息。
13)在Java中CycliBarriar和CountdownLatch有什么差异?
这个线程问题首要用来检测你是否了解JDK5中的并发包。这两个的差异是CyclicBarrier能够重复运用现已经过的妨碍,而CountdownLatch不能重复运用。
14)什么是不可变目标,它对写并发应用有什么协助?
另一个多线程经典面试问题,并不直接跟线程有关,但直接协助许多。这个java面试问题能够变的十分扎手,假如他要求你写一个不可变目标,或者问你为什么String是不可变的。
15)你在多线程环境中遇到的一起的问题是什么?你是怎样处理它的?
多线程和并发程序中常遇到的有Memory-interface、竞赛条件、死锁、活锁和饥饿。问题是没有止境的,假如你弄错了,将很难发现和调试。这是大多数根据面试的,而不是根据实践应用的Java线程问题。java

java笔试题目及答案分析

1.不通过结构函数也能创立目标吗()
A.是(引荐学习:java面试题大汇总)
B.否
剖析:答案:A
Java创立目标的几种办法(重要):
(1)用new句子创立目标,这是最常见的创立目标的办法。
(2)运用反射手法,调用java.lang.Class或者
java.lang.reflect.Constructor类的newInstance()实例办法。
(3)调用目标的clone()办法
(4)运用反序列化手法,调用java.io.ObjectInputStream目标的readObject()办法。
(1)和(2)都会清晰的显式的调用结构函数;(3)是在内存上对已有目标的影印,所以不会调用结构函数;(4)是从文件中复原类的目标,也不会调用结构函数。
(1)和(2)都会清晰的显式的调用结构函数;(3)是在内存上对已有目标的影印,所以不会调用结构函数;(4)是从文件中复原类的目标,也不会调用结构函数。
2.下面哪些是对称加密算法()
A.DES
B.MD5
C.DSA
D.RSA
剖析:答案:A
剖析:常用的对称加密算法有:DES、3DES、RC2、RC4、AES
常用的非对称加密算法有:RSA、DSA、ECC
运用单向散列函数的加密算法:MD5、SHA
3.下面的代码段,当输入为2的时候返回值是()publicstaticintgetValue(inti){
intresult=0;
switch(i){
case1:
result=result+i
case2:
result=result+i*2
case3:
result=result+i*3
}
returnresult;
}
A.0
B.2
C.4
D.10
答案:C
剖析:result=0+2*2;
4.以下Java代码段会产生几个目标publicvoidtest(){
Stringa=”a”;
Stringb=”b”;
Stringc=”c”;
c=a+””+b+””+c;
System.out.print(c);
}
剖析:答案:一个目标,由于编译期进行了优化,3个字符串常量直接折叠为一个
5.Math.round(-11.2)的运行成果是。
答案:-11
剖析:小数点后第一位=5
正数:Math.round(11.5)=12
负数:Math.round(-11.5)=-11
小数点后第一位<5
正数:Math.round(11.46)=11
负数:Math.round(-11.46)=-11
小数点后第一位>5
正数:Math.round(11.68)=12
负数:Math.round(-11.68)=-12
根据上面例子的运行成果,咱们还能够依照如下办法总结,或许愈加容易回忆:
参数的小数点后第一位<5,运算成果为参数整数部分。
参数的小数点后第一位>5,运算成果为参数整数部分绝对值+1,符号(即正负)不变。
参数的小数点后第一位=5,正数运算成果为整数部分+1,负数运算成果为整数部分。
完结:大于五全部加,等于五正数加,小于五全不加。
6.Java中int.long占用的字节数分别是
剖析:
1:“字节”是byte,“位”是bit;
2:1byte=8bit;
char在Java中是2个字节。java选用unicode,2个字节(16位)来表明一个字符。
short2个字节
int4个字节
long8个字节
System.out.println(‘a’+1);的成果是
剖析:’a’是char型,1是int行,int与char相加,char会被强转为int行,char的ASCII码对应的值是97,所以加一同打印98
7.下列句子那一个正确()
A.java程序经编译后会产生machinecode
B.java程序经编译后会产生bytecode
C.java程序经编译后会产生DLL
D.以上都不正确
答案:B
剖析:java程序编译后会生成字节码文件,便是.class文件
8.下列说法正确的有()
A.class中的constructor不行省掉
B.constructor有必要与class同名,但办法不能与class同名
C.constructor在一个目标被new时履行
D.一个class只能定义一个constructor
答案:C
9.履行如下程序代码()a=0;c=0;
do{
——c;
a=a-1;
}while(a>0);
后,c的值是()
A.0
B.1
C.-1
D.死循环
答案:C
do{…}while(…);句子至少履行一次
10.下列哪一种叙述是正确的()
A.abstract润饰符可润饰字段、办法和类
B.笼统办法的body部分有必要用一对大括号{}包住
C.声明笼统办法,大括号可有可无
D.声明笼统办法不行写出大括号
答案:D
剖析:abstract不能润饰字段。既然是笼统办法,当然是没有完成的办法,根本就没有body部分。
11.下列句子正确的是()
A.形式参数可被视为localvariable
B.形式参数可被字段润饰符润饰
C.形式参数为办法被调用时,真正被传递的参数
D.形式参数不能够是目标
答案A:
剖析:
A:形式参数可被视为localvariable。形参和局部变量相同都不能脱离办法。都只要在办法内才会产生作用,也只要在办法中运用,不会在办法外可见。
B:对于形式参数只能用final润饰符,其它任何润饰符都会引起编译器错误。但是用这个润饰符也有一定的约束,便是在办法中不能对参数做任何修正。不过一般情况下,一个办法的形参不用final润饰。只要在特别情况下,那便是:办法内部类。一个办法内的内部类假如运用了这个办法的参数或者局部变量的话,这个参数或局部变量应该是final。
C:形参的值在调用时根据调用者更改,实参则用自身的值更改形参的值(指针、引证皆在此列),也便是说真正被传递的是实参。
D:办法的参数列表指定要传递给办法什么样的信息,选用的都是目标的形式。因而,在参数列表中有必要指定每个所传递目标的类型及姓名。想JAVA中任何传递目标的场合相同,这里传递的实际上也是引证,并且引证的类型有必要正确。

未经允许不得转载:IT技术网站 » java笔试题(java笔试题目及答案分析)
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

志在指尖 用双手敲打未来

登录/注册IT技术大全

热门IT技术

C#基础入门   SQL server数据库   系统SEO学习教程   WordPress小技巧   WordPress插件   脚本与源码下载