一、 基础IT技术部分 (每题8~10分)
说明:1、2、3、4、5、14必选,6~13可选2或不选
1、 某集团下属单位共800名员工,分布在15个部门,要设计一个含部门、姓名、岗位、年龄、工资、部门领导6项内容的人员数据库系统,请用ER图作一数据规划。

Answer: ER图如下:
2、 请编一带循环条件的程序,可分部门遍历上例中的每一条记录。
Answer:
Declare cursor cur_Department
Select Deptcode from Department order by deptcode
Fetch cur_Department into @Deptcode
While @@Fetch_status= 0
Begin
Select B.Name ‘部门’, A.Name ‘姓名’, A.Station ‘岗位’, A.Age ‘年龄’, A.Salary ‘工资’, (select staffname from staff where staff.staffcode = b.staffcode ) 部门领导
from staff A, Department B
Where A.Deptcode = @Deptcode and A.Deptcode = B.Deptcode
Fetch next cur_Department into @Deptcode
End
Close cursor cur_Department
Deallocate cursor cur_Department
3、 在编写SQL语句时为了提高性能,与数据库索引匹配时应注意哪些?举例说明。
Answer:
1. 匹配所有的索引
2. 匹配尽可能多的主健
3.高级(主)的表放在等式左边,而低级(次)的表放在等式右边。
4.联合查询时,每个表尽可能跟主表都单独匹配,避免各次表之间匹配。
如:
Select B.Name ‘部门’, A.Staffcode,A.Name ‘姓名’, A.Station ‘岗位’, A.Age ‘年龄’, A.Salary ‘工资’,C.Staffcode
from staff A, Department B,Leader C
Where A.Deptcode = B.Deptcode and A.Deptcode = C.Deptcode
不要:
Select B.Name ‘部门’, A.Staffcode,A.Name ‘姓名’, A.Station ‘岗位’, A.Age ‘年龄’, A.Salary ‘工资’,C.Staffcode
from staff A, Department B,Leader C
Where A.Deptcode = B.Deptcode and B.Deptcode = C.Deptcode
4、 软件测试包含哪些类型的测试?请按测试的顺序过程简要说明。
Answer:
测试是保证项目质量重要的一步。可以通过不同的测试方法达到目标,测试的顺序过程是:单元测试---系统测试---容量测试(或压力测试)---集成测试---接受测试(或用户测试)
测试方法
简要说明
单元测试
程序员在写完代码后进行的测试,主要是检查程序单元是否按质量完成
系统测试
在单元测试完成后,将各个单元联系起来进行测试,检查系统是否满足功能需求。
容量测试
(或压力测试)
采用模拟或真实的方式加大用户量,进行测试。从性能上检验系统是否满足性能的需求。又称压力测试。
集成测试
将系统与其他的系统一起运行,测试系统是否与其他系统兼容。检查是否会对其他系统造成影响
接受测试
(或用户测试)
以用户使用为主导,让用户使用系统,从操作上、界面友好性等方面,由用户确定是否接受系统,用户确认后,所有的测试完成。
5、 用你最熟悉的一种编程语言,编写冒泡排序法程序。
点评: 这个问题的回答很多,下面以两种为例。
Answer1: (以JAVA为例)
class BubbleSort
{ public static void sort(int[] a)
{ int i;
int j;
for (i = 0 ; i < a.length; i++)
{ / move the largest number up /
for (j = 0 ; j < a.length - i - 1; j++)
{ if (a[j] > a[j+1])
ArrayUtil.swap(a, j, j + 1);
}
}
}
}
public class BubbleSortTest
{ public static void main(String[] args)
{ int[] a = ArrayUtil.randomIntArray(20, 100);
System.out.println(Arrays.asList(a));
BubbleSort.sort(a);
System.out.println(Arrays.asList(a));
}
}
Answer2: (以SQL为例)
procedure Bubble_Sort(var L:List);
var
i,j:position;
begin
1 for i:=First(L) to Last(L)-1 do
2 for j:=First(L) to Last(L)-i do
3 if L[j]>L[j+1] then
4 swap(L[j],L[j+1]); //交换L[j]和L[j+1]
end;
6、 请陈述提高数据库性能的途径和方法。
点评:可以从很多方面回答,只要答出三点以上,就可以算对。
Answer:
1.在设计方面,适当采用关系模型的设计,关系模式的设计是关系模型设计的灵魂。可以避免数据冗余,确保数据库的完整性。关系模型的设计直接决定着数据库的性能。
2.在数据类型方面,要采用合适的数据类型。在建表时选择保存数据所需的最小存储长度的数据类型是一个非常好的方法。例如,当需要整数时,使用整数类型而不是实数或浮点数(后两者需要花费更多的时间来处理)。
3.数据处理和运算,多采用存储过程,存储过程是预编译后的程序,在数据库端运行,可以提高数据库的处理速度。
4.在Tempdb方面,根据数据的处理量,加大Tempdb的大小,可以提高数据库的性能。
5.在索引方面,根据查询条件决定是否使用索引,索引对查询速度的影响是巨大的,索引可以加快查询速度,也可以大大减慢查询速度。
6.在数据库的连接方面,采用连接池的技术可以,加快连接速度,共享连接资源。
7.在游标方面,应根据需要,采用正确的游标,不可用太多的游标。因为游标消耗数据库很大的资源。
8.数据库的参数配置方面,要根据需求,配置不同的参数,例如:存储过程的运行内存空间大小,高速缓存是否打开等。
7、 请描述数据库系统中数据库、表、表空间、文件、数据之间的关系,能用图示补充说明吗?一个数据库系统一般会设立哪些表空间?会有哪些类型文件?
Answer:
数据库有两个层面,分别是逻辑层面与物理层面。其中逻辑层面主要是指表空间,物理层面主要是指文件。
表是数据库的组成部分,它从物理位置上讲是在文件中,从逻辑上讲在表空间中。
数据存在于表中。
用图表示,补充说明如下:
表空间一般会设立system表空间, user表空间, index表空间, temp表空间,
文件会有数据文件(Data files)、重置日志文件(redo log files)、控制文件(control files)、密码文件(password)、起始参数档(initialization parameter files)等类型文件。
8、 简要列出Oracle的DDL语句。
Answer:
DDL是数据定义语言,oracle 的DDL有:创建是用CREATE, 删除是用DROP, 修改ALTER ,清空表中的记录TRUNCATE,授权GRANT,回收权限REVOKE。。
下面简要列出:
Ø CREATE DATABASE employees ;
Ø CREATE TABLE personal_info
(first_name char(20) not null, last_name char(20) not null, employee_id int not null) ;
Ø CREATE INDEX index_name ON personal_info (employee_id);
Ø ALTER TABLE personal_info ADD salary money null ;
Ø TRUNCATE personal_info;
Ø DROP TABLE personal_info;
Ø DROP database employees;
9、 比较Oracle 数据库存储过程和触发器的异同,存储过程有何作用?
Answer:
相同点
1. 两者都存储在数据库中
2. 两者以编译了的形式存储在数据库中
3. 都使用PL/SQL语法, 触发器类似于存储的过程,可包含SQL语句和PL/SQL语句,可调用其它的存储过程。
不同点
1. 触发器所相关表分别存储。而存储过程不用与相关的表分别存储
2. 触发器仅可在表上定义,存储过程不受这个限制。
3. 两者建立的语法不同,触发器是 create trigger …, 而存储过程是 create procedure…
4. 调用方法不同:存储过程由用户或应用显式执行;而触发器是为一激发语句 (INSERT、UPDATE、DELETE)发出进由ORACLE隐式地触发。
存储过程的作用:
存储过程可以包括复杂的商业逻辑或多个操作过程。因为它与一般的PL/SQL块主要的不同是:无需在网上传送大量的源程序代码,只传送一条调用命令,这就大大降低了网络通信的负担;而且只在刚创建时分析编译一次,每次调用直接执行编译了的代码,因此运行速度较快。在实际开发时,对于具有共同特性的功能模块最好使用存储过程,调用时通过使用不同的实际参数值来实现某一具体的处理。如果能充分利用存储过程来完成应用系统的操作与处理,则可大大提高系统的运行性能。
10、 IT系统的安全领域有哪些?常用的安全技术(措施)有哪些?
Answer:
IT系统的安全领域有物理安全、网络安全、系统安全、用户安全、应用安全、数据安全。常用的安全技术是隧道技术、病毒防护、防火墙技术、身份认证、加密技术、入侵检测、容灾与数据备份。
11、 Oracle 数据库有何安全措施?简要说明。
Answer:
Oracle的安全措施有权限,角色,资源限制,用户环境文件,审计,存储设置和空间份额。
其中权限是指定的表,视图,序列,函数或包上享有特殊动作的权利。对于不同类型的对象,有不同的对象特权。对于有些模式对象,如聚集,索引,触发器,数据库链没有相关的对象特权,它们由系统特权控制。对于包含在某用户名的模式中的对象,该用户对这些对象自动地具有全部对象特权,即模式的特有者对模式中的对象具有全部对象特权,这些对象的特有者可将这些对象上的任何对象特权授权给其他用户。
角色对应现实世界, 角色(role)为相关特权的命令组,可授权给用户和角色。ORACLE利用角色更容易地进行特权管理。ORACLE为了提供与以前版本的兼容性,预定义下列角色:CONNENT,RESOUCE,DBA,EXP_FULL_DATABASE和IMP_FULL_DATABASE。
资源限制是设置用户资源限制的环境文件,该限制规定了用户可用的系统资源的总量。分为两种限制:调用级和会话级限制。
用户环境文件是指资源限制的命名集,可赋给ORACLE数据库的有效的用户。利用用户环境文件可容易地管理资源限制。要使用用户环境文件,首先应将数据库中的用户分类,决定在数据库中全部用户类型需要多少种用户环境文件。在建立环境文件之前,要决定每一种资源限制的值。
审计是对选定的用户动作的监控和记录。
存储设置和空间份额对用户使用磁盘空间的限制。
12、 操作系统包含哪几个主要功能?简要说明。
Answer:
Ø CPU管理, 对CPU进行控制管理,有多任务式的和单任务式之分
Ø 作业管理, 管理线程和进程的运行。
Ø 输入/输出管理,管理键盘、鼠标、显示器的输入输出设备。
Ø 数据和文件管理,管理数据和文件。
Ø 存储管理,将数据存储到磁盘介质上或从磁盘介质上读出到CPU进行处理。
Ø 中断管理,操作系统可以响应用户或程序的中断请求,执行中断操作。
13、 请给出以下程序的执行结果
#include<iostream.h>
int main()
{
int var(10);
int pointer;
pointer=&var;
pointer=pointer + 5;
cout<<”var=”<<var<<endl;
return 0;
}
Answer:
输出结果:15
14、 下程序是否有错?如有,请指出错误所在,如果没有,请给出执行结果。
1) #include<iostream.h>
intfun(inty)
{ return y;
}
int main()
{
int z=5;
int x=&z;
int f=fun(x);
int g=f;
count,,”g=”<<g<<endl;
}
Answer:
此题错误为:count,,”g=”<<g<<endl;处。Count,,应改为cout<<。改正后结果为:5
1) #include<iostream.h>
void swap(&a,&b);
int main()
{
int a(12),b(25);
swap(&a,&b);
cout<<”a=”<<a<<”,b+”<<b<<endl;
return0;
}
void swap(int first,int second)
{
int temp;
temp=first;
first=second;
second=temp;
}
Answer:
变量定义改正后结果为:a=25,b=12
二、 综合能力部分(每题12~15分)
说明:1、2必选,3~6必选1,其他可选1或不选
1、 一个软件开发项目有哪些过程,请说明其中一个过程的文档编写格式与规范。
Answer:
需求调研à需求分析à概要设计(或功能规格设计)à详细设计à编码à测试à实施à系统切换à验收
或:需求分析à系统设计à编码à测试à实施à系统切换à验收
下面以需求分析为例说明一个过程的文档编写格式与规范。
项目编号
日期
项目名称
分析部门
报告撰写人
联系电话
分析人员小组成员
现有系统的优点和弱点
项目目标和范围
问题域
用户功能需求
性能要求
报表样本
数据收集
结论
IT负责人意见
2、 一个制造业企业中一般会包含哪些基本业务职能?你熟悉哪些?请选你最熟悉的进行简要说明(用流程图)。
Answer:
制造业企业中的基本业务职能一般包含营销、制造、研发、采购、物流(库存)、财务及人力资源。
下面以采购为例用流程图简要说明:
3、 一个制造业企业,其产品销售、生产计划,按ERP思想,包含哪些计划层次?请按顺序说明。“闭环MRP”中的闭环是指什么?
Answer:
MRPII系统分为五个计划层次:经营规划(Business Planning, BP)、生产计划大纲、主生产计划(MPS)、物料需求计划和车间作业计划(PAC)(生产作业控制)。
“闭环MRP”中的闭环是指在按照物料需求计划下达生产订单之前,要通过能力需求计划来核算企业的生产能力和由物料需求计划所产生的能力需求负荷之间的平衡关系。闭环系统中的各个环节都是相互联系、相互制约的,返馈功能是闭环MRP中相当重要的一部份。
4、 ERP、SCM、CRM,你认为的主要区别是什么?有交叉吗?如有交叉,在哪些地方?
Answer:
区别是三者的定义和范围不同:
ERP服务于企业的“人、财、物、产、供、销”的基本面可以看出,ERP主要关注产品的生产/制造过程和产品的交付过程。功能主要包括:生产控制(产品/物料/能力计划、制造等)、物流管理(采购、库存和分销)、财务管理(会计核算、财务管理)和人力资源的管理(规划、招聘、工资等)等
SCM 则以“供——需”的整体协调为中心,重点解决企业之间的资金流、物流和信息流。
CRM是企业的一种机制。企业通过与客户不断的互动,提供信息和客户作交流,以便了解客户和影响客户的行为,进而留住客户,不断增加企业的利润。通过实施客户关系管理,能够分析和了解处于动态过程中的客户状况,从而搞清楚不同客户的利润贡献度,才便于选择应该供应何种产品给何种客户。以便在合适的时间,通过合适的渠道去和客户作交易。
有交叉:(略)
5、 软件工程方法有哪些?有何不同?
Answer:
软件工程方法为软件开发提供了“如何做”的技术。它包括了多方面得任务,如项目计划与估算、软件系统需求分析、数据结构、系统总体结构得设计、算法的设计、编码、测试以及维护等。软件工程方法有传统的周期性开发法、原型法和终端用户开发方法。
传统的周期性开发法,主要是走需求分析,设计,编码,测试周期。这种方法适合于需求简单的项目。
原型法通过建立原型,然后不断精细原型进行开发,这种方法适合于用户需求和流程都很复杂的项目。
终端用户开发方法是让用户参与整个开发过程,这种方法对用户的计算机技术要求高,适合于开发小项目和合作项目。
6、 某软件开发项目,项目周期预计8个月,软件开发实施人员需要12人或以上,将来系统不同类型的使用人员在100人以上,该项目由本企业自己的IT人员等进行开发实施,如果你是该项目的项目经理,你认为在此项目中,你该做什么类型的工作?又不该做什么类型的工作?假设你全职投入该项目,这些该做的工作,你会怎样分配各项工作的时间(用百分比表示)?
Answer:
该做的工作:
1、 负责项目总体规划及各阶段详细计划的制定与控制;占10%的工作量
2、 负责需求精确把握、系统整体设计、测试方案制定;占25%的工作量
3、 负责上线前的实施方案制定、基础数据准备规范与方案;占10%的工作量
4、 负责或协助详细设计;占10%的工作量
5、 负责资源(人力、物力)分工与调度、上下关系沟通达成共识、风险预警与控制;占30%的工作量
6、 负责文档规范及主要文档的审核确认;占10%的工作量
不该做的工作:
1、 软件代码编写;
2、 大量标准文档编写;
7、 甲方(用户)委托乙方(供应商)进行某项目的软件开发与实施。如果你是用户方的项目经理,你认为需要在项目的哪些环节上需要与供应商项目经理达成共识并重点监控?这些监控的依据表现为什么(即监控表现物是什么)?
Answer:
需要重点监控的环节有需求分析,界面原型,概要设计,详细设计,接受测试,割接,验收
监控表现物分别是需求分析报告,界面原型确认,概要设计报告,详细设计报告,接受测试报告,割接方案,验收报告。
8、 某软件开发项目,项目周期预计8个月,软件开发实施人员需要12人或以上,将来系统不同类型的使用人员在100人以上。如果你负责此掌控此项目的开发与实施,你认为该项目组织中应包含哪些角色?各角色的主要职责是什么(一句话)?
Answer:
项目组织的角色主要有包括项目经理,系统分析员,流程负责人,关键用户,程序员,测试人员。
项目经理的主要职责是计划、组织、控制和协调项目,使项目按质、按量、按时完成。
流程负责人的主要职责是规划流程和监控流程(可无,由系统分析员取代)。
系统分析员的主要职责是需求调研分析和设计系统。
关键用户的主要职责是提出需求、进行接受测试、准备数据、验收工作。
程序员的主要职责是进行编码和单元测试工作
测试人员的主要职责是进行系统测试,容量测试,集成测试和接受测试。
9、 IT项目中最常出现的问题和风险是什么?你对IT项目的计划、风险控制采取的方法是什么?能具体说明吗?。
Answer:
IT项目中最常出现的问题和风险是:
Ø 如能否准确地理解用户地需求并与项目成本、周期达成平衡?
Ø 如何控制项目进行中的需求变更?
Ø 如何使临时搭建的项目组成员形成默契和活力?
Ø 如何识别项目过程中每一阶段的成熟度及因此带来的风险?
IT项目计划、风险控制采取的方法是:风险分析。包括风险识别、风险估计、风险评价、风险驾驭和监控。
风险识别:项目风险识别潜在的预算、进度、个人(包括人员和组织)、资源、用户和需求方面的问题,以及它们对软件项目的影响。
风险估计:可用两种方法来估价每一种风险。一种是估计一个风险发生的可能性。另一种方法是估计那些与风险有关的问题可能产生的结果。
风险评价: 一个对于风险评价很有用的技术就是定义风险参照水准、对于大多数的软件项目来说,成本、进度和性能就是三种典型的风险参照水准。对于成本超支、进度延期、性能降低,有一个标明导致项目水准终止的水准。如果风险的某种组合造成了一些问题,从而超出了一个或多个参照水准,就要终止工作。
风险驾驭和监控;风险驾驭是指利用某些技术,如原型化、软件自动化、软件心理学、可靠性工程学以及某些项目管理方法等设法避开或转移风险。风险监控是一种项目追踪活动,它可判断一个预测的风险事实是否发生,进行风险再估计,收集可用于将来的风险分析的信息。