logo资料库

欣网视讯笔试题(java).doc

第1页 / 共7页
第2页 / 共7页
第3页 / 共7页
第4页 / 共7页
第5页 / 共7页
第6页 / 共7页
第7页 / 共7页
资料共7页,全文预览结束
JAVA 笔 试 题 本次笔试题时间共 60 分钟,如空间不够请在背面书写。 一. 不定向选择题(每小题 3 分,共 10 题) 1. List,Set,Map 是否继承自 Collection 接口 A. 都是 B. 都不是 C.List,Set 是 D.Set,Map 是 正确答案( C ) 2. 下面描述哪个是正确的 A. 构造器 Constructor 可被 override B. 可以继承 String 类 C. Try{}里有一个 return 语句,那么紧跟在这个 try 后的 finally{}里的 code 不会被执 行 D. 两个对象值相同(x.equals(y) == true),那么也有相同的 hash code 正确答案( CD ) 3. Abstract 的 method 是 否 可 同 时 是 static, 是 否 可 同 时 是 native, 是 否 可 同 时 是 synchronized A. 都能 B.都不能 C.可以为 static D.可以为 native 正确答案( B ) 4. 下面的程序中,temp 的最终值是什么? long temp=(int)3.9; temp%=2; A. 0 B.1 C. 2 D.3 正确答案( B ) 5. 下面的语句会产生什么样的输出? System.out.println(4&7); A. 4 B. 5 C.6 D.7 正确答案( A ) 6. 请在以下选项中选出是基本数据类型的选项( ) C.boolean D.String A.int B.byte 正确答案( ABC ) 7. 阅读下面代码: public class Test { public static void main (String args[]) { int i = 0Xfffffff5; int j = ~i;
System.out.println(“The value of j is : ”+ j); ] ] 输出 j 的结果是( ) B. 1 A. 10 正确答案是( A ) 8.阅读以下代码段 C. 14 D.-15 byte k = 3; System.out.println(k<<3); System.out.println(k>>1); 请选择输出结果( ) A.9.2 B. 24.1 C. -24.0 D.16.-1 正确答案( B ) 9. 阅读下面代码,选择执行结果; Math.round(12.367*Math.round (10.2))/Math.round (10.2); A.12.36 B.12 C.12.37 D.12.3 正确答案( B ) 10. 给出以下代码的输出结果 public class Testdata { public String getValue () { String value = “ ”; try{ value = “test1”; return value; } catch(Exception e) { e.printStackTrace(); } finally{ value = “test12” ; } return value; } public static void main(String args[]) { TestData test = new TestData(); String a = test.getValue(); System.out.println(a); } } A. test1 B.test2 C.null D.” ” 正确答案( A )
判断题,如果有错误,请指出并修正。(每小题 3 分,共 5 题) 二. 1. interface A{ Int a = 0; } class B{ int a =1; } class C extends B impleaents A { public void pX() { Systen.out.println(a); } public static void main(String[] args) { new C().pX(); } } 答案: 方法 pX()中的变量 a 有歧义,正确的写法是 A.a. 原因:在 static 方法 main 中只能引用 static 变量,而 interface 中的变量默认访问范围是 public static,但是 class 中的变量默认访问范围是 package. 2. class Data { int i = 1; } public class TestData { Data al = new Data(); final Data a2 = new Data(); final Data a21; static final Data a3 = new Data(); public static void main(String[] args) { TestData test = new TestData(); test.a21 = new Data();// (1) test.al = new Data();//(2) test.a2 = new Data();//(3) test.a3 = new Data();//(4) } }答案: 1.class TestData 中变量 a21 是 final 类型的变量,应该在声明时初始化. 2.main 方法中 test.a2, test.a21, test.a3 均为 final 类型,不能被赋值.
3. abstract class Something { private abstract String dosomethin () ; } 答案: 在抽象类中的抽象方法修饰符中只能是 public 或者 protected,不能是 private. 简答题(每小题 6 分,共 3 题) 三. 1. String s =new String(“xyz”);创建了几个 String Object? 创建了哪几个对象? 答: 创建 2 个 String Object. 字符串对象“xyz”被创建,并保存到字符串池中. 对象引用 s 所指向的对象是通过 new 创建的,其值共享字符串池中”xyz”的值. 知识扩展: 1. String a = "abc" ; String b = "def" ; String c = "abc" + "def" ; 问:上面三行创建了几个对象? 答:3 个 String Object,分别是字符串”abc”,”def”,”abcdef”. String a = “abc” ; String b = new String(“abc”); 问:上面两行创建了几个对象? 答:2 个对象,分别是字符串池中的”abc”对象,由 b 引用的通过 new 创建的 String 对象. 2. 3. String a = "abc" ; String b = "def" ; String c = "abc" + "def" ; System.out.println(c == d); 问:输出结果? 答:false
2. Sleep() 和 wait()有什么区别? 答: sleep()使当前线程陷入休眠状态. wait()使线程陷入等待状态,除非被唤醒. 知识扩展: 休眠状态的线程不释放运行资源,在休眠结束后,直接进入运行状态,而不用等待被 JVM 线程调度器再次选中.这是和等待状态的最大区别. 等待状态是一种特殊的就绪状态.使线程陷入等待状态是指暂时剥夺了线程当前所拥有 的 CPU 时间片和获取 CPU 时间片的资格,使其进入就绪状态.除非被唤醒,或者等待时间已满, 该线程将一直等待,不会被赋予 CPU 时间片.处于等待状态的线程一旦恢复执行,将从上次结 束执行时的端点处开始执行,而不是从头开始.唤醒在此对象上等待的一个线程,用 notify()方 法,唤醒在此对象上等待的所有线程,用 notifyAll()方法。 3. 接口是否可以继承接口?抽象类是否可实现(implements)接口?抽象类是否可继承具 体类(concrete class)? 答: 接口可以继承(extends)接口. 抽象类可以实现(implements)接口. 抽象类可以继承(extends)具体类. 四. 问答与编程(总分:37 分) 1.forward 和 redirect 的区别 (7 分) 答: forward 是转发请求,是服务器端的协作,转发过程没有客户端参与.转发是在同一个请求 当中,所有请求作用域的参数在转发的页面间都是有效的. redirect 是重定向,中间需要浏览器的协作.重定向是作为不同的请求来看待的,所有请求 作用域的参数在重定向到下一个页面时都会失效. 2.说出数据库连接池的工作机制是什么?(12 分) 答: 创建缓冲池对象,用于保存和管理数据库连接,并初始化若干个空闲连接。 对于一个数据库访问请求,如果缓冲池对象中有空闲连接,则直接从缓冲池中取得一个 连接;如果缓冲池对象的空闲队列中没有连接,且连接数尚未达到最大连接数,则创建一个 新的连接,返回给请求线程。 访问请求结束时,将连接放入缓冲池对象的空闲队列。如果空闲连接数大于初始空闲连 接数,则释放连接。
3. 数据库编程(18 分) 有三张表,学生表(student),学生课程表(course),学生分数表(score),请设计三 张表的结构,并实现以下要求: (1) 统计每个学生各科目平均分,要求显示学生姓名,平均分值,并筛选出平均分大于 60 的学生,显示顺序按照平均分降序排列。 (2) 写出以上功能的 sql 语句。 答: 一. 创建表结构: --创建学生信息表 create table student( id int NOT NULL AUTO_INCREMENT , name varchar(20) COMMENT '姓名', PRIMARY KEY (id) --创建课程信息表 create table course( id int NOT NULL AUTO_INCREMENT , name varchar(20) COMMENT '课程名称', PRIMARY KEY (id) --创建分数信息表 create table score( id INT NOT NULL AUTO_INCREMENT , studentId INT(20) COMMENT '学生 Id', courseId INT(20) COMMENT '课程 Id', score DOUBLE COMMENT '分数', PRIMARY KEY (id) ); ); ); 二. 查询学生平均分: SELECT b.name student , AVG(a.score) score FROM score a , student b , course c WHERE a.studentId = b.id AND a.courseId = c.id GROUP BY student ORDER BY score DESC ; 五. 编程题(20 分) 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节数截取的字符 串,但是要保证汉字不被截半个,如“我 ABC”4,应该截为“我 AB”,输入“我 ABC 汉 DEF” 6,应该输出为“我 ABC”而不是“我 ABC+汉的半个”。
/** * 按字节数取子字符串,如果最后的字节是半个汉字,则舍去,如:"good 中国", 取 5 个字节,则为"good" * @param str 原始字符串 * @param num 截取的字节数 * @return 结果字符串 * @author yangxuefeng 2009-7-4 */ public String split(String str , int byteNum) throws Exception{ //入参校验 if(null == str || 0 == str.trim().length()){ throw new Exception("输入参数:字符串不能为空") ; } if(byteNum <= 0){ throw new Exception("输入参数:字节数必须大于 0") ; } //将字符串转换为字节数组 byte array [] = str.getBytes(); if(byteNum > array.length){ throw new Exception("输入参数:字节数不能大于"+array.length) ; } //汉字字节长度 int cnByteNum = 0 ; //累计汉字字节数 for (int i = 0; i < byteNum; i++) { if (array[i] < 0) {//汉字字节 ++ cnByteNum; } } //如果汉字字节长度不是 2 的倍数,则舍去一个字节 int result = (cnByteNum % 2 == 0)?byteNum:byteNum-1; return new String(array, 0, result); } 算法题: 任取 1 到 13 数字中的 4 个数字(不重复),判断值相加是否等于 24,写出思路即可。
分享到:
收藏