据说,如果你能独立完成(不用看资料,不借助调试)回答在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()唯一就是不要递归 ,其他你可以输出任何内容