技术笔试面试题(下)

【题目编号】 jsd-02-201-5017
【知 识 点】 数据库-Oracle SQL-级联删除、左外连接、SQL基础
【难易程度】 50
【题目描述】
STOMERS表,字段为:ID:(非空,主键)bigint,NAME:(非空)varchar,AGE:int类型;创建ORDERS表,字段为:ID:(非空,主键,)bigint,ORDER_NUMBER:(非空)varchar,PRICE:double,CUSTOMER_ID :(外键)bigint,设置级连删除;

  1. 使用左外连接查询,ORDERS 和 CUSTOMERS 表,
  2. delete from tablea & truncate table tablea的区别
    【正确答案】
    create table CUSTOMBERS(
    ID bigint not null,
    NAME varchar(15),
    AGE int,
    primary key (ID)
    );
    create table ORDERS(
    ID bigint not null,
    ORDER_NUMBER varchar(15) not nulll,
    PRICE double precision,
    CUSTOMER_ID bigint,
    primary key(ID),
    );
    alter table ORDERS add constraint FK_CUSTOMER foreign key (CUSTOMER_ID) references CUSTOMERS(ID) on delete cascade;

select c.ID, o.CUSTOMER_ID,c.NAME, o.ID ORDER_ID,ORDER_NUMBER from CUSTOMERS c leftouter join ORDERS o no c.ID=o.CUSTOMER_ID;
2) truncate 语句执行速度快,占资源少,并且只记录页删除的日志;
delete 对每条记录的删除均需要记录日志
【解释】无

【题目编号】 jsd-02-201-5018
【知 识 点】 数据库-Oracle SQL-高级查询-子查询、关联查询-内连接
【难易程度】 30
【题目描述】表1:book表,字段有id(主键),name (书名);
表2:bookEnrol表(图书借出归还登记),字段有id,bookId(外键),dependDate(变更时间),state(1.借出 2.归还)。
id name
1 English
2 Math
3 JAVA
(表1)
id bookId dependDate State
1 1 2009-01-02 1
2 1 2009-01-02 2
3 2 2009-01-14 1
4 1 2009-01-17 1
5 2 2009-02-14 2
6 2 2009-02-15 1
7 3 2009-02-18 1
8 3 2009-02-19 2
(表2)
1) 要求查询结果应为:(查询出被借出的书和被借出的日期)
id name dependDate
1 English 2009-01-17
2 Math 2009-02-15
2) 第二个表是用来登记的,不管你是借还是还,都要添加一条记录。
请写一个SQL语句,获取到现在状态为已借出的所有图书的相关信息。
【正确答案】
1)
/方案一/
select a.id,a.name,b. dependDate from book a, bookEnrol b where
a.id=b.bookId
and
b. dependDate in(select max(dependDate) from bookEnrol group by bookId )
and b.State =1

/方案二/
select k.id,k.name,a. dependDate
from bookEnrol a, book k
where a.id in (select max(b.id) from bookEnrol b group by b.bookId)
and a.state = 1
and a.bookId = k.id;
2)
select book.id,book.name,max(dependDate)
from book inner join bookEnrol on book.id=bookEnrol.bookid AND booker.state=1
group by book.id ;
【解释】无

【题目编号】 jsd-02-201-5019
【知 识 点】 数据库-Oracle SQL-SQL基础-分组
【难易程度】 10
【题目描述】
查询语句排名问题:
名次 姓名 月积分(char) 总积分(char)
1 WhatIsJava 1 99
2 水王 76 981
3 新浪网 65 96
4 牛人 22 9
5 中国队 64 89
6 北林信息 66 66
7 加太阳 53 66
8 中成药 11 33
9 西洋参 25 26
10 大拿 33 23
如果用总积分做降序排序,因为总积分是字符型,所以排出来是这样子(9,8,7,6,5…),要求按照总积分的数字大小排序。
【正确答案】
select * from tablename order by cast(总积分 as int) desc
【解释】无

【题目编号】 jsd-02-201-5020
【知 识 点】 数据库-Oracle SQL-SQL基础、高级查询
【难易程度】 40
【题目描述】
按要求写 SQL 语句:根据集团成员培训业务,建立以下三张表:
S (S#,SN,SD,SA) S#,SN,SD,SA 分别代表学号、学员姓名、所属单位、学员年龄
C (C#,CN ) C#,CN 分别代表课程编号、课程名称
SC ( S#,C#,G ) S#,C#,G 分别代表学号、所选修的课程编号、学习成绩 要求如下:
1)使用标准 SQL 语句查询成员名单中所属单位叫“技术一部”的人员总数及平均年龄;
2)使用标准的 SQL 语句更新学号为‘S#1’的姓名为“Mike”;
3)使用嵌套语句查询选修课程编号为‘C2’的学员姓名和所属单位;
4)使用嵌套语句查询不选修课程编号为‘C5’的学员姓名和所属单位;
5)查询选修课程超过 5 门的学员学号和所属单位;
【正确答案】

  1. select count(SN),avg(SA) from S where SD=‘技术一部’;
  2. update S set SN=‘Mike’ where S#=‘S#1’;
  3. select SN,SD from S where S#=(select S# from SC where C#=‘C2’);
  4. select SN,SD from S where S# not in(select S# from SC where C#=‘C5’);
  5. select S#,SD from S where S#=
    (select S# from SC group by S# having count(S#)>=5);
    【解释】无

【题目编号】 jsd-02-201-5021
【知 识 点】 数据库-Oracle SQL-关联查询
【难易程度】 50
【题目描述】
请根据以下四张表(其中 course_t 表的 teacher_id 字段是 teacher_t 表的 id 字段的外键引用), 拼写出相应的 sql 语句(oracle 语法)。
学生表:students_t
id name sex
001 赵学生 Male
002 钱学生 Male
003 孙学生 Male
004 李学生 Female
005 周学生 Female
? ? ?

教师表:teacher_t
id name sex
001 吴老师 Male
002 郑老师 Male
003 王老师 Male
004 刘老师 Female
005 张老师 Female

课程表:course_t
id name credit teacher_id
001 语文 3 001
002 数学 3 002
003 英语 4 003
004 物理 3 004
005 化学 2 005
006 政治 1 001
007 生物 1 005
008 计算机 2 005

选课表:student_course_t
id student_id course_id
001 001 001
002 001 002
003 001 003
004 002 001
005 002 007
? ? ?
1)统计每个学生选修的学分,并按学分降序排序
2)统计每个学生选修的所有课程和对应的任课老师;并按学生 Id 和课程 Id 排序
3)统计所有学生、所有课程和所有任课老师的对应关系;并按学生 Id 和课程 Id 排序
【正确答案】
1)select sc.student_id,count(c.credit)
from students_t s, course_t c, student_course_t sc
where s.id=sc.student_id and c.id=sc.course_id group by sc.student_id order by
count(c.credit);
2) select s.name as s_name,c.name as c_name ,t.name as t_name from students_t s, course_t c, student_course_t sc,teacher_t t
where s.id=sc.student_id and c.id=sc.course_id and t.id=c.teacher_id order by s.id,c.id;
3)与 2)相同
【解释】无

【题目编号】 jsd-02-201-5022
【知 识 点】 数据库-Oracle SQL-SQL基础-基本查询语句
【难易程度】 10
【题目描述】
已有“成绩”如下表所示:
学号 课程号 分数
S1 C1 80
S1 C2 75
S2 C1 null
S2 C2 55
S3 C3 90
1) 执行 SQL 语句:Select Count(学号)From 成绩 Where 分数〉60后的结果是什么?
2)请写出 SQL 语句来进行查询“成绩”表中学号为 S1、课程号为 C2 的学号和分数
【正确答案】
1)统计分数超过 60 的学生总数。
2)select 学号,分数 from 成绩 where 学号=‘S1 and 课程号=‘C2’;
【解释】无

【题目编号】 jsd-02-201-5023
【知 识 点】 数据库-Oracle SQL-索引
【难易程度】 20
【题目描述】
SAL 是 Product 表中的索引列,请优化如下 SQL 语句,并简述原因。原语句:
SELECT*
FROM Product
WHERE SAL * 12 〉25000;
【正确答案】
Select * from product where sal>(25000/12);
【解释】无
WHERE 子句中,如果索引列是函数的一部分.优化器将不使用索引而使用全表扫描.

【题目编号】 jsd-02-201-5024
【知 识 点】 数据库-Oracle SQL-SQL基础-分组
【难易程度】 20
【题目描述】
有一张表,字段有用户名、口令及备注,请用 SQL 选择出用户名和口令完全相同的记录(应包括用户名和数量的出现次数)
T_USER(USER_NAME,PASSWORD)
显示
USER_NAME COUNT() QWE 4
WER 5
【正确答案】
select user_name,count(
) from t_user group by user_name,password;
【解释】无

【题目编号】 jsd-02-201-5025
【知 识 点】 数据库-Oracle SQL-关联查询-子查询
【难易程度】 40
【题目描述】
有一张表,T_MONEY,字段有 ID,FEE,请用 SQL 语言选择出 FEE 值为前三条记录。
T_MONEY(ID,FEE)
显示
ID FEE
2 100
1 90
2 80
【正确答案】
Select Id,fee from (Select id,fee from t_money order by fee desc) where rownum<=3;
【解释】无

【题目编号】 jsd-02-201-5026
【知 识 点】 数据库-Oracle SQL-高级查询-子查询、排序函数-RUWNUMBER
【难易程度】 40
【题目描述】
table_name temp
Id name
1 a
2 b
3 a
4 a
结果为
Id name
1 a
2 b
写出 sql 语句。
【正确答案】
select rownum as id , name from(select distinct name from temp);
【解释】无

【题目编号】 jsd-02-201-5027
【知 识 点】 数据库-Oracle SQL-SQL基础-聚合函数
【难易程度】 50
【题目描述】
已知原表(t_salary)
year salary
2000 1000
2001 2000
2002 3000
2003 4000
先要实现显示结果(salary 为以前的工资和)
year salary
2000 1000
2001 3000
2002 6000
写出 sql 语句。
【正确答案】
select t.year, sum(t.salary) over (order by t.year) as sum_salary from salary_t t;
【解释】无

【题目编号】 jsd-02-201-5028
【知 识 点】 数据库-Oracle SQL-SQL基础-表操作
【难易程度】 60
【题目描述】
有两个表 A 和 B,均有 key 和 value 两个字段,如果 B 的 key 在 A 中也有,就把 B 的 value 换为 A中对应的 value。这道题的 SQL 语句怎么写?
【正确答案】
merge into A a using B b
on (a.key=b.key) when matched then update set a.value=b.value
【解释】无

【题目编号】 jsd-02-201-5029
【知 识 点】 数据库-Oracle SQL-SQL基础-表操作、SQL基础-聚合函数
【难易程度】 30
【题目描述】
创建一张数据表,并插入如下数据。
购物人 商品名称 数量
A 甲 2
B 乙 4
C 丙 1
A 乙 2
B 丙 5
1)写出创建表和插入内容的 sql 语句
2)写出 sql 语句使其产生如下结果
购物人 商品甲 商品乙 商品丙
A 2 2 Null
B Null 4 5
C Null Null 1
【正确答案】
create table tb_order( customer varchar2(20), product_name varchar2(20), quantity number(2) )
Insert into tb_order(customer,product_name,quantity)values(‘A’,’甲’,2);
Insert into tb_order(customer,product_name,quantity)values(‘B’,’乙’,4);
Insert into tb_order(customer,product_name,quantity)values(‘C’,’丙’,1);
Insert into tb_order(customer,product_name,quantity)values(‘A’,’甲’,2);
Insert into tb_order(customer,product_name,quantity)values(‘B’,’乙’,5);

2)select customer “购物人”, sum(decode(product_name,‘甲’,quantity,0)) “商品甲”, sum(decode(product_name,‘乙’,quantity,0)) “商品乙”, sum(decode(product_name,‘丙’,quantity,0)) “商品丙” from tb_order group by customer;
【解释】无

【题目编号】 jsd-02-201-5030
【知 识 点】 数据库-Oracle SQL-关联查询-等值连接
【难易程度】 20
【题目描述】
有如下两张表:部门表和职员表,每个职员都属于一个部门,表结构如下:
Dept 表
Deptno Deptname
? ?
Emp 表
Empno Empname Deptno
? ? ?
请使用 SQL 语句查询每个部门有多少职员,要求查询结果包含两例(部门名称,人数)?
【正确答案】
select d.deptname,count(*) from dept d,emp e where d.deptno=e.deptno
group by d.deptno,d.deptname;
【解释】无

【题目编号】 jsd-02-201-5031
【知 识 点】 数据库-Oracle SQL-关联查询-内连接、等值连接
【难易程度】 50
【题目描述】
业务场景:存在下面的表及记录
GOODS(进货表)
GOODSID(主键) GOODSNAME MEMO
1 青霉素
2 西瓜霜
3 创可贴
4 西洋参
SU(进货表)
GOODSID(主键) SUQTY
1 60
2 70
SA(销售表)
GOODSID(主键) SAQTY
3 80
4 90
要求一:进货记录,给出 SQL 达到以下结果
GOODSID(主键) GOODSNAME SUQTY
1 青霉素 60
2 西瓜霜 70
3 创可贴 0
4 西洋参 0
要求二:进销对比,给出 SQL 达到以下结果
GOODSID(主键) GOODSNAME SUQTY SAQTY
1 青霉素 60 0
2 西瓜霜 70 70
3 创可贴 0 80
要求三:将 GOODS.MEMO 更新为[进货数量 SU.SUQTY]
【正确答案】
1)select g.goodsid,g.goodsname,s.quqty
from goods g inner join su s on g.goodsid=s.goodsid;
2 ) select g.goodsid,g.goodsname,s.quqty,a.saqty
From goods g, su s,sa a on g.goodsid=s.goodsid and g.goodsid=a.goodsid;
3)update goods set demo=(select s.suqty from su s where s.goodsId=goods.goodsId)
【解释】无

【题目编号】 jsd-02-201-5032
【知 识 点】 数据库-Oracle SQL-SQL基础-表操作、SQL基础-聚合函数、关联查询-内连接
【难易程度】 50
【题目描述】
表结构:

  1. 表名:apply
    字段(字段名/类型/长度):
    applyno varchar 8;//申请单号(关键字)
    applydate bigint 8;//申请日期
    state varchar 2;//申请状态
  2. 表名:applydetail
    字段(字段名/类型/长度):
    applyno varchar 8;//申请单号(关键字)
    name varchar 30;//申请人姓名
    idcard varchar 18;//申请人身份证号 state varchar 2;//申请状态 其中,两个表的关联字段为申请单号。
    题目:
    1)查询身份证号码为 440401430103082 的申请日期
    2)查询同一个身份证号码有两条以上记录的身份证号码及记录个数
    3)删除 applydetail 表中所有姓李的记录
    【正确答案】
  3. Select applydate from apply a join applydetail d on a.applyno=d.applyno and
    Idcard=‘440401430103082’;
  4. select idcard,count() from applydetail group by idcard having count()>2;
  5. delete from applydetail where name=‘李%’;
    【解释】无

【题目编号】 jsd-02-201-5033
【知 识 点】 数据库-Oracle SQL-SQL基础-表操作
【难易程度】 20
【题目描述】
在 system 方案中建立表 table1,表中包含如下字段 字段名称 数据类型 要求
name Varchar2 非空 id Number 非空 age Number sex Varchar2 salary Number
【正确答案】
Create table system.tablel1 ( Id number not null,
Name varchar(8) not null, Age number,
Sex varchar(2), Salary number);
【解释】无

【题目编号】 jsd-02-201-5034
【知 识 点】 数据库-Oracle SQL-SQL基础
【难易程度】 70
【题目描述】
某公司的机构结构为树型结构,对应的表结构为TableCompany(ComCode—机构代码, UpperComCode—上级机构代码),如何查询出总公司的所有下级机构?(java 或者 SQL 均可)。你觉得这种思维和设计是否合理?有什么好建议的?
【正确答案】
select t1.* from TableCompany t1, TableCompany t2
Where t1.ComCode = t2.UpperComCode
这种设计比较容易让人理解,但是表中的数据联系过于紧密,数据量很大,会给后期维护造成不便,如果根据第三范式要求,将每一子公司独立成一张表,对于关系的维护和数据的管理都会变得比较方便。
【解释】无

【题目编号】 jsd-02-201-5035
【知 识 点】 数据库-Oracle SQL-SQL基础-表操作
【难易程度】 40
【题目描述】
一个简单的论坛系统,以数据库存储如下数据: 用户名,发帖标题,发帖内容,回复标题,回复内容。 每天论坛访问量 200 万左右,更新帖子 10 万左右。 请给出数据库表结构设计,并结合范式简要说明设计思路。
【正确答案】
用户表:存储用户信息;
用户所发的帖子表:存储用户所发的帖子; 回复表:存储对帖子所做的回复。
设计:
User:
Create table tb_user(
id number(10) primary key,
Uname varchar2(20) not null unique
);

Comments:
Create table tb_comments(
id number(10),
comments_id number(20) not null unique, title varchar2(20) not null,
comments varchar2(255) not null,
foreign key(id) references tb_user(id)
);

Replay:
Create table tb_replay(
id number(10),
comments varchar2(255) not null,
foreign key(id) references tb_comments(comments_id)
);
思路:因为此应用所要存储的数据量比较大,所以为了避免数据的冗余,表的设计依托于第三范式。
【解释】无

【题目编号】 jsd-02-201-5036
【知 识 点】 数据库-Oracle SQL-高级查询-子查询
【难易程度】 40
【题目描述】
有一个数据表 userinfo,包含 userid,username 字段,其中 userid 是唯一的,username 可能 重复,请写一句 sql 查询语句,把重复的记录全部取出来。
userid username
1 老王
2 老王
3 老李
4 老李
5 小张 要求返回记录集 userid username
1 老王
2 老王
3 老李
4 老李
【正确答案】
select * from userinfo where username in (select username from userinfo group by username having count(username)>1);
【解释】无

【题目编号】 jsd-02-201-5037
【知 识 点】 数据库-Oracle SQL-SQL基础-表操作
【难易程度】 20
【题目描述】
数据库基础:
1)使用 SQL 语句创建学生表 students
字段: 学号:s_id 姓名:s_name 年龄:age 班级:class 辅导员:assistant (请设计各字段类型 与长度)
2)查询学生表中年龄大于 20 的所有学生的学号与姓名
3)删除 0201 班的所有同学
4)查询 0302 班姓李的学生的个数
5)将班编号以’02’开头的所有班级的辅导员修改为‘李四’
【正确答案】
1)create table students(s_id number(10) primary key, s_name varchar(30) not null,
age number(3) not null, class varchar(20) not null, assistant varchar(30));
2)select s_id,s_name from students where age>20;
3)delete from students where class=’0201’;
4)select count(s_name) from students
where s_name like ‘李%’ and class=‘0302’;
5)update students set assistant=‘李四’ where class like ‘02%’;
【解释】无

【题目编号】 jsd-02-201-5038
【知 识 点】 数据库-Oracle SQL-SQL基础-分组
【难易程度】 30
【题目描述】
表名:高考信息表 students_info
准考证号 科目 成绩
no subject score
2006001 语文 119
2006001 数学 108
2006002 物理 142
2006001 化学 136
2006001 物理 127
2006002 数学 149
2006002 英语 110
2006002 语文 105
2006001 英语 98
2006002 化学 129
写出高考总分在 600 以上的学生准考证号的 SQL
【正确答案】
select no
from students_info group by no
having sum(score)>600;
【解释】无

【题目编号】 jsd-02-201-5039
【知 识 点】 数据库-Oracle SQL-高级查询-子查询
【难易程度】 50
【题目描述】
有一个表 LEANR,表里有三个字段分别是学号(student_id),
课程(kc),成绩(grade)。
1).查询每一门课程的前两名
2).查询以 Grade 降序排列的第 31 至 40 条记录(不需要区分课程)
3).查询表中存在课程重复 4 次以上的记录,显示课程和重复的次数,并且按照重复次数的降序排列
【正确答案】
1).select student_id,kc,grade
from (select student_id,kc,grade,
row_number() over(partition by kc order by grade desc)rn from LEANR)
where rn<=2;
2)select student_id,grade from (
select lea.*,rownum rm from (
select * from LEANR order by grade desc
) lea
where rownum < 41
) where rm between 31 and 40;
3). select kc,count(kc)
from LEANR
group by kc
having count(kc)>=2
order by count(kc) desc;
【解释】无

【题目编号】 jsd-02-201-5040
【知 识 点】 数据库-Oracle SQL-关联查询-等值连接
【难易程度】
【题目描述】
a 部门表 b 员工表
a 表字段( id --部门编号 departmentName-部门名称 ) b 表字段( id–部门编号 employee- 员工名称 ) 问题:如何一条 sql 语句查询出每个部门共有多少人
【正确答案】
create table a(
id number primary key, departmentName varchar(20)
);
create table b(
id number,
employee varchar(20)
);
insert into a values(1,‘部门 1’);
insert into a values(2,‘部门 2’);
insert into a values(3,‘部门 3’);
insert into b values(1,‘emp1’);
insert into b values(1,‘emp2’);
insert into b values(1,‘emp3’);
insert into b values(2,‘emp4’);
insert into b values(2,‘emp5’);
insert into b values(3,‘emp6’);
select departmentName,count(employee) from a,b
where a.id=b.id group by departmentName;
【解释】无

【题目编号】 jsd-02-201-5041
【知 识 点】 数据库-Oracle SQL-关联查询-等值连接、高级查询-子查询
【难易程度】 40
【题目描述】
为管理岗位业务培训信息,建立 3 个表:
S (SID,SN,SD,SA) SID,SN,SD,SA 分别代表学号、学员姓名、所属单位、学员年龄
C (CID,CN ) CID,CN 分别代表课程编号、课程名称
SC ( SID,CID,G ) SID,CID,G 分别代表学号、所选修的课程编号、学习成绩

  1. 使用标准 SQL 嵌套语句查询选修课程名称为’税收基础’的学员学号和姓名
  2. 使用标准 SQL 嵌套语句查询选修课程编号为’02’的学员姓名和所属单位
  3. 使用标准 SQL 嵌套语句查询不选修课程编号为’03’的学员姓名和所属单位
  4. 使用标准 SQL 嵌套语句查询选修全部课程的学员姓名和所属单位
  5. 查询选修课程超过 5 门的学员学号和所属单位
    【正确答案】
    create table s(
    sid int(10) primary key, sn varchar(20) not null, sd varchar(20) not null, sa int(3) not null
    );
    create table c(
    cid int(10) primary key, cn varchar(20) not null
    );
    create table sc(
    sid int(10) references s(sid), cid int(10) references c(cid), g int(10),
    primary key(sid,cid)
    );
    insert into s values(1,“zhangsan”,“project”,25);
    insert into s values(2,“lisi”,“mis”,26);
    insert into s values(3,“wangwu”,“manager”,27);
    insert into s values(4,“zhaoliu”,“mis”,26);
    insert into c values(01,“税收基础”);
    insert into c values(02,“Core Java”);
    insert into c values(03,“NetWork”);
    insert into sc values(1,01,70);
    insert into sc values(1,02,75); insert into sc values(1,03,80);
    insert into sc values(2,01,80); insert into sc values(2,03,69);
    insert into sc values(3,02,73);
    1)
    select s.sid,s.sn from s,c,sc
    where s.sid=sc.sid and c.cid=sc.cid
    and c.name=‘税收基础’;
  1. select a.sn,a.sd from s a, c b
    where b.cid in(select c.cid from sc c where a.sid=c.sid and b.cid=c.cid)
    and b.cid=02;
  2. select a.sn,a.sd from s a, c b
    where b.cid not in(select c.cid from sc c where a.sid=c.sid and b.cid=c.cid)
    and b.cid=03;
  3. select sn,sd
    from s where sid in
    (select sid from sc group by sid having count(cid)=(select count(cid) from c));
  4. select sn,sd from s
    where sid in(select sid from sc group by sid having count(distinct cid)>5);

【解释】无

【题目编号】 jsd-02-201-5042
【知 识 点】 数据库-Oracle SQL-SQL基础-表操作、java代码
【难易程度】 60
【题目描述】
请根据以下要求来完成题目: 会议室预定模块:某公司有多个会议室,以房间号区分。如果某部门需要预定会议室,则会提交预定请求(包含预定开始使用时间、预定结束使用,所预定会议室房间号)。 设计一个表,保存会议室预定信息。
要求采用 SQL 语句及JAVA 代码段判断在 2003-3-10 下午 3:00~4:00 3 号会议室是否空闲。 请写出有关 SQL 语句以及相关 JAVA 的代码段。
【正确答案】
1)Sql 语句:
create table meeting(
id number primary key , room_id varchar(10), isUsed char,
begin timestamp, end timestamp
);
insert into meeting values(
1,‘201’,1,to_date(‘2003-03-10 15:00:00’,‘yyyy-mm-dd hh24:mi:ss’)
,to_date(‘2003-03-10 16:00:00’,‘yyyy-mm-dd hh24:mi:ss’));
insert into meeting values(
2,‘201’,1,to_date(‘2003-03-10 17:00:00’,‘yyyy-mm-dd hh24:mi:ss’)
,to_date(‘2003-03-10 22:00:00’,‘yyyy-mm-dd hh24:mi:ss’));
2)
package com.tarena;
import java.sql.*;
public class Test {
public static void main(String[] args) {
String driverName = “oracle.jdbc.OracleDriver”;
String url = “jdbc:oracle:thin:@127.0.0.1:1521:orcl”;
String username = “scott”;
String pwd = “tiger”;
Connection con = null; Statement stmt = null; ResultSet rs = null;
try {
Class.forName(driverName);
con = DriverManager.getConnection(url, username, pwd);
stmt = con.createStatement();
String sql = "select isUsed from " + “meeting "
+“where ((begin between to_date(
‘2003-03-10 15:00:00’,‘yyyy-mm-dd hh24:mi:ss’)
and to_date(‘2003-03-10 16:00:00’,‘yyyy-mm-dd hh24:mi:ss’)) "
+“or(end between to_date(
‘2003-03-10 15:00:00’,‘yyyy-mm-dd hh24:mi:ss’)
and to_date(‘2003-03-10 16:00:00’,‘yyyy-mm-dd hh24:mi:ss’)))”
+” and room_id=201”;
if (stmt.execute(sql)) {
rs = stmt.getResultSet();
}
StringBuffer sb = new StringBuffer();
while (rs.next()) {
sb.append(“isFree:” + rs.getInt(1) + " ");
} System.out.print(sb.toString());
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
con.close();
} catch (Exception e1) {
e1.printStackTrace();
}
}
}
}
【解释】无

【题目编号】 jsd-02-201-5043
【知 识 点】 数据库-Oracle SQL-关联查询-等值连接
【难易程度】 40
【题目描述】
下面是两个数据库表,分别记录员工姓名和工资
T_EMPLOYEE
ID NAME
2 张三
3 李四
5 王五
??? ???

T_SALARY
ID SALARY
2 3400
3 4300
5 2500
??? ???
1.查询表 T_EMPLOYEE 中 id = 3 的员工记录
2.查询表 T_EMPLOYEE 中所有员工记录
3.联合查询表 T_EMPLOYEE 和 T_SALARY 中所有员工的姓名和工资记录,并按照薪水从高到低排列
【正确答案】
1).select * from t_employee where id = 3;
2).select * from t_employee;
3).select e.name,s.salary
from t_employee e,t_salary s where e.id=s.id
order by s.salary;
【解释】无

【题目编号】 jsd-02-201-5044
【知 识 点】 数据库-Oracle SQL-SQL基础-表操作
【难易程度】 40
【题目描述】
有三张表,学生表 S,课程表 C,学生课程表 SC,学生可以选修多门课程,一门课程可能被多个 学生选修,通过 SC 表关联。
1)写出建表以及插入语句;
2)写出 SQL 语句,查询选修了所有选修课程的学生;
3)写出 SQL 语句,查询选修了至少 2 门以上的课程的学生
【正确答案】

1)
create table student (id number(10) primary key,name varchar2(20));
create table course (id number(10) primary key,name varchar2(20));
create table sc(sid number(10) references student(id),cid number(10
references course(id),grade number(4,2));
insert into student values(1,‘feifei’); insert into student values(2,‘jingjing’);
insert into student values(3,‘nannan’); insert into student values(4,‘yuanyuan’);
insert into student values(5,‘jiejie’); insert into course values(1,‘corejava’);
insert into course values(2,‘c++’);insert into course values(3,‘jdbc’);
insert into course values(4,‘hibernate’); insert into sc values(1,1,98);
insert into sc values(2,1,97); insert into sc values(3,1,94); insert into sc values(4,1,92);
insert into sc values(5,1,93);insert into sc values(1,2,94);insert into sc values(2,2,92);
insert into sc values(3,2,95); insert into sc values(5,2,97); insert into sc values(1,3,92);
insert into sc values(2,3,92); insert into sc values(4,3,91); insert into sc values(1,4,99);
insert into sc values(3,4,89);
2)select sid,count() from sc group by sid having count()=(select count() from course);
3)select sid,count(
) from sc group by sid having count(*)>=2;
【解释】无

【题目编号】 jsd-02-201-5045
【知 识 点】 数据库-Oracle SQL-SQL基础、关联查询
【难易程度】 50
【题目描述】
SQL 题
–操作员表
select pkid,name,sys_corp_id ‘单位主键’ from base_operator
–角色表
select pkid,sys_corp_id ‘单位主键’,name from base_role
–角色与操作员的对应关系表
select pkid,base_role_id ‘角色主键’,base_operator_id ‘操作员主键’ from base_role_operator
–单位表
select pkid,name from sys_corps
–问题:
–1.显示出’开发’公司所拥有的操作员
–2.显示出’开发’公司每个角色所对应的操作员信息
–3.显示出’开发’公司每个角色所对应的操作员的个数
【正确答案】
答:1).Select name from base_operator;
2).Select op.pkid,op.name,op.sys_corp_id
From base_operator op,base_role_operator ro ,base_role br
Where ro.base_operator_id =op.pkid
And br.pkid=ro.base_role_id;
3).Select max(br.name) ,count(*)
From base_role_operator ro,base_role br
Where ro.base_role_id=br.pkid
Group by br.base_role_id;
【解释】无

【题目编号】 jsd-02-201-5046
【知 识 点】 数据库-Oracle SQL-SQL基础-表操作
【难易程度】 30
【题目描述】
说明在一个系统中权限管理中应该有哪些表、表间关系、各表哪些功能?
【正确答案】
角色和权限表是 m:n 的关系 操作表和权限表是 1:m 的关系模块表和操作表是 1:m 的关系表的大体设计如下:
– 角色表
create table roles (
id number primary key, name varchar2(20)
);
– 系统模块表
create table modules (
id number primary key, name varchar2(50), url varchar2(50)
);
– 模块操作表
create table operations (
id number primary key, name varchar2(20), mid number,
constraint foreign key (mid) references modules(id)
);
– 权限表
create table rights (
id number primary key,
name varchar2(20),
url varchar2(50),
operationid int references operations(id)
);
– 角色权限设置表
create table rolerights (
id number primary key,
roleid number references roles(id), rightid number references rights(id)
);
【解释】无

【题目编号】 jsd-02-201-5047
【知 识 点】 数据库-Oracle SQL-高级查询-子查询
【难易程度】 30
【题目描述】
说出下面语句的作用:
Select rownum,last_name,salary
From (select last_name,salary from s_emp order by salary desc) Where rownum<=10;
【正确答案】
选出 s_emp 表中工资前 10 名员工的姓名和工资。
【解释】无
2.2 PLSQL
【题目编号】 jsd-02-202-1001
【知 识 点】 数据库-PLSQL-程序流程控制-条件结构、循环结构
【难易程度】 60
【题目描述】
判断这 PL/SQL 代码块:BEGIN
FOR i IN 1…6 LOOP
IF i = 2 OR i = 3 THEN null; ELSE
INSERT INTO example(one) VALUES (i); END IF;
ROLLBACK; END LOOP; COMMIT; END;
有多少行被插入到表 EXAMPLE ?
【选项】
A. 0 B. 1 C. 2 D. 3
【正确答案】 A
【解释】
在循环结束前执行了 ROLLBACK 语句,数据被回滚。

【题目编号】 jsd-02-202-1002
【知 识 点】 数据库-PLSQL-程序结构
【难易程度】 50
【题目描述】
关于 PL/SQL 块的执行部分下列说法正确的是?
【选项】
A.PL/SQL 表达式可以包含分组函数.
B. PL/SQL 表达式不可以包含 SQL 函数.
C. 在 SQL 语句中部分分组函数可用.
D. 以上都不对
【正确答案】 A
【解释】无

【题目编号】 jsd-02-202-1003
【知 识 点】 数据库-PLSQL-程序结构
【难易程度】 50
【题目描述】
PL/SQL 的哪一部分实现对数据的操作?
【选项】
A. 头部分 B. 列外部分 C. 执行部分 D. 声明部分
【正确答案】 C
【解释】无

【题目编号】 jsd-02-202-1004
【知 识 点】 数据库-PLSQL-变量的声明与赋值
【难易程度】 60
【题目描述】
在 Oracle 中,执行如下 PL/SQL 语句后
CREATE TYPE car AS OBJECT
( id NUMBER, model VARCHAR2(25), color VARCHAR2(15) );
DECLARE
myvar car.model%TYPE; BEGIN
END;
变量 myvar 的数据类型为()。
【选项】
A.NUMBER B.car 类型 C.VARCHAR2 D.OBJECT
【正确答案】 C
【解释】
定义一个变量,其数据类型与已经定义的某个数据变量的类型相同,或者与数据库表的某个列的数据类型相同,这时可以使用%TYPE。

【题目编号】 jsd-02-202-1005
【知 识 点】 数据库-PLSQL-游标
【难易程度】 70
【题目描述】
表 CUSTOMER 包含如下列: CUSTOMER_ID NUMBER(9) ;LAST_NAME VARCHAR2(20) ;FIRST_NAME VARCHAR2(20) ;CREDIT_LIMIT NUMBER(9,2)
如下代码:
DECLARE
CURSOR cust_cursor IS
SELECT customer_id, last_name, first_name
FROM customer;
cust_rec cust_cursor%ROWTYPE;
你如何操纵 CUST_REC 中的记录?
【选项】
A.添加一个 LOOP 到游标声明中.
B.在 PL/SQL 块的执行部分,使用 INSERT INTO 语句.
C.在 PL/SQL 块的执行部分,使用一个 LOOP 和 FETCH 语句.
D.在 PL/SQL 块的执行部分,使用 SELECT 语句使用 INTO 操作.
【正确答案】 D
【解释】
%ROWTYPE 操作符, 返回一个记录类型, 其数据类型和数据库表的数据结构相一致,
在这里就和游标查询语句中的数据结果保持一致。例如:
DECLARE
CURSOR cust_cursor IS
SELECT CUSTOMER_ID, last_name, first_name
FROM customer;
cust_rec cust_cursor%ROWTYPE;
begin
open cust_cursor; LOOP
FETCH cust_cursor INTO cust_rec;
EXIT WHEN cust_cursor%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(cust_rec.last_name);
END LOOP;
end;

【题目编号】 jsd-02-202-1006
【知 识 点】 数据库-PLSQL-存储过程
【难易程度】 70
【题目描述】
定义存储过程如下:
CREATE OR REPLACE PROCEDURE INSERT_TEAM
(V_ID in NUMBER,V_CITY in VARCHER2 DEFAULT ‘AUSTIN’, V_NAME
in VARCHER2) IS
BEGIN
INSERT INTO TEAM (id, city,name) VALUES (v_id,v_city,v_name); COMMIT;
END;
以下哪些 PL/SQL 语句能够正确调用该过程?
【选项】
A. EXECUTE INSERT_TEAM;
B. EXECUTE INSERT_TEAM (V_NAME=.>“LONG HORNS”);
C. V_CITY=>“AUSTIN”;
D. EXECUTE INSERT_TEAM (3,“AUSTIN”,“LONG HORNS”)
【正确答案】 D
【解释】无

【题目编号】 jsd-02-202-1007
【知 识 点】 数据库-PLSQL-存储过程
【难易程度】 50
【题目描述】
关于存储过程参数,正确的说法是( )
【选项】
A. 存储过程的输出参数可以是标量类型,也可以是表类型。
A. 可以是表类型
B. 存储过程输入参数可以不输入信息而调用过程
C. 可以指定字符参数的字符长度(函数的()或者过程的(number/varchar2))
D. 以上说法都不对
【正确答案】 b
【解释】无

【题目编号】 jsd-02-202-1008
【知 识 点】 数据库-PLSQL-基本命令
【难易程度】 30
【题目描述】
PL/SQL块中不能直接使用的SQL命令是( )。
【选项】
A.SELECT B.INSERT C.UPDATE D.DROP
【正确答案】 D
【解释】无

【题目编号】 jsd-02-202-1009
【知 识 点】 数据库-PLSQL-程序结构
【难易程度】 60
【题目描述】
以下不属于命名的PL/SQL块的是( )。
【选项】
A.程序包 B.过程 C.游标 D.函数
【正确答案】 C
【解释】
游标充当一个指示返回多条记录集合中某一条的指针。不能单独的使用,不能被声明它以外的程序。

【题目编号】 jsd-02-202-1010
【知 识 点】 数据库-PLSQL-存储过程
【难易程度】 60
【题目描述】
()包用于显示PL/SQL块和存储过程中的调试信息。
【选项】
A.DBMS_OUTPUT B.DBMS_STANDARD
C.DBMS_INPUT D.DBMS_SESSION
【正确答案】 A
【解释】无

【题目编号】 jsd-02-202-1011
【知 识 点】 数据库-PLSQL-变量声明与赋值
【难易程度】 30
【题目描述】
在 PL/SQL 块的哪部分可以对初始变量赋予新值?
【选项】
A.结尾部分 B.开头部分 C.执行部分 D.声明部分
【正确答案】 C
【解释】无

【题目编号】 jsd-02-202-1012
【知 识 点】 数据库-JDBC、PLSQL-存储过程
【难易程度】 20
【题目描述】
用于调用存储过程的对象是。
【选项】
A.ResultSet B.DriverManager C.CallableStatemet D.PreparedStatement
【正确答案】 C
【解释】
ResultSet 是结果集对象;DriverManager 管理一组驱动程序;PreparedStatement 预编译的,用来发送和执行 SQL 语句的。

【题目编号】 jsd-02-202-2001
【知 识 点】 数据库-PLSQL-变量声明与赋值
【难易程度】 40
【题目描述】
在 PL/SQL 中使用哪几种语句来对变量进行赋值?
【选项】
A. := B. SELECT INTO C. FETCH INTO D. =
【正确答案】 ABC
【解释】无

【题目编号】 jsd-02-202-2002
【知 识 点】 数据库-PLSQL-自定义函数
【难易程度】 60
【题目描述】
下列说法正确的是( )
【选项】
A. 在PLSQL自定义函数中如果包含UPDATE、DELETE、INSERT语句,不必在函数体内给出COMMIT;
B. 自定义函数可以在SQL语句中调用、也可以在PLSQL块中调用
C. 自定义函数可以返回表类型
D. 自定义函数中的参数可以是OUT类型
【正确答案】 ABCD
【解释】无

【题目编号】 jsd-02-202-2003
【知 识 点】 数据库-PLSQL-变量的声明与赋值
【难易程度】 50
【题目描述】
考虑下列声明,那些是不合法的:
【选项】
A. DECLARE v_name, v_dept VARCHAR2(14);
B. DECLARE v_test NUMBER(5);
C. DECLARE V_MAXSALARY NUMBER(7, 2) = 5000;
D. DECLARE V_JOINDATE BOOLEAN := SYSDATE;
【正确答案】 ACD
【解释】
A.v_name 没有数据类型
C.:=是赋值
D.V_JOINDATE 是 boolean 类型,sysdate 是 Date 类型

【题目编号】 jsd-02-202-4001
【知 识 点】 数据库-PLSQL-程序结构
【难易程度】 60
【题目描述】
解释 TABLE Function 的用途
【正确答案】
TABLE Function 是通过 PL/SQL 逻辑返回一组纪录,用于普通的表/视图。他们也用于pipeline和 ETL(ETL,Extraction-Transformation-Loading 的缩写,中文名称为数据提取、转换和加载)过程。
【解释】无

【题目编号】 jsd-01-202-4002
【知 识 点】 数据库-PLSQL-程序结构
【难易程度】 70
【题目描述】
创建过程语法
CREATE [OR REPLACE] PROCEDURE Procedure_name
[ (argment [ { IN | IN OUT }] Type,
argment [ { IN | OUT | IN OUT } ] Type ]
{ IS | AS }
<类型.变量的说明>
BEGIN
<执行部分>
EXCEPTION
<可选的异常错误处理程序>
END;
请问,IN、OUT、IN OUT分别表示什么。
【正确答案】
【解释】无

  1. IN: 表示该参数不能被赋值(只能位于等号右边);
  2. OUT:表示该参数只能被赋值(只能位于等号左边);
  3. IN OUT: 表示该类型既能被赋值也能传值;

【题目编号】 jsd-01-202-4003
【知 识 点】 数据库-PLSQL-存储过程
【难易程度】 80
【题目描述】
如何调用存储过程
【正确答案】
存储过程建立完成后,只要通过授权,用户就可以在SQLPLUS 、ORACLE开发工具或第三方开发工具中来调用运行。
ORACLE 使用EXECUTE 语句来实现对存储过程的调用:
EXEC[UTE] Procedure_name( parameter1, parameter2…);
【解释】无

【题目编号】 jsd-01-202-4004
【知 识 点】 数据库-PLSQL-程序流程控制
【难易程度】 90
【题目描述】
plSql循环遍历的几种方式?
【正确答案】
1).loop循环
declare
v_i number;
begin
v_i:=1;
loop
v_i:=v_i+1;
if v_i=10 then exit; --退出循环还可以 exit when v_i=10;
end if;
end loop;
dbms_output.put_line(v_i);
end;
2).while循环
Declare
v_i number;
v_sum number;
begin
v_i:=1;v_sum:=0;
while v_i<=10 loop
v_i:=v_i+1;
v_sum:=v_i+v_sum;
end loop;
dbms_output.put_line(v_sum);
end;
3).for循环
declare
v_sum number:=0;
begin
for v_i in 1…10 loop
v_sum:=v_i+v_sum;
end loop;
dbms_output.put_line(v_sum);
end;
【解释】无

【题目编号】 jsd-01-202-4005
【知 识 点】 数据库-PLSQL-基本概念
【难易程度】 40
【题目描述】
plsql有什么用?
【正确答案】
plsql主要用来写存储过程的,它包含了SQL语句没有的那些逻辑的语句,像if end,while…之类的,可以实现更强大的功能。在某些情况下,比如说现在我要给某个表插入10000行的测试数据(有规律),写1000个insert 语句太麻烦,就用plsql实现。
【解释】无

【题目编号】 jsd-01-202-4006
【知 识 点】 数据库-PLSQL-序列
【难易程度】 60
【题目描述】
怎么用plsql创建序列
【正确答案】
create sequence 序列名 increment by 其实位置 start with 每次增加
Nomaxvalue nocycle
【解释】无

【题目编号】 jsd-01-202-4007
【知 识 点】 数据库-PLSQL-存储过程、自定义函数
【难易程度】 80
【题目描述】
存储过程和函数的区别
【正确答案】
从参数的返回情况来看:
如果返回多个参数值最好使用存储过程,如果只有一个返回值的话可以使用函数。 从调用情况来看:如果在 SQL 语句(DML 或 SELECT)中调用的话一定是存储函数或存储的封装函数不可以是存储过程, 但调用存储函数的时候还有好多限制以及函数的纯度等级的问题,如果是在过程化语句中调用的话, 就要看你要实现什么样的功能。函数一般情况下是用来计算并返回一个计算结果而存储过程一般是用来完成特定的数据操作(比如修改、插入数据库表或执行某些 DDL 语句等等),所以虽然他们的语法 上很相似但用户在使用他们的时候所需要完成的功能大部分情况下是不同的。
【解释】无

【题目编号】 jsd-01-202-4008
【知 识 点】 数据库-PLSQL-基本命令
【难易程度】 60
【题目描述】
你刚刚编译了一个 PL/SQL Package 但是有错误报道,如何显示出错信息?
【正确答案】
SHOW ERRORS
【解释】无

【题目编号】 jsd-02-202-5001
【知 识 点】 数据库-PLSQL-程序块编写、程序流程控制-条件结构
【难易程度】 50
【题目描述】
写出一个匿名的 SQL 程序块,完成如下任务:向表中插入 3000 条记录,在 salary 字段中有 500条记录的值为 1000,500 条记录的值为 1200,1000 条记录的值为 1500,1000 条记录的值为 1800,Id 字段的值来自序列 xl,其他字段的值任意。
【正确答案】
declare
x number:=0;
begin
for x in 1…3000 loop
If(x<=500) then
Insert into system.test values(x1.nextval,‘jim’,24,‘m’,1000);
elsif((x>500)and (x<1001)) then
Insert into system.test values(system.xl1.nextval,‘jim’,24,‘m’,1200);
elsif((x>1000)and (x<2001)) then
Insert into system.test values(system.xl1.nextval,‘jim’,24,‘m’,1500); Else
Insert into system.test values(system.xl1.nextval,‘jim’,24,‘m’,1800);
end if; end loop;
end;
【解释】无

【题目编号】 jsd-02-202-5002
【知 识 点】 数据库-PLSQL-存储过程
【难易程度】 30
【题目描述】
写出一个存储过程,这个存储过程的作用是修改特定 id 编号的记录,将该条记录的 salary 字 段的值加上 500;
【正确答案】
Create or replace procedure system.update_age
(vid in number) is
Begin
Update table1 set salary=salary+500 where id=vid;
End;
【解释】无

【题目编号】 jsd-02-202-5003
【知 识 点】 数据库-PLSQL-自定义函数
【难易程度】 50
【题目描述】
创建一个 system 方案中的函数 fn1,函数作用为:将指定 ID 号的记录中的 salary 字段值乘以1.05。
【正确答案】

Create or replace function
system.fn1(salary1 system.table1 salary &type)
Return number as
V1 numbre:=1.05; V2 numbre;
Begin
V2=v1*salary1; Return v2;
End ;
【解释】无

【题目编号】 jsd-02-202-5004
【知 识 点】 数据库-PLSQL-存储过程
【难易程度】 70
【题目描述】
假设有以下的两个表:
Cus_A
ID* Name Address
? ? ?
Cus_B
ID* Name Address
? ? ?
*主键
表 Cus_A 和表 Cus_B 的结构完全相同,表 Cus_A 和表 Cus_B 中既存在 ID 相同的记录,也存在 ID 不 同的记录。现要求将 ID 只存在于表表 Cus_A 中而不存在于表 Cus_B 中的记录全部插入到 Cus_B 表中, 并用表 Cus_A 中的记录更新 Cus_B 中相同的 ID 的记录,请写出完成这一功能的存储过程。
【正确答案】
create or replace procedure test is
cust_record cus_a%rowtype ;
cursor cust_cursor is select id,name,address from cus_a;
Begin
Open cust_cursor; LOOP
Fetch cust_cursor into cust_record; EXIT WHEN cust_cursor %NOTFOUND;
–先删除在插入
delete from cus_b where id=cust_record.id;
insert into cus_b values(cust_record.id, cust_record.name, cust_record.address); END LOOP;
end;
【解释】无

【题目编号】 jsd-02-202-5005
【知 识 点】 数据库-PLSQL- 程序流程控制
【难易程度】 60
【题目描述】
请用数据库语言求1-100之间的素数
【正确答案】
set serverout on
create or replace procedure is_prime(inp number)
as
i number;
j number;
is_prim boolean;
begin
dbms_output.new_line;
dbms_output.put(to_char(2)||’ ‘);
for i in 3…inp loop
begin
is_prim:=true;
for j in 2…trunc(sqrt(i)) loop
if mod(i,j)=0 then
begin
is_prim:=false;
exit;
end;
end if;
end loop;
if is_prim then dbms_output.put(to_char(i)||’ '); end if;
end;
end loop;
dbms_output.new_line;
end;
【解释】无

【题目编号】 jsd-02-202-5006
【知 识 点】 数据库-PLSQL-自定义函数
【难易程度】 70
【题目描述】
完成以下PL/SQL块,功能是:创建一个函数dept_name,其功能是接受职员编号后返回职员所在部门名称。(注:部门名称在dept表中,而职员信息在emp表中,职员所在部门号的列名为deptno)
【正确答案】
CREATE OR REPLACE FUNCTION dept_name (emp_no NUMBER)
RETURN VARCHAR2 AS
dept_no NUMBER(2);
result dept.dname%TYPE;
BEGIN
SELECT deptno INTO dept_no FROM emp WHERE empno=emp_no___
SELECT dname
INTO result FROM dept
WHERE deptno = dept_no;
RETURN result_;
EXCEPTION
WHEN OTHERS THEN
RETURN NULL;
END
【解释】无

【题目编号】 jsd-02-202-5007
【知 识 点】 数据库-PLSQL-程序流程控制-循环结构、条件结构
【难易程度】 60
【题目描述】
对所有员工,如果该员工职位是MANAGER,并且在DALLAS工作那么就给他薪金加15%;如果该员工职位是CLERK,并且在NEW YORK工作那么就给他薪金扣除5%;其他情况不作处理
【正确答案】
declare cursor c1 is select * from emp;
c1rec c1%rowtype;
v_loc varchar2(20);
begin
for c1rec in c1 loop
select loc into v_loc from dept where deptno = c1rec.deptno;
if c1rec.job = ‘MANAGER’ and v_loc = ‘DALLAS’ then
update emp set sal = sal * 1.15 where empno = c1rec.empno;
elsif c1rec.job=‘CLERK’ and v_loc = ‘NEW YORK’ then
update emp set sal = sal * 0.95 where empno = c1rec.empno;
else null;
end if;
end loop;
end;
【解释】无

【题目编号】 jsd-02-202-5008
【知 识 点】 数据库-PLSQL-程序流程控制、游标
【难易程度】 50
【题目描述】
对直接上级是’BLAKE’的所有员工,按照参加工作的时间加薪:
81年6月以前的加薪10% ;81年6月以后的加薪5%
【正确答案】
declare cursor c1 is select * from emp where mgr = (select
empno from emp where ename=‘BLAKE’); --直接上级是’BLAKE’的所有员工
c1rec c1%rowtype;
begin
for c1rec in c1 loop
if c1rec.hiredate < ‘01-6月-81’ then
update emp set sal = sal * 1.1 where empno = c1rec.empno;
else
update emp set sal = sal * 1.05 where empno = c1rec.empno;
end if;
end loop;
end;
【解释】无

【题目编号】 jsd-02-202-5009
【知 识 点】 数据库-PLSQL-程序流程控制-条件结构
【难易程度】 50
【题目描述】
编写一个触发器实现如下功能:
对修改职工薪金的操作进行合法性检查:
a) 修改后的薪金要大于修改前的薪金
b) 工资增量不能超过原工资的10%
c) 目前没有单位的职工不能涨工资
【正确答案】
create or replace trigger tr1
after update of sal on emp
for each row
begin
if :new.sal <= :old.sal then
raise_application_error(-20001,‘修改后的薪金要大于修改前的薪金’);
elsif :new.sal > :old.sal * 1.1 then
raise_application_error(-20002,‘工资增量不能超过原工资的10%’);
elsif :old.deptno is null then
raise_application_error(-20003,‘没有单位的职工不能涨工资’);
end if;
end;
【解释】无

【题目编号】 jsd-02-202-5010
【知 识 点】 数据库-PLSQL-程序块编写
【难易程度】 50
【题目描述】
编写一个PL/SQL程序块,对名字以"A"或"S"开始的所有雇员按他们的基本薪水的10%加薪。
【正确答案】

DECLARE CURSOR c1 IS
SELECT * FROM emp WHERE SUBSTR(ename,1,1)=′A′ OR SUBSTR(ename,1,1)=′S′
FOR UPDATE OF sal;
BEGIN FOR i IN c1 LOOP
UPDATE emp SET sal=NVL(sal,0)+NVL(sal,0)*0.1 WHERE CURRENT OF c1; END LOOP; END;
【解释】无

【题目编号】 jsd-02-202-5011
【知 识 点】 数据库-PLSQL-程序块编写
【难易程度】 40
【题目描述】
函数的helloworld:返回一个“helloworld”的字符串
【正确答案】
create or replace function hello_func
return varchar2
is
begin
return “helloworld”;
end;
执行函数
begin
dbms_output.out_line(hello_func());
end;
或者: select hello_func() from dual;
【解释】无

【题目编号】 jsd-02-202-5012
【知 识 点】 数据库-PLSQL-程序流程控制-条件结构
【难易程度】 50
【题目描述】
更新指定员工工资,增加100;若该员工不存在则跑出用户自定义异常:no_result
【正确答案】
declare
no_result exception;
begin
update employees set salary = salary+100 where employee_id=1001;
if sql%notfound then
raise no_result;
end if;
exception
when no_result then
dbms_output.put_line(“更新失败”);
【解释】无

【题目编号】 jsd-02-202-5013
【知 识 点】 数据库-PLSQL-程序流程控制-循环结构、条件结构
【难易程度】 60
【题目描述】
利用游标,调整公司中员工的工资:
工资范围 调整基数
0-5000 5%
5000-10000 3%
10000-150000 2%
15000- 1%
【正确答案】
declare
cursor emp_sal_cursor is select salary,employee_if from employees;
temp number(4,2);
v_sal employees.salary%type;
v_id employees.employee_id%type;
begin
open emp_sal_cursor;
fetch emp_sal_cursor into v_sal,v_id;
while emp_sal_cursor%found loop
dbms_output.put_line(v_id || ‘:’ v_sal);
if v_sal <=5000 then
temp :=0.05;
elsif v_sal<=10000 then
temp:=0.03;
elsif v_sal<=15000 then
temp:=0.02;
else
temp:=0.01;
end if;
dbms_output.put_line(v_id||’:’|| v_sal||’,’||temp);
update employees set salary = salary*(1+temp) where employee_id=v_id;
fetch emp_sal_cursor into v_sal,v_id;
end loop;
close emp_sal_cursor;
end;
update employees set salary = * (1 + decode(trunc(salary/5000), 0, 0.05,1, 0.03,
2, 0.02,
0.01))
【解释】无
2.3 JDBC
【题目编号】 jsd-02-203-1001
【知 识 点】 数据库-JDBC-JDBC基础
【难易程度】 20
【题目描述】
提供 Java 存取数据库能力的包是()
【选项】
A.java.sql B.java.awt C.java.lang D.java.swing
【正确答案】 A
【解释】
java.sql 是 JDBC 的编程接口;java.awt 和 java.swing 是做图像界面的类库;java.lang: Java 编程语言进行程序设计的基础类。

【题目编号】 jsd-02-203-1002
【知 识 点】 数据库-JDBC-异常
【难易程度】 20
【题目描述】
下述哪个是JDBC编译的异常类型?( )
【选项】
A SQLException B SQLError
C SQLFatal D SQLTruncation
【正确答案】 A
【解释】无

【题目编号】 jsd-02-203-1003
【知 识 点】 数据库-JDBC-JDBC连接数据库
【难易程度】 10
【题目描述】
JDBC 中,用于表示数据库连接的对象是。
【选项】
A.Statement
B.Connection
C. DriverManager
D.PreparedStatement
【正确答案】 B
【解释】
Statement 和 PreparedStatement 都是用来发送和执行 SQL 语句的,DriverManager 管理一组驱动程序。

【题目编号】 jsd-02-203-4001
【知 识 点】 java基础-继承
【难易程度】 40
【题目描述】
写出执行下面代码后的正确结果
interface MyDB {
public void getConnection();
}
class MyDBDriver implements MyDB {
public void getConnection() {
System.out.println(“getConnection()”);
}
}
public class MyClass {
public static void aMethod(MyDB db) {
db.getConnection();
}
public static void main(String args[]) {
MyDBDriver db_driver = new MyDBDriver();
aMethod(db_driver);
}
}
【正确答案】 getConnection()
【解释】无

【题目编号】 jsd-02-203-4002
【知 识 点】 数据库-JDBC-JDBC高级编程
【难易程度】 60
【题目描述】
Java 数据库编程包含哪些类?Java数据库编程的基本过程是什么?
【正确答案】
用到的类:Connection、ResultSet、错误!超链接引用无效。错误!超链接引用无效。Java 中访问数据库的步骤如下:
1)注册驱动;
2)建立连接;
3)创建 Statement;
4)执行 sql 语句;
5)处理结果集(若 sql 语句为查询语句);
6)关闭连接。
【解释】无

【题目编号】 jsd-02-203-4003
【知 识 点】 数据库-JDBC-PreparedStatement
【难易程度】 60
【题目描述】
Statement,PreparedStatement,CallableStatment 的区别。
【正确答案】
区别有以下几点:
1) Statement 是 PreparedStatement 和 CallableStatement 的父类;
2)Statement 是直接发送 Sql 语句到数据库,事先没有进行预编译。PreparedStatement 会将 sql 进 行预编译,当 sql 语句要重复执行时,数据库会调用以前预编译好的 sql 语句,所以 PreparedStatement 在性能方面会更好;
3)PreparedStatement 在执行 sql 时,对传入的参数可以进行强制的类型转换。以保证数据格式与底 层的数据库格式一致。
4)CallableStatement 适用与存储过程的查询表达语句
【解释】无

【题目编号】 jsd-02-203-4004
【知 识 点】 数据库-JDBC-事务处理
【难易程度】 50
【题目描述】
JAVA 中如何进行事务的处理?
【正确答案】
Connection 类中提供了 3 个事务处理方法:
setAutoCommit(Boolean autoCommit):设置是否自动提交事务,默认为自动提交,即为 true,通 过设置 false 禁止自动提交事务;
commit():提交事务;
rollback():回滚事务。
【解释】无

【题目编号】 jsd-02-203-5001
【知 识 点】 数据库-JDBC-JDBC连接数据库
【难易程度】 30
【题目描述】
请简单写出用 JAVA 连接 Oracle 数据库,并执行一条/SQL 语句。(只需要写关键几条语句即可,/SQL语句:SELECTFROM t_users WHERE users_id=‘1111’)
【正确答案】
Class.forName(“oracle.jdbc.OracleDriver”);
String url = “jdbc:oracle:thin:@127.0.0.1:1521:orcl”; String user = “scott”;
String password = “tiger”;
Connection con = DriverManager.getConnection(url, user, password);
Statement stm = con.createStatement();
ResultSet rs = stm.executeQuery("SELECT
FROM t_users WHERE users_id=‘1111’");
while (rs.next()) {
// 取值
} rs.close(); stm.close(); con.close();
【解释】
第三部分:JavaWeb
3.1 Web基础
【题目编号】 jsd-03-301-1001
【知 识 点】 JavaWeb-Web基础-JavaScript-DHTML
【难易程度】 50
【题目描述】
在 DHTML 中把整个文档的各个元素作为对象处理的技术是:()
【选项】
A.HTML B.CSS C.DOM D.Script(脚本语言)
【正确答案】 C
【解释】
DOM:文档对象模型

【题目编号】 jsd-03-301-2001
【知 识 点】 JavaWeb-Web基础-HTML-HTML基本语法
【难易程度】 60
【题目描述】
在不指定特殊属性的情况下,哪几种 HTML 标签可以手动输入文本:()
【选项】
A.
B.
C.
D.


【正确答案】 AB
【解释】无

【题目编号】 jsd-03-301-2002
【知 识 点】 JavaWeb-Web基础-HTML-标签-IFrame标签
【难易程度】 70
【题目描述】
关于 IFrame 表述正确的有:()
【选项】
A. 通过 IFrame,网页可以嵌入其他网页内容,并可以动态更改
B. 在相同域名下,内嵌的 IFrame 可以获取外层网页的对象
C. 在相同域名下,外层网页脚本可以获取 IFrame 网页内的对象
D. 可以通过脚本调整 IFrame 的大小
【正确答案】 CD
【解释】
IFRAME 元素也就是文档中的文档,或者好像浮动的框架(FRAME)。通过 iframe 对象所在页面的对象模型,你可以访问 iframe 对象的属性,但不能访问其内容。

【题目编号】 jsd-03-301-2003
【知 识 点】 JavaWeb-Web基础-HTML-表格
【难易程度】 60
【题目描述】
关于表格表述正确的有:()
【选项】
A. 表格中可以包含 TBODY 元素
B. 表格中可以包含 CAPTION 元素
C. 表格中可以包含多个 TBODY 元素
D. 表格中可以包含 COLGROUP 元素
E. 表格中可以包含 COL 元素
【正确答案】 ACDE
【解释】
caption 标签用于定义一个表格标题。标签只能出现在 table 标签中,且必须紧随 table标签之后。每个表格只能定义一个标题。使用 标签,可以将表格分为一个单独的部分。 标签可将表格中的一行或几行合成 一组。 利用标签可以把表格按列划分为若干组,每组可包含一列或几列,然后可以对各组分别设 置格式。 通常一个列组的各列格式是相同的,如果列与列有差异,可通过在组内加入标签进行设置。 标签只能在

标签和标签中使用。

【题目编号】 jsd-03-301-2004
【知 识 点】 JavaWeb-Web基础-JavaScript-JavaScript内置对象
【难易程度】 60
【题目描述】
下面属于 javascript 对象的有:( )
【选项】
A. Window B. Document C. Form D. String E. Navigator
【正确答案】 ACE
【解释】无
问答

【题目编号】 jsd-03-301-4001
【知 识 点】 JavaWeb-Web基础-HTML-表单
【难易程度】 70
【题目描述】
请写出一段表单提交的 HTML 代码,表单名称为 form1,提交方式为 post,提交地址为 submit.asp
【正确答案】

【题目编号】 jsd-03-301-4002
【知 识 点】 JavaWeb-Web基础-HTML-超链接
【难易程度】 60
【题目描述】
请写出一个超链接,错误!超链接引用无效。送电子邮件。
【正确答案】
<a href=”mailto: zhangsan@d-heaven.com”>发邮件
【解释】无

【题目编号】 jsd-03-301-4003
【知 识 点】 JavaWeb-Web基础-HTML-标签-meta标签
【难易程度】 60
【题目描述】
请说明 meta 标签的作用。
【正确答案】
meta 是用来在 HTML 文档中模拟 HTTP 协议的响应头报文。meta 标签用于网页的<head>与</head>中,meta 标签的用处很多。meta 的属性有两种:name 和 http-equiv。name 属性主要用于描述网 页,对应于 content(网页内容),以便于搜索引擎机器人查找、分类(目前几乎所有的搜索引擎都使 用网上机器人自动查找 meta 值来给网页分类)。这其中最重要的是 description(站点在搜索引擎上 的描述)和 keywords(分类关键词),所以应该给每页加一个 meta 值。比较常用的有以下几个: name 属性
1).<meta name=“Generator” contect="“>用以说明生成工具(如 Microsoft FrontPage 4.0)等;
2).<meta name=“KEYWords” contect=”“>向搜索引擎说明你的网页的关键词;
3).<meta name=“DEscription” contect=”">告诉搜索引擎你的站点的主要内容;
4).<meta name=“Author” contect="你的姓名">告诉搜索引擎你的站点的制作的作者;
5).<meta name=“Robots” contect= "all|none|index|noindex|follow|nofollow"> 其中的属性说明如下:
设定为 all:文件将被检索,且页面上的链接可以被查询; 设定为 none:文件将不被检索,且页面上的链接不可以被查询; 设定为 index:文件将被检索;
设定为 follow:页面上的链接可以被查询;
设定为 noindex:文件将不被检索,但页面上的链接可以被查询; 设定为 nofollow:文件将不被检索,页面上的链接可以被查询。
6).http-equiv 属性
A. <meta http-equiv=“Content-Type” contect=“text/html”;charset=gbk">和 <meta http-equiv=“Content-Language” contect="zh-CN">用以说明主页制作所使用的文字以及语言;
B. <meta http-equiv=“Refresh” contect="n;url=http://yourlink">定时让网页在指定的时 间 n 内,跳转到页面 http;//yourlink;
C. <meta http-equiv=“Expires” contect="Mon,12 May 2001 00:20:00 GMT">可以用于设定 网页的到期时间,一旦过期则必须到服务器上重新调用。需要注意的是必须使用 GMT 时间格式;
D. <meta http-equiv=“Pragma” contect="no-cache">是用于设定禁止浏览器从本地机的缓存 中调阅页面内容,设定后一旦离开网页就无法从 Cache 中再调出;
E. <meta http-equiv=“set-cookie” contect=“Mon,12 May 2001 00:20:00 GMT">cookie 设定, 如果网页过期,存盘的 cookie 将被删除。需要注意的也是必须使用 GMT 时间格式;
F. <meta http-equiv=“Pics-label” contect=”“>网页等级评定,在 IE 的 internet 选项中有 一项内容设置,可以防止浏览一些受限制的网站,而网站的限制级别就是通过 meta 属性来设置的; G. <meta http-equiv=“windows-Target” contect=”_top">强制页面在当前窗口中以独立页面显示,可以防止自己的网页被别人当作一个 frame 页调用;
H. <meta http-equiv=“Page-Enter” contect="revealTrans(duration=10,transtion=50)">和<meta http-equiv=“Page-Exit” contect="revealTrans(duration=20,transtion=6)">设定进入和离开页面时的特殊效果,这个功能即 FrontPage 中的“格式/网页过渡”,不 过所加的页面不能够是一个 frame 页面。
【解释】无

【题目编号】 jsd-03-301-4004
【知 识 点】 JavaWeb-Web基础-HTML-表单-隐藏控件
【难易程度】 40
【题目描述】
请写出一个隐藏控件。
【正确答案】

【解释】无

【题目编号】 jsd-03-301-4005
【知 识 点】 JavaWeb-Web基础-HTML基本语法
【难易程度】 40
【题目描述】
如何将 HTML 页面的标题设置为“数字天堂”。
【正确答案】

数字天堂 body 部分 【解释】无

【题目编号】 jsd-03-301-4006
【知 识 点】 JavaWeb-Web基础-JavaScript-JavaScript事件
【难易程度】 30
【题目描述】
请写出 JavaScript 中常用的三种事件。
【正确答案】
onclick,onblur,onChange
【解释】无

【题目编号】 jsd-03-301-4007
【知 识 点】 JavaWeb-Web基础-JavaScript-JavaScript基础语法
【难易程度】 70
【题目描述】
请写出一段 JavaScript 代码,要求页面有一个按钮,点击按钮弹出确认框。程序可以判断出用户点击的是“确认”还是“取消”。
【正确答案】

click 【解释】无

【题目编号】 jsd-03-301-4008
【知 识 点】 JavaWeb-Web基础-JavaScript内置对象
【难易程度】 60
【题目描述】
JavaScript 如何实现计时功能。
【正确答案】

【解释】无

【题目编号】 jsd-03-301-4009
【知 识 点】 JavaWeb-Web基础-JavaScrip-定义数组
【难易程度】 40
【题目描述】
JavaScript 如何定义数组。
【正确答案】
var arrTest=new Array();
【解释】无

【题目编号】 jsd-03-301-4010
【知 识 点】 JavaWeb-Web基础-JavaScript
【难易程度】 30
【题目描述】
JavaScript 能否操作 cookie 和 session?
【正确答案】
JavaScript 可以操作 cookie,但是不能操作 session
【解释】无

【题目编号】 jsd-03-301-4011
【知 识 点】 JavaWeb-Web基础-windows对象-窗口与对话框
【难易程度】 30
【题目描述】
JS 中的三种弹出式消息提醒(警告窗口、确认窗口、信息输入窗口)的命令是什么?
【正确答案】
Alert confirm prompt
【解释】无

【题目编号】 jsd-03-301-4012
【知 识 点】 JavaWeb-Web基础-JavaScript-document对象
【难易程度】 50
【题目描述】
如何获得

This is first layer
中的值?
【正确答案】

【解释】无
3.2 Servlet与JSP
【题目编号】 jsd-03-302-1001
【知 识 点】 JavaWeb-Servlet与JSP- Session
【难易程度】 30
【题目描述】
以下哪些接口能够实现对 Web 访问者的身份认证( )?
【选项】
A. Http Servlet Request
B. Http Servlet Response
C. Http Session
D. Http Servlet
【正确答案】 C
【解释】
Web访问者身份验证主要靠session进行身份识别,获得session的方法如下:HttpSession session = request.getSession();

【题目编号】 jsd-03-302-1002
【知 识 点】 JavaWeb-Servlet与JSP-Servlet工作原理-获得请求参数
【难易程度】 40
【题目描述】
从以下哪一个选项中可以获得 Servlet 的初始化参数( )。
【选项】
A.Servlet
B.ServletContext
C.ServletConfig
D.GenericServlet
【正确答案】 C
【解释】
servlet 的生命周期的方法中有一个 init 方法,其中一个重载的 init 方法的参数为 ServletConfig可以获取初始化参数。

【题目编号】 jsd-03-302-1003
【知 识 点】 JavaWeb-Servlet与JSP-servlet工作原理-获得请求参数
【难易程度】 20
【题目描述】
哪一个对象可以用于获得浏览器发送的请求( )。
【选项】
A.HttpServletRequest
B.HttpServletResponse
C.HttpServlet
D.Http
【正确答案】 A
HttpServletRequest 中有一些方法可以获取浏览器发送的请求信息。
【解释】无

【题目编号】 jsd-03-302-1004
【知 识 点】 JavaWeb-Servlet与JSP-JSP基本语法-JSP内置对象
【难易程度】 30
【题目描述】
下列哪个为JSP 的隐含对象( )。
【选项】
A.env B.page C.jspinfo D.context
【正确答案】 B
【解释】
JSP 有九个隐藏对象。
request 对象:保存了很多客户端请求的信息;
response 对象:生成服务器端响应,然后将响应结果发送到客户端;
out 对象:表示输出流,此输出流将作为请求发送到客户端;
session 对象:我们写个对象放在这个 session 对象中,这个对象就在我们的会话中都存在;
application 对象:我们写个对象放在这个 application 对象中,这个对象就在整个应用程序中都存在;
pageContext 对象:相当于当前页面的容器,可以访问当前页面的所有对象;
paget 对象:一般我们使用 Page 指令来替代使用这个对象;
exception 对象:用来处理异常的;
config 对象:一样的我们在页面中是使用很少的,一般会在 Servlet 中使用这个。

【题目编号】 jsd-03-302-1005
【知 识 点】 JavaWeb-Servlet与JSP-EL表达式
【难易程度】 30
【题目描述】
哪一个不是 EL 定义的隐式对象? ( )
【选项】
A.cookie B. pageContext C. attributes D. initParam
【正确答案】 C
【解释】
1)pageContext:JSP 页的上下文。它可以用于访问 JSP 隐式对象。
2)Param:将请求参数名称映射到单个字符串数(通过调用 ServletRequest.getParameter (String name) 获得)。getParameter (String) 方法返回带有特定名称的参数。表达式 $(param.name)相当于 request.getParameter (name)。
3)paramValues:将请求参数名称映射到一个数值数组(通过调用 ServletRequest.getParameter (String name) 获得)。它与 param 隐式对象非常类似,但它检索一个字符串数组而不是单个值。表达式 ${paramvalues.name) 相当于 request.getParamterValues(name)。
4)header 将请求头名称映射到单个字符串头值(通过调用 ServletRequest.getHeader(String name)获得)。表达式 ${header.name} 相当于 request.getHeader(name)。
5)headerValues 将请求头名称映射到一个数值数组(通过调用 ServletRequest.getHeaders(String) 获 得 )。 它 与 头 隐 式 对 象 非 常 类 似 。 表 达 式 ${headerValues.name} 相 当 于 request.getHeaderValues(name)。
6)cookie 将 cookie 名称映射到单个 cookie 对象。向服务器发出的客户端请求可以获得一个或多个 cookie。表达式 ${cookie.name.value} 返回带有特定名称的第一个 cookie 值。如果请求包含多个 同名的 cookie,则应该使用 ${headerValues.name} 表达式。
7)initParam 将上下文初始化参数名称映射到单个值
(通过调用ServletContext.getInitparameter(String name) 获得)。
8)pageScope 将页面范围的变量名称映射到其值。
例如,EL 表达式可以使用 ${pageScope.objectName} 访问一个 JSP 中页面范围的对象,还可以使用 ${pageScope.objectName.attributeName} 访问对象的属性。
9)requestScope 将请求范围的变量名称映射到其值。该对象允许访问请求对象的属性。例如,EL表达式可以使用 r e q u e s t S c o p e . o b j e c t N a m e 访 问 一 个 J S P 请 求 范 围 的 对 象 , 还 可 以 使 用 {requestScope.objectName} 访问一个JSP请求范围的对象,还可以使用 requestScope.objectName访JSP使{requestScope.objectName.attributeName} 访问对象的属性。
10)sessionScope 将会话范围的变量名称映射到其值。该对象允许访问会话对象的属性。例
11)applicationScope 将应用程序范围的变量名称映射到其值。该隐式对象允许访问应用程序范围的对象。

【题目编号】 jsd-03-302-1006
【知 识 点】 JavaWeb-Servlet与JSP-JSTL
【难易程度】 30
【题目描述】
下面哪些属于 JSTL 中的表达式操作标签。
【选项】
A.<c:out> B.<c:if> C.<c:url> D.<c:catch>
【正确答案】 A
【解释】无

【题目编号】 jsd-03-302-1007
【知 识 点】 JavaWeb-Servlet与JSP-Servlet工作原理-请求方式
【难易程度】 40
【题目描述】
在 Servlet 处理请求的方式为。
【选项】
A. 以进程的方式
B. 以程序的方式
C. 以线程的方式
D. 以响应的方式
【正确答案】 C
【解释】
Servlet 采用多线程来处理多个请求同时访问,Servlet 容器维护了一个线程池来服务请求。

【题目编号】 jsd-03-302-1008
【知 识 点】 JavaWeb-Servlet与JSP-Servlet
【难易程度】 60
【题目描述】
javax.Servlet 的包中,属于类的是( )。
【选项】
A. Servlet B. GenericServlet C. ServletRequest D. ServletContext
【正确答案】 B
【解释】
ServletContext 和 ServletRequest 是该包下的接口

【题目编号】 jsd-03-302-1009
【知 识 点】 JavaWeb-Servlet与JSP-Cookie
【难易程度】 50
【题目描述】
如果没有指定 Cookie 的时效,那么默认的时效是。
【选项】
A.一天 B. 永不过期 C.会话级别 D.一分钟
【正确答案】 C
【解释】
这是 API 的原文:By default, -1 indicating the cookie will persist until browser shutdown.

【题目编号】 jsd-03-302-1010
【知 识 点】 JavaWeb-Servlet与JSP-Servlet容器
【难易程度】 70
【题目描述】
实现下列哪一种接口的对象,并不需要在 web.xml 文件内进行额外的设定,Servlet 容器就能够回应该对象加入 HTTP 会话所发生的事件?
【选项】
A.ServletContextListener
B.HttpSessionListener
C.HttpSessionAttributeListener
D.HttpSessionBindingListener
【正确答案】 D
【解释】
HttpSessionListener 只 需 要 设 置 到 web.xml 中就可以监听整个应用中的所 有 session 。HttpSessionBindingListener 必须实例化后放入某一个 session 中,才可以进行监听

【题目编号】 jsd-03-302-1011
【知 识 点】 JavaWeb-Servlet与JSP-JSP基本语法-JSP标签
【难易程度】 50
【题目描述】
下列哪个为 JSP 的小脚本的标签?
【选项】
A.<% %> B.<@ %> C.<%! %> D.<%-- %>
【正确答案】 A
【解释】无

【题目编号】 jsd-03-302-1012
【知 识 点】 JavaWeb-Servlet与JSP-JSP指令
【难易程度】 50
【题目描述】
以下不属于 JSP 的标准指令的是。
【选项】
A.Taglib B.Include C.Import D.Page
【正确答案】 C
【解释】
import 是 page 指令的一个属性。

【题目编号】 jsd-03-302-1013
【知 识 点】 JavaWeb-Servlet与JSP-JSP基本语法-JSP内置对象
【难易程度】 60
【题目描述】
对于每一个网站访问用户都要访问的变量,应该将它设为变量( )。
【选项】
A. Session B. Reques C. Response D. Application
【正确答案】 D
【解释】
Application 应用程序级变量

【题目编号】 jsd-03-302-1014
【知 识 点】 JavaWeb-Servlet与JSP-JSP基本语法-JSP页面中的java代码
【难易程度】 60
【题目描述】
察看下列 JSP 内容

<% for (int i=0;i<3;i++){ %> out.print(i*2); <% } %> 当这个 JSP 被运行时,其结果是什么? 【选项】 A.此 JSP 因为语法错误,无法运行 B.显示出 0,2,4 C.显示出 0,2,4,6 D.显示出 out.print(i*2) out.print(i*2) out.print(i*2) 【正确答案】 D 【解释】无

【题目编号】 jsd-03-302-1015
【知 识 点】 JavaWeb-Servlet与JSP-JSP基本语法-JSP内置对象
【难易程度】 60
【题目描述】
假设 A.jsp 内设定一个jsp:useBean元素:
<jsp:useBean id=”bean1” class=”myBean” /> 下列哪一个为真?
【选项】
A.bean1 的存取范围(scope)默认为 application
B.在 HTTP 会话内可以存取 bean1
C.只有在 A.jsp 内可以存取 bean1
D.在 A.jsp 所属的 Web 应用程序内均可存取 bean1
【正确答案】 C
【解释】
bean1 的存取范围(scope)默认为 page;(题有一点问题 javabean 的规则是要放在一个包中)

【题目编号】 jsd-03-302-1016
【知 识 点】 JavaWeb-Servlet与JSP-Http协议
【难易程度】 30
【题目描述】
Http 缺省的请求方法是。
【选项】
A.PUT B.GET C.POST D.TRACE
【正确答案】 B
【解释】无

【题目编号】 jsd-03-302-1017
【知 识 点】 JavaWeb-Servlet与JSP-Servlet-请求方式
【难易程度】 30
【题目描述】
HttpServlet 中,用来处理 POST 请求的方法是
【选项】
A. doHead B. doGet C. doPost D. doPut
【正确答案】 C
【解释】无

【题目编号】 jsd-03-302-1018
【知 识 点】 JavaWeb-Servlet与JSP-Cookie
【难易程度】 50
【题目描述】
如何创建 Cookie?
【选项】
A. 使用 new Cookie 语句
B. 调用 response.addCookie 方法
C. 使用 Cookie 的 setMaxAge 方法
D. setCookie 方法
【正确答案】 B
【解释】无

【题目编号】 jsd-03-302-1019
【知 识 点】 JavaWeb-Servlet与JSP-Servlet工作原理-Servlet生命周期
【难易程度】 60
【题目描述】
有关 Servlet 的生命周期说法正确的有( )。
【选项】
A.Servlet 的生命周期由 Servlet 实例控制。
B .init() 方法在创建完Servlet实例后对其进行初始化,传递的参数为实现ServletContext 接口的对象。
C.service()方法响应客户端发出的请求。
D.destroy()方法释放 Servlet 实例 。
【正确答案】 C
【解释】
Servlet 生命周期就是指创建 Servlet 实例后响应客户请求直至销毁的全过程。 Serlvet 生命周期的三个方法:init()–>service()–>destroy(),Servlet 生命周期的各个阶段: 实例化:Servlet 容器创建Servlet 类的实例对象;初始化:Servlet 容器调用 Servlet 的 init()方法;服务:如果请求 Servlet,则容器调用 service()方法;销毁:销毁实例之前调用 destroy()方法。

【题目编号】 jsd-03-302-1020
【知 识 点】 JavaWeb-Servlet与JSP-Servlet书写
【难易程度】 250
【题目描述】
以下 web.xml 片断( )正确地声明 servlet 上下文参数
【选项】
A

MAX
100

B

C D MAX 100 【正确答案】 A 【解释】无

【题目编号】 jsd-03-302-1021
【知 识 点】 JavaWeb-Servlet与JSP-session
【难易程度】 40
【题目描述】
以下( )可用于检索 session 属性 userid 的值。
【选项】
A.session. getAttribute (“userid”);
B.session. setAttribute (“userid”);
C.request. getParameter (“userid”);
D.request. getAttribute (“userid”);
【正确答案】 A
【解释】无

【题目编号】 jsd-03-302-1022
【知 识 点】 JavaWeb-Servlet与JSP-JSP运行原理
【难易程度】 70
【题目描述】
考虑下面两个 JSP 文件代码片断:
test1.jsp:

<% pageContext.setAttribute(”ten”,new Integer(10));%> //1 test2.jsp: 数字为:<%= pageContext.getAttribute(”ten”)%> 以下( )放置在 test1.jsp 中的//1 处,当请求 test1.jsp 时正确输出 test2.jsp 中的内容。 【选项】 A. B. C.<%@ include file=”test2.jsp” %> D.由于 pageContext对象的scope属性为page,所以test2.jsp不能访问test1.jsp定义的属性 【正确答案】 C 【解释】 pageContext setAttribute(”ten”,new Integer(10));能取到的范围是 page,也就是当前页面。<%@includefile=””%>:编译时包含,静态的,JSP 引擎将对所包含的文件进行语法分析。 :运行时包含,静态和动态的都可以,JSP 引擎不对所包含的文件进行语法分析,只获得处理的结果

【题目编号】 jsd-03-302-1023
【知 识 点】 JavaWeb-Servlet与JSP- JSP书写
【难易程度】 50
【题目描述】
考虑下面 JSP 文件代码片断:

以下( )代码片断放置在 test2.jsp 中不会导致错误。 【选项】 A. B. C.<%=request.getParameter(“username”)%> D.<%=request.getAttribute(“username”)%> 【正确答案】 C 【解释】无

【题目编号】 jsd-03-302-1024
【知 识 点】 JavaWeb-Servlet与JSP-JSP书写
【难易程度】 70
【题目描述】
以下是 login.jsp 文件的代码片断:
<%@ page isELIgnored=“false”%>

用户名为: ${param.name}

以下( )描述正确。 【选项】 A.发生运行错误 B.页面会出现一文本框,并且文本框中内容为${param['name']} C.当用户输入名字并单击“提交”按钮时,在同一页面中的“用户名为:”字样后面会显示用户输入 的内容 D.当用户输入名字并单击“提交”按钮时,在同一页面中的“用户名为:”字样后面会显示${param.name} 【正确答案】 C 【解释】 在每个 JSP 中也可以指定是否该 JSP 使用 EL。在 page directive 中的 isELIgnored 属性用来指定是 否忽略。格式为:<%@ page isELIgnored="true|false"%> 如果设定为真,那么 JSP 中的表达式被当成字符串处理。

【题目编号】 jsd-03-302-1025
【知 识 点】 JavaWeb-Servlet与JSP-JSTL
【难易程度】 60
【题目描述】
下面代码片断在浏览器中输出结果为( )。
<c:set var=”myVar” scope =”session”>
2+3
</c:set>
<c:out value=” m y V a r ” / > 【 选 项 】 A . 0 B . 5 C . 2 + 3 D . 无 输 出 【 正 确 答 案 】 C 【 解 释 】 < c : s e t > 标 签 主 要 用 来 将 变 量 保 存 到 J S P 的 会 话 中 或 J a v a B e a n 的 属 性 中 。 < c : s e t > 的 语 法 格 式 为 : < c : s e t v a l u e = " v a l u e " v a r = " v a r N a m e " [ s c o p e = " p a g e ∣ r e q u e s t ∣ s e s s i o n ∣ a p p l i c a t i o n " ] / > 上 述 的 表 达 式 实 现 的 功 能 是 将 v a l u e 的 值 储 存 至 范 围 为 s c o p e 的 v a r N a m e 变 量 之 中 , 还 可 以 将 v a l u e 的 值 储 存 至 t a r g e t 对 象 的 属 性 中 . 如 果 题 中 2 + 3 改 成 {myVar}”/> 【选项】 A.0 B.5 C.2+3 D.无输出 【正确答案】 C 【解释】 <c:set>标签主要用来将变量保存到 JSP 的会话中或 JavaBean 的属性中。<c:set>的语法格式为:<c:set value="value" var="varName"[scope="{ page|request|session|application }"]/> 上述的表达式实现的功能是将value 的值储存至范围为scope的varName变量之中,还可以将value的值储存至target对象的属性中.如果题中 2+3 改成 myVar/>A.0B.5C.2+3D.C<c:set>JSPJavaBean<c:set><c:setvalue="value"var="varName"[scope="pagerequestsessionapplication"]/>valuescopevarNamevaluetarget.2+3{2+3}那么结果就是5.

【题目编号】 jsd-03-302-1026
【知 识 点】 JavaWeb-Servlet与JSP-过滤器
【难易程度】 60
【题目描述】
编写一个 Filter,除继承 HttpServlet 类外还需要( )。
【选项】
A.继承 Filter 类
B.实现 Filter 接口
C.继承 HttpFilter 类
D.实现 HttpFilter 接口
【正确答案】 B
【解释】无

【题目编号】 jsd-03-302-1027
【知 识 点】 JavaWeb-Servlet与JSP-JSP基本语法-JSP指令
【难易程度】 50
【题目描述】
在 jsp 中,page 指令的()属性用来引入需要的包或类。
【选项】
A. extends B. import C. language D. contentType
【正确答案】 B
【解释】无

【题目编号】 jsd-03-302-1028
【知 识 点】 JavaWeb-Servlet与JSP-Servlet工作原理
【难易程度】 30
【题目描述】
Servlet 程序的入口点是?( )
【选项】
A.init() B. main() C. service() D. doGet()
【正确答案】 C
【解释】无

【题目编号】 jsd-03-302-1029
【知 识 点】 JavaWeb-Servlet与JSP-Cookie
【难易程度】 50
【题目描述】
不能在不同用户之间共享数据的方法是?( )
【选项】
A. 通过 cookie B. 利用文件系统 C. 利用数据库 D. 通过 ServletContext 对象
【正确答案】 A
【解释】无

【题目编号】 jsd-03-302-1030
【知 识 点】 JavaWeb-Servlet与JSP-servlet、Session
【难易程度】 70
【题目描述】
下面的哪个方法在 servlet 的 response 的输出流在 URL 中保存 Session ID。( )【选项】
A.The encodeURL method of the HttpServletRequest interface.
B. The encodeURL method of the HttpServletResponse interface.
C.The rewriteURL method of the HttpServletRequest interface.
D. The rewriteURL method of the HttpServletResponse interface.
【正确答案】 B
【解释】无

【题目编号】 jsd-03-302-1031
【知 识 点】 JavaWeb-Servlet与JSP-Servlet
【难易程度】 90
【题目描述】
看下面这个类
public class IfAttributsChanged implements ServletContextAttributeListener{
public void attributeAdded(ServletContextAttributeEvent scab){
System.out.println(“加入一个属性”);
}
public void attributeRemoved(ServletContextAttributeEvent scab){
System.out.println(“删除一个属性”);
}
}
关于 IfAttributsChanged 类的叙述,下列哪一个为真?
【选项】
A. 此类可以成功编译
B.此类无法成功编译,原因是缺少 attributeChanged()方法。
C. 此类无法成功编译,原因是缺少 attributeReplaced()方法。
D. 此类无法成功编译,原因是缺少 attributeUpdated()方法。
【正确答案】 C
【解释】无

【题目编号】 jsd-03-302-1032
【知 识 点】 JavaWeb-Servlet与JSP-JSP书写
【难易程度】 60
【题目描述】
在a.jsp中有代码片段如下:

loginName:


在b.jsp 中加入下列哪个代码,可以直接在界面上输出由a.jsp页面输入的loginName 的值。( )
【选项】
A <%=(String) request.getParameter(“loginName”)%>
B <%=(String) request.getAttribute(“loginName”)%>
C <%String name=request.getParameter(“loginName”); out.println(name);%>
D <%String name=request.getAttribute (“loginName”); out.println(name);%>
【正确答案】 C
【解释】无

【题目编号】 jsd-03-302-1033
【知 识 点】 JavaWeb-Servlet与JSP-servlet书写
【难易程度】 50
【题目描述】
假设在helloapp应用中有一个HelloServlet类,它在web.xml文件中的配置如下:( )

HelloServlet
org.javathinker.HelloServlet


HelloServlet
/hello

那么在浏览器端访问HelloServlet的URL是什么?
【选项】
A. http://localhost:8080/HelloServlet
B. http://localhost:8080/helloapp/HelloServlet
C. http://localhost:8080/helloapp/org/javathinker/hello
D. http://localhost:8080/helloapp/hello
【正确答案】 D
【解释】无

【题目编号】 jsd-03-302-1034
【知 识 点】 JavaWeb-Servlet与JSP-HTTP协议
【难易程度】 70
【题目描述】
以下哪一个HTTP协议的状态码,表示请求的网页不存在( )
【选项】
A 200 B 400 C 500 D 404
【正确答案】 D
【解释】无

多选
【题目编号】 jsd-03-302-2001
【知 识 点】 JavaWeb-Servlet与JSP-JSP运行原理
【难易程度】 40
【题目描述】
运行 jsp 需要安装( )Web 服务器。
【选项】
A.Apache
B.tomcat
C.WebLogic
D.IIS
【正确答案】 BC
【解释】
Apache 是 PHP 程序运行的服务器,IIS 是.net 程序运行的服务器。

【题目编号】 jsd-03-302-2002
【知 识 点】 JavaWeb-Servlet与JSP-URL重写
【难易程度】 40
【题目描述】
在服务器的网络编程中,解决会话跟踪的方法有( ):
【选项】
A. 使用 Cookie。
B. 使用 URL 重写。
C. 使用隐藏的表单域。
D. 以上方法都不能单独使用。
【正确答案】 ABC
【解释】
URL 重写就是首先获得一个进入的 URL 请求然后把它重新写成网站可以处理的另一个 URL 的过程 隐藏域是在页面级保存信息。与其他用户标准控件的区别是,隐藏域不被呈现在页面中。当页面提交 的时候,隐藏域中的值将被一同发送给服务端。
Cookie 是以文本存储于计算机中,使用 name-value 匹配。一般用户存储标识用户信息

【题目编号】 jsd-03-302-2003
【知 识 点】 JavaWeb-Servlet与JSP-监听器
【难易程度】 70
【题目描述】
与 HttpSessionListener 接口有关的方法是( )。
【选项】
A. sessionInitialized()
B. sessionCreated()
C. sessionFinialized()
D. sessionDestroyed()
【正确答案】 BD
【解释】无

【题目编号】 jsd-03-302-2004
【知 识 点】 JavaWeb-Servlet与JSP-JSP运行原理-JSP生命周期
【难易程度】 40
【题目描述】
关于 JSP 生命周期的叙述,下列哪些为真?( )
【选项】
A.JSP 会先解释成 Servlet 源文件,然后编译成 Servlet 类文件
B.每当用户端运行 JSP 时,jspInit()方法都会运行一次
C.每当用户端运行 JSP 时,_jspService()方法都会运行一次
D.每当用户端运行 JSP 时,jspDestroy()方法都会运行一次
【正确答案】 AC
【解释】无

【题目编号】 jsd-03-302-2005
【知 识 点】 JavaWeb-Servlet与JSP-JSP基本语法-JSP页面中的java代码
【难易程度】 60
【题目描述】
下列 JSP 代码:

<%for(int i = 0; i < 10; i++) { //1 }%> 以下( )可放置在//1 处,不会发生编译错误。 【选项】 A. <%= i %> B. i C. %><%= i %><% D. 不写任何内容 【正确答案】 CD 【解释】无

【题目编号】 jsd-03-302-2006
【知 识 点】 JavaWeb-Servlet与JSP-JSP隐式对象
【难易程度】 50
【题目描述】
有关 JSP 隐式对象,以下( )描述正确。
【选项】
A.隐式对象是 WEB 容器加载的一组类的实例,可以直接在 JSP 页面使用
B.不能通过 config 对象获取 ServletContext 对象
C.response 对象通过 sendRedirect 方法实现重定向
D.只有在出错处理页面才有 exception 对象
【正确答案】 ACD
【解释】
可以通过 config 对象获取 ServletContext 对象。
问答
【题目编号】 jsd-03-302-4001
【知 识 点】 JavaWeb-Servlet与JSP-JSP基本语法-JSP内置对象
【难易程度】 40
【题目描述】
jsp 有哪些内置对象?作用分别是什么?(至少三个)
【正确答案】
1)request 表示 HttpServletRequest 对象。它包含了有关浏览器请求的信息,并且提供了几个用于 获取 cookie, header 和 session 数据的有用的方法。
2)response 表示 HttpServletResponse 对象,并提供了几个用于设置送回 浏览器的响应的方法(如cookies,头信息等)。
3)out 对象是 javax.jsp.JspWriter 的一个实例,并提供了几个方法使你能用于向浏览器回送输出结果。
4)pageContext 表示一个 javax.servlet.jsp.PageContext 对象。它是用于方便存取各种范围的名字 空间、servlet 相关的对象的 API,并且包装了通用的 servlet 相关功能的方法。
5)session 表示一个请求的 javax.servlet.http.HttpSession 对象。Session 可以存贮用户的状态信息。
6)application 表示一个 javax.servle.ServletContext 对象。这有助于查找有关 servlet 引擎和servlet 环境的信息。
7)config 表示一个 javax.servlet.ServletConfig 对象。该对象用于存取 servlet 实例的初始化参数。
8)page 表示从该页面产生的一个 servlet 实例。
9)exception 针对错误网页,未捕捉的例外
【解释】无

【题目编号】 jsd-03-302-4002
【知 识 点】 JavaWeb-Servlet与JSP-JSP基本语法-JSP内置对象
【难易程度】 70
【题目描述】
JSP 页面之间传递参数的方法有哪些?
【正确答案】
1)request 2)session 3)application 4)提交表单 5)超链接
【解释】无

【题目编号】 jsd-03-302-4003
【知 识 点】 JavaWeb-Servlet与JSP-转发和重定向
【难易程度】 30
【题目描述】
forward 和 redirect 的区别
【正确答案】
forward 是容器中控制权的转向,是服务器请求资源,服务器直接访问目标地址的 URL,把那 个 URL 的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是 从哪儿来的,所以它的地址栏中还是原来的地址。 redirect 就是服务端根据逻辑,发送一个状态码, 告诉浏览器重新去请求那个地址,一般来说浏览器会用刚才请求的所有参数重新请求,并且从浏览器 的地址栏中可以看到跳转后的链接地址。前者更加高效,在前者可以满足需要时,尽量使用 forward() 方法,并且,这样也有助于隐藏实际的链接;在有些情况下,比如,需要跳转到一个其它服务器上的 资源,则必须使用 sendRedirect()方法。
【解释】无

【题目编号】 jsd-03-302-4004
【知 识 点】 JavaWeb-Servlet与JSP-JSP、Servlet
【难易程度】 50
【题目描述】
描述 JSP 和 Servlet 的区别、共同点、各自应用的范围
【正确答案】
JSP 在本质上就是 SERVLET,但是两者的创建方式不一样.Servlet 完全是 JAVA 程序代码构成, 擅长于流程控制和事务处理,通过 Servlet 来生成动态网页很不直观.JSP 由 HTML 代码和 JSP 标签构 成,可以方便地编写动态网页.因此在实际应用中采用 Servlet 来控制业务流程,而采用 JSP 来生成 动态网页.
【解释】无

【题目编号】 jsd-03-302-4005
【知 识 点】 JavaWeb-Servlet与JSP-Servlet工作原理-Servlet生命周期
【难易程度】 60
【题目描述】
说出 Servlet 的生命周期,并说出 Servlet 和 CGI 的区别?
【正确答案】
Servlet 被服务器实例化后,容器运行其 init 方法,请求到达时运行其 service 方法,service 方法自动派遣运行与请求对应的 doXXX 方法(doGet,doPost)等,当服务器决定将实例销毁的时候 调用其 destroy 方法。
与 cgi 的区别在于 servlet 处于服务器进程中,它通过多线程方式运行其 service 方法,一个实例可 以服务于多个请求,并且其实例一般不会销毁,而 CGI 对每个请求都产生新的进程,服务完成后就销 毁,所以效率上低于 servlet。
【解释】无

【题目编号】 jsd-03-302-4006
【知 识 点】 JavaWeb-Servlet与JSP-get、post
【难易程度】 50
【题目描述】
get 和 post 的区别?
【正确答案】
Form 中的 get 和 post 方法,在数据传输过程中分别对应了 HTTP 协议中的 GET 和 POST 方法。 二者主要区别如下:
1)Get 是用来从服务器上获得数据,而 Post 是用来向服务器上传数据;
2)Get 将表单中数据按照 variable=value 的形式,添加到 action 所指向的 URL 后面,并且两者 使用“?”连接,而各个变量之间使用“&”连接;Post 是将表单中的数据放在 form 的数据体中,按 照变量和值相对应的方式,传递到 action 所指向 URL;
3)Get 是不安全的,因为在传输过程,数据被放在请求的 URL 中;Post 的所有操作对用户来说 都是不可见的;
4)Get 传输的数据量小,这主要是因为受 URL 长度限制;而 Post 可以传输大量的数据,所以在 上传文件只能使用 Post;
5)Get 限制 Form 表单的数据集必须为 ASCII 字符,而 Post 支持整个 ISO10646 字符集;
6)Get 是 Form 的默认方法。
【解释】无

【题目编号】 jsd-03-302-4007
【知 识 点】 JavaWeb-Servlet与JSP-Servlet线程安全
【难易程度】 60
【题目描述】
Servlet 是线程安全吗?以下代码中使用 synchronized 关键字的意义是什么? Synchronized (aList){
aList.remove (1);
}
【正确答案】
默认不是线程安全的,但是 servlet 实现了 SingthreadModel 接口 就能单线程执行。此题中 代码的意思是给 aList 对象加同步锁,保证 aList 对象在多线程任务环境中,每次只能够有一个线程 调用 remove 方法。从而提高对 aList 对象操作的安全性和正确性
【解释】无

【题目编号】 jsd-03-302-4008
【知 识 点】 JavaWeb-Servlet与JSP-JSP基本语法
【难易程度】 60
【题目描述】
JSP 中动态 INCLUDE 与静态 INCLUDE 的区别?
【正确答案】
动态 INCLUDE 用 jsp:include 动作实现 <jsp:include page=“head.jsp”/> 它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数;静态 INCLUDE 用 include 伪码实现,它不会检查所含文件的变化,适用于包含静态页面%@include file=“head.htm” %
【解释】无

【题目编号】 jsd-03-302-4009
【知 识 点】 JavaWeb-Servlet与JSP-Session
【难易程度】 70
【题目描述】
Session 的基本原理是什么?
【正确答案】
Session 对象的原理在于,服务器可以为客户端创建并维护一个所谓的 Session 对象,用于存放 数据。在创建 Session 对象的同时,服务器将会为该 Session 对象产生一个唯一编号,这个编号称之 为 SessionID,服务器以 Cookie 的方式将 SessionID 存放在客户端。当浏览器再次访问该服务器时, 会将 SessionID 作为 Cookie 信息带到服务器,服务器可以通过该 SessionID 检索到以前的 Session 对象,并对其进行访问。需要注意的是,此时的 Cookie 中仅仅保存了一个 SessionID,而相对较多的 会话数据保存在服务器端对应的 Session 对象中,由服务器来统一维护,这样一定程度保证了会话数 据安全性,但增加了服务器端的内存开销。存放在客户端的用于保存 SessionID 的 Cookie 会在浏览 器关闭时清除。我们把用户打开一个浏览器访问某个应用开始,到关闭浏览器为止交互过程称为一个 “会话”。在一个“会话”过程中,可能会向同一个应用发出了多次请求,这些请求将共享一个 Session 对象,因为这些请求携带了相同的 SessionID 信息。Session 对象的正常使用要依赖于 Cookie。如果 考虑到客户端浏览器可能出于安全的考虑禁用了 Cookie,应该使用 URL 重写的方式使 Session 在客户端禁用 Cookie 的情况下继续生效。
【解释】无

【题目编号】 jsd-03-302-4010
【知 识 点】 JavaWeb-Servlet与JSP-JSP基本语法-JSP动作
【难易程度】 40
【题目描述】
jsp 有哪些动作?作用分别是什么?
【正确答案】
JSP 共有以下 6 种基本动作:
jsp:include:在页面被请求的时候引入一个文件; jsp:useBean:寻找或者实例化一个 JavaBean。; jsp:setProperty:设置 JavaBean 的属性。; jsp:getProperty:输出某个 JavaBean 的属性; jsp:forward:把请求转到一个新的页面; jsp:plugin:根据浏览器类型为 Java 插件生成 OBJECT 或 EMBED 标记。
【解释】无

【题目编号】 jsd-03-302-4011
【知 识 点】 JavaWeb-Servlet与JSP-Cookie、Session
【难易程度】 60
【题目描述】
解释四种会话跟踪技术?
【正确答案】
隐藏表单域、URL 重写,Cookie、Session。
1)隐藏表单域:,非常适合步需要大量数据存储的会话应用。
2)URL 重写:URL 可以在后面附加参数,和服务器的请求一起发送,这些参数为名字/值对。
3)Cookie:一个 Cookie 是一个小的,已命名数据元素。服务器使用 SET-Cookie 头标将它作为 HTTP响应的一部分传送到客户端,客户端被请求保存 Cookie 值,在对同一服务器的后续请求使用一个 Cookie 头标将之返回到服务器。与其它技术比较,Cookie 的一个优点是在浏览器会话结束后,甚至 在客户端计算机重启后它仍可以保留其值。
4)Session:使用 setAttribute(String str,Object obj)方法将对象捆绑到一个会话
【解释】无

【题目编号】 jsd-03-302-4012
【知 识 点】 JavaWeb-Servlet与JSP-Servlet结构
【难易程度】 70
【题目描述】
请画出Servlet 2.2以上Web Application的基本目录结构
【正确答案】
目录结构如下图所示:
webapps
|
Applocation
|
__________________
| |
JSP页面 WEB-INF
|
___________________
| | |
classes lib web.xml
【解释】无

【题目编号】 jsd-03-302-5001
【知 识 点】 JavaWeb-Servlet与JSP-JSP书写
【难易程度】 60
【题目描述】
在当前的 JSP 网页里,提交用户名和密码,提交给 post . jsp, post . jsp 打印出用户名和密码 并返回给浏览器。请写出 post . jsp
【正确答案】
假设页面用户名和密码在 login.jsp 里,login.jsp 页面代码如下:

post.jsp 页面代码: <% String userName=request.getParameter(“userName”); String pwd=request.getParameter(“pwd”); out.println(“用户名:”+userName+”,密码:”+pwd); %> 【解释】无 3.3 Ajax与Jquery 【题目编号】 jsd-03-303-4001 【知 识 点】 JavaWeb-Ajax与Jquery-Ajax 【难易程度】 50 【题目描述】 什么是 AJAX? 【正确答案】 Ajax 的全称是:AsynchronousJavaScript And XML。Ajax 不是一个技术,它实际上是几种技 术,每种技术都有其独特这处,合在一起就成了一个功能强大的新技术。Ajax 包括: XHTML 和 CSS 使 用文档对象模型(Document Object Model)作动态显示和交互 使用 XML 和 XSLT 做数据交互和操作 使 用 XMLHttpRequest 进行异步数据接收 使用 JavaScript 将它们绑定在一起 。

3.4 Web应用
【题目编号】 jsd-03-304-1001
【知 识 点】 JavaWeb-web应用
【难易程度】 40
【题目描述】
假设 web 应用的文档根目录为 MyApp,那么可以从哪里找到 database.jar 文件( )。
【选项】
A. MyApp 目录下
B. MyApp\images 目录下
C. MyApp\WEB-INF 目录下
D. MyApp\WEB-INF\lib 目录下
【正确答案】 D
【解释】
Web 工程的 lib 是放置.jar 文件的地方。

【题目编号】 jsd-03-304-1002
【知 识 点】 JavaWeb-Web应用-MVC
【难易程度】 50
【题目描述】
在 MVC 设计模式中,JavaBean 的作用是。
【选项】
A. Controller B. Model C. 业务数据的封装 D. View
【正确答案】 B
【解释】

【题目编号】 jsd-03-304-1003
【知 识 点】 JavaWeb-Web应用-JNDI
【难易程度】 20
【题目描述】
如何取得数据源( )。
【选项】
A.通过 Http
B.通过 ftp
C.JNDI
D.通过 Connection 对象
【正确答案】 C
【解释】
在服务器上配置好数据以后,通过 JNDI 技术获取到数据源。
JNDI:Java Naming and Directory Interface 一种标准的 Java 命名系统接口。

【题目编号】 jsd-03-304-1004
【知 识 点】 JavaWeb-Web应用-J2EE
【难易程度】 50
【题目描述】
在 J2EE 中属于 Web 层的组件有( )
A. HTML B. EJB C. Applet D. JSP
【正确答案】 D
【解释】无

【题目编号】 jsd-03-304-1005
【知 识 点】 JavaWeb-Web应用-J2EE
【难易程度】 50
【题目描述】
在 J2EE 的 Web 应用中,编译后的 class 文件存放的目录为 ( )
【选项】
A. classes 目录 B. images 目录 C. jar 目录 D. 任意位置
【正确答案】 A
【解释】

【题目编号】 jsd-03-304-1006
【知 识 点】 JavaWeb-Web应用
【难易程度】 40
【题目描述】
关于 Web 应用程序,下列说法错误的是( )。
【选项】
A.WEB-INF 目录存在于 web 应用的根目录下
B. WEB-INF 目录与 classes 目录平行
C. web.xml 在 WEB-INF 目录下
D. Web 应用程序可以打包为 war 文件
【正确答案】 B
【解释】
classes 目录在 WEB-INF 目录下。

【题目编号】 jsd-03-304-1007
【知 识 点】 JavaWeb-Web应用-MVC
【难易程度】 10
【题目描述】
下面的那一个不属于 MVC 模式中的对象?( )
【选项】
A. Model B. View C. Collection D. Controller
【正确答案】 C
【解释】
MVC 是三个单词的缩写,分别为: 模型(Model),视图(View)和控制 Controller)。 MVC 模式的目的就 是实现 Web 系统的职能分工。 Model 层实现系统中的业务逻辑,通常可以用 JavaBean 或 EJB 来实现。 View 层用于与用户的交互,通常用 JSP 来实现。 Controller 层是 Model 与 View 之间沟通的桥梁,它可以分派用户的请求并选择恰当的视图以用于显示,同时它也可以解释用户的输入并将它们映射为模型层可执行的操作。

【题目编号】 jsd-03-304-1008
【知 识 点】 JavaWeb-Web应用-类图的概念
【难易程度】 30
【题目描述】
类图用来表示系统中类和类与类之间的关系,它是对系统动态结构的描述。
【选项】
A.正确 B.不正确
【正确答案】 B
【解释】
类图是对系统静态结构的描述。
多选
【题目编号】 jsd-03-304-2001
【知 识 点】 JavaWeb-Web基础-J2EE
【难易程度】 10
【题目描述】
下列哪些是 J2EE 的体系( )。
【选项】
A. JSP
B. JAVA
C. Servlet
D. WebService
【正确答案】 ACD
【解释】
J2EE 现在更多使用的名字是 Java EE JSP 是 JavaEE 设计模式 MVC 中的显示部分,Servlet 是控制部 分,WebService 是 JavaEE 的服务器。

【题目编号】 jsd-03-304-4001
【知 识 点】 JavaWeb-Web应用
【难易程度】 70
【题目描述】
简要说明 JVM、JSP、Servlet、Web Server、Web Browser 之间的关系。
【正确答案】
当用户在 JSP 页面上提交了需要服务器处理的数据后,通过 Web Browser 发送到服务器端, Servlet 会根据用户的请求产生必要的相应,如果需要还会通过 JVM 或 Web Server 来获取资源,最后 把服务器端的相应结果返回给用户。

【题目编号】 jsd-03-304-4002
【知 识 点】 JavaWeb-Web应用-Apache
【难易程度】 50
【题目描述】
说说对开源项目 Apache 的了解,说出其中你使用过的项目并给以评价
【正确答案】
Apache HTTP Server(简称 Apache)是 Apache 软件基金会的一个开放源码的网页服务器,可以在大 多数计算机操作系统中运行,由于其多平台和安全性被广泛使用,是最流行的 Web 服务器端软件之一。 它快速、可靠并且可通过简单的 API 扩展,将 Perl/Python 等解释器编译到服务器中。
Apache 起初由伊利诺伊大学香槟分校的国家超级电脑应用中心(NCSA)开发。此后,Apache Httpd 被开放源代码团体的成员不断的发展和加强。Apache Http 网站服务器拥有牢靠可信的美誉,已经在 全球超过半数的网站中被使用,特别是几乎所有最热门和访问量最大的网站。
Apache 支持许多特性,大部分通过编译的模块实现。这些特性从服务器端的编程语言支持到身份认证 方案。一些通用的语言接口支持 Perl,Python, Tcl, 和 PHP。流行的认证模块包括 mod_access, mod_auth 和 mod_digest。其他的例子有 SSL 和 TLS 支持(mod_ssl), 代理服务器 (proxy) 模块, 很有用的 URL 重写(由 mod_rewrite 实现),定制日志文件(mod_log_config),以及过滤支持(mod_include 和 mod_ext_filter)。Apache 日志可以通过网页浏览器使用免费的脚本 AWStats 或Visitors 来进行分析。

【题目编号】 jsd-03-304-4003
【知 识 点】 JavaWeb-Web应用- Web容器-Tomcat
【难易程度】 10
【题目描述】
Tomcat 服务器的默认端口是多少?怎样修改 tomcat 的端口?
【正确答案】
默认端口为 8080,可以通过 service.xml 的 Connector 元素的 port 属性来修改端口。

【题目编号】 jsd-03-304-4004
【知 识 点】 JavaWeb-Web应用-MVC
【难易程度】 50
【题目描述】
MVC 的各个部分都有哪些技术来实现?如何实现?
【正确答案】
MVC 是 Model-View-Controller 的缩写,Model 代表的是应用的业务逻辑(通过 JavaBean,EJB 组件实现),View 是应用的表示面(由 JSP 页面产生)Controller 是通过应用的处理过程控制,(一 般是一个 servert)通过这种设计模型把应用逻辑,处理过程和显示逻辑分成不同的组件实现,这些 组件可以进行交互和重用

【题目编号】 jsd-03-304-4005
【知 识 点】 JavaWeb-Web应用-B/S与C/S
【难易程度】 60
【题目描述】
什么是 B/S 结构,C/S 结构?
【正确答案】
C/S 是 Client/Server 的缩写。服务器通常采用高性能的 PC. 工作站或小型机,并采用大型数 据库系统,如 Oracle、Sybase、Informix 或 SQL Server。客户端需要安装专用的客户端软件。
B/S 是 Brower/Server 的缩写,客户机上只要安装一个浏览器(Browser),如 Netscape Navigator 或 Internet Explorer,服务器安装 Oracle、Sybase、Informix 或 SQL Server 等数据库。在这种结构 下,用户界面完全通过 WWW 浏览器实现,一部分事务逻辑在前端实现,但是主要事务逻辑在服务器端实现。浏览器通过 Web Server 同数据库进行数据交互。

【题目编号】 jsd-03-304-4006
【知 识 点】 JavaWeb-Web应用-Log4J
【难易程度】 70
【题目描述】
Log4J 是 Apache 组织的开源一个开源项目,通过 Log4J,可以指定日志信息输出的目的地,如 console、file 等。Log4J 采用日志级别机制,请按照输出级别由低到高的顺序写出日志输出级别。
【正确答案】
Log4J 分 为 OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL 或者您定义的级别。Log4j 建议 只使用四个级别,优先级从高到低分别是 ERROR、WARN、INFO、DEBUG。通过在这里定义的级别,您 可以控制到应用程序中相应级别的日志信息的开关。比如在这里定义了 INFO 级别, 则应用程序中 所有 DEBUG 级别的日志信息将不被打印出来。

【题目编号】 jsd-03-304-4007
【知 识 点】 JavaWeb-Web基础-J2EE
【难易程度】 50
【题目描述】
J2EE 是什么?它包括哪些技术?
【正确答案】
从整体上讲,J2EE 是使用 Java 技术开发企业级应用的工业标准,它是Java技术不断适应和促进企业级应用过程中的产物。适用于企业级应用的 J2EE,提供一个平台独立的、可移植的、多用户的、 安全的和基于标准的企业级平台,从而简化企业应用的开发、管理和部署。J2EE 是一个标准,而不是一个现成的产品。
主要包括以下这些技术:

  1. Servlet
    Servlet 是 Java 平台上的 CGI 技术。Servlet 在服务器端运行,动态地生成 Web 页面。与传统的 CGI 和许多其它类似 CGI 的技术相比,Java Servlet 具有更高的效率并更容易使用。对于 Servlet,重复 的请求不会导致同一程序的多次转载,它是依靠线程的方式来支持并发访问的。
    2)JSP
    JSP(Java Server Page)是一种实现普通静态 HTML 和动态页面输出混合编码的技术。从这一点来看, 非常类似 Microsoft ASP、PHP 等技术。借助形式上的内容和外观表现的分离,Web 页面制作的任务可 以比较方便地划分给页面设计人员和程序员,并方便地通过 JSP 来合成。在运行时态,JSP 将会被首 先转换成 Servlet,并以 Servlet 的形态编译运行,因此它的效率和功能与 Servlet 相比没有差别, 一样具有很高的效率。
  2. EJB
    EJB 定义了一组可重用的组件:Enterprise Beans。开发人员可以利用这些组件,像搭积木一样建立分布式应用。
    4)JDBC
    JDBC(Java Database Connectivity,Java 数据库连接)API 是一个标准 SQL(Structured Query Language,结构化查询语言)数据库访问接口,它使数据库开发人员能够用标准 Java API 编写数据库 应用程序。JDBC API 主要用来连接数据库和直接调用 SQL 命令执行各种 SQL 语句。利用 JDBC API 可 以执行一般的 SQL 语句、动态 SQL 语句及带 IN 和 OUT 参数的存储过程。Java 中的 JDBC 相当于 Microsoft 平台中的 ODBC(Open Database Connectivity)

【题目编号】 jsd-03-304-4008
【知 识 点】 JavaWeb-Web应用-Web容器
【难易程度】 10
【题目描述】
什么是 Web 容器?
【正确答案】
容器就是一种服务程序,在服务器一个端口就有一个提供相应服务的程序,而这个程序就是处 理从客户端发出的请求,如 JAVA 中的 Tomcat 容器,ASP 的 IIS 或 PWS 都是这样的容器。

【题目编号】 jsd-03-304-4009
【知 识 点】 JavaWeb-Web应用-J2EE
【难易程度】 50
【题目描述】
描述 J2EE 框架的多层结构,并简要说明各层的作用。
【正确答案】

  1. Presentation layer(表示层)
    a. 表示逻辑(生成界面代码)
    b. 接收请求
    c. 处理业务层抛出的异常
    d. 负责规则验证(数据格式,数据非空等)
    e. 流程控制
  2. Service layer(服务层/业务层)
    a.封装业务逻辑处理,并且对外暴露接口
    b.负责事务,安全等服务
  3. Persistence layer(持久层)
    a.封装数据访问的逻辑,暴露接口
    b.提供方便的数据访问的方案(查询语言,API,映射机制等)
    4)Domain layer(域层)
    a. 业务对象以及业务关系的表示
    b. 处理简单的业务逻辑
    c. 域层的对象可以穿越表示层,业务层,持久层
    软件分层结构使得代码维护非常方便,设计明确,各层独立,专注自己擅长的领域。

【题目编号】 jsd-03-304-4010
【知 识 点】 JavaWeb-Web应用-名词解释
【难易程度】 50
【题目描述】
WEB SERVICE 名词解释。JSWDL 开发包的介绍。JAXP、JAXM 的解释。
【正确答案】
Web Service 是基于网络的、分布式的模块化组件,它执行特定的任务,遵守具体的技术规范, 这些规范使得 Web Service 能与其他兼容的组件进行互操作;
JAXP(Java API for XML Parsing)定义了在 Java 中使用 DOM, SAX, XSLT 的通用的接口,这样在 你的程序中你只要使用这些通用的接口,当你需要改变具体的实现时候也不需要修改代码;
JAXM(Java API for XML Messaging)是为 SOAP 通信提供访问方法和传输机制的 API;
第四部分:流行框架
4.1 Struts2
【题目编号】 jsd-04-401-1001
【知 识 点】 流行框架-Struts2-Struts简介
【难易程度】 10
【题目描述】
Struts 框架可以支持以下哪种程序开发语言?
【选项】
A.C B.C++ C.Java D.C#
【正确答案】 C
【解释】

【题目编号】 jsd-04-401-4001
【知 识 点】 Struts2的工作流程
【难易程度】 20
【题目描述】
简述基于 Struts 框架 Web 应用的工作流程
【正确答案】
在 web 应用启动时就会加载初始化 ActionServlet,ActionServlet 从 struts-config.xml 文件 中读取配置信息,把它们存放到各种配置对象中, 当 ActionServlet 接收到一个客户请求时,将执行 如下流程.

  1. 检索和用户请求匹配的 ActionMapping 实例,如果不存在,就返回请求路径无效信息;
  2. 如果 ActionForm 实例不存在,就创建一个 ActionForm 对象,把客户提交的表单数据保存到ActionForm 对象中;
  3. 根据配置信息决定是否需要表单验证.如果需要验证,就调用ActionForm的validate()方法;
  4. 如果 ActionForm 的 validate()方法返回 null 或返回一个不包含 ActionMessage 的 ActionErrors对象, 就表示表单验证成功;
  5. ActionServlet 根据 ActionMapping 所包含的映射信息决定将请求转发给哪个 Action,如果相应的Action 实例不存在,就先创建这个实例,然后调用 Action 的 execute()方法;
  6. Action 的 execute()方法返回一个 ActionForward 对象,ActionServlet 在把客户请求转发给ActionForward 对象指向的 JSP 组件;
  7. ActionForward 对象指向 JSP 组件生成动态网页,返回给客户;

【题目编号】 jsd-04-401-4002
【知 识 点】 流行框架-Struts2-MVC
【难易程度】 20
【题目描述】
MVC 模式中 M,V,C 每个代表意义,并简述在 Struts 中 MVC 的表现方式。
【正确答案】
MVC 是 Model-View-Controller 的缩写,Model 代表的是应用的业务逻辑(通过 JavaBean,EJB 组件 实现),View 是应用的表示层(由 JSP 页面产生)Controller 是通过应用的处理过程控制,(一般是 一个 servert)通过这种设计模型把应用逻辑,处理过程和显示逻辑分成不同的组件实现,这些组件 可以进行交互和重用。
在 Struts 框架中 Controller 功能由 ActionServlet 和 ActionMapping 对象构成,核心是一个 Servlet 类型的对象 ActionServlet,它用来接收客户端的请求。ActionServlet 包括一组基于配置的 ActionMapping 对象,每个 ActionMapping 对象实现了一个请求到一个具体的 Model 部分的 Action 处理器对象之间的映射。Model 部分由 Action 和 ActionForm 对象构成。所有的 Action 处理器对象都 是开发者从 Struts 的 Action 类派生的子类。Action 处理器对象封装了具体的处理逻辑,调用业务逻 辑模块,并且把响应提交到合适的 View 组件以产生响应。Struts 提供的 ActionForm 组件对象可以通 过定义属性描述客户端表单数据,开发者可以从它派生子类对象,并利用它和 Struts 提供的自定义 标记库相结合,可以实现对客户端的表单数据的良好封装和支持,Action 处理器对象可以直接对它进 行读写,而不再需要和 request、response 对象进行数据交互。通过 ActionForm 组件对象实现了对 View 和 Model 之间交互的支持(View 部分是通过 JSP 技术实现的)。Struts 提供了自定义的标记库, 通过这些自定义标记库可以非常容易地和系统的 Model 部分交互,通过使用这些自定义标记库创建的JSP 表单,可以实现对 Model 部分中的 ActionForm 的映射,完成对用户数据的封装。

【题目编号】 jsd-04-401-4003
【知 识 点】 流行框架-Struts2-ApplicationContext
【难易程度】 20
【题目描述】
常用的获取ApplicationContext的方法:
【正确答案】
FileSystemXmlApplicationContext:从文件系统或者url指定的xml配置文件创建,参数为配置文件名或文件名数组。
ClassPathXmlApplicationContext:从classpath的xml配置文件创建,可以从jar包中读取配置文件。
WebApplicationContextUtils:从web应用的根目录读取配置文件,需要先在web.xml中配置,可以配置监听器或者servlet来实现。

<listener>
	<listener-class>org.springframework.web.context.ContextLoaderListener
      </listener-class>
</listener>
<servlet>
	<servlet-name>context</servlet-name>
	<servlet-class>org.springframework.web.context.ContextLoaderServlet
      </servlet-class>
	<load-on-startup>1</load-on-startup>
</servlet>

这两种方式都默认配置文件为web-inf/applicationContext.xml,也可使用context-param指定配置文件。

<context-param>
	<param-name>contextConfigLocation</param-name>
	<param-value>/WEB-INF/myApplicationContext.xml</param-value>
</context-param>

【题目编号】 jsd-04-401-4004
【知 识 点】 流行框架-Struts2-OGNL
【难易程度】 30
【题目描述】
Struts2 包含哪些标签?
【正确答案】
A:

<s:a href=""></s:a>-----超链接,类似于 html 里的<a></a>
<s:action name=""></s:action>-----执行一个 view 里面的一个 action
<s:actionerror/>-----如果 action 的 errors 有值那么显示出来
<s:actionmessage/>-----如果 action 的 message 有值那么显示出来
<s:append></s:append>-----添加一个值到 list,类似于 list.add();
<s:autocompleter></s:autocompleter>-----自动完成<s:combobox>标签的内容,这个是 ajax

B:

<s:bean name=""></s:bean>-----类似于 struts1.x 中的,JavaBean 的值

C:

<s:checkbox></s:checkbox>-----复选框
<s:checkboxlist list=""></s:checkboxlist>-----多选框
<s:combobox list=""></s:combobox>-----下拉框
<s:component></s:component>-----图像符号

D:

<s:date/>-----获取日期格式
<s:datetimepicker></s:datetimepicker>-----日期输入框
<s:debug></s:debug>-----显示错误信息
<s:div></s:div>-----表示一个块,类似于 html 的<div></div>
<s:doubleselect list="" doubleName="" doubleList=""></s:doubleselect>-----双下拉框

E:

<s:if test=""></s:if>
<s:elseif test=""></s:elseif>
<s:else></s:else>-----这 3 个标签一起使用,表示条件判断

F:

<s:fielderror></s:fielderror>-----显示文件错误信息
<s:file></s:file>-----文件上传
<s:form action=""></s:form>-----获取相应 form 的值

G:

<s:generator separator="" val=""></s:generator>----和<s:iterator>标签一起使用

H:

<s:head/>-----在<head></head>里使用,表示头文件结束
<s:hidden></s:hidden>-----隐藏值

I:

<s:i18n name=""></s:i18n>-----加载资源包到值堆栈
<s:include value=""></s:include>-----包含一个输出,servlet 或 jsp 页面
<s:inputtransferselect list=""></s:inputtransferselect>-----获取 form 的一个输入
<s:iterator></s:iterator>-----用于遍历集合

L:

<s:label></s:label>-----只读的标签
M:
<s:merge></s:merge>-----合并遍历集合出来的值

O:

<s:optgroup></s:optgroup>-----获取标签组
<s:optiontransferselect	doubleList=""	list=""
doubleName=""></s:optiontransferselect>-----左右选择框

P:

<s:param></s:param>-----为其他标签提供参数
<s:password></s:password>-----密码输入框
<s:property/>-----得到'value'的属性
<s:push value=""></s:push>-----value 的值 push 到栈中,从而使 property 标签的能够获取 value的属性
R:
<s:radio list=""></s:radio>-----单选按钮
<s:reset></s:reset>-----重置按钮

S:

<s:select list=""></s:select>-----单选框
<s:set name=""></s:set>-----赋予变量一个特定范围内的值
<s:sort comparator=""></s:sort>-----通过属性给 list 分类
<s:submit></s:submit>-----提交按钮
<s:subset></s:subset>-----为遍历集合输出子集

T:

<s:tabbedPanel id=""></s:tabbedPanel>-----表格框
<s:table></s:table>-----表格
<s:text name=""></s:text>-----I18n 文本信息
<s:textarea></s:textarea>-----文本域输入框
<s:textfield></s:textfield>-----文本输入框
<s:token></s:token>-----拦截器
<s:tree></s:tree>-----树
<s:treenode label=""></s:treenode>-----树的结构

U:

<s:updownselect list=""></s:updownselect>-----多选择框
<s:url></s:url>-----创建 url

【题目编号】 jsd-04-401-4005
【知 识 点】 流行框架-Struts2-OGNL、ValueStack
【难易程度】 40
【题目描述】
struts2 中,OGNL 访问值栈的时候查找的顺序是什么?请排序:模型对象、临时对象、固定名称 的对象、Action 对象。
【正确答案】
struts2 的值栈排列顺序为:1).临时对象;2).模型对象;3).Action 对象;4).固定名称 对象(如#application, #session, #request 等对象)。

【题目编号】 jsd-04-401-4006
【知 识 点】 流行框架-Struts2-参数传递
【难易程度】 20
【题目描述】
struts2 中,Action 通过什么方式获得用户从页面输入的数据,又是通过什么方式把其自身的数据传给视图的?
【正确答案】
1)可以直接通过与表单元素相同名称的数据成员(需要存在符合命名规范 set 和 get 方法)获取页 面表单数据。
2)会把处理好的数据成员放入值栈中,到页面可以使用 struts2 标签取值就可以了。

【题目编号】 jsd-04-401-4007
【知 识 点】 流行框架-Struts2-struts2国际化
【难易程度】 60
【题目描述】
struts 中如何实现国际化,涉及哪些文件?
【正确答案】
“国际化”是指一个应用程序在运行时能够根据客户端请求所来自的国家/地区、语言的不同 而显示不同的用户界面。Struts 框架通过使用bean:message标记,以及使用 java.util 数据包中定 义的 Locale 和 ResourceBundle 类来支持国际化。java.text.MessageFormat 类定义的技术可以支持 消息的格式。利用此功能,开发人员不需了解这些类的细节就可进行国际化和设置消息的格式。会涉 及到资源文件,不需了解这些类的细节就可进行国际化和设置消息的格式。会涉及到资源文件, struts-config.xml 配置文件,web.xml 配置文件。

【题目编号】 jsd-04-401-4008
【知 识 点】 流行框架-Struts2-MVC
【难易程度】 50
【题目描述】
请简单画出 struts 技术构建 mvc 的流程图
【正确答案】

【题目编号】 jsd-04-401-4009
【知 识 点】 流行框架-Struts2-视图
【难易程度】 40
【题目描述】
Struts 的控制器部分,视图部分包括哪些内容?
【正确答案】
控制器:在 struts 中,基本的控制器组件是 ActionServlet 类中的实例 servelt,实际使用的 servlet 在配置文件中由一组映射(由 ActionMapping 类进行描述)进行定义。对于业务逻辑的操作则主要由 Action、ActionMapping、ActionForward 这几个组件协调完成的,其中 Action 扮演了真正的业务逻辑的实现者, ActionMapping 与 ActionForward 则指定了不同业务逻辑或流程的运行方向。 struts-config.xml 文件配置控制器。
视图:视图主要由 JSP 建立,struts 包含扩展自定义标签库(TagLib),可以简化创建完全国际化用 户界面的过程。目前的标签库包括:Bean Tags、HTML tags、Logic Tags、Nested Tags 以及 Template Tags 等。

【题目编号】 jsd-04-401-5001
【知 识 点】 流行框架-Struts2-applicationContext
【难易程度】 50
【题目描述】
如何在web环境中配置applicationContext.xml文件?
【正确答案】

<listener>
   <listener-class>
    org.springframework.web.context.ContextLoaderListener
   </listener-class>
</listener>

或:

<servlet>
   <servlet-name>context</servlet-name>
    <servlet-class>
     org.springframework.web.context.ContextLoaderServlet
    </servlet-class>
   <load-on-startup>1</load-on-startup>
</servlet>

通过如下方法取出applicationContext实例:

ApplicationContext ac=
       WebApplicationContextUtils.getWebApplicationContext(this.getServletContext);

4.2 Hibernate
【题目编号】 jsd-04-402-1001
【知 识 点】 流行框架-Hibernate-主键生成
【难易程度】 10
【题目描述】
以下哪个 Hibernate 主键生成策略是实现主键按数值顺序递增的?
【选项】
A. increment B. identity C. sequence D. native
【正确答案】 A
【解释】
increment 生成策略:当 Hibernate 准备在数据库表中插入一条新记录时,首先从数据库表中获取当 前主键字段的最大值,然后在最大值基础上加 1,作为当前持久化对象的标识符属性值。这种策略即 increment 生成策略,用其生成的标识符属性的类型可以是 long、short、int 及其封装类的类型 identity 生成策略:在 MS SQL Server、MySQL 和 DB2 等数据库中可以设置表中某一个字段的数值自 动增长,identity 生成策略通过这种方式为当前记录获取主键值的同时为持久化对象赋予标识符属性值。
sequence 生成策略:在 Oracle、DB2 和 PostgreSQL 等数据库中创建一个序列(sequence),然后Hibernate 通过该序列为当前记录获取主键值,进而为持久化对象赋予标识符属性值。
native 生成策略:由 Hibernate 根据所使用的数据库支持能力从 identity、sequence 或者等生成策 略中选择一种。

【题目编号】 jsd-04-402-1002
【知 识 点】 流行框架-Hibernate-延迟加载
【难易程度】 20
【题目描述】
在Hibernate中Customer类的orders集合属性,采用延迟检索策略,编译或运行以下程序,会出现什么情况:()
Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
Customer customer = (Customer)session.get(Customer.class,new Long(1));
tx.commit();
session.close();
Iterator orderIterator = customer.getOrders().iterator();
【选项】
A 编译出错
B 编译通过,并正常运行
C 编译通过,但运行时抛出异常
D 编译通过,并正常运行
【正确答案】 C
【解释】无

【题目编号】 jsd-04-402-4001
【知 识 点】 流行框架-Hibernate-Hibernate简介
【难易程度】 70
【题目描述】
Hibernate 中:不看数据库,不看 XML 文件,不看查询语句,怎么样能知道表结构?
【正确答案】
可以看与 XML 文件对应的域模型。
【解释】无

【题目编号】 jsd-04-402-4002
【知 识 点】 流行框架-Hibernate-延迟加载、关联映射
【难易程度】 50
【题目描述】
请看如下片段:

<set	name=“address”
lazy=“true”
inverse=“false”
cascade=“all-delete-orphan”>
<key column = “USERID”> </key>
<one-to-many class=“com.norteksoft.erm.model.Address”/>
</ set >

解释 lazy、inverse、cascade 以及 all-delete-orphan 属性的含义;并给出示例代码,说明在如下组合情况下,对于 save、update、delete一对多关系中的一方对象操作时的区别:
inverse cascade
true all-delete-orphan
false all-delete-orphan
true all
false all
true none
false none
【正确答案】
(一)lazy:延迟加载
Lazy 的有效期:只有在 session 打开的时候才有效;session 关闭后 lazy 就没效了。
lazy 策略可以用在:
a.标签上:可以取值 true/false
b.标签上,可以取值 true/false,这个特性需要类增强
c./等集合上,可以取值为 true/false/extra
d./等标签上,可以取值 false/proxy/no-proxy

  1. get 和 load 的区别:
    a.get 不支持延迟加载,而 load 支持。
    b.当查询特定的数据库中不存在的数据时,get 会返回 null,而 load 则抛出异常。
  2. 类(Class)的延迟加载:
    a. 设置标签中的 lazy=“true”,或是保持默认(即不配置 lazy 属性)
    b. 如果 lazy 的属性值为 true,那么在使用 load 方法加载数据时,只有确实用到
    数据的时候才会发出 sql 语句;这样有可能减少系统的开销。
  3. 集合(collection)的延迟加载:可以取值 true,false,extra a.true:默认取值,它的意思是只有在调用这个集合获取里面的元素对象时,才发出查询语句,加载 其集合元素的数据 b.false:取消懒加载特性,即在加载对象的同时,就发出第二条查询语句加载其关联集合的数据 c.extra:一种比较聪明的懒加载策略,即调用集合的 size/contains 等方法的时候,hibernate 并不 会去加载整个集合的数据,而是发出一条聪明的 SQL 语句,以便获得需要的值,只有在真正需要用到 这些集合元素对象数据的时候,才去发出查询语句加载所有对象的数据。
  4. Hibernate 单端关联懒加载策略:即在/标签上可以配置 懒加载策略。可以取值为:false/proxy/no-proxy
    a.false:取消懒加载策略,即在加载对象的同时,发出查询语句,加载其关联对象
    b.proxy:这是 hibernate 对单端关联的默认懒加载策略,即只有在调用到其关联对
    象的方法的时候才 真正发出查询语句查询其对象数据,其关联对象是代理类
    c.no-proxy:这种懒加载特性需要对类进行增强,使用 no-proxy,其关联对象不是代
    理类注意:在 class 标签上配置的 lazy 属性不会影响到关联对象!!!
    (二)inverse
    inverse 是指的关联关系的控制方向,inverse=false 的 side(side 其实是指 inverse=false 所位 于的 class 元素)端有责任维护关系,而 inverse=true 端无须维护这些关系
    (三) cascade
    cascade 指的是层级之间 的 连 锁 操 作 。 在 定 义 关 联 对 象 的 映 射 时 , 使 用 cascade=“all” ,cascade=“save-update”,cascade="all-delete-orphan"或 cascade=“delete” a. 如果父对象被保存,所有的子对象会被传递到saveOrUpdate()方法去执行 (cascade=“save-update”)
    b. 如果父对象被传递到 update()或者 saveOrUpdate(),所有的子对象会被传递到 saveOrUpdate()方 法去执行(cascade=“save-update”) c.如果一个临时的子对象被一 个持久化的父对象引用了,它会被传递到 saveOrUpdate()去执行 (cascade=“save-update”)
    c. 如果父对象被删除了,所有的子对象对被传递到 delete()方法执行 (cascade=“delete”)
    e. 如果临时的子对象不再被持久化的父对象引用,什么都不会发生(必要时,程 序应该明确的删除这 个子对象),除非声明了 cascade=“all-delete-orphan”,在这种 情况下,成为“孤儿”的子对象会被删除。
    (四) save、update、delete 一对多关系中的一方对象操作时的区别
    1)当一方设置 inverse=true 时,所有由一方发出的操作都不会关联到多方。
    2)当一方设置 inverse=false, cascade=all-delete-orphan 时,将删除不再和一方对象关联
    的所有多方对象。
    3)当一方设置 inverse=false, cascade=all 时,当保存和删除一方对象时,级联保存和删
    除所有关联的多方对象。
    4)当一方设置 inverse=false, cascade=none 时,当对一方操作时,不级联到关联的多方
    对象。

【题目编号】 jsd-04-402-4003
【知 识 点】 流行框架-Hibernate-延迟加载
【难易程度】 50
【题目描述】
对 hibernate 的延迟加载如何理解,在实际应用中,延迟加载与 session 关闭的矛盾是如何处理的?
【正确答案】
延迟加载就是并不是在读取的时候就把数据加载进来,而是等到使用时再加载。那么 Hibernate 是怎么知识用户在什么时候使用数据了呢?又是如何加载数据呢?其实很简单,它使用了代理机制。 返回给用户的并不是实体本身,而是实体对象的代理。代理对象在用户调用 getter 方法时就会去数 据库加载数据。但加载数据就需要数据库连接。而当我们把会话关闭时,数据库连接就同时关闭了。 这种情况就叫做未初始化的关系。
延迟加载与 session 关闭的矛盾一般可以这样处理:
1)、关闭延迟加载特性。
操作起来比较简单,因为 hibernate 的延迟加载特性是在 hbm 配置里面可控制的。默认 lazy=“true”, 具体配置可以查看一下相关文档,就不详细叙述了。使用这个解决办法带来的隐患是十分大的。
首先,出现 no session or session was closed 就证明了您已经在使用外键关联表,如果去掉延迟加载的话,则表示每次查询的开销都会变得十分的大,如果关联表越多,后果也可以想象得到。所以 不建议使用这个方法解决。
2)、在 session 关闭之前把我们想要查询的数据先获取了。
首先需要了解一下 session 什么时候关闭,也就是它的生命周期。通常情况下 hibernate 会在查询数 据关闭 session,而使用 getHibernateTemplate().get 方法查询后会延迟关闭的时间。会在事务结束 后才关闭。使用拦截器(Interceptor)或过滤器(Filter)控制 session。
spring 为解决 hibernate 这一特性提供的解决方案,可以有效的控制 session 生命周期。
【解释】无

【题目编号】 jsd-04-402-4004
【知 识 点】 流行框架-Hibernate-Hibernate简介
【难易程度】 40
【题目描述】
介绍一下 hibernate 的工作原理、优点以及如何优化?
【正确答案】
工作原理:
1)启动 Hibernate 构建 Configuration 实例,初始化该实例中的所有变量 Configuration cfg = new Configuration().configure();
2).加载 hibernate.cfg.xml 文件至该实例内存,通过 hibernate.cfg.xml 文件中的 mapping 节点配置,加载 hbm.xml 文件至该实例内存;
3). 由上面得到的Configuration 实例构建一个 SessionFactory 实例 SessionFactory sf =cfg.buildSessionFactory();
4).由上面得到的 SessionFactory 实例创建连接 Session s = sf.openSession();
5).由上面得到的 Session 实例创建事务操作接口 Transaction 的一个实例 tx Transaction tx =s.beginTransaction();
6).通过 Session 接口提供的各种方法操作数据库的访问
7).提交数据库的操作结果 tx.commit();
8).关闭 Session 链接 s.close();
优点:
1).对 JDBC 访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。
2).Hibernate 是一个基于 JDBC 的主流持久化框架,是一个优秀的 ORM 实现。他很大程度的简化 DAO层的编码工作
3).hibernate 使用 Java 反射机制,而不是字节码增强程序来实现透明性。
4).hibernate 的性能非常好,因为它是个轻量级框架。映射的灵活性很出色。它支持各种关系数据库,从一对一到多对多的各种复杂关系。
优化:
1).使用双向一对多关联,不使用单向一对多
2).灵活使用单向一对多关联
3).不用一对一,用多对一取代
4).配置对象缓存,不使用集合缓存
5).一对多集合使用 Bag,多对多集合使用 Set
6).继承类使用显式多态
7).表字段要少,表关联不要怕多,可以利用二级缓存
【解释】无

【题目编号】 jsd-04-402-4005
【知 识 点】 流行框架-Hibernate-延迟加载-get和load
【难易程度】 50
【题目描述】
Hibernate 实现中,load 和 get 方法的区别,find 和 iterate 的区别?
【正确答案】
load 和 get 方法的区别:hibernate 对于 load 方法认为该数据在数据库中一定存在,可以放心的使用代理来延迟加载,如果在使用过程中发现了问题,只能抛异常;而对于 get 方法,hibernate 一定要获取到真实的数据,否则返回 null。
find 和 iterate 的区别:find 方法通过一条 Select SQL 实现了查询操作,而 iterate 方法要执 行多条 Select SQL.iterate 第一次查询获取所有符合条件的记录的 id,然后再根据各个 id 从库表中 读取对应的记录,这是一个典型的 N+1 次的查询问题,如果符合条件记录有 10000 条,就需要执行 10001条 Select SQL,性能会非常差。
【解释】无

【题目编号】 jsd-04-402-4006
【知 识 点】 流行框架-Hibernate-Hibernate核心接口
【难易程度】 30
【题目描述】
Hibernate 有哪 5 个核心接口?
【正确答案】
Configuration 接口:配置 Hibernate,根据其启动 hibernate,创建 SessionFactory 对象; SessionFactory 接口:初始化 Hibernate,充当数据存储源的代理,创建 session 对象, sessionFactory 是线程安全的,意味着它的同一个实例可以被应用的多个线程共享,是重量级、二级缓存;
Session 接口:负责保存、更新、删除、加载和查询对象,是线程不安全的,避免多个线程共享 同一个 session,是轻量级、一级缓存;
Transaction 接口:管理事务;
Query 和 Criteria 接口:执行数据库的查询。
【解释】无

【题目编号】 jsd-04-402-4007
【知 识 点】 流行框架-Hibernate-关联映射
【难易程度】 40
【题目描述】
什么是 ORM?
【正确答案】
对象关系映射(Object—Relational Mapping,简称 ORM)是一种为了解决面向对象与面向关 系数据库存在的互不匹配的现象的技术;简单的说,ORM 是通过使用描述对象和数据库之间映射的元 数据,将 java 程序中的对象自动持久化到关系数据库中;本质上就是将数据从一种形式转换到另外 一种形式。
【解释】无

【题目编号】 jsd-04-402-4008
【知 识 点】 流行框架-Hibernate-对象持久性-对象状态
【难易程度】 50
【题目描述】
hibernate 中的 java 对象有几种状态,其相互关系如何(区别和相互转换)。
【正确答案】
在 Hibernate 中,对象有三种状态:临时状态、持久状态和游离状态。
临时状态:当 new 一个实体对象后,这个对象处于临时状态,即这个对象只是一个保存临时数据的内 存区域,如果没有变量引用这个对象,则会被 jre 垃圾回收机制回收。这个对象所保存的数据与数据库没有任何关系,除非通过 Session 的 save 或者 SaveOrUpdate 把临时对象与数据库关联,并把数据 插入或者更新到数据库,这个对象才转换为持久对象; 持久状态:持久化对象的实例在数据库中有对应的记录,并拥有一个持久化表示(ID.。对持久化对象 进行 delete 操作后,数据库中对应的记录将被删除,那么持久化对象与数据库记录不再存在对应关 系,持久化对象变成临时状态。 持久化对象被修改变更后,不会马上同步到数据库,直到数据库事务提交。在同步之前,持久化对象 是脏的(Dirty)。
游离状态:当 Session 进行了 Close、Clear 或者 evict 后,持久化对象虽然拥有持久化标识符和与 数据库对应记录一致的值,但是因为会话已经消失,对象不在持久化管理之内,所以处于游离状态(也叫:脱管状态)。游离状态的对象与临时状态对象是十分相似的,只是它还含有持久化标识。
【解释】无

4.3 Mybatis
【题目编号】 jsd-04-401-1001
【知 识 点】 流行框架-Mybatis-配置文件
【难易程度】 30
【题目描述】
不是Mybatis配置文件中的主要元素是( )
【选项】
A.properties B.transactionManager C.mappers D.bean
【正确答案】 D
【解释】无

【题目编号】 jsd-04-403-4001
【知 识 点】 流行框架-MyBatis-动态SQL
【难易程度】 20
【题目描述】
MyBatis中如何实现动态SQL的?
【正确答案】
使用动态sql的元素:
if
choose(when,otherwise)
trim
where
set
foreach

【题目编号】 jsd-04-403-4002
【知 识 点】 流行框架-MyBatis-动态SQL
【难易程度】 70
【题目描述】
MyBatis解决插入空值问题?
【正确答案】
MyBatis 插入空值时,需要指定JdbcType jdbcType=NUMERIC

【题目编号】 jsd-04-403-4003
【知 识 点】 流行框架-Mybaties-XML配置文件
【难易程度】 80
【题目描述】
Mybaties中#与KaTeX parse error: Expected 'EOF', got '#' at position 16: 的区别? 【正确答案】 1)#̲是把传入的数据当作字符串,如#…传入的数据直接生成在sql里,如 f i e l d field field传入的是id,则sql语句生成是这样,order by id ;
3)#方式能够很大程度防止sql注入, 但 方 式 无 法 防 止 s q l 注 入 ; 4 ) 方式无法防止sql注入; 4) sql;4)方式一般用于传入数据库对象.例如传入表名;
5)一般能用#的就别用$ ;

【题目编号】 jsd-04-403-4004
【知 识 点】 流行框架-Mybaties-xml配置文件
【难易程度】 40
【题目描述】
Mybaties中使用like ‘%#filedName#%’ 时,有什么问题?
【正确答案】
在xml映射文件中,如果直接按如上写法,会报异常:java.sql.SQLException: Invalid argument in JDBC call: parameter index out of range: 1。
所以一般会采用如下两种方式:

  1. 将#换成 , 如 l i k e ‘ ,如like ‘% like filedName $%’,这样就没有问题了…
  2. 采用字符串联接符||,如:like ‘%’||# filedName #||’%’

【题目编号】 jsd-04-403-4005
【知 识 点】 流行框架-Mybaties-Mybaties工作原理
【难易程度】 40
【题目描述】
MyBatis原理,为什么使用,优点是什么
【正确答案】
封装了JDBC操作,将SQL查询结果映射为对象,将对象属性值映射到SQL.
步骤:
1)解析SqlMapConfig.xml和SqlMap.xml(定义SQL)
2)将解析出的SQL生成MappedStatement(预编译Statement)
3)将传入的SQL参数给Statement绑定,参数类型可以为 java对象,Map类型,int,String类型
4)执行mappedstatement,返回sql结果
5)将返回的SQL结果转为Java对象,Map,int,String类型返回
优点:简化数据库访问操作,便于实现DAO操作

【题目编号】 jsd-04-403-4006
【知 识 点】 流行框架-Mybaties-mybatis与ibatis
【难易程度】 50
【题目描述】
mybatis 和 ibatis比较
【正确答案】
1)Mybatis实现了接口绑定,使用更加方便。在ibatis2.x中我们需要在DAO的实现类中指定具体对应哪个xml映射文件,而Mybatis实现了DAO接口与xml映射文件的绑定,自动为我们生成接口的具体实现,使用起来变得更加省事和方便。这可以说是Mybatis最重要的改进。
注意:
虽然Mybatis支持在接口中直接使用annotation的配置方式来简化配置,不过强烈建议仍然使用xml配置的方式。毕竟annotation的配置方式功能有限且代码入侵性太强。使用xml配置方式才能体现出Mybatis的优势所在
2)对象关系映射的改进,效率更高
相信很多在使用ibatis2.x的朋友并没有通过ibatis的xml映射文件来实现对象间的关系映射。其实也确实没有必要那么做,因为ibatis2.x采用的是“嵌套查询”的方式将对象之间的关系通过查询语句的直接拼装来实现,其效果和在DAO或Service中自行封装是一样的。不过这种方式存在“N+1查询问题”。概括地讲,N+1查询问题可以是这样引起的:
你执行了一个单独的SQL语句来获取结果列表(就是+1)。对返回的每条记录,你执行了一个查询语句来为每个加载细节(就是N)。这个问题会导致成百上千的SQL语句被执行。这通常不是期望的。
而在Mybatis中,除了兼容ibatis2.x中的“嵌套查询”方式外,还提供了直接“嵌套结果”的方式,其效果相当于直接通过一句sql将查询出的dto对象自动封装成所需的对象。
具体实现方法请自行参考Mybatis官方使用手册,不在此累述.
不过实际上这一改进所带来的好处也是很有限的。因为这一方式在使用分页的时候并不起作用,或者说嵌套对象的结果集是不允许进行分页的。这一点在Mybatis框架中已经做出了明确的限制(org.apache.ibatis.executor.resultset.NestedResultSetHandler里34行),而实际项目中需要分页的情况又特别多……
仔细一想,一对多映射确实不能通过配置文件来分页,因为这时查询出的记录数并不等于实际返回对象的size,不过一对一映射为什么也不允许就不太明白了。可能是因为一对一是一对多的特例,而在设计框架的时候并没有考虑去处理或是难于处理这一特例吧。
17. MyBatis采用功能强大的基于OGNL的表达式来消除其他元素。
熟悉struts2的人应该对OGNL表达式不会感到陌生,
MyBatis采用OGNL表达式简化了配置文件的复杂性,使用起来更简洁。

【题目编号】 jsd-04-403-4007
【知 识 点】 流行框架-Mybaties- Mybatis与Hibernate
【难易程度】 50
【题目描述】
Mybatis和Hibernate的区别
【正确答案】
共同点:Hibernate和Mybatis都是orm对象关系映射框架,都是用于将数据持久化的框架技术。
区别:1. Hiberante较深度的封装了jdbc,对开发者写sql的能力要求的不是那么的高,我们只要通过hql语句操作对象即可完成对数据持久化的操作了。
2. hibernate可移植性好,使用hibernate只需改变一下数据库方言即可搞定。用hibernate框架,数据库的移植变的非常方便。
3 .hibernate生成的sql语句耗费程序资源,优化起来也不是很方便,且对存储过程支持的也不够太强大。
4. Mybatis 是对jdbc的封装,但是封装的没有hibernate那么深,我们可以再配置文件中写sql语句,可以根据需求定制sql语句,数据优化起来较hibernate容易很多。 5. Mybatis要求程序员写sql的能力要相对使用hibernate的开发人员要高的多,且可移植性也不是很好。
6. 处理大数据时使用Mybatis比较好,因为优化较方便。

【题目编号】 jsd-04-403-4008
【知 识 点】 流行框架-Mybaties- Mybatis错误
【难易程度】 50
【题目描述】
Mybatis中1111错误是什么错误,怎么解决?
【正确答案】
在使用Mybatis时,不同的xml配置文件,有的会提示:无效的列类型: 1111。
通过观察,如果是参数是Map类型或者Java Object类型,如果Map或者Object里面的属性类型不一致,如有些属性是String类型,有些属性是Integer类型,那么MyBatis解析的时候,就会出现问题,类型无法识别。
当然,如果传入参数不是Map或者Java Object,而是多个参数列表的形式,如果参数类型一致,那么不会出现问题,如果参数类型不一致,如既有String类型,也有Integer类型,那么解析的时候同样会出错。或者因为传入的参数的字段为null对象无法获取对应的jdbcType类型,而报的错误。
解决方法:如果有类型不一致的情况,在值后面使用jdbcType加上类型,
例:
passWord = #{passWord,jdbcType=VARCHAR}
enable = #{enable,jdbcType=NUMERIC}
【解释】无
4.4 Spring
【题目编号】 jsd-04-404-1001
【知 识 点】 流行框架-Spring-Spring简介
【难易程度】 50
【题目描述】
Spring的组成一共有( )块组成。
【选项】
A.1 B.3 C.5 D.7
【正确答案】 D
【解释】无

【题目编号】 jsd-04-404-1002
【知 识 点】 流行框架-Spring-Spring简介
【难易程度】 40
【题目描述】
Spring核心模块的作用( )
【选项】
A.做AOP的
B.做IOC的,用来管理Bean的
C.是用来支持Hibernete
D.是用来支持Struts的
【正确答案】 B
【解释】无

【题目编号】 jsd-04-404-1003
【知 识 点】 流行框架-Spring-配置文件
【难易程度】 70
【题目描述】
看下面的代码,说法正确的是( )

<bean id="userTable" class="com.xfaccp.bean.UserTable">	
	<property name="userName">	
		<value>ACCP</value>
	</property>
</bean>

【选项】
A.其中的userName是UserTable中的属性,可以不要get、set方法。
B.其中的userName是UserTable中的属性,可以不要get方法,但是一定要有set方法
C.其中的userName是UserTable中的属性,可以不要set方法,但是一定要有get方法
D.其中的userName是UserTable中的属性,一定要有get和set方法
【正确答案】 B
【解释】无

【题目编号】 jsd-04-404-1004
【知 识 点】 流行框架-Spring-配置文件
【难易程度】 70
【题目描述】
看下面的代码,说法正确的是()

<bean id="beforeAdvisor" 
		class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">
	<property name="advice">
		<ref local="beforeImpl"/>
	</property>
	<property name="pattern">
		<value>.*</value>
	</property>
</bean>

【选项】
A.这段代码是在定义目标对象
B.这段代码是在定义切入点
C.这段代码是在定义代理
D.这段代码是在定义织入
【正确答案】 B
【解释】无

【题目编号】 jsd-04-404-1005
【知 识 点】 流行框架-Spring-配置文件
【难易程度】 20
【题目描述】
在web.xml文件中配置Spring框架,下面配置正确的是( )
【选项】
A.

<context-param>
  	<param-name>config</param-name>
  	<param-value>/WEB-INF/classes/applicationContext.xml</param-value>
  </context-param>

B.

<context-param>
  	<param-name>servletConfig</param-name>
  	<param-value>/WEB-INF/classes/applicationContext.xml</param-value>
  </context-param>

C.

<context-param>
  	<param-name>contextconfig</param-name>
  	<param-value>/WEB-INF/classes/applicationContext.xml</param-value>
  </context-param>

D.

<context-param>
  	<param-name>contextConfigLocation</param-name>
  	<param-value>/WEB-INF/classes/applicationContext.xml</param-value>
  </context-param>

【正确答案】 D
【解释】无

【题目编号】 jsd-04-404-1006
【知 识 点】 流行框架-Spring-Spring核心类-BeanFactory
【难易程度】 10
【题目描述】
下面关于BeanFactory接口说法正确的是( )
【选项】
A. BeanFactory是单例模式的实现,负责创建和管理bean
B. BeanFactory是工厂模式的实现,负责创建和管理bean
C. ApplicationContext类是它的实现类
D. 以上说法都不对
【正确答案】 B
【解释】无

【题目编号】 jsd-04-404-1007
【知 识 点】 流行框架-Spring-IOC-构造器注入
【难易程度】 10
【题目描述】
下面关于构造注入优点说法错误的是( )
【选项】
A. 构造期即创建一个完整、合法的对象
B. 不需要写繁琐的setter方法的
C. 对于复杂的依赖关系,构造注入更简洁,直观
D. 在构造函数中决定依赖关系的注入顺序
【正确答案】 C
【解释】无

多选
【题目编号】 jsd-04-404-2001
【知 识 点】 流行框架- Spring-Spring简介
【难易程度】 50
【题目描述】
下面关于Spring的说话正确的是( )
【选项】
A.Spring是一个重量级的框架
B.Spring是一个轻量级的框架
C.Spring是一个IOC和AOP容器
D.Spring是一个入侵式的框架
【正确答案】 BC
【解释】无

【题目编号】 jsd-04-404-2002
【知 识 点】 流行框架- Spring-IOC
【难易程度】 40
【题目描述】
下面关于IOC的理解,正确的是( )
【选项】
A.控制反转
B.对象被动的接受依赖类
C.对象主动的去找依赖类
D.一定要用接口
【正确答案】 AB
【解释】无

【题目编号】 jsd-04-404-2003
【知 识 点】 流行框架- Spring-AOP
【难易程度】 50
【题目描述】
下面关于AOP的理解,正确的是( )
【选项】
A.面向纵向的开发
B.面向横向的开发
C.AOP关注是面
D.AOP关注的是点
【正确答案】 BC
【解释】无

【题目编号】 jsd-04-404-2004
【知 识 点】 流行框架-Spring-Spring简介
【难易程度】 20
【题目描述】
Spring各模块之间关系( )
【选项】
A.Spring各模块之间是紧密联系的,相互依赖的
B.Spring各模块之间可以单独存在
C.Spring的核心模块是必须的,其他模块是基于核心模块
D.Spring的核心模块不是必须的,可以不要
【正确答案】 BC
【解释】无

【题目编号】 jsd-04-404-2005
【知 识 点】 流行框架-Spring-AOP-通知
【难易程度】 20
【题目描述】
Spring的通知类型有( )
【选项】
A.Before通知
B.After return通知
C.Throws通知
D.Around通知
【正确答案】 ABCD
【解释】无

【题目编号】 jsd-04-404-2006
【知 识 点】 流行框架-Spring-AOP-切入点
【难易程度】 30
【题目描述】
下面关于切入点的说法正确的是( )
【选项】
A.是AOP中一系列连连接点的集合
B.在做AOP时定义切入点是必须的
C.在做AOP时定义切入点不是必须的
D.可以用正则表达式来定义切入点
【正确答案】 ACD
【解释】无

【题目编号】 jsd-04-404-2007
【知 识 点】 流行框架-Spring-依赖注入
【难易程度】 30
【题目描述】
下面是Spring依赖注入方式的是( )
【选项】
A.set方法注入
B.构造方法的注入
C.get方法的注入
D.接口的注入
【正确答案】 A B
【解释】无

【题目编号】 jsd-04-404-2008
【知 识 点】 流行框架-Spring-配置文件
【难易程度】 50
【题目描述】
下面关于在Spring中配置Bean的id属性的说法正确的是( )
【选项】
A.id属性是必须,没有id属性就会报错
B.id属性不是必须的,可以没有
C.id属性的值可以重复
D.id属性的值不可以重复
【正确答案】 BD
【解释】无

【题目编号】 jsd-04-404-2009
【知 识 点】 流行框架-Spring-配置文件
【难易程度】 50
【题目描述】
下面关于在Spring中配置Bean的name属性的说法正确的是( )
【选项】
A.name属性是必须,没有name属性就会报错
B.name属性不是必须的,可以没有
C.name属性的值可以重复
D.name属性的值不可以重复
【正确答案】 BD
【解释】无

【题目编号】 jsd-04-404-2010
【知 识 点】 流行框架-Spring-IOC
【难易程度】 60
【题目描述】
下面是IOC自动装载方法的是( )
【选项】
A.byName
B.byType
C.constructor
D.byMethod
【正确答案】 AB
【解释】无

【题目编号】 jsd-04-404-2011
【知 识 点】 流行框架-Spring-配置文件
【难易程度】 20
【题目描述】
看下面的代码,说法正确的是( )

<bean id=“user" class=“com.xfaccp.bean.User"/>
	<constructor-arg>
		<value>accp</value>
	</constructor-arg>
</bean>

【选项】
A.必须要有一个接受字符串的构造方法
B.可以没有接受一个字符串的构造方法
C.这个类有且只能有一个只接受一个字符串的构造方法
D.这个类可以有多个构造方法,但是一定要有一个只接受一个字符串的构造方法
【正确答案】 AD
【解释】无

【题目编号】 jsd-04-404-2012
【知 识 点】 流行框架-Spring-配置文件
【难易程度】 20
【题目描述】
看下面的代码,说法正确的是( )

<bean id="before"	class="org.springframework.aop.framework.ProxyFactoryBean">
	<property name="proxyInterfaces">					<value>com.xfaccp.before.BeforeInterface</value>
	</property>
	<property name="target">
		<ref bean="testBefore"/>
	</property>
	<property name="interceptorNames">
		<list>
			<value>beforeAdvisor</value>
		</list>
	</property>
</bean>

【选项】
A.这段代码是做IOC
B.这段代码是做AOP
C.这段代码是在做代理
D.这段代码是在做织入
【正确答案】 BD
【解释】无

【题目编号】 jsd-04-404-2013
【知 识 点】 流行框架-Spring-AOP
【难易程度】 50
【题目描述】
下面关于AOP的理解正确的是( )
【选项】
A. 能够降低组件之间的依赖关系
B. 将项目中的公共的问题集中解决,减少代码量,提高系统的可维护性
C. AOP是面向对象的代替品
D. AOP不是面向对象的代替品,是面向对象很好的补充
【正确答案】 BC
【解释】无
问答
【题目编号】 jsd-04-404-4001
【知 识 点】 流行框架-Spring-Spring简介
【难易程度】 40
【题目描述】
为什么要使用Spring框架,它有什么优点?
【正确答案】
(1) 轻量级的框架
(2) 非侵入性的
(3) 可以整合其它的框架,比如Struts, Hibernate等
(4) 可以提供事务管理
【解释】无

【题目编号】 jsd-04-404-4002
【知 识 点】 流行框架-Spring-Spring事务
【难易程度】 70
【题目描述】
spring 有几种事务管理,spring 的事务管理接口是什么?
【正确答案】
Spring 提供的事务管理可以分为两类:编程式的和声明式的。编程式的,比较灵活,但是代码 量大,存在重复的代码比较多;而声明式的比编程式的更灵活方便。 接口:其中最重要的三个接口:TransactionDefinition、PlatformTransactionManager 、 TransactionStatus 。
在Spring中 ,事务是通过TransactionDefinition 接口来定义的。该接口包含与事务属性有关的方法,TransactionDefinition 接口中定义了五个表示隔离级别的常量、代表传播行为的常量,在TransactionDefinition 中以int的值来表示超时时间, PlatformTransactionManager.getTransaction( ? ) 方法返回一个TransactionStatus 对象。返回的 TransactionStatus 对象可能代表一个新的或已经存在的事务(如 果在当前调用堆栈有一个符合条件的事务)。TransactionStatus 接口提供了一个简单的控制事务执 行和查询事务状态的方法。
【解释】无

【题目编号】 jsd-04-404-4003
【知 识 点】 流行框架-Spring-springMVC
【难易程度】 70
【题目描述】
介绍一下 springMVC 的工作原理、为什么用 spring?
【正确答案】
springMVC 工作原理:
1).spring mvc 请所有的请求都提交给 DispatcherServlet,它会委托应用系统的其他模块负责负责 对请求进行真正的处理工作。
2).DispatcherServlet 查询一个或多个 HandlerMapping,找到处理请求的 Controller.
3).DispatcherServlet 请请求提交到目标 Controller
4).Controller 进行业务逻辑处理后,会返回一个 ModelAndView
5).Dispathcher 查询一个或多个 ViewResolver 视图解析器,找到 ModelAndView 对象指定的视图对象
6).视图对象负责渲染返回给客户端。 为什么用 spring:
AOP 让开发人员可以创建非行为性的关注点,称为横切关注点,并将它们插入到应用程序代码中。使用 AOP 后,公共服务 (比 如日志、持久性、事务等)就可以分解成方面并应用到域对象上,同时不会增加域对象的对象模型的复杂性。IOC 允许创建一个可以构造对象的应用环境,然后向这些 对象传递它们的协作对象。正如单词 倒置 所表明的,IOC 就像反 过来的 JNDI。没有使 用一堆抽象工厂、服务定位器、单元素(singleton)和直接构造(straight construction),每一 个对象都是用其协作对象构造的。因此是由容器管理协作对象(collaborator)。 Spring 既是一个 AOP 框架,也是一 IOC 容器。 Spring 最好的地方是它有助于您替换对象。有了 Spring,只要用 JavaBean 属性和配置文件加入依赖性(协作对象)。然后可以很容易地在需要时替换具有类似接口的 协作对象。
【解释】无

【题目编号】 jsd-04-404-4004
【知 识 点】 流行框架-Spring-AOP-注解
【难易程度】 30
【题目描述】
spring常用注解
【正确答案】
@Repository、 @Service、 @Controller
@Controller对应表现层的Bean,也就是Action
@Service对应的是业务层Bean
@Repository对应数据访问层Bean
【解释】无

【题目编号】 jsd-04-404-4005
【知 识 点】 流行框架-Spring-Spring事务
【难易程度】 80
【题目描述】
怎么使用Spring配置事务 ?
【正确答案】
Spring同时支持编程式事务策略和声明式事务策略,大部分时候都采用声明式事务策略。
声明式事务管理的配置方式,通常有以下4种:
(1) 使用TransactionProxyFactoryBean为目标Bean生成事务代理的配置。此方式是最传统、配置文件最臃肿、最难以阅读的方式。
(2) 采用Bean继承的事务代理配置方式,比较简洁,但依然是增量式配置。
(3) 采用BeanNameAutoProxyCreator,根据Bean Name自动生成事务代理的方式。这是直接利用Spring的AOP框架配置事务代理的方式,需要对Spring的AOP框架有所理解。但这种方式避免了增量式配置,效果非常不错。
(4) 采用DefaultAdvisorAutoProxyCreator,直接利用Spring的AOP框架配置事务代理的方式,效果非常不错,只是这种配置方式的可读性不如第3种方式。
【解释】无

【题目编号】 jsd-04-404-4006
【知 识 点】 流行框架-Spring-Spring MVC
【难易程度】 80
【题目描述】
简述Spring MVC的处理流程。
【正确答案】
a.浏览器发送HTTP请求,请求到达DispatcherServlet主控制器
b.主控制器调用HandlerMapping,解析请求寻找相应的Controller组件处理请求.
c.执行Controller约定方法,调用Service,DAO处理请求,处理完毕,返回一个ModelAndView对象
d.主控器调用ViewResoler,解析ModelAndView结果,寻找相应的View组件
e.调用View组件,解析标签和EL表达式,生成响应HTML界面
f.输出HTML流,为客户浏览器响应
【解释】无

【题目编号】 jsd-04-404-4007
【知 识 点】 流行框架-Spring-Spring与JDBC
【难易程度】 70
【题目描述】
Spring里面如何配置数据库驱动?
【正确答案】
使用“org.springframework.jdbc.datasource.DriverManagerDataSource”数据源来配置数据库驱动。示例如下:

<bean id=”dataSource”>
    <property name=”driverClassName”>
        <value>org.hsqldb.jdbcDriver</value>
    </property>
    <property name=”url”>
        <value>jdbc:hsqldb:db/appfuse</value>
    </property>
    <property name=”username”><value>sa</value></property>
    <property name=”password”><value></value></property>
</bean>

【解释】无

【题目编号】 jsd-04-404-4008
【知 识 点】 流行框架-Spring-Spring核心类-applicationContext
【难易程度】 70
【题目描述】
Spring里面applicationContext.xml文件能不能改成其他文件名?
【正确答案】
ContextLoaderListener是一个ServletContextListener, 它在你的web应用启动的时候初始化。缺省情况下, 它会在WEB-INF/applicationContext.xml文件找Spring的配置。 你可以通过定义一个元素名字为”contextConfigLocation”来改变Spring配置文件的位置。示例如下:

<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/xyz.xml</param-value>
    </context-param>
    </listener-class>
</listener>

【解释】无

【题目编号】 jsd-04-404-4009
【知 识 点】 流行框架-Spring-配置文件
【难易程度】 60
【题目描述】
如何在web应用里面配置spring?
【正确答案】
在web.xml中加入如下同容,在启动web服务器时加载/WEB-INF/applicationContext.xml中的内容。

<servlet>
	<servlet-name>context</servlet-name>
	<servlet-class>
		org.springframework.web.context.ContextLoaderServlet
	</servlet-class>
	<load-on-startup>1</load-on-startup>
</servlet>

通过如下类得到ApplicationContext实例
WebApplicationContextUtils.getWebApplicationContext
【解释】无

【题目编号】 jsd-04-404-4010
【知 识 点】 流行框架-Spring-配置文件
【难易程度】 60
【题目描述】
Spring里面如何定义hibernate mapping?
【正确答案】
添加hibernate mapping 文件到web/WEB-INF目录下的applicationContext.xml文件里面。示例如下:

<property name=”mappingResources”>
    <list>
        <value>org/appfuse/model/User.hbm.xml</value>
    </list>
</property>

【解释】无

【题目编号】 jsd-04-404-4011
【知 识 点】 流行框架-Spring- Spring核心类-applicationContext、BeanFactory
【难易程度】 80
【题目描述】
spring中的BeanFactory与ApplicationContext的作用有哪些?
【正确答案】

  1. BeanFactory负责读取bean配置文档,管理bean的加载,实例化,维护bean之间的依赖关系,负责bean的声明周期。
  2. ApplicationContext除了提供上述BeanFactory所能提供的功能之外,还提供了更完整的框架功能:
    a. 国际化支持
    b. 资源访问:Resource rs = ctx. getResource(”classpath:config.properties”), “file:c:/config.properties”
    c. 事件传递:通过实现ApplicationContextAware接口
    【解释】无

【题目编号】 jsd-04-404-4012
【知 识 点】 流行框架-Spring-Spring核心类
【难易程度】 20
【题目描述】
spring中的核心类有那些,各有什么作用?
【正确答案】
BeanFactory:产生一个新的实例,可以实现单例模式
BeanWrapper:提供统一的get及set方法
ApplicationContext:提供框架的实现,包括BeanFactory的所有功能
【解释】无

【题目编号】 jsd-04-404-4013
【知 识 点】 流行框架-Spring-AOP
【难易程度】 50
【题目描述】
AOP里面重要的几个名词概念解释:
【正确答案】
切面(Aspect): 一个关注点的模块化,这个关注点可能会横切多个对象。事务管理是J2EE应用中一个关于横切关注点的很好的例子。 在Spring AOP中,切面可以使用通用类(基于模式的风格) 或者在普通类中以@Aspect 注解(@AspectJ风格)来实现。
连接点(Joinpoint): 在程序执行过程中某个特定的点,比如某方法调用的时候或者处理异常的时候。 在Spring AOP中,一个连接点 总是 代表一个方法的执行。 通过声明一个org.aspectj.lang.JoinPoint类型的参数可以使通知(Advice)的主体部分获得连接点信息。
通知(Advice): 在切面的某个特定的连接点(Joinpoint)上执行的动作。通知有各种类型,其中包括“around”、“before”和“after”等通知。 通知的类型将在后面部分进行讨论。许多AOP框架,包括Spring,都是以拦截器做通知模型, 并维护一个以连接点为中心的拦截器链。
切入点(Pointcut): 匹配连接点(Joinpoint)的断言。通知和一个切入点表达式关联,并在满足这个切入点的连接点上运行(例如,当执行某个特定名称的方法时)。 切入点表达式如何和连接点匹配是AOP的核心:Spring缺省使用AspectJ切入点语法。
引入(Introduction): (也被称为内部类型声明(inter-type declaration))。声明额外的方法或者某个类型的字段。 Spring允许引入新的接口(以及一个对应的实现)到任何被代理的对象。 例如,你可以使用一个引入来使bean实现 IsModified 接口,以便简化缓存机制。
目标对象(Target Object): 被一个或者多个切面(aspect)所通知(advise)的对象。也有人把它叫做 被通知(advised) 对象。 既然Spring AOP是通过运行时代理实现的,这个对象永远是一个 被代理(proxied) 对象。
AOP代理(AOP Proxy): AOP框架创建的对象,用来实现切面契约(aspect contract)(包括通知方法执行等功能)。 在Spring中,AOP代理可以是JDK动态代理或者CGLIB代理。 注意:Spring 2.0最新引入的基于模式(schema-based)风格和@AspectJ注解风格的切面声明,对于使用这些风格的用户来说,代理的创建是透明的。
织入(Weaving): 把切面(aspect)连接到其它的应用程序类型或者对象上,并创建一个被通知(advised)的对象。 这些可以在编译时(例如使用AspectJ编译器),类加载时和运行时完成。 Spring和其他纯Java AOP框架一样,在运行时完成织入。
通知的类型:
前置通知(Before advice): 在某连接点(join point)之前执行的通知,但这个通知不能阻止连接点前的执行(除非它抛出一个异常)。
返回后通知(After returning advice): 在某连接点(join point)正常完成后执行的通知:例如,一个方法没有抛出任何异常,正常返回。
抛出异常后通知(After throwing advice): 在方法抛出异常退出时执行的通知。
后通知(After (finally) advice): 当某连接点退出的时候执行的通知(不论是正常返回还是异常退出)。
环绕通知(Around Advice): 包围一个连接点(join point)的通知,如方法调用。这是最强大的一种通知类型。 环绕通知可以在方法调用前后完成自定义的行为。它也会选择是否继续执行连接点或直接返回它们自己的返回值或抛出异常来结束执行。
环绕通知是最常用的一种通知类型。大部分基于拦截的AOP框架,例如Nanning和JBoss4,都只提供环绕通知。
切入点(pointcut)和连接点(join point)匹配的概念是AOP的关键,这使得AOP不同于其它仅仅提供拦截功能的旧技术。 切入点使得定位通知(advice)可独立于OO层次。 例如,一个提供声明式事务管理的around通知可以被应用到一组横跨多个对象中的方法上(例如服务层的所有业务操作)。
【解释】无

【题目编号】 jsd-04-404-4014
【知 识 点】 流行框架-Spring-Spring简介
【难易程度】 40
【题目描述】
Spring框架的优点都有什么?
【正确答案】
Spring是分层的架构,你可以选择使用你需要的层而不用管不需要的部分;
Spring是POJO编程,POJO编程使得可持续构建和可测试能力提高;
依赖注入和IoC使得JDBC操作简单化;
Spring是开源的免费的;
Spring使得对象管理集中化合简单化。
【解释】无

【题目编号】 jsd-04-404-4015
【知 识 点】 流行框架-Spring-IOC-依赖注入
【难易程度】 50
【题目描述】
描述一下Spring中实现DI(Dependency Injection)的几种方式
【正确答案】
方式一:接口注入,在实际中得到了普遍应用,即使在IOC的概念尚未确立时,这样的方法也已经频繁出现在我们的代码中。
方式二:Type2 IoC: Setter injection对象创建之后,将被依赖对象通过set方法设置进去
方式三:Type3 IoC: Constructor injection对象创建时,被依赖对象以构造方法参数的方式注入Spring的方式
【解释】无

【题目编号】 jsd-04-404-4016
【知 识 点】 流行框架-Spring-IOC-Spring容器
【难易程度】 60
【题目描述】
Spring容器中存储的是对象么?容器中为什么要存放对象?
【正确答案】
是对象。要对象与对象之间的依赖不需要通过实现类实现,而是利用容器来管理,spring根据配置文件,通过java的反射机制去动态的组装对象,相对于一般建立对象是用的new用spring建立对象,降低了代码的耦合。
【解释】无

【题目编号】 jsd-04-404-4017
【知 识 点】 流行框架-Spring-IOC、AOP
【难易程度】 50
【题目描述】
说明反转控制(IOC)和面向方向编程(AOP)在 spring 中的应用
【正确答案】
Spring 核心容器(Core)提供 Spring 框架的基本功能。核心容器的主要组件是 BeanFactory, 它是工厂模式的实现。BeanFactory 使用控制反转(Ioc)模式将应用程序的配置和依赖性规范与实际 的应用代码程序分开。Spring 的声明式事务基于 AOP 实现,却并不需要程序开发者成为 AOP 专家,亦 可轻易使用 Spring 的声明式事务管理。

【题目编号】 jsd-04-405-4018
【知 识 点】 流行框架-Spring-Spring与Ajax
【难易程度】 70
【题目描述】
在项目中用过 Spring 的哪些方面?及用过哪些 Ajax 框架?
【正确答案】
在项目使用过 Spring IOC ,AOP,DAO,ORM,还有上下文环境。
在项目使用过 Ext,Juery 等 Ajax 框架.

4.5 框架整合
【题目编号】 jsd-04-405-1001
【知 识 点】 流行框架-框架整合-Hibernate与Spring
【难易程度】 50
【题目描述】
对Hibernate的支持主要用到Spring的那个模块( )
【选项】
A.Spring核心模块
B.Spring ORM模块
C.Spring MVC模块
D.Spring Web模块
【正确答案】 B
【解释】无

【题目编号】 jsd-04-405-1002
【知 识 点】 流行框架-框架整合-Struts与Spring
【难易程度】 50
【题目描述】
对Struts的支持主要用到Spring的那个模块( )
【选项】
A.Spring核心模块
B.Spring ORM模块
C.Spring MVC模块
D.Spring Web模块
【正确答案】 D
【解释】无

【题目编号】 jsd-04-405-1003
【知 识 点】 流行框架-框架整合-Hibernate与Spring
【难易程度】 60
【题目描述】
Spring包装Hibernate之后的Hibernate的DAO应该继承那个类( )
【选项】
A.HibernateDAO
B.SessionFactory
C.HibernateDAOSuport
D.Session
【正确答案】 C
【解释】无

【题目编号】 jsd-04-405-1004
【知 识 点】 流行框架-框架整合-Hibernatea与Spring
【难易程度】 60
【题目描述】
Spring包装Hibernate之后,关于findByExample方法说法正确的是()
【选项】
A.是根据对象来找,对象中有的属性都作为条件,包括主键,根据对象来动态的查询
B.是根据对象来找,对象中有的属性都作为条件,不包括主键,根据对象来动态的查询
C.是根据SQL语句来找
D.是根据HQL来找
【正确答案】 B
【解释】无

【题目编号】 jsd-04-405-1005
【知 识 点】 流行框架-框架整合-struts与Spring
【难易程度】 40
【题目描述】
在struts1.2同Spring集成的中,需要在struts-config.xml文件中配置一个请求处理器,下面配置办法正确的是()
【选项】
A.

<controller className="org.springframework.web.struts.DelegatingRequestProcessor">
	</controller>

A.

<controller processorClass="org.springframework.web.struts.DelegatingRequestProcessor">
</controller>

B.

<processor className="org.springframework.web.struts.DelegatingRequestProcessor">
</controller>

C.

<processor processorClass=
		"org.springframework.web.struts.DelegatingRequestProcessor">
</controller>

【正确答案】 B
【解释】无

【题目编号】 jsd-04-405-1006
【知 识 点】 流行框架-框架整合-Hibernate与Spring
【难易程度】 60
【题目描述】
关于Spring 与 Hibernate集成,下面说法错误
【题目编号】 jsd-04-405-1007
【知 识 点】 流行框架-框架整合-Hibernate与Spring
【难易程度】 60
【题目描述】
Spring和Hibernate整合过程中各对象注入的顺序是( )
【选项】
A. DataSource->SessionFactory-> Biz -> DAO
B. SessionFactory -> DataSource ->DAO->Biz
C. DataSource->SessionFactory->DAO->Biz
D. SessionFactory -> DataSource -> Biz -> DAO
【正确答案】 C
【解释】无
多选
【题目编号】 jsd-04-405-2001
【知 识 点】 流行框架-框架整合-Struts与Spring
【难易程度】 50
【题目描述】
下面对Spring包装Struts1.2的说法正确的是( )
【选项】
A.Spring包装Struts的ActionServlet
B.Spring包装Struts的Action
C.主要是利用Spring的依赖注入
D.主要利用Spring的面向方面的编程
【正确答案】 BC
【解释】无

【题目编号】 jsd-04-405-2002
【知 识 点】 流行框架-框架整合-Struts与Spring
【难易程度】 50
【题目描述】
Spring包装Struts时那些Spring模块是必须的( )
【选项】
A.Spring核心模块
B.Spring AOP模块
C.Spring MVC模块
D.Spring WEB模块
【正确答案】 AD
【解释】无

【题目编号】 jsd-04-405-2003
【知 识 点】 流行框架-框架整合-Struts与Spring
【难易程度】 50
【题目描述】
Spring包装Struts的动作说法正确的是()
【选项】
A.Action配置的type属性还是指向自己的Action类
B.Action配置的type属性不需要指向自己的Action类,但是Action要在Spring配置文件中配置
C.Action配置的type属性一定要指向Spring提供的代理类,但是Action要在Spring配置文件中配置
D.Action配置的type属性可以不指向Spring提供的代理类,可以利用Spring提供的中央处理器来处理,但是Action要在Spring配置文件中配置
【正确答案】 BD
【解释】无

【题目编号】 jsd-04-405-2004
【知 识 点】 流行框架-框架整合-Struts与Spring
【难易程度】 20
【题目描述】
Struts2同Spring集成的说法正确的是()
【选项】
A. 可以在struts.properties中增加一个配置:struts.beanFactory=spring
B. 可以在struts.xml中配置一个的配置
C. 可以在struts.xml中增加一个
D. 可以在struts.xml中增加一个插件


【正确答案】 AC
【解释】无

【题目编号】 jsd-04-405-2005
【知 识 点】 流行框架-框架整合-Hibernate与Spring
【难易程度】 10
【题目描述】
Spring包装Hibernate之后,能够来保存数据的方法有( )
【选项】
A.save
B.load
C.saveOrUpdate
D.merge
【正确答案】 AC
【解释】无
问答
【题目编号】 jsd-04-405-4001
【知 识 点】 流行框架-框架整合-Hibernate与Spring
【难易程度】 30
【题目描述】
说出几个与 spring 同类型的开源框架,说出几个与 hibernate 同类型的开源框架,说出几个与struts 同类型的开源框架
【正确答案】
1)与 spring 同类型的开源框架:JUIDE、EJB3.0、picoContainer
2)与 hibernate 同类型的开源框架 :ibatis,jdo,JPA
3)几个与 struts 同类型的开源框架:webwork,tapestry,JSF
【解释】无

【题目编号】 jsd-04-405-4002
【知 识 点】 流行框架-框架整合- Hibernate与Spring、Struts与Spring
【难易程度】 50
【题目描述】
简要描述如何结合 struts、hibernate、spring 开发 Web 应用?
【正确答案】
Struts 可以将 jsp 页面的表单关联起来,就是把 JSP 页面的表单数据封装成 javaBean,这样的 话,在 action 中你再也不需要使用传统的 request.getParameter(“name”);还有 struts 有一个控制器, 你在 struts 编程中的控制器(XxxAction)都是继承总的 ActionServlet,它能集中处理请求,然后转到 相关的页面。还有 struts 的表单验证组件,不用你写 js 验证了,只需要你配置一下文件就可以了。另 外 struts 的令牌机制可以防表单重复提交。
Spring 是一个轻量级容器,非侵入性.包含依赖注入,AOP 等。它是为了解决企业应用程序开发复 杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。
Hibernate:它可以让我们以 OO 的方式操作数据库,这让我们看到了 hibernate 的强大之处,体验到操作数据的方便。但 hibernate 最耀眼之处是 hibernate 的缓存机制,而不是以 OO 的方式操作 数据库。Hibernate 的缓存机制不外乎是一级缓存 session,二级缓存 sessionFactory,和第三方缓 存如 ehcache。也就是 hibernate 的最强大的地方是它的缓存,理解了这个才能真正的理解 hibernate,Hibernate 的命名查询/命名参数查询,就是将 hql 语句放在一个单独的 xml 文件之中,它 仍然让人们以面向对象的方式去操纵数据,而不用在以 OO 的方式写着代码的同时,然后再转变思维, 用面向关系的方式去写那些 sql 语句。但 hibernate 不仅做了这些,它的 native sql 查询方式,完 全满足 sql 语句的偏爱者,它像 ibatis 一样,将 sql 语句放在配置文件之中。
【解释】无

【题目编号】 jsd-04-405-4003
【知 识 点】 流行框架-框架整合-Struts与Spring
【难易程度】 70
【题目描述】
Spring的MVC和Struts的MVC的区别
【正确答案】
相同点:
1.都是mvc框架;
2.感觉struts的action类似于spring的ioc,都是使用java反射机制来实现的依赖注入;
3.struts2的拦截器使用也类似于spring的aop,都是通过动态代理实现的;
不同点:
1.配置不一样
2.spring的控制器对象的处理请求方法需要带有HttpServletRequest和HttpServletResponse参数,这样不于调试;
3.参数的接收,在struts2中通过set方法就实现了,而spring则从request中获取,另外参数的传递也比较方便;
4.struts2处理请求的返回页比较方便,通过action的返回的结果名称,定位返回的页面或者重定向到另一个action
5.struts2同时提供了对于请求变量的校验和类型的转换;
6.spring在mvc框架中相对于struts2的优势在于它的IOC,struts2只是注入action,而spring可以将更多的bean注入到这个action中;
综上所述,springmvc较struts2更轻量,但是没有struts2在mvc方面功能强大;
【解释】无

【题目编号】 jsd-04-405-4004
【知 识 点】 流行框架-框架整合-Struts与Spring
【难易程度】 40
【题目描述】
如何配置spring+struts?
【正确答案】
在struts-config.xml加入一个插件,通过它加载applicationContext.xml
? 在struts-config.xml修改action-mapping标记,具体action交给了DelegateActionProxy
? 通过DelegateActionProxy进入一spring的环境。
? 在spring的applicationContext.xml加入<bean name=”/login” class=”" singleton=”false”/>
【解释】无

【题目编号】 jsd-04-405-4005
【知 识 点】 流行框架-框架整合-Hibernate与Spring
【难易程度】 50
【题目描述】
spring+hibernate的配置文件中的主要类有那些?如何配置?
【正确答案】
dataSource
sessionFactory:hibernate.cfg.xml
transactionManager
userDao (extends HibernateDaoSupport)
sessionFactory
facade
proxy
sessionFactory
transactionManager
facade
在myeclipse中先加入spring环境再加入hibernate环境。
思考,如果spring与hibernate结合在一起可以不需要hibernate.cfg.xml文件是否正确?
【解释】无

【题目编号】 jsd-04-405-4006
【知 识 点】 流行框架-框架整合-Spring-Hibernate与Spring
【难易程度】 80
【题目描述】
Spring对多种ORM框架提供了很好的支持,简单描述在Spring中使用Hibernate的方法。
【正确答案】
在context中定义DataSource,创建SessionFactoy,设置参数;DAO类继承HibernateDaoSupport,实现具体接口,从中获得HibernateTemplate进行具体操作。在使用中如果遇到OpenSessionInView的问题,可以添加OpenSessionInViewFilter或OpenSessionInViewInterceptor
【解释】无
4.6 其他框架、其他
【题目编号】 jsd-04-406-1001
【知 识 点】 流行框架-Struts1
【难易程度】 40
【题目描述】
在 Struts 中实现页面跳转主要通过什么方法来实现?
【选项】
A. server.transfer
B. response.redirect
C. mapping.findForward
D. response.sendRedirect
【正确答案】 C
【解释】
该题是struts1内容,与struts2传参机制不同。

【题目编号】 jsd-04-406-1002
【知 识 点】 其他-模块内聚度
【难易程度】 70
【题目描述】
模块内聚度越高,说明模块内各成分彼此结合的程度越( )
【选项】
A 松散 B 紧密 C 无法判断 D 相同
【正确答案】 B
【解释】
内聚度是指模块内部各成分之间的联结强度.内聚度越高,越容易理解、修改和维护.但内聚度本身是 主观的、非形式化的概念,程序设计人员很难客观地评估一个模块的内聚度.为此,人们开发出许多度 量准则用于量化模块的内聚度[1~3],为程序设计人员开发出高内聚度的模块提供指南.

【题目编号】 jsd-04-406-1003
【知 识 点】 流行框架-EJB
【难易程度】 70
【题目描述】
无状态会话 Bean、有状态会话 Bean、CMP 与 BMP 中,哪一种 Bean 不需要自己书写连接数据库的代码?( )
【选项】
A. 无状态会话 Bean B. 有状态会话 Bean C. CMP D. BMP
【正确答案】 C
【解释】
BMP 是在 Bean 中完成对数据库 JDBC 的各种调用;
CMP 是由 EJB 容器自动完成对数据库的操作 会话 Bean 主要处理业务逻辑。

【题目编号】 jsd-04-406-1004
【知 识 点】 流行框架-EJB
【难易程度】 70
【题目描述】
下列哪一个接口定义了用于查找、创建和删除 EJB 实例( )
【选项】
A.Home B.Remote C.Local D.Message
【正确答案】 A
【解释】
remote 接口定义了业务方法,用于 EJB 客户端调用业务方法。 home 接口是 EJB 工厂用于创建和移除 查找 EJB 实例。

【题目编号】 jsd-04-406-1005
【知 识 点】 流行框架-EJB
【难易程度】 70
【题目描述】
EJB 类库存在于 Java 的哪个版本中?。( )
【选项】
A.J2SE B.J2EE C. J2ME D. J2NE
【正确答案】 B
【解释】
Java 分为三个体系,JavaSE(Java2 Platform Standard Edition,java 平台标准版), JavaEE(Java 2 Platform,Enterprise Edition,java 平台企业版), JavaME(Java 2 Platform Micro Edition,java 平台微型版)。EJB 属于 JavaEE 版本。

【题目编号】 jsd-04-406-2001
【知 识 点】 流行框架-EJB
【难易程度】 70
【题目描述】
要创建一个 EJB,必须要至少编写哪些 Java 类和接口?( )
【选项】
A. 定义远程(或业务)接口
B. 定义本地接口
C. 定义 Bean 接口
D. 编写 Bean 的实现
【正确答案】 ABC
【解释】无

【题目编号】 jsd-04-406-4001
【知 识 点】 其他-SOA
【难易程度】 90
【题目描述】
请谈谈对 SOA 的认识。
【正确答案】
面向服务的体系结构(Service-Oriented Architecture,SOA)是一个组件模型,它将应用程 序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立 的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种这 样的系统中的服务可以一种统一和通用的方式进行交互。
【解释】无

【题目编号】 jsd-04-406-4002
【知 识 点】 流行框架-设计模式
【难易程度】 80
【题目描述】
常用的设计模式有哪些?说明工厂模式。
【正确答案】
Java 中的 23 种设计模式:
Factory(工厂模式), Builder(建造模式),Factory Method(工厂方法模式), Prototype(原始模型模式),Singleton(单例模式),Facade(门面模式), Adapter(适配器模式),Bridge(桥梁模式),Composite(合成模式), Decorator(装饰模式),Flyweight(享元模式),Proxy(代理模式), Command(命令模式),Interpreter(解释器模式),Visitor(访问者模式), Iterator(迭代子模式),Mediator(调停者模式),Memento(备忘录模式), Observer(观察者模式),State(状态模式),Strategy(策略模式),Template Method(模板方法模式), Chain Of Responsibleity(责任链模式)
工厂模式:工厂模式是一种经常被使用到的模式,根据工厂模式实现的类可以根据提供的数据生成一 组类中某一个类的实例,通常这一组类有一个公共的抽象父类并且实现了相同的方法,但是这些方法 针对不同的数据进行了不同的操作。首先需要定义一个基类,该类的子类通过不同的方法实现了基类 中的方法。然后需要定义一个工厂类,工厂类可以根据条件生成不同的子类实例。当得到子类的实例 后,开发人员可以调用基类中的方法而不必考虑到底返回的是哪一个子类的实例。
【解释】无

【题目编号】 jsd-04-406-4003
【知 识 点】 流行框架-EJB
【难易程度】 50
【题目描述】
EJB 包含哪 3 种 bean。
【正确答案】
session bean(会话 bean), entity bean(实体 bean), message bean(消息 bean)
【解释】无

【题目编号】 jsd-04-406-4004
【知 识 点】 其他-混淆(obfuscate)
【难易程度】 40
【题目描述】
什么是混淆(obfuscate)?有什么好处?有哪些工具可以混淆 jar 文件?
【正确答案】
混淆是指通过对 class 文件中的变量名和部分方法名进行处理,来提高代码反编译的难度。 好处主要有 2 个:1、提高反编译以后代码阅读的难度 2、降低 class 文件的大小。 常见的混淆器有 Proguard 和 RetroGuard 两种。
【解释】无

【题目编号】 jsd-04-406-4005
【知 识 点】 其他-状态机
【难易程度】 20
【题目描述】
什么是状态机?游戏开发中有那些地方能用到状态机?
【正确答案】
状态机(State Machine)是根据对应状态进行处理的一种机制,在游戏开发中最典型的应用是游戏人工智能(AI)等地方。
【解释】无

【题目编号】 jsd-04-406-4006
【知 识 点】 其他-计算机名词
【难易程度】 20
【题目描述】
请根据你的知识,对以下计算机名词进行尽量简单的描述
【正确答案】
1)J2ME 是一种使用 Java 语言进行嵌入式设备开发的技术。
2) Python 是一种语法简单的面对对象的程序设计语言
3)Ant 是 Java 的生成工具。
4)Javac 是 Java 语言的编译程序
5)Subversion 是新一代的版本工具
6)OpenGL 是一套开发的图形界面开发库标准
【解释】无

【题目编号】 jsd-04-406-4007
【知 识 点】 其他框架-EJB
【难易程度】 50
【题目描述】
J2EE,EJB,JDBC 是一回事吗,它们之间有什么关系?
【正确答案】
不是一回事,J2EE(Java 2 Platform,Enterprise Edition)是一套全然不同于传统应用开发 的技术架构,包含许多组件,主要可简化且规范应用系统的开发与部署,进而提高可移植性、安全与再用价值。J2EE 核心是一组技术规范与指南,其中所包含的各类组件、服务架构及技术层次,均有共通的标准及规格,让各种依循 J2EE 架构的不同平台之间,存在良好的兼容性。其中,EJB 和 JDBC 都 属于 J2EE 的一部分。
【解释】无

【题目编号】 jsd-04-406-4008
【知 识 点】 其他-java开源软件
【难易程度】 40
【题目描述】
请写出十种以上你知道的 java 开源软件,并用一句话说明功能。
【正确答案】
Ibatis:持久层框架
Hibernate:持久层框架,它对 JDBC 进行了非常轻量级的对象封装 Struts:是一个基于 Sun J2EE 平台的 MVC 框架 Spring:是一个解决了许多在 J2EE 开发中常见的问题的强大框架 Tomcat:实现了 servlet、struts 框架的 web 服务器 WebWork:组件化和代码重用的拉出式 MVC 模式 J2EE Web 框架 Rose:系统分析和设计的工具
JUnit:用于单元测试
ANT:用于辅助开发
Eclipse:IDE 集成开发工具
【解释】无

【题目编号】 jsd-04-406-4009
【知 识 点】 其他-web的部署
【难易程度】 70
【题目描述】
部署一个 web 应用的步骤是什么?
【正确答案】
1.将 web 应用放到 Tomcat 服务器的 Webapps 包下,
2.启动服务器
3.在地址栏中输入 http://localhost:8080/应用名/
【解释】无

【题目编号】 jsd-04-406-4010
【知 识 点】 其他-UDDI、SOAP、WSDL
【难易程度】 60
【题目描述】
什么是 UDDI、SOAP、WSDL?
【正确答案】
UDDI 是一套基于 Web 的、分布式的、为 Web Service 提供的、信息注册中心的实现标准规范, 同时也包含一组使企业能将自身提供的 Web Service 注册,以使别的企业能够发现的访问协议的实现 标准。
SOAP 即简单对象访问协议(Simple Object Access Protocol),它是用于交换 XML 编码信息的轻 量级协议。
WSDL 是一种 XML 格式,用于将网络服务描述为一组端点,这些端点对包含面向文档信息或面向 过程信息的消息进行操作。这种格式首先对操作和消息进行抽象描述,然后将其绑定到具体的网络协 议和消息格式上以定义端点。相关的具体端点即组合成为抽象端点(服务)。
【解释】无

【题目编号】 jsd-04-406-4011
【知 识 点】 其他框架-EJB、JAVA BEAN
【难易程度】 50
【题目描述】
EJB 与 JAVA BEAN 的区别?
【正确答案】
Java Bean 是可复用的组件,对 Java Bean 并没有严格的规范,理论上讲,任何一个 Java 类都可以是一个 Bean。但通常情况下,由于 Java Bean 是被容器所创建(如 Tomcat)的,所以 Java Bean应具有一个无参的构造器,另外,通常 Java Bean 还要实现 Serializable 接口用于实现 Bean 的持久 性。Java Bean 实际上相当于微软 COM 模型中的本地进程内 COM 组件,它是不能被跨进程访问的。 Enterprise Java Bean 相当于 DCOM,即分布式组件。它是基于 Java 的远程方法调用(RMI)技术的, 所以 EJB 可以被远程访问(跨进程、跨计算机)。但 EJB 必须被布署在诸如 Webspere、WebLogic 这样 的容器中,EJB 客户从不直接访问真正的 EJB 组件,而是通过其容器访问。EJB 容器是 EJB 组件的代 理,EJB 组件由容器所创建和管理。客户通过容器来访问真正的 EJB 组件。
【解释】无

【题目编号】 jsd-04-406-4012
【知 识 点】 其他-JDO
【难易程度】 40
【题目描述】
Jdo 是什么?
【正确答案】
JDO 是 Java 对象持久化的新的规范,为 java data object 的简称,也是一个用于存取某种数据 仓库中的对象的标准化 API。JDO 提供了透明的对象存储,因此对开发人员来说,存储数据对象完全 不需要额外的代码(如 JDBC API 的使用)。这些繁琐的例行工作已经转移到 JDO 产品提供商身上,使 开发人员解脱出来,从而集中时间和精力在业务逻辑上。另外,JDO 很灵活,因为它可以在任何数据 底层上运行。JDBC 只是面向关系数据库(RDBMS)JDO 更通用,提供到任何数据底层的存储功能,比 如关系数据库、文件、XML 以及对象数据库(ODBMS)等等,使得应用可移植性更强。
【解释】无

【题目编号】 jsd-04-406-4013
【知 识 点】 其他-WEB2.0
【难易程度】 60
【题目描述】
就 WEB2.0 相关信息做一下描述,谈谈你对这些技术概念的认识。
【正确答案】
一些 WEB2.0 产品,就可以理解以上观点。 Blog:用户织网,发表新知识,和其他用户内容链接,进而非常自然的组织这些内容。 RSS:用户产生内容自动分发,定阅。
Podcasting:个人视频/声频的发布/定阅。 SNS:blog+人和人之间的链接。 WIKI:用户共同建设一个大百科全书。
从知识生产的角度看,WEB1.0 的任务,是将以前没有放在网上的人类知识,通过商业的力量,放到网上去。
WEB2.0 的任务是,将这些知识,通过每个用户的浏览求知的力量,协作工作,把知识有机的组织起来, 在这个过程中继续将知识深化,并产生新的思想火花;
从内容产生者角度看,WEB1.0 是商业公司为主体把内容往网上搬,而 WEB2.0 则是以用户为主,以简便随意方式,通过 blog/podcasting 方式把新内容往网上搬;
从交互性看,WEB1.0 是网站对用户为主;WEB2.0 是以 P2P 为主。 从技术上看,WEB 客户端化,工作效率越来越高。 我们看到,用户在互联网上的作用越来越大;他们贡献内容,传播内容,而且提供了这些内容之间的 链接关系和浏览路径。在 SNS 里面,内容是以用户为核心来组织的。WEB2.0 是以用户为核心的互联网
【解释】无

【题目编号】 jsd-04-406-4014
【知 识 点】 其他-OOAD
【难易程度】 60
【题目描述】
OOAD 中的 Association(联合)、Aggregation(聚合)、Composition(组合)的区别?
【正确答案】
三者从概念上来讲:Association 是一般的关联,有”use-a”的含义。Aggregation 和 Composition 都有整体和部分的关系,其中 Aggregation 中的部分脱离了整体,部分仍然有意义,有”has a”的 含义,是共享式的。而 Composition 中的部分脱离了整体,部分将没有任何意义,是独占式的。
从代码实现的角度上讲:三者都是以属性出现,其中 Association 中作为属性出现时,不需要对 其进行强制赋值,只要在使用是对其进行初始化即可。Aggregation 中作为属性出现时,需要在构造 器中通过传递参数来对其进行初始化。Composition 中 作为属性出现时,需要在整体的构造器中创 建部分的具体实例,完成对其的实例化。
从数据库的层面上来讲:Association 不需要被级联删除,Aggregation 不需要被级联删除,Composition 是需要被级联删除的。
【解释】无

【题目编号】 jsd-04-406-4015
【知 识 点】 其他-内存泄露
【难易程度】 60
【题目描述】
java 中会存在内存泄露吗?请简单描述。
【正确答案】
内存泄露是指系统中存在无法回收的内存,有时候会造成内存不足或系统崩溃。Java 存在内存 泄露。Java 中的内存泄露当然是指:存在无用但是垃圾回收器无法回收的对象。而且即使有内存泄露问题存在,也不一定会表现出来。自己实现堆栈的数据结构时有可能会出现内存泄露。
【解释】无

【题目编号】 jsd-04-406-4016
【知 识 点】 其他-应用程序域、托管代码、强类型系统、CTS/CLS/CLR
【难易程度】 80
【题目描述】
什么叫应用程序域?什么是托管代码?什么是强类型系统?什么是装箱和拆箱?什么是重载?CTS、CLS和CLR分别作何解释?
【正确答案】
应用程序域:一种边界,它由公共语言运行库围绕同一应用程序范围内创建的对象建立(即, 从应用程序入口点开始,沿着对象激活的序列的任何位置)。应用程序域有助于将在一个应用程序中 创建的对象与在其他应用程序中创建的对象隔离,以使运行时行为可以预知。在一个单独的进程中可 以存在多个应用程序域。 托管代码:由公共语言运行库环境(而不是直接由操作系统)执行的代码。托管代码应用程序可以获 得公共语言运行库服务,例如自动垃圾回收、运行库类型检查和安全支持等。这些服务帮助提供独立 于平台和语言的、统一的托管代码应用程序行为。
强类型系统:通过运行时类型识别(RTTI)(Run-Time Type Identification),程序能够使用基类的 指针或引用来检查这些指针或引用所指的对象的实际派生类型。 装箱、拆箱:从值类型接口转换到引用类型装箱。从引用类型转换到值类型拆箱。 重载:是方法的名称相同。参数或参数类型不同,进行多次重载以适应不同的需要。 CTS:通用语言系统。CLS:通用语言规范。CLR:公共语言运行库。
【解释】无

【题目编号】 jsd-04-406-4017
【知 识 点】 其他-程序注释
【难易程度】 50
【题目描述】
程序注释的用途有哪些?带注释的程序有什么缺点?
【正确答案】
注释可以说明程序,给自己或他人在阅读程序时提供帮助,使程序更容易理解,也就是增强程 序代码的可读性。过多的代码注释会使程序结构变得不清晰。
【解释】无

【题目编号】 jsd-04-406-4018
【知 识 点】 其他框架-Struts1
【难易程度】 60
【题目描述】
Struts1 中 actionform 和 action 属于 MVC 哪一层,为什么?
【正确答案】
actionform 和 action 属于 MVC 的 Model 层,Action 用来处理业务逻辑,actionform 保存用户 表单数据以便于在不同页面间传递。而 MVC 中的 model 层就是业务逻辑层,该层用于实现具体的业务 逻辑、状态维护及管理。
【解释】无

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 游动-白 设计师:白松林 返回首页