Java面试 6题

据说,如果你能独立完成(不用看资料,不借助调试)回答在60分以上,找个6000元以上的工作由***来给你介绍。

 

1、简述逻辑操作(&,|,^)与条件操作(&&,||)的区别。(15分)

 

2、下面程序运行会发生什么结果?如果有错误,如何改正?(15分)

 

interface A{

    int x=0;

}

class B{

    int x=1;

}

class C extends B implements A{

   public void pX(){

        System.out.println(x);

   }

   public static void main(String[] args){

        new C().pX();

   }

}

}

 

3、简述JSP和Servlet的联系和区别?(20分)

 

4、XML文档定义有几种形式?他们之间有何本质区别?解析XML文档有那几种方式(20分)

 

5、简述synchronized和java.util.concurrent.locks.Lock的异同?(15分)

 

6 EJB规范规定EJB中禁止的操作有哪些?(15分)

 

最后还有一题考考你的眼力:

 

public String toString(){

    return this+"@"+this.hashCode();

 

这个toString()方法实现有无不当的地方?(toString方法其实可以按你想输出的任何内容输出一些该类的信息) 

 

以下答案供参考(不一定完全正确),也没有很详细说明.相关知识可以自己参考相关资料加上自己的理解.欢迎拍砖  

 

1、简述逻辑操作(&,|,^)与条件操作(&&,||)的区别。(15分)

 (1) 条件操作符只能操作布尔值,而逻辑操作即可以操作布尔值,也可以操作数值型

(2)逻辑操作不会产生短路:

 

  如:

  

   int a =0;

   int  b=0;

  

   if ((a =3)>0 || (b=3)>0) //结果 a=3 b=0

   if ((a=3)>0 | (b=3)>)) //结果 a=3 b=3

  

 

 

答对第一点得5分,答对第二点得10分.      本题考察最最基本的知识,但仍然有很多大牛级开发人员下马,任何语言在开始的部分   都会详细介绍这些基本知识,但除了学习第一种语言时,没有人在学习新的语言时愿意   花五分钟来复习一下

 

2.下面程序运行会发生什么结果?如果有错误,如何改正? (15分)  

interface  A{  

  int x = 0;  

}  

class B{  

  int x =1;  

}  

class C  

    extends B implements A {  

  public void pX(){  

    System.out.println(x);  

  }  

  public static void main(String[] args) {  

    new C().pX();  

  }  

}  

}  

本题在编译时会发生错误(错误描述不同的JVM有不同的信息,意思就是未明确的x调用,  

两个x都匹配,就象在同时import java.util和java.sql两个包时直接声明Date一样) 

对于父类的变量,可以用super.x来明确调用,而接口的属性默认隐含为

public static final.所以可以通过A.x来明确

 

3.简述 Java Server Page 和 Servlet 的联系和区别。(20分)  

JSP是Servlet技术的扩展,本质上是servlet的简易方式,更强调应用的外表表达,JSP编译后是“类Servlet”。Servlet和JSP

最主要的不同点在于,Servlet的应用逻辑是在java文件中,并且完全从表示层中的HTML里分离出来。而JSP的情况是java和HTML

可以组合成一个扩展名为.JSP文件。JSP侧重与视图,Servlet侧重与控制逻辑

 

4.XML文档定义有几种形式?它们之间有何本质区别?  

  解析XML文档有哪几种方式?(20分) 

 

 a:两种形式,dtd,schema

 b: schema本身就是XML的,可以被XML解析器解析(这也是从DTD上发展schema的根本目的)

 c:DOM,SAX

 

5.简述synchronized和java.util.concurrent.locks.Lock的异同 ?(15分)  

相同点:

 Lock能完成synchronized所实现的所有功能

不同点:

Lock有比synchronized更精确的线程语义和更好的性能

synchronized会自动释放锁,而Lock一定要程序员手工释放,并且必须在finally从句中释放

6.EJB规范规定EJB中禁止的操作有哪些?(15分)  

共有8点,答出下列3-4点得满分.  

* 不能操作线程和线程API(线程API指非线程对象的方法如notify,wait)

* 不能操作AWT

* 不能实现服务器功能

* 不能对静态属性存取

* 不能使用IO操作直接存取文件系统

* 不能加载本地库

* 不能将this作为变量和返回

* 不能循环调用

 

public String toString(){  

   return this + "@" + this.hashCode();  

 

会变成

public String toString(){

    return String.valueOf(this)+"@"+String.valueOf(this.hashCode());

}

而valueOf方法又将调用toString()

/**

   public static String valueOf(Object obj){

         return (obj == null)?"null":obj.toString();

   }

toString()唯一就是不要递归 ,其他你可以输出任何内容

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值