java开发测试题

来源:互联网 发布:程序员历年真题 编辑:程序博客网 时间:2024/06/04 18:11

单项选择题(15分)
1.如果try()里有一个return语句,那么紧跟在这个try()后的finally()里的code会不会(一定)执行,什么时候执行,在return前还是后?()
A.不会执行 B.会执行,在retutn前执行 C.会执行,在return后执行
try{
xxxxx;
System.exit(0);
//return true;
} catch(Exception e){

} finally{
yyyy
}

2.下列代码的执行结果是( )
1.public class Example {
2. public static void main(String[] args) {
3. List list = new ArrayList();
4. list.add(“a”);
5. list.add(“b”);
6. list.add(“c”);
7. List intList = list;
8. for (int i = 0; i < list.size(); i++) {
9. System.out.println(intList.get(i));
10. }
11. }
12.}
A. 第7行编译错误,因为列表的泛型类型不同
B. 编译成功,运行时在第9行出现类型转换错误
C. 输出a b c
D. 编译成功,无任何输出

3.表达式3/6.0*5的计算结果是?()
A.0 B.3 C.2.5 D.以上都错误

4.构造函数有返回值?()
A.正确 B.错误

5.以下哪个针对默认无参构造器描述是正确的?( )
均是public构造器
均无访问修饰符
均与所属类访问修饰符一致
由编译器决定

6.下面数据结构中,属于非线性的是?()
A.线性表 B.树 C.队列 D.堆栈

7.下面关于Hibernate的说法,错误的是( )
Hibernate是一个“对象-关系映射”的实现
Hibernate是一种数据持久化技术
Hibernate是JDBC的替代技术
使用Hibernate可以简化持久化层的编码

8.在Hibernate关系映射配置中,inverse属性的含义是( )
定义在节点上,声明要负责关联的维护
声明在集合节点上,声明要对方负责关联的维护
定义在节点上,声明对方要负责关联的维护
声明在集合节点上,声明要负责关联的维护

9.当Spring容器启动后,需要通过ApplicationContext的_方法获取对象。( )
getObject
getData
getBean
getContext

10.“有些好货不便宜,因此,便宜不都是好货”,与以下列哪项推理作类比说明以上推理不成立()
A 湖南人不都爱吃辣椒,因此,有些爱吃辣椒的不是湖南人
B. 有些人不自私,因此,人并不自私
C. 有些南方人不是广东人,因此,广东人不都是南方人
D. 金属都导电,因此导电的都是金属

11.下面代码的执行效果是( )。
String hql=“from Student s order by s.score desc”;
Query query=session.createQuery();
query.setFirstResult(0);
query.setMaxResult(5);
return query.list();
A. 返回分数最高的5个学生 B.返回分数最高的6个学生
C.返回分数最低的5个学生 D.返回分数最低的6个学生

12.下面哪个是Spring AOP中的环绕通知?( )
@Before
@AfterReturning
@Around
D.@AfterThrowing

13.java I/O程序设计中,下列描述正确的是
A. OutputStream用于写操作
B. InputStream用于写操作
C. I/O库不支持对文件可读可写API

14.在访问Servlet时,在浏览器地址栏中输入的路径是在( )地方配置的
A<servlet-name>
B.<servlet-mapping>
C.<uri-pattern>
D.<url-pattern>

15.以下哪个标签实现了java switch功能()
A. B. C. D.

二、多选题(10分)
1.设i、j为int型变量名,a为int型数组名,以下选项中,正确的赋值语句是?()
A.i=i+2; B.a[0]=7; C.i++ - –j; D.a(0)=66;

2.结构化程序设计的基本流程控制结构()
A.顺序结构 B.分支结构 C.逻辑结构 D.循环结构

3.以下说法正确的是?()
A.&是位运算符 B.&是布尔逻辑运算符
C.&&是位运算符 D.&&是布尔逻辑运算符

4.以下哪些继承自Collection接口?()
A.List B.Set C.Map D.以上都是

5.以下说法正确的是?()
A.可以创造abstract类的实例
B.不能有抽象构造函数
C.不能有抽象静态方法
D.接口中所有的方法都是抽象的
E.不可以继承String类

三、数据库(20分)
建一个员工信息表employee,表中id(员工代码)、sex(员工性别)、name(姓名)、departmentid(部门代码)、address(住址)、birthdate(生日)、postcode(邮编)、salary(薪水)、work date(入职日期)、remark(备注信息)。其中postcode、remark可以为空,薪水需为number类型,入职日期为date型。以员工代码作为主键。(2分)

create table employee (    id char(4) primary key,    sex char(1) not null,    name varchar(20) not null,    dempartmentid int not null,    address varchar(50) not null,    birthdate date not null,    postcode char(6),    salary number not null,     workDate date not null,    remark text);

插入两条记录,id分别为0023、1023、其余信息自己编造。(2分)

insert into employee values('0023', '男', '张三', 1, '东莞市什么街', '2017-5-6', null, 12343, '2017-6-9', null), values('1023', '男', '张三', 1, '东莞市什么街', '2017-5-6', null, 12343, '2017-6-9', null);

统计每个部门的男女人数,按照部门代码排序。(2分)

select departmentid, sex, count(sex) group by departmentid,sex order by departmentid

创建入职日期(work date)索引employee_idx.(2分)

create index employee_idx on employee(workDate);

使前面所做的修改、删除生效(假定数据库设置不是自动生效(2分))

commit

6.有4个表:(每小题2分)
A、Student(S#,Sname,Sage,Ssex)学生表 B、Course(C#,Cname,T#)课程表
C、SC(S#,C#,score)成绩表 D、Teacher(T#,Tname)教师表
查询“001”课程比“002”课程成绩高的所有学生的学号:

select s1.s# from sc s1, sc s2 where s1.s#=s2.s# and s1.c#='001' and s2.c#='002' and s1.score>s2.score

2)查询平均成绩大于60分的同学的学号和平均成绩

select stu.s#, avg(score) as 'avg' from student stu, course c, score s where stu.s#=s.s# and s.c#=c.c# group by stu.s# having avg>60

3)查询所有同学的学号,姓名、选课数、总成绩

select stu.s#, stu.sname, count(c#) as '选课数', sum(score) as '总成绩' from student stu, course c, score s where stu.s#=s.s# and s.c#=c.c# group by stu.s#

4)查询姓“李”的老师的个数(司,司徒,司马)

select count(*) from teacher t where t.tname like '李%'

查询没学过“叶平”老师课的同学的学号、姓名

select distinct(stu.s#), stu.sname from student stu, course c, sc s, teacher t where stu.s#=s.s# and s.c#=c.c# and c.t#=t.t# and t.tname!='叶平'

四、问答题(每题5分,共30分)
请描述hashmap及另外2种你所知道的数据结构
hashmap使用键值对来存储数据,可以通过键名获取相应的键值,它会为每一个存储的数据分配一个hash码,按照此hash码的顺序来存储数据。其他的数据结构还有hashSet和ArrayList等

2.XML解析技术有DOM、SAX等,说说你对这两种解析技术的理解。
DOM解析技术会将需要解析的XML文档整个读取到内存里,如果文档比较大,那么使用DOM解析的速度就会比较慢。
SAX解析技术则会按照需要解析的节点内容进行加载。但SAX技术只能读取XML文档的内容,而不能对此文档做出修改
如果XML文档相对较小,使用DOM解析比较合理。如果文档较大,使用SAX技术则相对较好

3.Main函数的输出结果是:
父类:
package test;
public class FatherClass{
public FatherClass(){
System.out.println(“FatherClass Create”);
}
}
子类:
package test;
import test.FatherClass;
public class ChildClass extends FatherClass{
public ChildClass(){
System.out.println(“ChildClass Create”);
}
public static void main(String[] args){
FatherClass fc=new FatherClass();
ChildClass cc=new ChildClass();
}
}

FatherClass Create
FatherClass Create
ChildClass Create

4.方法的重载Overload 和重写(覆盖)Override有什么区别?
面向对象编程的多态通过重写和重载实现。
重写是子类重写父类的方法,要求方法名称、返回类型和参数要一致。子类的访问限制不能比父类更严格,抛出的异常不能比父类的范围更加大
重载是同一个类里,定义相同名字的方法,要求方法的参数定义不能一样。返回类型、访问修饰符都可以不一样

5.描述Spring的IOC

Ioc—Inversion of Control,即“控制反转”,不是什么技术,而是一种设计思想。在Java开发中,Ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制。

6.已知两个int整数变量x,y,均存有整数值,要求编程实现交换两个变量存储的整数值。(例如:原来是x=5,y=2 交换后x=2,y=5)

int x = 2;int y = 5;int temp = x;x = y;y = temp;
x = x + y;y = x - y;x = x - y;

五、编程题(请提交电子档答案)(每题5分,共25分)
1.写一个方法,实现字符串的反转,如:输入abcd,输出dcba。

String str = 'abcd';public void showString(String str){     for (int i=str.length-1; i>=0; i++){           System.out.println(str.indexAt(i));     }}public String reverseString(String str){     String temp = "";     for (int i=str.length-1; i>=0; i++){           temp  += str.indexAt(i));     }     return temp;}public String reverseString2(String str){     char[] cs = str.toCharArray();     for (int i=0,j=str.length-1; i<j; i++,j--){           char c = cs[i];    cs[i] = cs[j];    cs[j] = c;     }     return String.valueOf(cs);}

2.用一个你认为效率最高的算法,实现对一个int[10]的数组进行排序

//如果数值很多,排序速度最快的是快速排序//如果数值很少, 排序速度基本没有差别, 但相对来讲,冒泡排序更加合理public void sort(int arr[]){    int temp;    for (int i=1; i<arr.length; i++){         for (int j=0; j<i ; j ++){               if (arr[j]<arr[j+1]){                     temp = arr[j];                     arr[j] = arr[j+1];                     arr[j+1] = temp;               }         }    }}

3.假设192.168.8.8上有数据库cloudsino,用户名test,密码test,有设备表server,包括ID,status,oobip,productip,sn,name字段。
请写一个程序读取数据库里server表的数据,代码应该具备以下功能;
* 获取数据库链接
* 执行一段SQL(可以是插入或者查询)
* 关闭数据库链接

String url = "jdbc.mysql://127.0.0.1/cloudsino?characterEncoding=utf-8";String driver = "com.mysql.jdbc.Driver";String username = "root";String password = "123";String sql = "select * from server where id=?";Connection conn = null;PreparedStatement ps = null;ResultSet rs = null;try {    Class.forName(driver);    conn = DriverManage.getConnection(url, username, password);    ps = conn.preparedStatement(sql);      ps.setInt(1000);       rs = ps.execute();    List<Server> list = new ArrayList<Server>();    while(rs.next()){//ID,status,oobip,productip,sn,name        Server server = new Server();        server.setObject(rs.getInt("id"));    server.setObject(rs.getString("status"));    server.setObject(rs.getInt("oobip"));    server.setObject(rs.getInt("productip"));    server.setObject(rs.getString("sn"));    server.setObject(rs.getString("name"));    list.add(server);    }} catch(Excetion e){} finally {   if (rs != null){       rs.close();    }   if (ps != null){       ps.close();    }   if (conn != null){       conn.close();    }}

4.请写一个程序实现singleton设计模式

//要将构造方法私有化//定义一个本类的静态对象//定义一个方法获取上面的属性懒汉式:public class Singleton{    private Singleton(){}    private static Singleton singleton = null;    public Singleton getSingleton(){         if (singleton == null) {              singleton = new Singleton();         }         return singleton;    }}饿汉式:public class Singleton {    private Singleton(){}    private static Singleton singleton = new Singleton();    public Singleton getSingleton(){         return singleton;    }}

5.在HTML中,有一个城市的下拉列表框的代码为:
<select id=”country”>
<option value=’1’>广东<option>
<option value=’2’>海南<option>
</select>
请用javaScript分别写出如何得到当前选中城市的value和名称(名称是广东和海南)

var oSel = document.getElementById("country");alert(oSel.value);alert(oSel.options[oSel.selectedIndex].text);

六、附加题(请在背面作答或者另附纸作答)(20分)
1.1-100共一百个自然数,放入一个99个元素的数组a[99].要求写出一个尽量简单的方案,找出没有被放入数组的这个数

int[] arr = new int[99];Arrays.sort(arr);for (int i=1;i<=100;i++){    if (i!=arr[i-1]){        System.out.println(i + "没有被放进数组");    }}

int sum = (1+100)*(100/2);int total = 0;for (int i=0;i<99;i++){    total += a[i];}System.out.println((sum - total) + "没有被放进数组");
原创粉丝点击