Java开发笔试题

上传人:jiups****uk12 文档编号:39235190 上传时间:2018-05-13 格式:DOCX 页数:12 大小:44.85KB
返回 下载 相关 举报
Java开发笔试题_第1页
第1页 / 共12页
Java开发笔试题_第2页
第2页 / 共12页
Java开发笔试题_第3页
第3页 / 共12页
Java开发笔试题_第4页
第4页 / 共12页
Java开发笔试题_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《Java开发笔试题》由会员分享,可在线阅读,更多相关《Java开发笔试题(12页珍藏版)》请在金锄头文库上搜索。

1、1.J2EE(总分 20 分。每题 2 分)1.简述 String 和 StringBuffer 的区别。String 对一串字符进行操作。不可变。一旦被创建,就不能修改它的值。StringBuffer 也是对一串字符进行操作,但是可变类。2.运行时异常(RuntimeException)与一般异常有何不同?一般异常是可捕捉到的。运行时异常是不可预知的异常。3.Sleep()和 wait()有什么区别?sleep 是线程类(Thread)的方法,导致此线程暂停执行指定时间,把执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复。调用 sleep 不会释放对象锁。wait().会释放锁4.

2、实现多线程有几种方法?三种,1.继承 Thread 类,重写 run 函数2.实现 Runnable 接口,重写 run 函数3.实现 Callable 接口,重写 call 函数5.简述线程的基本状态及状态之间的关系。Thread.ThreadState 属性提供一个位掩码,用它指示线程的当前状态。一个线程至少总是处于 ThreadState 枚举中一个可能状态,并且可以同时处于多个状态。一旦线程由于调用 Thread.Start 而离开 Unstarted 状态,则它将永远无法返回到 Unstarted 状态。同样,线程也永远无法离开 Stopped 状态。6.什么是线程同步,何如实现线程

3、的同步?当两个或多个线程需要访问同一资源时,它们需要以某种顺序来确保该资源某一时刻只能被一个线程使用的方式称为同步。要想实现同步操作,必须要获得每一个线程对象的锁。获得它可以保证在同一时刻只有一个线程访问对象中的共享关键代码,并且在这个锁被释放之前,其他线程就不能再进入这个共享代码。此时,如果还有其他线程想要获得该对象的锁,只得进入等待队列等待。只有当拥有该对象锁的线程退出共享代码时,锁被释放,等待队列中第一个线程才能获得该锁,从而进入共享代码区。7.JSP 或 Servlet 中的 forward 和 redirect 有什么区别?forward 是服务器内部重定向,程序收到请求后重新定向到

4、另一个程序,客户机并不知道;redirect 则是服务器收到请求后发送一个状态头给客户,客户将再请求一次,这里多了两次网络通信的来往。redirect 是送到客户端后再一次 request , 所以资料不被保留.8.简述 JDBC 调用数据库的基本步骤。1,加载驱动2,创建连接3,获取语句对象4,执行 sql 语句5,如果是查询,还可以使用结果集6,关闭连接7,捕捉和处理异常9.简述 Servlet 的生命周期。Servlet 被服务器实例化后,容器运行其 init 方法,请求到达时运行其 service方法,service 方法自动派遣运行与请求对应的 do 方法(doGet,doPost)

5、等,当服务器决定将实例销毁的时候调用其 destroy 方法。1.算法(总共 20 分)1.请列举几种排序算法,并用 JAVA 实现快速排序算法。(6 分)冒泡排序,快速排序,shaker 排序,堆排序。public void quick(Integer str) if (str.length 0) /查看数组是否为空_quickSort(str, 0, str.length 1);public void _quickSort(Integer list, int low, int high) if (low tmp) high;listlow = listhigh; /比中轴小的记录移到低端w

6、hile (low depth2)return depth1+1;elsereturn depth2+1;public static void main(String args) int input = 4, 2, 6, 1, 3, 5, 7,8,10 ;Tree tree = createTree(input);System.out.print(“前序遍历:“);preOrder(tree);System.out.print(“n 中序遍历:“);midOrder(tree);System.out.print(“n 后序遍历:“);posOrder(tree);3.阅读代码,并回答问题(6

7、分)Public String listToString( Vector strList) String str = new String();SortedSet set = new TreeSet();set.addAll(strList);for(Iterator iter=set.iterator(); iter.hasNext();String currStr = (String) iter.next();Str += currStr + “;”;return str;问题 1:这段代码完成什么功能?如果输入列表“To” , “SAIC” , “Welcome”,输入结果是什么?数组元

8、素拼接。TreeSet 是按字母顺序存储的,结果是:SAIC;To;Welcome;问题 2 这段代码中有什么地方有错误或者可以改善的地方吗?错误:for(Iterator iter=set.iterator(); iter.hasNext();后面缺少“)”改善:拼接到最后时,最后一个分号应去掉。1.设计模式(总分 10 分,每题 5 分)1.编程实现设计模式:Singleton(单例模式)。class Singleton private static Singleton s;private Singleton()public static Singleton getSigleton()if

9、(s=null)s=new Singleton();return s;2.画出抽象工厂(Abstract Factory)的 UML 类图。1.数据库(总分 20 分)1.SOL 查询语句的左外连接、右外连接、全外连接、内联接之间的区别。左外连接的结果集包括 LEFT OUTER 子句中指定的左表的所有行,而不仅仅是连接列所匹配的行右外连接是左向外连接的反向连接。将返回右表的所有行。全外连接返回左表和右表中的所有行。当某行在另一个表中没有匹配行时,则另一个表的选择列表列包含空值。如果表之间有匹配行,则整个结果集行包含基表的数据值。内连接使用比较运算符根据每个表共有的列的值匹配两个表中的行。2.

10、举例说明 GROUP BY 和 HAVING 子句的意义和使用方法。每个部门有多少人就要用到 GROUP BYselect DepartmentID as 部门名称,COUNT(*) as 个数 from BasicDepartment group by DepartmentID2.显示每个地区的总面积仅显示那些面积超过 1000000 的地区。3.SELECT region, SUM(area)4.FROM bbc5.GROUP BY region6.HAVING SUM(area)10000001.IN 和 EXISTS 的区别(4 分)比如 in(1,2) 就是 = 1 or = 2 的

11、一种简单写法,所以一般在元素少的时候使用IN,如果多的话就用 exists 指定一个子查询。2.编写 SQL 语句为管理岗位业务培训信息,建立 3 个表。S(S#,SN,SD,SA)S#,SN,SD,SA 分别代表学号、学员姓名、所属单位、学员年龄C(C#,CN)C#,CN 分别代表课程编号,课程名称。SC(S#,C#,G)S#,C#,G 分别代表学号,课程编号、学习成绩问题 1:使用标准嵌套 SQL 语句查询选修课程名称为“税收基础“的学员学号和姓名。Selectssc s#, ssc.snfrom cleft join( select s.*,sc.c#From scLeft join s

12、on s.s#=sc.s#) as sscon ssc.c#=c.c#where =税收基础问题 2:查询选修课程为“C2的所有学员的学号、姓名、所属单位、成绩,并按照所属单位升序、成绩降序排列。select sc.c#,s.sn,s.sd,sc.gFrom scLeft join son s.s#=sc.s#where c. c#= C2order by s.sd asc,sc.g.desc问题 3:查询所有学员选修课程的数量,列出学号、姓名、所选课程数,并按照课程数降序排列。Select sc.s#,s.sn, sc.count(select count(s#) as count,s#fr

13、om scgroup by sc.s#) scLeft join son s.s#=sc.s#order by sc.count desc问题 4:查询选修课程数超过 5 次学员的学号、姓名、所属单位、所选课程数,并按照学号升序排列。SELECTS#,SN,SD,(SELECTCOUNT(DISTINCT C#)FROM SCWhere S#=s. S#) as countFROM SWHERE S# IN(SELECT S# FROM SCGROUP BY S#HAVING COUNT(DISTINCT C#)5)1.框架(总分 30 分)JSF1.以 JSF 为例简述 MVC 设计模式。2

14、.简述 JSF 请求处理三命周期1. 恢复视图2. 应用请求的值;处理验证3. 更新模型值;处理事件4. 调用程序;处理事件5. 进行响应;处理事件3.JSF 中的 Backing Bea 是干什么用的?Backing bean 定义了页面上的 UI 组件的属性和处理逻辑。每一个 backing bean 的属性对应一个组件或者组件的值。Backing bean 同时定义了一组执行组件功能的方法,比如验证组件的数据,处理组件触发的事件,当组件activate 时处理与导航相关的操作。4.JSF 中的 Converter 是干什么用的?输入变换:在用户提交时对用户输入值进行变换输出变换:在画面显

15、示前对显示值进行变换5.JSF 中的 Validator 是干什么用的?对用户输入的数据进行验证。6.简述 Value-change Events、Action Events、Data Mooel Events、Phase Events。值改变事件,动作事件,数据模型事件,阶段事件7.JSF Request Processing Lifecycle 的六个阶段。回复画面(Restore View)套用申请值(Apply Request Values)执行验证(Process Validations)更新模型值(Update Model Values)唤起应用程序(Invoke Applicat

16、ion)绘制回应(Render Response)8.CommandButton 的 immediate 属性起什么作用?JSF 视图组件在取得请求中该取得的值之后,即立即处理指定的事件,而不再进行后续的转换器处理、验证器处理、更新模型值等流程。9.的用途将封装在内的元件作为一个元件来看待10.的用途想要放入非 JSF 元件,例如简单的模板(template)文字,那么就需要使用标签来处理。Spring1.简述依赖注入(Dependency Injeciton,DI)和控制反转(Inversion ofControl,IOC )的基本概念。依赖注入 DI 是一个程序设计模式和架构模型,一些时候也称作控制反转,尽管在技术上来讲,依赖注入是一个 IOC 的特殊实现,依赖注入是指一个对象应用另外一个对象来提供一个特殊的能力,例如:把一个数据库连接已参数的形式传到一个对象的结构方法里面而不是在那个对象内部自行创建一个连接。控制反转和依赖注入的基本思想就是把

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号