Java面试题

[size=medium][size=large]1,在Java里面,double和float能不进行精度运算,为什么,如果不能要用什么进行运算?
答:不能进行精度运算,因为这样会损失精度,要用Java中Java.math.BigDecimal类。
----》这个好多人都会懵的,因为这个知识点考的比较小,平时不一定能用到,但是用到的时候肯定会抓破后脑勺的。呵呵。具体的请看下面:
http://blog.csdn.net/cheekis/archive/2010/02/08/5299586.aspx

2,看下面程序作出选择:

Object object[] = new Object[10];
object[0] = "123";
object[1] = 123;
object[2] = new Date();
System.out.println(object[2]);
A.编译期错误。
B.运行期错误。
C.打印错误。
D.无错误。
如果选前三项,说明理由。
答案:D。
----》 这个问题说句实话有的时候有点绕人,因为Object是一个超类,基本Java所有类都是由它哪里继承过来的,有人肯定会说,类都有存在对象,是对象类 型,基本类型int之类不是对象类型也行?这里我要说是行的,大家可以参考一个类ArrayList,我想大家都有过将int类型值直接赋给他其中一个 的,这个是可以的。

3.说出java.util.Date,Java.sql.Date,java.sql.Time,java.sql.Timestamp的区别。
答: Java.sql.Date,java.sql.Time,java.sql.Timestamp是从 java.util.Date继承过来的,在一个new Date().getTime(long类型)对象存进数据库 ,通过以上三个类取出,得到的数据不一样。
Java.sql.Date 取出的数据为这个日期的年月日的值,时分秒被舍弃了,损失了精度。
java.sql.Time 取出的数据为这个日期的时分秒的值,年月日被舍弃了,同样损失了精度。
ava.sql.Timestamp 取出的数据为这个日期的年月日 时分秒 毫秒,由于毫秒是另存,所以对它们进行比对 不会返回True,Timestamp.equals(new Date.getTime)等于false。
----》这个东西基本上我们平常都在使用,可能越是经常使用的,越是被忽略了,从而有点迷糊了,其实这四种类得到的字符串是完全不同的值。
测试类:
public class DateTest {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
java.util.Date date = new java.util.Date();
java.sql.Date date1 = new java.sql.Date(date.getTime());
java.sql.Time date2 = new java.sql.Time(date.getTime());
java.sql.Timestamp date3 = new java.sql.Timestamp(date.getTime());
System.out.println(date);
System.out.println(date1);
System.out.println(date2);
System.out.println(date3);
}

}
生成结果:
Wed Mar 03 19:40:08 CST 2010
2010-03-03
19:40:08
2010-03-03 19:40:08.484

4.列举出Request,Reponse,Session,Page/pageContext,Application的含义,作用域,生命期。
答:request主要是响应客户端的请求;作用域为客户端请求页到服务器端接收页;生命期从请求开始到接收完毕,或者请求超时关闭。
response主要是响应服务器端的请求,和request相对的;作用域为服务器端接收页或者处理页到客户端的请求页或者处理页;生命期为开始响应发送请求,客户端接收完毕,或者请求超时关闭。
page主要是指当前页面本身,作用域为当前页面,生命期为从进入当前页面到离开当前页面。
pageContext和page有一点不同,它是当前页面所有功能的集成,通过它能访问本页面其他的对象;作用域为本页面;生命期为进入当前页面到离开当前页面。
session主要是表示和存储当前页面的请求信息,作用域为整个项目,生命期为会话结束,自身时间过期失效。
application主要是实现用户之间数据共享,请求域为整个项目,生命期为项目的启动到停止。
session和application的区别:一般一个用户对应一个session,随着用户离开,session也就消失,而application不同,它是一直都存在,而且只有一个实例。
----》这些东西也挺绕人的,平时我们可能一直在用,但是一直都一知半解,只知其所然,不知其所以然。

5.看下面程序,利用EL语言取出有下划线的数据,并打印出来:
public class A
{
private static int a = 5 ;
private static B b = new B();
}
public static B
{
private static int b = 6 ;
private static int[] c = {1 ,2,3,4,5,6,7};
}
session.setAttributte(“abc”,new A());
答案:后续

5.有一张表格s_su,有三个字段age,name,score ,现在根据要求写出SQL语句:
1),根据年龄分组,选出分数score>90的分组的年龄分组和同学个数。
select age,count(*) from s_su where scoure >90 group by age;
2),根据年龄分组,选出平均分大于85的分组的年龄分组和平均分。
select age,avg(scoure) from s_su group by age having avg(scoure) >90;
3),假设这个表有100条记录,用SQL语句打印出分页记录,打印出第50-60的记录.
Mysql:select * from s_su limit 50,60;
----》这个主要考到分组和使用函数,另外使用having挑选出适合的分组。至于limit是Mysql专业函数,其他数据库不知道能不能通用,大家可以测试下。

6.假设表A有6条记录,B有4条记录,进行匹配的字段为name,看下面SQL语句给出结果:
1),select * from A left join B on A.name = B.name,最多有几条记录,最少呢?
答,最多和最少都是6条。
2),select * from A right join B on A.name = B.name,最多有几条记录,最少呢?
答,最多和最少都是4条。
3),select * from A left jion B on A.name = B.name union select * from A left jion B on A.name = B.name,最多有几条记录,最少呢?
答,最多和最少都是6条。
4), select * from A left jion B on A.name = B.name union select * from B left jion A on B.name = A.name, 最多有几条记录,最少呢?
答:最多有10条,最少有6条。
5), select * from A left jion B on A.name = B.name union all select * from A left jion B on A.name = B.name ,最多有几条记录,最少呢?
答:最多和最少都是12条。
6), select * from A left jion B on A.name = B.name union select * from B left jion A on B.name = A.name, 最多有几条记录,最少呢?
答:最多和最少都是10条。
----》 这里考到Sql语句中左联和右联,左联就是以左边作为基准,有的值保留,没有的话就为Null,右联也是如此。现在主要是union和union all的问题了,union是将相同的进行合并,不相同的向左边基准表插入,union all则是不管相同与否都是向左基准表插入。[/size][/size]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值