论坛首页 Java企业应用论坛

Java面试题

浏览 5065 次
锁定老帖子 主题:Java面试题
该帖已经被评为隐藏帖
作者 正文
   发表时间:2011-08-24  

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则是不管相同与否都是向左基准表插入。

   发表时间:2011-08-24  
应届生题,鉴定完毕
0 请登录后投票
   发表时间:2011-08-24   最后修改:2011-08-24
为什么iteye这么多误导人的帖子。
LZ, 下次再碰到第一题如果答案跟帖子上一样的话就问问出题人:
   你知道java里面有strictfp这个关键字吗? 你懂strictfp吗?
0 请登录后投票
   发表时间:2011-08-24  
BigDecimal的确不能解决问题,都是我当初没有验证下,就贴出来了,惭愧呀,不过你说还是没有见过。。。
0 请登录后投票
   发表时间:2011-08-24   最后修改:2011-08-24
第二题1.4下会编译不过
0 请登录后投票
   发表时间:2011-08-24  
弱弱的问下楼主,这是哪得面试题啊?
0 请登录后投票
   发表时间:2011-08-24  
eye的帖子质量咋这么水了呢?这样的帖子都能在首页,真是让人伤心失望啊
0 请登录后投票
   发表时间:2011-08-25  
object[1] = 123;
这里是不是因为 java进行自动封箱的缘故?
0 请登录后投票
   发表时间:2011-08-25  
ludatong110 写道

1,在Java里面,double和float能不进行精度运算,为什么,如果不能要用什么进行运算?
答:不能进行精度运算,因为这样会损失精度,要用Java中Java.math.BigDecimal类。



 因为爱,所以爱。。。

0 请登录后投票
   发表时间:2011-08-25  
..第二题你让用JRE1.3的咱情何以堪啊..
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics