第一篇:最新JAVA程序员面试试题及智力测试
JAVA程序员面试试题及智力测试Java
面试例题1:击鼠标比赛现在开始!参赛者有拉尔夫、威利和保罗。
拉尔夫10秒钟能击10下鼠标,威利20秒钟能击20下鼠标,保罗5秒钟能击5下鼠标。以上各人所用的时间是这样计算的:从第一击开始,到最后一击结束。
他们是否打平手?如果不是,谁最先击完40下鼠标?
解析:n秒钟击n下鼠标其实是击第一下鼠标时才开始计时的,实际上击n-1下需要n秒钟,那么若击40下鼠标,拉尔夫需要(40-1)/(9/10)=39/0.9秒,威利需要
(40-1)/(19/20)=39/0.95秒,保罗需要(40-1)/(4/5)=39/0.8秒,因此威利先击完。
答案:威利先击完。
面试例题2:100美元哪里去了?
3个朋友住进了一家宾馆。结账时,账单总计3 000美元。3个朋友每人分摊1 000美元,并把这3 000美元如数交给了服务员,委托他代到总台交账。但在交账时,正逢宾馆实施价格优惠,总台退还给服务员500美元,实收2 500美元。服务员从这500美元退款中扣下了200美元,只退还3个客人300美元。3个客人平分了这300美元,每人取回了100美元。这样,3个客人每人实际支付900美元,共支付2 700美元,加上服务员扣的200美元,共计2 900美元,那么这100美元的差额到哪里去了?
答案:这道题纯粹是文字游戏,但是如果你的头脑不够清晰,很可能把你搞糊涂了。客人实际支付2 700美元,就等于总台实际结收的2 500美元加上服务员克扣的200美元。在这2 700美元上加上200美元是毫无道理的,而在这2 700美元上加退回的300美元,这是有道理的,因为这等于客人原先交给服务员的3 000美元。
面试例题3:有一种小虫,每隔2秒钟分裂一次。分裂后的2只新的小虫经过2秒钟后又会分裂。如果最初某瓶中只有一只小虫,那么2秒后变2只,再过2秒后就变4只……2分钟后,正好满满一瓶小虫。假设这个瓶内最初放入2只这样的小虫。
问:经过多少时间后,正巧也是满满的一瓶?
答案:经过1分58秒时间,也正巧是满满一瓶。因为从一只虫蜕变为2只虫只需2秒钟。在瓶内只有一只虫子的情况下,经过2秒钟后就变成2只。这时的情况和瓶内一开始就有2只虫子的情况是一样的。出现这两种情况的时间差是2秒钟。所以,经过1分58秒后,也正好是满满一瓶。
面试例题4:斯芬克斯是古代希腊神话中的带翅膀的狮子女魔。传说她在底比斯附近要人猜谜,猜不出来就要杀人。一次,她要底比斯王子猜谜:“有一种动物,早上4条腿,中午2条腿,晚上3条腿,是什么动物?”聪明的王子说:“是人。”他猜中了。
如果你是现代的斯芬克斯,会提出什么样的问题呢?比如,1和0之间加上什么符号才可以使得到的数比0大又比1小呢?你知道吗?
答案:0.1面试例题5:父亲打电话给女儿,要她替自己买一些生活用品,同时告诉她,钱放在书桌上的一个信封里。女儿找到信封,看见上面写着98,以为信封内有98元,就把钱拿出来,数也没数放进书包里。在商店里,她买了90元的东西,付款时才发现,她不仅没有剩下8元,反而差了4元。回到家里,她把这事告诉了父亲,怀疑父亲把钱点错了。父亲笑着说,他并没有数错,错在女儿身上。
问:女儿错在什么地方?
答案:拿倒了,86看成是98了。
面试例题6:3个孩子翻衣兜,他们把兜里所有的钱都掏出来,看看一共有多少钱。结果一共有320日元。其中有两枚硬币是100日元的,两枚是50日元的,两枚是10日元的。每一个孩子所带的硬币中没有相同的。而且,没带100日元硬币的孩子也没带10日元的硬币,没带50日元硬币的孩子也没带100日元的硬币。你能弄清楚这3个日本孩子原来各自带了什么硬币吗?
答案:第一个小孩:100,50,10;第二个小孩:100,50;第三个小孩:10。
java 面试试题
1,谈谈final, finally, finalize的区别。
答案:final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。finally是异常处理语句结构的一部分,表示总是执行。
finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。
2,Anonymous Inner Class(匿名内部类)是否可以extends(继承)其它类,是否可以
implements(实现)interface(接口)?
答案:可以继承其他类或完成其他接口,在swing编程中常用此方式。
3,Static Nested Class 和 Inner Class的不同,说得越多越好。
答案:Static Nested Class是被声明为静态(static)的内部类,它可以不依赖于外部类实例被实例化。而通常的内部类需要在外部类实例化后才能实例化。
4,&和&&的区别。
答案:&是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and).5,HashMap和Hashtable的区别。
答案:HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高于Hashtable.6,Collection 和 Collections的区别。
答案:Collection是集合类的上级接口,继承与他的接口主要有Set 和List.Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。
7,什么时候用assert。
答案:1.4新增关键字(语法),用于测试boolean表达式状态,可用于调试程序。
使用方法 assert
另外的使用方式assert < boolean表达式>:
注意编译时要增加-source 1.4 参数,否则报错。]运行时要增加-ea参数,否则assert行被忽略
8,GC是什么? 为什么要有GC?
答案:GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的,Java语言没有提供释放已分配内存的显示操作方法。
9,String s = new String(“xyz”);创建了几个String Object?
两个
10,Math.round(11.5)等於多少? Math.round(-11.5)等於多少? 答案:Math.round(11.5)==12
Math.round(-11.5)==-11
round方法返回与参数最接近的长整数,参数加1/2后求其floor.
第二篇:Java程序员岗前测试
软件企业程序员入职参考测试题
班级_________
姓名_________(共61题,对52%即通过,时间61分钟)1 下列哪些是JAVA语言中合法的标识符:
A
fieldname B
super C
3number D #number E $number 下面那些是JAVA的关键字:
A final B Abstract C
Long D
static 下面代码会输出什么结果:
public class Test{ public static void main(String[] args){
Test o = new Test();
o.amethod();} public void amethod(){ int oi = 012;System.out.println(oi);} } A B 012 C D 10.0 在编译和运行下面代码时会发生什么:
public class Test{ public static void main(String[] args){
int[] i = new int[5];
System.out.println(i[5]);} } A 编译错误 B 运行时错误 C 输出0 D 输出“null” 下列哪些数组的声明或初始化是正确的:
A
String srt[];B String str[5] = new String[5];
C String str[] =
new
String[]{“s1”,”s2”,”s3”,”s4”,”s5”};
D String str[] = {“s1”,”s2”,”s3”,”s4”,”s5”};下列代码会输出什么:
public class Test{ static int j =20;public static void main(String[] args){
int i =10;
Test p =new Test();p.amethod(i);System.out.println(i);System.out.println(j);}
public void amethod(int x){ x=x*2;j=j*2;} } A
编译错误 B 20 和 40 C 10 和 40 D 10 和 20 编译和运行以下代码会发生什么:
public class Test{
public static void main(String[] args){
System.out.println(5 | 7);} }
A 编译错误 B 运行期异常 C 输出5 D 输出7 E 输出2 下列哪个语句是错误的:
A
float f = 11.1;
B double d = 5.3E12;C double d = 3.14159;D double d = 3.14D;下面代码会输出什么:
int i = 16;int j = 17;
System.out.println(i >> 1);System.out.println(j >> 1);A 8和8 B 7和7 C 8和9 D 7和8 10 以下代码会输出什么:
System.out.println(010 | 4);A 14 B 0 C 6 D 12 请看下列代码:
String s = “hello”;String t = “hello”;
Char c[] = {„h‟,‟e‟,‟l‟,‟l‟,‟o‟};选项中哪些返回true: A s.equals(t);B t.equals(c);C s == t;D t.equals(new String(“hello”));E t == c;请看下列代码:
class Test{ public static void main(String[] args){
int s = 10;
s >>= 10;
System.out.println(“s=” + s);
} } 选择正确的答案: A 编译错误 B 运行错误 C 0 D 1 请看以下代码:
public static void main(String[] args){ Float f = new Float(4.2f);Float c;Double d = new Double(4.2);float f1 = 4.2f;c = f;} 下列哪些是正确的: A f.equals(d);B c == f;C c == d;D c.equals(f);下面的代码哪些是正确的定义了一个抽象类:
A class Test{
abstract void grow1();} B abstract Test{
abstract void grow1();
} C class abstract Test{ abstract void grow1();} D abstract class Test{ abstract void grow1();} E abstract class Test{ abstract void grow1(){ }
} 下面哪些是JAVA中合法的修饰符:
A private B public C protected D protect E
friend 编译和运行以下代码时会发生什么:
public class Test{ private int i;public static void main(String[] args){
Test s = new Test();
s.amethod();
}
public static void amethod(){ System.out.println(i);} }
A 输出0 B 没有输出 C 编译错误 D 运行错误 试图编译和运行以下代码时会发生什么:
class Test{ protected int i=99;}
public class Ab{ private int i = 1;public static void main(String[] args){ Ab a = new Ab();a.hallow();} abstract void hallow(){ System.out.println(i);} } A 编译错误
B 编译通过并输出99 C 编译通过并输出1 D 编译通过但运行时没有输出 试图编译和在控制台上输入java Test hello there运行以下代码时会发生什么: public class Test{ String[] myArg;public static void main(String[] args){
myArg = args;} public void amethod(){ System.out.println(args[1]);} } A 编译错误
B 编译通过并输出hello C 编译通过并输出there D 以上都不对 以下代码有什么错误?选出所有正确的答案:
final class Test{ private int a = 1;int b = 2;} class Second extends Test{ public void method(){ System.out.println(a + b);} } A println方法应该传入String类型的参数
B a是私有的,所以除了Test类以外别的类不能访问
C Second不能继承Test D
final不是一个关键字下列哪些选项可以放置在×××处:
public class OuterClass{ private String s = “I am outer class member variable”;
class InnerClass{
private String s1 = “I am inner class variable”;
public void innerMethod(){
System.out.println(s);
System.out.println(s1);}
} //inner class
public static void outerMethod(){
//×××
inner.innerMethod();}
}//outerclass
A OuterClass.InnerClass inner = new OuterClass().new InnerClass();
B InnerClass inner = new InnerClass();C new InnerClass();D 以上选项都不对编译和运行以下代码会发生什么:
public class Test{ public static void main(String[] args){
Test h = new Test();}
protected Test(){ for(int i=0;i<10;i++){
System.out.println(i);
} } }
A 编译错误:构造方法不能声明成protected B 运行时错误:构造方法不能声明成protected C 编译通过并输出0到10 D 编译通过并输出0到9 编译和运行以下代码会发生什么:
class Test{ public static void main(String[] args){ try{
byte x = 5;
byte y = x *2;System.out.println(y);}catch(Exception e){ System.out.println(“exception”);}//catch }//main }//class Test A 编译错误
B 输出exception C 5 D 10 E 15 F 20 G 25 下列哪些语句在编译时不会有警告或错误:
A float f = 1.3;B char c = “a”;C byte b = 257;D boolean b = null;E int i = 10;一个类中带有一个成员变量,如果不希望这个成员变量被除了自己之外的其他任何类访问,那么这个变量应该使用哪个修饰符修饰: A private B public C transient D final E abstract 一个整型变量x的二进制值为:1001 1100,如下语句执行之后z的值是: int y = 1 << 7;int z = x & y;A 1000 0001 B 1000 0000 C 0000 0001 D 1001 1101 E 1001 1100 下面程序运行的时候将会产生哪些输出:
public class Test {
public static void main(String args[]){
double d =-2.9;
int i =(int)d;
i *=(int)Math.ceil(d);
i *=(int)Math.abs(d);
System.out.println(i);
} }
A 12 B 18 C 8 D 12 E 27 请看下面的代码:
void looper(){
int x = 0;
one:
while(x < 10){
two:
System.out.println(++x);
if(x > 3)
break two;
} }
选择所有有效的答案:
A 代码编译成功 B 代码编译错误
C 代码执行后将会打印处数字0 D 将会打印数字1和2 E 将会打印数字3
看下面的代码,将会打印出什么结果:
int m = 0;
while(m++ < 2)
System.out.println(m);
A 0 B 1 C 2 D 3
E 什么都没有,而且会产生一个异常错误 29 查看如下申明:
char[] c = new char[100];c[50]的内容是什么: A 50 B 49 C 'u0000' D 'u0020' E 在赋值之前是null 以下代码的输出结果是什么:
Boolean b1 = new Boolean(true);Boolean b2 = new Boolean(true);if(b1 == b2)
if(b1.equals(b2))
System.out.println(“a”);
else
System.out.println(“b”);
else
if(b1.equals(b2))
System.out.println(“c”);
else
System.out.println(“d”);
选出正确的答案: A a B b C c D d
给出以下代码:
switch(m){ case 0:System.out.println(“0”);break;case 1:System.out.println(“1”);break;case 2:System.out.println(“2”);break;case 3:System.out.println(“3”);
break;default:System.out.println(“other”);}
当m是何值时会输出2,选出所有可能的答案:A 0 B 1 C 2 D 3 E 4 F 以上都不对
参考以下代码块
outer: for(int i = 1;i <3;i++)
{ inner: for(j = 1;j < 3;j++)
{ if(j==2)
continue outer;
System.out.println(“i = ” +i “, j = ” + j);
}
}
下列哪些会被输出到控制台 A i = 1, j = 1 B i = 1, j = 2 C i = 1, j = 3 D i = 2, j = 1 E i = 2, j = 2
查看以下代码:
class Test{ public static void main(String[] args){
try{
return;
}catch(Exception e){
System.out.println(“Exception”);
}finally{ System.out.println(“Finally”);} } }
会发生什么:
A 编译错误,main方法不能返回任何值 B 打印出“Exception”
C 打印出“Exception”和“Finally” D 打印出“Finally”
如果s1的定义为:String s1 = “phenobarbital”;
那么执行如下代码后s2的值是什么: String s2 = s1.substring(3, 5);A null B “eno” C “enoba” D “no”
看如下代码:
class A {}
class B extends A {} class C extends A {} public class Q3ae4 {
public static void main(String args[]){
A x = new A();
B y = new B();
C z = new C();
// insert statement here
} } 在insert statement here处插入如下选项中的代码,哪些代码会引起程序运行产生runtime异常: A x = y;B z = x;; C y =(B)x。D z =(C)y;; E y =(A)y;;
查看如下代码:
1: public void aMethod { 2: 3:
if(Condition){ 4:
5:
} 6: 7: } 如果上面代码中的Condition为true应该抛出MyException类型的异常,那么哪些答案的描述是正确的:
A在第4行添加throw new Exception();
B在第4行添加throws new MyException()。C在第6行添加throw new MyException(); D在第2行添加throws new Exception(); E 在第1行添加throws MyException
译和运行以下代码时会发生什么:
public class Test{
static void throwMethod(){
System.out.println(“inside ThrowMethod”);
throw new IllegalAccessException(“demo”);
} //throwMethod public static void main(String[] args){ try{
throwMethod();}catch(IllegalAccessException e){ System.out.println(“Caught “ + e);
}//catch }//main }
选出正确的答案 A 编译错误。B 运行时错误
C 编译通过,但没输出
D 输出Inside throwMethod 接着输出caught: java.lang.IllegalAccessException:demo
给出以下代码:
public static void main(String[] args){ int i = 1;int j = 10;
do{ if(i >j)
continue;
j--;}while(++i < 6);
System.out.println(“i=” +i+” j=” + j);
}//main
下列哪些会被输出: A i=4 j=5 B i=5 j=6 C i=5 j=5 D i=4 j=6 E i=6 j=5
39当运行下面程序时会发生什么: class Tester{ int var;Tester(double var){
this.var =(int)var;
}
Tester(int var){ this(“hello”);}
Tester(String s){ this();System.out.println(s);}
Tester(){ System.out.println(“good-bye”);}
public static void main(String[] args){ Tester t = new Tester(5);} }
选出所有正确答案 A 没有任何输出 B 输出“hello” C 输出5 D 输出“hello”和”good-bye” E 输出“good-bye”和”hello”
40给出下列代码 public class Base{ int w,x,y,z;public Base(int a,int b){
x = a;
y = b;} public Base(int a,int b,int c,int d){ //设置x = a;y = b w =d;z =c;} } 在//设置x = a;y = b处可以添加什么代码,选出所有正确的答案:
A Base(a,b);B x =a,y =b;C x =a;y=b;D this(a,b);41 如果你试图编译以下代码并执行B类中的main方法时会发生什么,选择唯一的正确答案
class A {
int i;
A(int i){
this.i = i * 2;
} }
class B extends A {
public static void main(String[] args){
B b = new B(2);
}
B(int i){
System.out.println(i);
} } A 实例变量i被设置为4 B 实例变量i被设置为2 C 实例变量i被设置为0
D 编译出错
42编译和运行以下代码会发生什么
1.class A {
2.public int i=5;
3.A(int initi){ i = initi;}
4.public static void main(String[] args){ 5.final A theA = new A(10);6.theA.i = 15;
7.System.out.println(theA.i);8.} 9.}
A 第六行编译出错 B 程序输出”5”;C 程序输出”10”;D 程序输出”15”;
43关于try、catch、finally块,下列描述正确的是:
A try块后面必须总是跟着catch块
B try块后面可以跟catch块或者finally块,也可以两者都有。
C catch必须总是和try块关联。
D 如果没有try块的话,finally块永远不可以单独出现。
E 上面没有一个是正确的
44查看下面的代码,编译个运行该代码将会产生什么结果:
public static void main(String args[]){ int a = 5;
System.out.println(cube(a));}
int cube(int theNum){
return theNum * theNum * theNum;}
A 因为cube在java.lang.Math类中已经定义了,所以编译错误
B 因为cube不是静态类型的,所以编译错误。C 编译成功,但是会抛出算术异常 正常运行,打印出”125”
D 正常运行,打印出”125”
45定义一个八进制的值17,下面哪些方法是正确的:
A private final int theNumber = 0x17;B private final int theNumber = 017;C public int theNumber = 017;
D public int theNumber =(octal)17;E
public int THE_NUMBER = 017;
给定如下接口:
interface A {
int method1(int i);
int method2(int j);} 下面哪些类实现了这个接口而且不是抽象类: A class B implements A {
int method1(){ }
int method2(){ } }
B class B {
int method1(int i){ }
int method2(int j){ } }
C class B implements A {
int method1(int i){ }
int method2(int j){ } }。
D class B extends A {
int method1(int i){ }
int method2(int j){ } }
E class B implements A {
int method2(int j){ }
int method1(int i){ } }。
编译和运行以下代码时会发生什么:
class Mystery{
String s;
public static void main(String[] args){
Mystery m = new Mystery();
m.go();}//main void Mystery(){ s = “constructor”;} void go(){ System.out.println(s);} }//Mystery 选出正确答案 A 编译错误
B 运行时抛出异常 C 运行时没有任何输出 D 运行时输出”constructor” E 运行时输出”null”
48编译以下代码时会发生什么错误:
class A{ private int x;public static void main(String[] args){
new B();}
class B{ B(){
System.out.println(x);
} } }
A 类B试图访问它外部类A里面的私有变量
B 类A在没有创建A的实例前试图创建一个类B的实例。
C 类B的构造方法必须被申明成public
49试图编译和运行以下代码时会发生什么
1.class Fish { }
2.class Shark extends Fish { } 3.class Guppy extends Fish { } 4.5.public class Ocean {
6.public static void main(String[] args){ 7.Fish f = new Shark();8.Guppy g =(Guppy)f;9.}
10.}
A 第七行编译出错.B 第八行编译出错
C
第七行运行时抛出异常 D
第八行运行时抛出异常 E
程序正确运行
如果下面的代码段被成功编译和执行,将会显示什么结果:
class Test{
public static void main(String [] args){
Base b = new Subclass();
System.out.println(b.x);
System.out.println(b.method());
} } class Base{
int x = 2;
int method(){
return x;
} }
class Subclass extends Base{
int x = 3;
int method(){
return x;
} }
A 什么都没有,因为对象b没有使用正确的方法构造对象,所以代码编译错误 B 2 3。C 2 2 D 3 3 E 3 2
51下面哪些方法申明能够被放在注释处,选出所有正确的答案
class Base{ public void aMethod(int i){} } public class Scope extends Base{ public static void main(String[] args){} //注释 } A void aMethod(int i)throws Exception{} B void aMethod(long i)throws Exception{} C void aMethod(long i){} D public void aMethod(int i)throws Exception
52给出以下代码:
public class Test{ public static void test(){
this.print();} public static void print(){ System.out.println(“Test”);}
public static void main(String[] args){ test();}
}
编译和运行这个类时会发生什么: A 输出Test
B 运行时异常,因为对象没有创建出来 C 没有任何输出
D 运行时异常,因为找不到test方法
E 运行时异常,因为this变量只能在一个实例中使用
F 编译错误,因为在test方法中使用this变量。
53给出以下代码:
class Happy{ public int getLength(){
System.out.println(“int version”);
return 1;} }
class Life extends Happy{ public long getLength(){
System.out.println(“long version”);
return 1;}
public static void main(String[] args){ Happy e = new Life();e.getLength();} }
下列正确的是: A 输出int version B 输出 long version C 编译错误 D 运行期异常 E 没有输出
查看下面的代码:
class Tree{}
class Pine extends Tree{} class Oak extends Tree{} public class Forest
{ public static void main(String[] args)
{ Tree tree = new Pine();
if(tree instanceof Pine)
System.out.println(“Pine”);
if(tree instanceof Tree)
System.out.println(“Tree”);
if(tree instanceof Oak)
System.out.println(“Oak”);
else System.out.println(“Oops”);
} } 选择所有会被打印出来的内容: A Pine。B Tree。C Forest D Oops。
E 没有打印任何内容
55什么情况下一个线程会停止执行
a)一个具有更高优先级的线程开始执行的时候 b)线程的wait方法被调用 c)线程的yield方法被调用 d)线程pause方法被调用 e)线程的sleep方法被调用
给定下面的类:
class Counter {
public int startHere = 1;
public int endHere = 100;
public static void main(String[] args){
new Counter().go();
}
void go(){
// A
Thread t = new Thread(a);
t.start();
} } 哪几个答案可以被放在//A处,使得程序执行的时候能够从startHere数到endHere: A.Runnable a = new Runnable(){
public void run(){
for(int i = startHere;i <= endHere;i++){
System.out.println(i);
}
} }。
B.a implements Runnable {
public void run(){
for(int i = startHere;i <= endHere;i++){
System.out.println(i);
}
} };
C.Thread a = new Thread(){
public void run(){
for(int i = startHere;i <= endHere;i++){
System.out.println(i);
}
} }。
57试图编译和运行以下代码时会发生什么? class Test implements Runnable{ int i = 0;public int run(){
while(true){
i++;System.out.println(“i=”+i);
} } }
选出正确的答案
A 编译成功,run方法打印出i的值
B 编译成功,调用start方法后打印出i的值 C 编译错误
D 编译错误,因为while的参数不能是true
给出下面代码,会输出什么结果? class ValHold{ public int i = 10;}
public class ObParm{
public static void main(String argv[]){ ObParm o = new ObParm();o.amethod();}
public void amethod(){ int i = 99;
ValHold v = new ValHold();v.i=30;
another(v,i);
System.out.println(v.i);}//End of amethod public void another(ValHold v, int i){ i=0;v.i = 20;ValHold vh = new ValHold();v = vh;System.out.println(v.i+ “ ”+i);}//End of another } A 10,0, 30 B 20,0,30 C 20,99,30 D 10,0,20
public class test{ private static int j = 0;private static boolean methodB(int k){
j += k;
return true;
} public static void methodA(int i){
boolean b;
b = i < 10 | methodB(4);
b = i < 10 | methodB(8);} public static void main(String[] args){ methodA(0);System.out.println(j);} }
编译和运行时会发生什么?
A 输出“0” B 输出 “4” C 输出 “8” D 输出 “12” E 编译错误
class Test {
public static void main(String[] args){
Thread t = new Thread(new RunHandler());
t.start();
} } 下列选项中哪些是正确的:
A RunHandler 必须实现.Runnable接口 B RunHandler 必须继承Thread类
C
RunHandler必须提供一个run(),它的访问权限应该是public,返回类型是void
D RunHandler 必须提供一个init方法
61查看以下代码,编译和运行时会发生什么 public class Bground extends Thread{ public static void main(String argv[]){
Bground b = new Bground();
b.run();
}
public void start(){
for(int i = 0;i <10;i++){
System.out.println(“Value of i = ” + i);
}
} }
A 编译错误 B 运行错误
C 编译成功,输出0到9 D 编译成功,但没输出。
62在下面代码的注释处加入什么代码会输出“running” class Test implements Runnable{ public static void main(String[] args){
Test rt = new Test();
Thread t = new Thread(rt);//注释
}
public void run(){ System.out.println(“running”);}
void go(){ start(1);}
void start(int i){ } }
A System.out.println(“running”);B rt.start();C rt.go();D rt.start(1);
第三篇:JAVA程序员面试技巧
java程序员面试题 第一部分:选择题 question no: 1
1、public class test { public static void changestr(string str){ } public static void main(string[] args){ string str=1234;changestr(str);system.out.println(str);} } please write the output result : question no:2 1.public class test { 2.static boolean foo(char c){ 3.system.out.print(c);4.return true;5.} 6.public static void main(string[] argv){ 7.int i =0;8.for(foo(a);foo(b)&&(i<2);foo(c)){ 9.i++;10.foo(d);12.} 13.} 14.} what is the result? a.abdcbdcb b.abcdabcd d.an exception is thrown at runtime.question no: 3 1.class a { 2.protected int method1(int a, int b){ return 0;} 3.} which two are valid in a class that extends class a?(choose two)a.public int method1(int a, int b){ return 0;} b.private int method1(int a, int b){ return 0;} c.private int method1(int a, long b){ return 0;} d.public short method1(int a, int b){ return 0;} e.static protected int method1(int a, int b){ return 0;} question no: 4 1.public class outer{ 2.public void someoutermethod(){ 3.// line 3 4.} 5.public class inner{} 6.public static void main(string[]argv){ 7.outer o = new outer();8.// line 8 9.} 10.} which instantiates an instance of inner? a.new inner();// at line 3 b.new inner();// at line 8 c.new o.inner();// at line 8 d.new outer.inner();// at line 8//new outer().new inner()question no: 5 which method is used by a servlet to place its session id in a url that is written to the servlet’s response output stream? question no: 6 which two are equivalent?(choose two)a.b.c.d.e.f.g.question no: 7 which of the following statements regarding the lifecycle of a session bean are correct? 1.java.lang.illegalstateexception is thrown if sessioncontext.getejbobject()is invoked when a stateful session bean instance is passivated.2.sessioncontext.getrollbackonly()does not throw an exception when a session bean with bean-managed transaction demarcation is activated.3.an exception is not thrown when sessioncontext.getusertransaction()is called in the afterbegin method of a bean with container-managed transactions.5.accessing resource managers in the sessionsynchronization.afterbegin method of a stateful session bean with bean-managed transaction does not throw an exception.第二部分:概念题
1.描述struts体系结构?对应各个部分的开发工作主要包括哪些? 3.jsp有哪些内置对象和动作?它们的作用分别是什么?
4、sql问答题
select * from table 和
select * from table where name like %% and addr like %% and(1_addr like %% or 2_addr like %% or 3_addr like %% or 4_addr like %%)的检索结果为何不同?
5、sql问答题
表结构:
1、表名:g_cardapply 字段(字段名/类型/长度): g_applyno varchar 8;//申请单号(关键字)g_applydate bigint 8;//申请日期 g_state varchar 2;//申请状态
2、表名:g_cardapplydetail 字段(字段名/类型/长度): g_applyno varchar 8;//申请单号(关键字)g_name varchar 30;//申请人姓名 g_idcard varchar 18;//申请人身份证号 g_state varchar 2;//申请状态
其中,两个表的关联字段为申请单号。
题目:
1、查询身份证号码为***的申请日期
2、查询同一个身份证号码有两条以上记录的身份证号码及记录个数
3、将身份证号码为***的记录在两个表中的申请状态均改为07
4、删除g_cardapplydetail表中所有姓李的记录
华为java笔试题
一、单项选择题
1.java是从()语言改进重新设计。a.ada b.c++ c.pasacal d.basic篇二:java程序员面试注意事项
一、回答问题的思路
先正面叙述一些基本的核心知识,然后描述一些特殊的东西,最后再来一些锦上添花的东西。要注意有些不是锦上添花,而是画蛇添足的东西,不要随便写上。把答题像写书一样写。我要回答一个新技术的问题大概思路和步骤是:我们想干什么,干这个遇到了什么问题,现在用什么方式来解决。其实我们讲课也是这样一个思路。
答题时,先答是什么,再答有什么作用和要注意什么(这部分最重要,展现自己的心得)。答案的层次分明,条理清楚都非常重要,从这些表面的东西也可以看出一个人的习惯、办事风格、条理等。要讲你做出答案的思路过程,或者说你记住答案的思想都写下来。把答题想着是辩论赛。答题就是给别人讲道理、摆事实。答题不局限于什么格式和形式,就是要将自己的学识展现出来!
另外,不要因为人家题目本来就模棱两可,你就心里胆怯和没底气了,不敢回答了。你要大胆地指出对方题目很模糊和你的观点,不要把面试官想得有多高,其实他和你就是差不多的,你想想,如果他把你招进去了,你们以后就是同事了,可不是差不多的吗?
二、关于就业薪水
如果你是应届生,那不能要高工资,好比大饼的故事,要拿高工资,就去中关村!少数人基础确实很好,在校期间确实又做过一些项目,那仍然是可以要到相对高的工资的。
初级程序员薪水:2000-4500 中级程序员薪水:4000-7000 高级程序员薪水:7000以上
公司招聘程序员更看重的要用到的编码技术、而不是那些业务不太相关的所谓项目经历:
三、公司想招什么样的人
对于一些公司接到了一些项目,想招聘一些初中级的程序员过来帮助写代码,完成这个项目,你更看重的是他的专业技术功底,还是以前做过几个项目的经历呢?我们先排除掉那些编码技术功底好,又正好做过相似项目的情况,实际上,这种鱼和熊掌兼得的情况并不常见。其实公司很清楚,只要招聘进来的人技术真的很明白,那他什么项目都可以做出来,公司招人不是让你去重复做你以前的项目,而是做一个新项目,业务方面,你只要进了项目团队,自然就能掌握。所以,大多数招聘单位在招聘那些编码级别的程序员时也没指望能招聘到做过类似项目的人,也不会刻意去找做过类似项目的人,用人单位也不是想把你招进,然后把你以前做过的项目重做一遍,所以,用人单位更看重招进来的人对要用到的编码技术的功底到底怎样,技术扎实不扎实,项目则只要跟着开发团队走,自然就没问题。除非是一些非常专业的行业,要招聘特别高级的开发人员和系统分析师,招聘单位才特别注重他的项目经验和行业经验,要去找到行业高手,公司才关心项目和与你聊项目的细节,这样的人通常都不是通过常规招聘渠道去招聘进来的,而是通过各种手段挖过来的,这情况不再我今天要讨论的范围中。
四、公司面试会问什么,.技术学得明白不明白,人家几个问题就把你的深浅问出来了,只要问一些具体的技术点,就很容易看出你是真懂还是假懂,很容看出你的技术深度和实力,所以,技术是来不得半点虚假的,必须扎扎实实。
由于项目的种类繁多,涉及到现实生活中的各行各业,什么五花八门的业务都有,例如,酒店房间预定管理,公司车辆调度管理,学校课程教室管理,超市进销存管理,知识内容管理,等等……成千上万等等,但是,不管是什么项目,采用的无非都是我们学习的那些目前流行和常用的技术。技术好、经验丰富,则项目做出来的效率高些,程序更稳定和更容易维护些;技术差点,碰碰磕磕最后也能把项目做出来,无非是做的周期长点、返工的次数多点,程序代码写得差些,用的技术笨拙点。如果一个人不是完完全全做过某个项目,他是不太关心该项目的业务的,对其中的一些具体细节更是一窍不知,(如果我招你来做图书管理,你项目经历说你做过汽车调度,那我能问你汽车调度具体怎么回事吗?不会,所以,你很容易蒙混过去的)而一个程序员的整个职业生涯中能实实在在和完完整整做出来的项目没几个,更别说在多个不同行业的项目了,有的程序员更是一辈子都只是在做某一个行业的项目,结果他就成了这个行业的专家(专门干一件事的家伙)。所以,技术面试官通常没正好亲身经历过你简历写的那些项目,他不可能去问你写的那些项目的具体细节,而是只能泛泛地问你这个项目是多少人做的,做了多长时间,开发的过程,你在做项目的过程中有什么心得和收获,用的什么技术等面上的问题,所以,简历上的项目经历可以含有很多水分,很容易作假,技术面试官也无法在项目上甄别你的真伪。
五、简历怎么写
简历该怎么写:精通哪些技术,有一些什么项目经历
六、怎样达到简历上的标准(培训中心教项目的目的)教项目是为了巩固和灵活整合运用技术,增强学习的趣味性,熟悉做项目的流程,或得一些专业课程中无法获得的特有项目经验,增强自己面试的信心。讲的项目应该真实可靠才有价值,否则,表面上是项目,实际上还是知识点的整合,对巩固技术点和增强学习的趣味性,但无法获得实际的项目经验。
第四篇:java程序员面试必读
Java程序员,面试必读
☆★☆★快来!10月25日读者见面会☆★☆★
清华大学出版社《Java程序员,上班那点事儿》作者:钟声 章节:1.2.2:
面试是一个“简单”而又“复杂”的事情,正因为它具有“简单”和“复杂”的双重性质,才使我们对这个问题不敢掉以轻心。介绍如何面试,有时候甚至可以写一本书,而有时候,你什么都不准备却可以面试成功。
因为,面试的成功与否完全取决于主考官,因此,这门学问的主要科目就是研究主考官的招聘心理。
我们研究好主考官的招聘心理,自然就可以做到“知己知彼”了。
本小节只是说说面试的“心理战”,而想真正的能够对答如流,需要的是“真功夫”,要想具备“真功夫”还是需要真正的技术水平作为前提的,本小节的内容只是给那些已经具备相应技术水平的应聘者提供一定的应聘技巧而已,以避免没有把自己的“真功夫”完全展示出来从而丧失工作机会。
面试前对自己的心理暗示:
面试并不是考试,只是和未来的同事聊聊天。
“心理战”对象,可能出现的主考官如下几类:
人物1,人力资源部主管(HR)
人物2,你未来的主管
人物3,你未来主管的主管
我们分别来分析遇到不同类型的主考官的不同情况。
人物1:人力资源部主管(HR)
“人物1”的出现往往是进行该职位的初审,给出一个概观定论,如果合格将会提交给“人物2”。“人物1”他们所要进行的是对人的心理和基本技能方面的一个判断。
不过,也有一些公司,首次面试仍然是由业务主管来进行,然后再将初审合格的人交给人力部门来复试,如果,是这种情况,你应该就算90%入职成功了,因为,这个复试往往是走个形式,看看此人有没有被主管忽略的大问题,如果没有,基本就差不多了。
那么,我们仅仅以第一种情况为例,看看“人物1”大多提出的是哪些问题。
常见提问1:请你自我介绍一下
这个问题,是人力部主考官必问的问题,这个问题的提问并不是真的想了解你的个人情况,因为,你的情况基本上在简历上都写着呢。他提出这个问题的主要目的是来考察你的语言表达能力,和你在表达过程中的一些细节表现。
所以,我们应该怎么回答呢?
看看如下对话:
HR:“请你自我介绍一下”
A君:“您看简历吧,基本上我都写在简历上了。”
HR:汗„
HR:“请你自我介绍一下”
B君:“我叫XXX,年龄24,性别男,籍贯„„”
HR:倒„
HR:“请你自我介绍一下”
C君:“这话从何说起呢?话说10年前„„”
HR:晕„
首先,不要认为主考官没有认真的看你的简历,没有看你的简历就让你来面试,是在浪费他自己的时间,所以绝对是首先认为简历比较合适,才约你来的。
第二,自我介绍并不是让你重复一下你简历上的所有内容,那些内容简历上都有,主考官主要是想听听你如何表达和语言的逻辑能力。
第三,这个表达不要滔滔不绝,要有张有弛,有收有放,主要将自己的想说的优势部分分别道来,能够通过你的介绍让人感觉到你的“亲和力”为佳。
“语言表达能力”并非我们日常所说的“能侃”或者“口才”,这是片面的理解,在面试过程中,我们要展现的“语言表达能力”是指,“语言亲和力”,能够让人感受到你的“沟通”能力。
回答范例:
您好!我来自XXX大学,是应届毕业生,所学专业是计算机应用技术,我在校期间参加多项课余工作,参与了多个应用系统的开发与设计,熟练掌握Java开发工具和应用系统的各种开发方法。在学习与工作期间,总结与实践了各种技术实现手段,有了一些小的积累。
近期已经毕业,看到您公司的招聘信息,感觉自己的技术与能力非常合适,就投递了简历。希望能过了您这关,呵呵„„(注:最后的微笑最好不要太牵强,目的是缓和气氛)
大家看到了,这个回答范例的自我介绍非常简练,但是,什么也没有落下。既实事求是的说了自己是应届毕业生,又说明了自己虽然是应届毕业生,但是参加了很多的课余工作,并且具有实际的项目开发经验,而且有了一些小的积累。
既说了自己的对这份工作和自己能力之间的考量,又表达了自己对主考官的期望。
意思表达时不卑不亢,言简意赅,让人听起来就感觉很舒服。
这时候你的目的就达到了,展现出自己的“语言表达能力”和“语言亲和力”,同时又能够让人感受到你的“沟通”能力。
常见提问2:你最大的优点是什么?
这个问题如果是HR问,则最好回答了。
回答这个问题的关键是“围绕自己的技术特长”展开话题,为什么这样?
因为,往往HR都不懂技术,围绕技术说自己的特长很容易给他说晕(当然,个别懂技术的HR除外)。这里要注意的是,在说技术问题的时候,不要让HR感觉自己什么都不懂,要注意说话的节奏,不要太快,不要太骄傲。
常见提问3:你最大的缺点是什么?
这个问题是HR的杀手锏,可以说这是HR的狠招,这个问题最难回答,一般应聘者都本着“扬长避短”的心态去面试,冷不防冒出这么一个问题,还真是挺棘手的。
需要清楚HR问这个问题的目的,其目的仍然不是要真的需要知道你的缺点是什么,还是看看你的表达能力,尤其是需要考察应聘者面对危机的时候的处理能力。所以,我们不要用下列方式作答:
1、说出自己的真实缺点,尤其是在前面谈话中没有暴露出来的缺点
2、认为说说某些大众化的缺点即可,认为说一两个无妨
3、说自己没有缺点,强调自己比较完美
总之,HR心里想的是:需要了解他面前的这个人在面对困难的时候,是如何处理问题的,从处理危机的方法来判断此人的处理事情的灵活性。当然,如果此人自己暴露出自己的缺点当然更好,省得需要去想办法问更多的问题去发现了。
所以,在回答这个问题的时候,要看起来“真诚”、“坦白”,同时,说出来的并非自己的缺点,而是最好在别人看来是优点的那些方面。
这个问题问的概率很大,通常如果求职者说自己小心眼、爱忌妒人、非常懒、脾气大、工作效率低,肯定不会录用你。HR喜欢求职者从自己的优点说起,中间加一些小缺点,最后再把问题转回到优点上,目的还是突出自己优点的部分。
HR喜欢聪明的求职者。
这一点比较难掌握,我们也给出范例:
回答范例:
呵呵,这个问题好难回答啊!我想想„„(亲和力表现,也缓解了自己的紧张情绪)
我的缺点是,比较执着,比如在技术方面比较爱钻研,有的时候会为一个技术问题加班到深夜。还有就是,工作比较按部就班,总是按照主管的要求完成任务。另外的缺点是,总在自己的工作范围内有创新意识,并没有扩展给其他同事。这些问题我想我可以进入公司以后以最短的时间来解决,我的学习能力很强,我相信可以很快融入公司的企业文化,进入工作状态。
嗯„„,我想就这些吧。
这个回答范例开头第一句话就让人觉得很自然,因为这个求职者所说的话恰恰表达了一般人听到这个问题后的心理状态,还有你一定会有一个思考的时间,因为,谁也不会立刻说出自己的缺点。
后面说出的几个缺点都是一环套一环的,说了自己“比较执着”,但又说自己其实是“比较爱钻研”,说自己总是“按部就班”,但又补充了其实那是“按照主管的要求完成任务”,这时候,如果用人单位觉得,此人是不是没有“创新思维”的时候,马上就补充道“在自己的范围内有创新意识”,至于“没有扩展给其他同事”这件事,其实无关紧要,干脆就卖给HR吧。
以上回答确实卖弄了些“技巧”,相信HR也一定能看的出来,但是,即使看出来了也无妨,HR也会心领神会,知道你是一个比较善于沟通并且善于表达的人。
人物2:你未来的主管
当见到未来主管的时候,往往是应聘者已经过了HR那一关,或者应聘者已经过了笔试的那一关,因此见到这位人物意味着距离成功已经向前进了一步。
“人物2”的面试也有他的目的,他是和你在日常工作中接触最多的人,作为你的直接上司,他需要在工作中经常给你分配任务,他需要对他的主管负责,因此,他招聘的这个人选必须是可以帮助他完成他整个Team的目标的人。
往往那个吸引你来面试的“招聘启示”就是这个人物所撰写的,因此,其实在你和他见面以前,早已经通过“招聘启示”和他有过交往了。因此,从“招聘启示”中就可以初显这位主管的端倪。
注意,主管同志并不是人事领域的高手,不会用各种语言技巧去发掘你身上的缺点或者优点,往往问题都是实打实的,或者比较一针见血的,而且,更偏重于日常工作。
那么,我们下面和他过过招。
常见提问1:请你自我介绍一下
这个问题,HR也问过了,到他那里有可能还会问,主管问这个问题和HR虽然问的问题一致,但是,其目的并不是完全相同的。
他不仅仅想考察一下你的表达能力,同时还想考察一下你思路的清晰程度。
我们在回答他的问题前,一定要想清楚一件事:他是该技术领域的高手,就是我们“程序员修炼三境界”中描述的“第二层境界”的那个人物,如果还想更清楚的了解这个人物,可以去重新看看前面的那个章节。
这个自我介绍最好说的较为简洁,不要过分炫耀自己的技术如何如何强,免得引起这位主管的兴趣,引起他的技术兴趣没有什么好处,只会带来更多的技术问题的发问。
常见提问2:你最引以为自豪的项目是什么?
他问这个问题的意图是想考察你的成长路径和编程习惯,因为,最让你自豪的项目往往是你成长最快的项目,那个成长最快的项目往往会给你今后的编程习惯留下很多痕迹。
所以,通过你对那个引以为豪的项目的描述,有经验的他会很快锁定你技术成长中的缺陷和闪光点,从而判断是否能够“为我所用”。
你最好拿出一个自己最擅长技术的那个项目进行介绍,这个项目最好能够比较贴近招聘要求的那些指标。如果,没有做过什么有规模的正规项目,你就拿些自己非常擅长或者有创意的开发作品来说。这样做的好处是,他听完你的介绍后,会接下来进行提问,他所有发问,你都成竹在胸了。
切忌拿一个别人的项目,或者自己参与很少的项目来介绍,如果这样的话,一旦他深入的询问这个项目的问题,很可能你会所答非所问,反而造成更严重的影响。你大可以和他大谈特谈你在那个项目中获得的经验,那会引起此君的共鸣,有可能的话,说出一些你自己的小技巧,他会很高兴。
常见提问3:如果我录用你,你将怎样开展工作
他问这个问题的意图是,希望看看你对这个职位工作展开的一些设想,仍然是“实打实”从工作出发来提问的。所以,你在回答这个问题的时候也要“实打实”,切忌虚无缥缈的一通“高、大、全”。
一般要列出自己的入职之后的工作计划,而这些计划需要详尽,同时需要体现出你工作的严谨性,也不能是想当然的说出一些与工作无关的计划,这都有可能适得其反。
回答范例:
针对这个如何展开工作的问题,我目前仅仅是对咱们公司的大体情况有一个了解,因此,对这个职位的工作性质仅仅是自己的一个理解。
所以呢,我也不知道是否合适,我只能说一个大概。
作为这个职位而言,我想我首先要对本公司的主营业务要有一个相当的了解,了解我们公司的业务组成部分、业务的发展方向、我们面向的客户性质等等。
第二,我要了解所属部门在公司中的地位,以及部门的工作目标,从而确定自身的工作努力方向。
第三,了解我参与项目的开发方式,架构方式,紧密配合领导工作,尽快投入具体的开发工作。
这就是我开展工作的计划。
从大到小的方式进行了解,这么说可以让领导知道你不是一个盲目工作的人,而是一个按部就班,稳扎稳打的人,使人觉得和你合作很踏实。另外,一定要强调所属项目或部门的目标,因为这关系到面试你的主管的切身利益。最后,强调“尽快”投入开发工作,这样,领导就放心了,你不是一个“只了解,不工作”的人。
面对主管唯一要尽量表现的就是,你看起来非常像一个“工具”,入职后马上就可以发挥作用。
人物3:主管的主管
遇到“主管的主管”的时,往往已经是复试,这说明基本上已经是最后一关了。但要注意,这个最后一关是非常关键的一“关”。因为,往往如果你未来的主管在公司中某个专业够权威的话,他的主管一般不会管招聘的事情。因此,你看到这位“老大”的原因,多半是你未来的那位主管的专业地位还没有“稳定”。
最后的“搏杀”
过程大概是这样的,一般会将两个或三个人提交给“老大”,让“老大”定夺,去选择其中的一个人,因此,这个阶段是一个最后的“搏杀”关键阶段。老大”关注的问题:成本+人员素质
所以,我们在和“老大”过招的时候,一定要注意自己的言行,切忌不要穿“奇装异服”,或者男士留有个性的头发或胡子,总之一定要让人看起来特别的“平常”,虽然不是“西装革履”但也要“衣冠整洁”。
因为,老板们最不喜欢“个性”员工,而最喜欢的是“优秀”的普通员工。
清华大学出版社《Java程序员,上班那点事儿》作者:钟声 章节:1.2.2。
本文来自CSDN博客,转载请http://blog.csdn.net/useway/archive/2009/08/02/4402385.aspx
标
明
出
处
:
第五篇:java程序员面试要点
第一,谈谈final, finally, finalize的区别。
final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。finally是异常处理语句结构的一部分,表示总是执行。finalize是 Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。
第二,Anonymous Inner Class(匿名内部类)是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?
可以继承其他类或完成其他接口,在swing编程中常用此方式。
第三,Static Nested Class 和 Inner Class的不同,说得越多越好(面试题有的很笼统)。
Static Nested Class是被声明为静态(static)的内部类,它可以不依赖于外部类实例被实例化。而通常的内部类需要在外部类实例化后才能实例化。
第四,&和&&的区别。
&是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and).第五,HashMap和Hashtable的区别。
HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高于Hashtable.第六,Collection 和 Collections的区别。
Collection是集合类的上级接口,继承与他的接口主要有Set 和List.Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。
第七,什么时候用assert。
1.4新增关键字(语法),用于测试boolean表达式状态,可用于调试程序。使用方法 assert,表示如果表达式为真(true),则下面的语句执行,否则抛出AssertionError。另外的使用方式assert < boolean表达式>:,表示如果表达式为真,后面的表达式忽略,否则后面表达式的值用于AssertionError的构建参数。注意编译时要增加-source 1.4 参数,否则报错。]运行时要增加 –ea参数,否则assert行被忽略
第八,GC是什么? 为什么要有GC?
GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的,Java语言没有提供释放已分配内存的显示操作方法。
第九,String s = new String(“xyz”);创建了几个String Object?
两个
第十,Math.round(11.5)等於多少? Math.round(-11.5)等於多少?
Math.round(11.5)==12Math.round(-11.5)==-11round方法返回与参数最接近的长整数,参数加1/2后求其floor.第十一,short s1 = 1;s1 = s1 + 1;有什么错? short s1 = 1;s1 += 1;有什么错?
short s1 = 1;s1 = s1 + 1;(s1+1运算结果是int型,需要强制转换类型)short s1 = 1;s1 += 1;(可以正确编译)
第十二,sleep()和 wait()有什么区别?
sleep是线程类(Thread)的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复。调用 sleep不会释放对象锁。wait是Object类的方法,对此对象调用wait方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出notify方法(或notifyAll)后本线程才进入对象锁定池准备获得对象锁进入运行状态。
第十三,Java有没有goto?
没有
很十三的问题,如果哪个面试的问到这个问题,我劝你还是别进这家公司。
第十四,数组有没有length()这个方法? String有没有length()这个方法?
数组没有length()这个方法,有length的属性。
String有有length()这个方法。
第十五,Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?
方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写(Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型。
第十六,Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?
Set里的元素是不能重复的,那么用iterator()方法来区分重复与否。equals()是判读两个Set是否相等。
equals()和==方法决定引用值是否指向同一对象equals()在类中被覆盖,为的是当两个分离的对象的内容和类型相配的话,返回真值。
第十七,给我一个你最常见到的runtime exception。
参考如下:
ArithmeticException,ArrayStoreException,BufferOverflowException,BufferUnderflowException,CannotRedoException,CannotUndoException,ClassCastException,CMMException,ConcurrentModificationException,DOMException,EmptyStackException,IllegalArgumentException,IllegalMonitorStateException,IllegalPathStateException,IllegalStateException,ImagingOpException,IndexOutOfBoundsException,MissingResourceException,NegativeArraySizeException,NoSuchElementException,NullPointerException,ProfileDataException,ProviderException,RasterFormatException,SecurityException,SystemException,UndeclaredThrowableException,UnmodifiableSetException,UnsupportedOperationException
第十八,error和exception有什么区别?
error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况。
exception 表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况。
第十九,List, Set, Map是否继承自Collection接口?
List,Set是
Map不是
第二十,abstract class和interface有什么区别?
声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。
接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的,没有一个 有程序体。接口只可以定义static final成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof 运算符可以用来决定某对象的类是否实现了接口。
第二十一,abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?
都不能
第二十二,接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)?
接口可以继承接口。抽象类可以实现(implements)接口,抽象类是否可继承实体类,但前提是实体类必须有明确的构造函数。
第二十三,启动一个线程是用run()还是start()?
启动一个线程是调用start()方法,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由JVM调度并执行。这并不意味着线程就会立即运行。run()方法可以产生必须退出的标志来停止一个线程。
第二十四,构造器Constructor是否可被override?
构造器Constructor不能被继承,因此不能重写Overriding,但可以被重载Overloading。
第二十五,是否可以继承String类?
String类是final类故不可以继承。
第二十六,当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?
不能,一个对象的一个synchronized方法只能由一个线程访问。
第二十七,try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?
会执行,在return前执行。
第二十八,编程题: 用最有效率的方法算出2乘以8等於几?
有C背景的程序员特别喜欢问这种问题。< < 3
第二十九,两个对象值相同(x.equals(y)== true),但却可有不同的hash code,这句话对不对?
不对,有相同的hash code。
第三十,当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
是值传递。Java 编程语言只由值传递参数。当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的引用。对象的内容可以在被调用的方法中改变,但对象的引用是永远不会改变的。
第三十一,swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?
switch(expr1)中,expr1是一个整数表达式。因此传递给 switch 和 case 语句的参数应该是 int、short、char 或者 byte。long,string 都不能作用于swtich。
第三十二,编程题: 写一个Singleton出来。
Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。
一般Singleton模式通常有几种种形式:
第一种形式: 定义一个类,它的构造函数为private的,它有一个static的private的该类变量,在类初始化时实例话,通过一个public的getInstance方法获取对它的引用,继而调用其中的方法。
public class Singleton {
private Singleton(){}
//在自己内部定义自己一个实例,是不是很奇怪?
//注意这是private 只供内部调用
private static Singleton instance = new Singleton();
//这里提供了一个供外部访问本class的静态方法,可以直接访问
public static Singleton getInstance(){
return instance;
} }
第二种形式:
public class Singleton {
private static Singleton instance = null;
public static synchronized Singleton getInstance(){
//这个方法比上面有所改进,不用每次都进行生成对象,只是第一次
//使用时生成实例,提高了效率!
if(instance==null)
instance=new Singleton();
return instance;} }
其他形式:
定义一个类,它的构造函数为private的,所有方法为static的。
一般认为第一种形式要更加安全些
其中也存在一些问题,下面补充一下.希望大家继续补充
1.最好介绍一下final修饰变量的情形(分开说明基本类型变量和引用类型变量)。
2.不知道如何描述比较好,匿名内部类本身是一个实现了特定接口或继承了其他类的类。
3.非静态类不能有static的方法。参考一下java collections framework的代码,还能说出很多东西来。
4.&既是位运算符,也是逻辑操作符。
&和&&都是逻辑运算符,它们的区别是,&&进行短路计算。
6.可以补充一下,参考文档。
11.说一下具体的原因可能更好。
13.java有goto这个keyword,不过还没有使用。
15.overload和多态没有任何关系。多态是面向对象的基本特征,是和继承、overriding相关的。原来以为把overload当作多态的一种是从C++来的,后来翻了基本c++的经典的书,也强调多态只是和继承,虚函数,overriding相关,所以不知道这个错误思想从哪来的了.16.public interface Set
看文档就是了.22.“抽象类是否可继承实体类,但前提是实体类必须有明确的构造函数。”什么意思?谁规定的?
27.这个比较复杂,例如
public class Main {
public static void main(String[] args){
System.out.println(test());}
public static boolean test(){
boolean b = false;
try {
return b = 4 > 3;
} finally {
System.out.println(b);
//return false;} } }
这个例子中可以看出,return后面的表达式已经计算了,感觉return语句这里被挂起了,如果finally中没有return,这个return就返回.如果finally也有return,那么就是finally中的return返回了.29.碰上不守规矩的程序员谁也没办法.31.还有枚举呢
32.注释有问题.