1, 在java中的一个类,方法和变量被声明为final类型,分别表示了什么意思?
答:final声明一个类表示这个类不能被继承,属于顶级类
final声明一种方法是把方法锁定,以防任何继承类修改它的含义
final声明一种变量对于一个final变量,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改;如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象。
2,请简单描述java中值传递和引用传递的区别。
值传递:(形式参数类型是基本数据类型):方法调用时,实际参数把它的值传递给对应的形式参数,形式参数只是用实际参数的值初始化自己的存储单元内容,是两个不同的存储单元,所以方法执行中形式参数值的改变不影响实际参数的值。
引用传递:(形式参数类型是引用数据类型参数):也称为传地址。方法调用时,实际参数是对象(或数组),这时实际参数与形式参数指向同一个地址,在方法执行中,对形式参数的操作实际上就是对实际参数的操作,这个结果在方法结束后被保留了下来,所以方法执行中形式参数的改变将会影响实际参数。
3,数组有没有length()这个方法?String有没有length()这个方法?
数组中没有length()这个方法,有length这个属性。String有length()这个方法。
4,请简单描述Overload和Override的区别,Overloaded的方法是否可以改变返回值的类型?
方法的重写overriding和重载overloading是Java多态性的不同表现。重写overriding是父类与子类之间多态性的一种表现,
重载overriding是一个类中多态性的一种表现。如果在子类中定义某方法与父类有相同的名称和参数,我们说该方法被重写
(overriding)。子类的对象使用这个方法时,将调用子类中的定义,对他而言,父类中的定义如同被"屏蔽"了。如果在一个类
中定义了多个同名的方法,他们或有不同的参数个数或有不同的参数类型,则称为方法的重载(overloading).overloaded方法
是乐意改变返回值的类型。
5,try{}里有一个return语句,那么紧跟在这个try后的finally{}里的code会不会被执行,什么时候执行,在return前还是后。
finally里的代码会执行,在return之前执行。
6,请简单描述集合中List,Map,Set有什么区别?
Set 和List 都继承了Collection,Map不继承Collection,但他继承HashMap,HashTable.
7,sleep()wait()有什么区别?
1). 这两个方法来自不同的类,sleep方法属于Thread,wait方法属于Object。
2). 最主要是sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法。
3). wait, notify和notifyAll只能在同步控制方法(synchronized)或者同步控制块里面使用,而sleep可以在任何地方使用。
4). sleep必须捕获异常,而wait,notify和notifyAll不需要捕获异常
8,编写一个可以编译的泛型的方法。
public class Fan<T> {
private T ob; //定义泛型成员变量
public Fan(T ob) {
this.ob = ob;
}
public T getOb() {
return ob;
}
public void setOb(T ob) {
this.ob = ob;
}
public void showTyep() {
System.out.println("T的实际类型是: " + ob.getClass().getName());
}
}
public class FanXing {
public static void main(String args){
//定义泛型类Gen的Integer
Fan<Integer> intOb = new Fan<Integer>(88);
intOb.showTyep();
int i =intOb.getOb();
System.out.println("value= "+i);
//定义泛型类Fan的String版本
Fan<String> strOb = new Fan<String>("I am zhongwenyong");
strOb.showTyep();
String s = strOb.getOb();
System.out.println("value ="+s);
}
}
9,你用过java反射机制么?我们为何需要反射?
用过,在stuts框架,反射机制指的是程序在运行时能够获取自身的信息。在java中,只要给定类的名字,
那么就可以通过反射机制来获得类的所有信息。
10,jsp有哪些内置对象?作用分别是什么?
JSP共有以下9种基本内置组件
1、request对象 客户端请求,此请求会包含来自GET/POST请求的参数通过它才能了解到客户的需求,然后做出响应。
2、response对象 响应客户请求的有关信息
3、session对象 它指的是客户端与服务器的一次会话,从客户端连到服务器的一个WebApplication开始,直到客户端与服务器断开连接为止。
4、out对象 它是JspWriter类的实例,是向客户端输出内容常用的对象
5、page对象 它是指向当前JSP页面本身,有点象类中的this指针,它是 java.lang.Object类的实例
6、application对象 它实现了用户间数据的共享,可存放全局变量。它开始于服务器的启动,直到服务器的关闭
7、exception对象 它是一个例外对象,当一个页面在运行过程中发生了例外,就产生这个对象。
8、pageContext对象 它提供了对JSP页面内所有的对象及名字空间的访问
9、config对象 它是在一个Servlet初始化时,JSP引擎向它传递信息用的
11,JAVA SERVLET APL中forward()与redirect()的区别?
forward()属于服务器转发行为,redirect()属于客服端的重定向行为。在两种情况都可以使用的情况下,应该先考虑forward();
12,spring最核心的是哪个部分?请简单描述Spring MVC的工作流程?
13,猴子吃桃问题,猴子第一天摘下若干个桃子,当即吃了一半,还不够隐,又多吃了一个,第二天又将剩下的桃子吃掉一半,
又多吃了一个,以后每天早上都吃了前一天剩下的一半零一个,到第10天早上想再吃时,见只剩下一个桃子了,求第一天共摘
了多少。
第一天摘了1536个
java代码
public class Taozi {
public static void main(String args[]){
//建立数组
int []sum=new int[10];
//第十天桃子的剩余量
sum[9]=1;
for(int i=8;i>=0;i--){
sum[i]=(sum[i+1]+1)*2;//桃子每前一天数的等于现在桃子数加1在乘以2
}
System.out.println("第一天的桃子数为"+sum[0]);
}
}
14,问题:对于一下程序代码;
Socket socket = new Socket();//第一行
SocketAddres remoteAddr1 = new InetSocketAddress("localhost",8000);//第二行
SocketAddres remoteAddr2 = new InetSocketAddress("localhost",8001);//第三行
socket.connect(remoteAddr1,60000);//第四行
socket.connect(remoteAddr2,60000);//第五行
下面那些说法是正确的?
-a)以上程序代码可以顺利编译和运行通过。不正确
-b)第一行程序代码创建了一个与本地匿名端口绑定的Socket对象。正确
-c)第一行程序代码创建的Socket对象没有与任何服务器建立连接,并且没有绑定任何本地端口。不正确
-d)第五行程序代码会运行出错,因为一个Socket对象只允许建立一次连接。不正确
-e)第四行程序代码使Socket对象与一个服务器建立连接,并且绑定一个本地匿名端口。正确
15,编程题,写一个Sington出来
private static SingleTonPattern stp;
//返回的是对象
public static SingleTonPattern getIntance(){
if(stp == null){
stp = new SingleTopPattern();
}
return stp;
}
16,用一条SQL语句,查询出每门课大于80分的学生姓名(假设表名为table)
name course score
张三 语文 81
张三 数学 75
李四 语文 76
李四 数学 90
王五 语文 81
王五 数学 100
select * from user where result>80 group by userName
17,有三个表,如果学生缺考,那么在成绩表中就不存在这个学生的这门课程成绩的记录,写一段SQL语句,检索出每个学生缺考的科目
A学生表(student)
字段1 学生号(s_id)
字段2 学生号(s_name)
B 科目表(course)
字段1 科目号(c_id)
字段2 科目名(c_name)
C 成绩表(grade)
字段1 成绩号(g_id)
字段2 学生号(s_id)
字段3 科目号(c_id)
字段4 成绩(score)
select * from students join course left join grade on students.s_id=grade.s_id and course.c_id=grade.c_id where grade.score is null;