软件工程师
(2008)
1.名词辨析
SDK
MFC
GDI
COM/DCOM
RAID
ActiveX
CMM
嵌入式开发
Linux
CGI
数字签名
CRM
OLAP
Socket
OOP
Oracle
UML
CORBA
2.下面有几组代码片段,你认为那几组风格较好且正确?请说明理由。
(1)
long ltmp = 4;
int nRet = SendIt(<mp,4);
(2)
long ltmp = 4;
int nRet = SendIt(<mp,sizeof(long));
(3)
char filename[80];
sprintf(filename,"%s\\vipdoc\\1.txt",tmpstr);
(4)
char filename[MAX_PATH];
sprintf(filename,"%s\\vipdoc\\1.txt",tmpstr);
(5)
#define square(x) ((x)*(x))
(6)
#define square_(x) (x)*(x)
(7)
#define SQUARE(x) ((x)*(x))
(8)
if(0 == isTrendK_Style(x,y))
return;
(9)
if(isTrendK_Style(x,y) == 0)
return;
(10)
typedef struct tagReqHeader
{
struct
{
unsigned char Version:4;
unsigned char Compressed:2;
unsigned char Encrypted:1;
unsigned char Reserved:1;
} Info;
short nPriority;
unsigned short nPacketLen;
} REQHEADER,*LPREQHEADER;
(11)
typedef struct tagReqHeader
{
struct Info
{
char Version:4;
char Compressed:2;
char Encrypted:2;
} ;
short nPriority;
short nPacketLen;
}REQHEADER;
(12)
char *p,*p2="tendency";
strcpy(p,"tdx is");
strcat(p,p2);
printf("%s\n",p);
3.你认为下列的一些话是否正确
(1).知道如何做比得到代码更重要
(2).代码是给机器运行的而不是给人看的
(3).尽量不要做已经有很多人已经做过的事情
(4).将问题简单化而不是复杂化。"删繁就简三秋树,标新立异二月花"
(5).当开发不再是对技能拥有者的要求时就上升为对管理执行者的要求
(6).MySQL是微软推出的简化版数据库系统
(7).软件设计中划分模块的一个准则是高内聚低耦合
4.程序编写.
(1).实现strlen()
int strlen(char *ptr)
{
}
(2).编写排序函数(用冒泡法或选择法实现)
void MySort(int *pSource,int num)
{
}
5.开发部有一新项目,如果你是该项目的负责人,从软件工程的角度,你将怎样管理项目开发的流程?
软件工程师试题答案(2008)
1.名词辨析
SDK: 软件开发工具,微软提供给Windows开发者的底层接口
MFC: 微软基本类库,泛指使用MFC开发的程序
GDI:图形开发接口
COM/DCOM:组件对象模型/分布式组件对象模型,一个新的组件开发方法
RAID:Redundant Array of Independent Disks,独立磁盘冗余阵列
ActiveX: 微软提出的控件概念
CMM:软件能力成熟度模型
嵌入式开发:基于周边平台(如单片机,PDA或其它设备)的开发
Linux:一个自由,免费的操作系统
CGI:通用网关接口,Web服务器的脚本执行接口规范
数字签名:电子商务上用于辨别身份的安全技术
CRM:客户资源管理
OLAP:联机在线分析,提供对数据仓库的分析
Socket:套接字,网络编程接口
OOP:面向对象的程序开发方法
Oracle:一个大型数据库系统
UML:统一建模语言
CORBA:通用对象请求代理架构(Common Object Request Broker Architecture)
2.
2,4,7,8,10 风格较好
12 有错误
3.
1,3,4,5,7正确
4.
int strlen(char *ptr)
{
int i = 0;
if (ptr == NULL) return -1;
while((*ptr++) != '\0')
{
i++;
}
return i;
}
void MySort(int *pSource,int num)
{
BOOL flag;
int tmpData;
int i,j;
for(i=0;i
pSource[j+1])
{
flag = TRUE;
tmpData = pSource[j];
pSource[j] = pSource[j+1];
pSource[j+1] = tmpData;
}
}
if (!flag) break;
}
}