计算机软件笔试面题和答案包含华为腾讯等公司.doc

上传人:仙人指路1688 文档编号:4123863 上传时间:2023-04-06 格式:DOC 页数:45 大小:138.50KB
返回 下载 相关 举报
计算机软件笔试面题和答案包含华为腾讯等公司.doc_第1页
第1页 / 共45页
计算机软件笔试面题和答案包含华为腾讯等公司.doc_第2页
第2页 / 共45页
计算机软件笔试面题和答案包含华为腾讯等公司.doc_第3页
第3页 / 共45页
计算机软件笔试面题和答案包含华为腾讯等公司.doc_第4页
第4页 / 共45页
计算机软件笔试面题和答案包含华为腾讯等公司.doc_第5页
第5页 / 共45页
点击查看更多>>
资源描述

《计算机软件笔试面题和答案包含华为腾讯等公司.doc》由会员分享,可在线阅读,更多相关《计算机软件笔试面题和答案包含华为腾讯等公司.doc(45页珍藏版)》请在三一办公上搜索。

1、软件测试面试题和答案一、判断题1软件测试的目的是尽可能多的找出软件的缺陷。(Y)2Beta测试是验收测试的一种。(Y)3验收测试是由最终用户来实施的。(N)4项目立项前测试人员不需要提交任何工件。(Y)5单元测试能发现约80%的软件缺陷。(Y)6代码评审是检查源代码是否达到模块设计的要求。(N)7自底向上集成需要测试员编写驱动程序。(Y)8负载测试是验证要检验的系统的能力最高能达到什么程度。(N)9测试人员要坚持原则,缺陷未修复完坚决不予通过。(N)10代码评审员一般由测试员担任。(N)11我们可以人为的使得软件不存在配置问题。(N)12集成测试计划在需求分析阶段末提交。(N)二、选折1软件验

2、收测试的合格通过准则是:(ABCD)A软件需求分析说明书中定义的所有功能已全部实现,性能指标全部达到要求。B所有测试项没有残余一级、二级和三级错误。C立项审批表、需求分析文档、设计文档和编码实现一致。D验收测试工件齐全。2软件测试计划评审会需要哪些人员参加?(ABCD)A项目经理BSQA负责人C配置负责人D测试组3下列关于alpha测试的描述中正确的是:(AD)Aalpha测试需要用户代表参加Balpha测试不需要用户代表参加Calpha测试是系统测试的一种Dalpha测试是验收测试的一种4测试设计员的职责有:(BC)A制定测试计划B设计测试用例C设计测试过程、脚本D评估测试活动5软件实施活动

3、的进入准则是:(ABC)A需求工件已经被基线化B详细设计工件已经被基线化C构架工件已经被基线化D项目阶段成果已经被基线化三、添空1.软件验收测试包括:正式验收测试,alpha测试,beta测试。2.系统测试的策略有:功能测试,性能测试,可靠性测试,负载测试,易用性测试,强度测试,安全测试,配置测试,安装测试,卸载测试,文挡测试,故障恢复测试,界面测试,容量测试,兼容性测试,分布测试,可用性测试,(有的可以合在一起,分开写只要写出15就满分哦)3.设计系统测试计划需要参考的项目文挡有:软件测试计划,软件需求工件和迭代计划。4.对面向过程的系统采用的集成策略有:自顶向下,自底向上两种。5.(这题出

4、的有问题哦,详细的5步骤为)通过画因果图来写测试用例的步骤为:(1)分析软件规格说明描述中,哪些是原因(即输入条件或输入条件的等价类),哪些是结果(即输出条件),并给每个原因和结果赋予一个标识符。(2)分析软件规格说明描述中的语义,找出原因与结果之间,原因与原因之间对应的是什么关系?根据这些关系,画出因果图。(3)由于语法或环境限制,有些原因与原因之间,原因与结果之间的组合情况不可能出现。为表明这些特殊情况,在因果图上用一些记号标明约束或限制条件。(4)把因果图转换成判定表。(5)把判定表的每一列拿出来作为依据,设计测试用例。四、简答(资料是搜集整理的,感谢前辈的解题)无1.区别阶段评审的与同

5、行评审同行评审目的:发现小规模工作产品的错误,只要是找错误;阶段评审目的:评审模块阶段作品的正确性可行性及完整性同行评审人数:3-7人人员必须经过同行评审会议的培训,由SQA指导阶段评审人数:5人左右评审人必须是专家具有系统评审资格同行评审内容:内容小一般文档40页,代码 500行阶段评审内容:内容多,主要看重点同行评审时间:一小部分工作产品完成阶段评审时间:通常是设置在关键路径的时间点上!2.什么是软件测试为了发现程序中的错误而执行程序的过程3简述集成测试的过程系统集成测试主要包括以下过程:1.构建的确认过程。2.补丁的确认过程。3.系统集成测试测试组提交过程。4.测试用例设计过程。5.测试

6、代码编写过程。6. Bug的报告过程。7.每周/每两周的构建过程。8.点对点的测试过程。9.组内培训过程。4怎么做好文档测试仔细阅读,跟随每个步骤,检查每个图形,尝试每个示例。P142检查文档的编写是否满足文档编写的目的内容是否齐全,正确内容是否完善标记是否正确5白盒测试有几种方法总体上分为静态方法和动态方法两大类。静态:关键功能是检查软件的表示和描述是否一致,没有冲突或者没有歧义动态:语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、路径覆盖。6系统测试计划是否需要同行审批,为什么需要,系统测试计划属于项目阶段性关键文档,因此需要评审。7Alpha测试与beta的区别Alpha测试在

7、系统开发接近完成时对应用系统的测试;测试后仍然会有少量的设计变更。这种测试一般由最终用户或其它人员完成,不能由程序或测试员完成。Beta测试当开发和测试根本完成时所做的测试,最终的错误和问题需要在最终发行前找到。这种测试一般由最终用户或其它人员完成,不能由程序员或测试员完成。8比较负载测试,容量测试和强度测试的区别负载测试:在一定的工作负荷下,系统的负荷及响应时间。强度测试:在一定的负荷条件下,在较长时间跨度内的系统连续运行给系统性能所造成的影响。容量测试:容量测试目的是通过测试预先分 析出反映软件 系统应用特征的某项指标的极限值(如最大并发用户数、数据库记录数等),系统在其极限值状态下没有出

8、现任何软件故障或还能保持主要功能正常运行。容量测试 还将确定测试对象在给定时间内能够持续处理的最大负载或工作量。容量测试的目的是使系统承受超额的数据容量来发现它是否能够正确处理。容量测试是面向数据 的,并且它的目的是显示系统可以处理目标内确定的数据容量。9测试结束的标准是什么?用例全部测试。覆盖率达到标准。缺陷率达到标准。其他指标达到质量标准10描述软件测试活动的生命周期?测试周期分为计划、设计、实现、执行、总结。其中:计划:对整个测试周期中所有活动进行规划,估计工作量、风险,安排人力物力资源,安排进度等;设计:完成测试方案,从技术层面上对测试进行规划;实现:进行测试用例和测试规程设计;执行:

9、根据前期完成的计划、方案、用例、规程等文档,执行测试用例。总结:记录测试结果,进行测试分析,完成测试报告。11软件的缺陷等级应如何划分?A类严重错误,包括以下各种错误: 1 由于程序所引起的死机,非法退出 2 死循环 3 数据库发生死锁 4 因错误操作导致的程序中断 5 功能错误 6 与数据库连接错误 7 数据通讯错误B类较严重错误,包括以下各种错误: 1 程序错误 2 程序接口错误 3 数据库的表、业务规则、缺省值未加完整性等约束条件C类一般性错误,包括以下各种错误: 1 操作界面错误(包括数据窗口内列名定义、含义是否一致) 2 打印内容、格式错误 3 简单的输入限制未放在前台进行控制 4

10、删除操作未给出提示 5 数据库表中有过多的空字段D类较小错误,包括以下各种错误: 1 界面不规范 2 辅助说明描述不清楚 3 输入输出不规范 4 长操作未给用户提示 5 提示窗口文字未采用行业术语 6 可输入区域和只读区域没有明显的区分标志E类测试建议面试准备题(包括高质量c+题)const char*, char const*, char*const的区别问题几乎是C+面试中每次都会有的题目。事实上这个概念谁都有只是三种声明方式非常相似很容易记混。 Bjarne在他的The C+ Programming Language里面给出过一个助记的方法: 把一个声明从右向左读。char * cons

11、t cp; ( * 读成 pointer to ) cp is a const pointer to charconst char * p; p is a pointer to const char;char const * p; 同上因为C+里面没有const*的运算符,所以const只能属于前面的类型。 下面这个程序执行后会有什么错误或者效果:#define MAX 255int main() unsigned char AMAX,i; for (i=0;i=MAX;i+) Ai=i;解答:MAX=255 数组A的下标范围为:0.MAX-1,这是其一.其二.当i循环到255时,循环内执行:

12、A255=255;这句本身没有问题.但是返回for (i=0;i=MAX;i+)语句时,由于unsigned char的取值范围在(0.255),i+以后i又为0了.无限循环下去.注:char类型为一个字节,取值范围是-128,127,unsigned char 0 ,255编写用C语言实现的求n阶阶乘问题的递归算法:long int fact(int n)int x;long int y;if(nhigh) return -1;mid=(low+high)/2;if(x=amid) return mid;if(xamid) return(BSearch(a,x,low,mid-1);else

13、 return(BSearch(a,x,mid+1,high);2、非递归方法实现:int BSearch(elemtype a,keytype key,int n)int low,high,mid;low=0;high=n-1;while(low=high) mid=(low+high)/2; if(amid.key=key) return mid; else if(amid.key2解:int f(int n)int i,s,s1,s2;s1=1;/*s1用于保存f(n-1)的值*/s2=1;/*s2用于保存f(n-2)的值*/s=1;for(i=3;i= - EPSINON) & (x

14、=”或“=”此类形式。如下是错误的写法,不得分。if (x = 0.0)if (x != 0.0)请写出 char *p 与“零值”比较的 if 语句。(3 分)标准答案:if (p = NULL)if (p != NULL)如下写法均属不良风格,不得分。if (p = 0)if (p != 0)if (p)if (!)二、以下为Windows NT 下的32 位C+程序,请计算sizeof 的值(10 分)void Func ( char str100)请计算sizeof( str ) = 4 (2 分)char str = “Hello” ;char *p = str ;int n = 1

15、0;请计算sizeof (str ) = 6 (2 分)sizeof ( p ) = 4 (2 分)sizeof ( n ) = 4 (2 分)void *p = malloc( 100 );请计算sizeof ( p ) = 4 (2 分)三、简答题(25 分)1、头文件中的 ifndef/define/endif 干什么用?(5 分)答:防止该头文件被重复引用。2、#include 和 #include “filename.h” 有什么区别?(5 分)答:对于#include ,编译器从标准库路径开始搜索 filename.h对于#include “filename.h” ,编译器从用户的

16、工作路径开始搜索 filename.h3、const 有什么用途?(请至少说明两种)(5 分)答:(1)可以定义 const 常量(2)const 可以修饰函数的参数、返回值,甚至函数的定义体。被const 修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性。4、在C+ 程序中调用被 C 编译器编译后的函数,为什么要加 extern “C”? (5 分)答:C+语言支持函数重载,C 语言不支持函数重载。函数被C+编译后在库中的名字与C 语言的不同。假设某个函数的原型为: void foo(int x, int y);该函数被C 编译器编译后在库中的名字为_foo , 而C+编译器

17、则会产生像_foo_int_int 之类的名字。C+提供了C 连接交换指定符号extern“C”来解决名字匹配问题。5、请简述以下两个for 循环的优缺点(5 分)for (i=0; iN; i+)if (condition)DoSomething();elseDoOtherthing();if (condition)for (i=0; iN; i+)DoSomething();elsefor (i=0; iN; i+)DoOtherthing();优点:程序简洁缺点:多执行了N-1 次逻辑判断,并且打断了循环“流水线”作业,使得编译器不能对循环进行优化处理,降低了效率。优点:循环的效率高缺点

18、:程序不简洁四、有关内存的思考题(每小题5 分,共20 分)void GetMemory(char *p)p = (char *)malloc(100);void Test(void)char *str = NULL;GetMemory(str);strcpy(str, hello world);printf(str);请问运行Test 函数会有什么样的结果?答:程序崩溃。因为GetMemory 并不能传递动态内存,Test 函数中的 str 一直都是 NULL。strcpy(str, hello world);将使程序崩溃。char *GetMemory(void)char p = hell

19、o world;return p;void Test(void)char *str = NULL;str = GetMemory();printf(str);请问运行Test 函数会有什么样的结果?答:可能是乱码。因为GetMemory 返回的是指向“栈内存”的指针,该指针的地址不是 NULL,但其原现的内容已经被清除,新内容不可知。void GetMemory2(char *p, int num)*p = (char *)malloc(num);void Test(void)char *str = NULL;GetMemory(&str, 100);strcpy(str, hello);pr

20、intf(str);请问运行Test 函数会有什么样的结果?答:(1)能够输出hello(2)内存泄漏void Test(void)char *str = (char *) malloc(100);strcpy(str, “hello”);free(str);if(str != NULL)strcpy(str, “world”);printf(str);请问运行Test 函数会有什么样的结果?答:篡改动态内存区的内容,后果难以预料,非常危险。因为free(str);之后,str 成为野指针,if(str != NULL)语句不起作用。五、编写strcpy 函数(10 分)已知strcpy 函数

21、的原型是char *strcpy(char *strDest, const char *strSrc);其中strDest 是目的字符串,strSrc 是源字符串。(1)不调用C+/C 的字符串库函数,请编写函数 strcpychar *strcpy(char *strDest, const char *strSrc);assert(strDest!=NULL) & (strSrc !=NULL); / 2分char *address = strDest; / 2分while( (*strDest+ = * strSrc+) != 0 ) / 2分NULL ;return address ;

22、/ 2分(2)strcpy 能把strSrc 的内容复制到strDest,为什么还要char * 类型的返回值?答:为了实现链式表达式。 / 2 分例如 int length = strlen( strcpy( strDest, “hello world”) );六、编写类String 的构造函数、析构函数和赋值函数(25 分)已知类String 的原型为:class Stringpublic:String(const char *str = NULL); / 普通构造函数String(const String &other); / 拷贝构造函数 String(void); / 析构函数Str

23、ing & operate =(const String &other); / 赋值函数private:char *m_data; / 用于保存字符串;请编写String 的上述4 个函数。标准答案:/ String 的析构函数String:String(void) / 3 分delete m_data;/ 由于m_data 是内部数据类型,也可以写成 delete m_data;/ String 的普通构造函数String:String(const char *str) / 6 分if(str=NULL)m_data = new char1; / 若能加 NULL 判断则更好*m_data

24、= 0;elseint length = strlen(str);m_data = new charlength+1; / 若能加 NULL 判断则更好strcpy(m_data, str);/ 拷贝构造函数String:String(const String &other) / 3 分int length = strlen(other.m_data);m_data = new charlength+1; / 若能加 NULL 判断则更好strcpy(m_data, other.m_data);/ 赋值函数String & String:operate =(const String &othe

25、r) / 13 分/ (1) 检查自赋值 / 4 分if(this = &other)return *this;/ (2) 释放原有的内存资源 / 3 分delete m_data;/ (3)分配新的内存资源,并复制内容 / 3 分int length = strlen(other.m_data);m_data = new charlength+1; / 若能加 NULL 判断则更好strcpy(m_data, other.m_data);/ (4)返回本对象的引用 / 3 分return *this;winsocket编程#include #include void main()WORDwV

26、ersionRequested;WSADATA wsaData;int err; wVersionRequested = MAKEWORD(1,1);err = WSAStartup(wVersionRequested,&wsaData);if( err != 0) return; if(LOBYTE( wsaData.wVersion ) != 1| HIBYTE( wsaData.wVersion) != 1) WSACleanup(); return;SOCKET sockSrv=socket(AF_INET,SOCK_STREAM,0);SOCKADDR_IN addrSrv;addr

27、Srv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);addrSrv.sin_family=AF_INET;addrSrv.sin_port=htons(6000);bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR);listen(sockSrv,5);SOCKADDR_IN addrClient;int len=sizeof(SOCKADDR);while(1) SOCKET sockConn=accept(sockSrv,(SOCKADDR*)&addrClient,&len); char sendBuf100

28、; sprint(sendBuf,Welcome %s to , inet_ntoa(addrClient.sin_addr); send(sockConn,sendBuf,strlen(sendBuf)+1,0); char recvBuf100; recv(sockConn,recvBuf); printf(%sn,recvBuf); closesocket(sockConn); WSACleanup(); 注:这是Server端;File-New-Win32 Console Application,工程名:TcpSrv;然后,File-New-C+ Source File,文件名:TcpSrv;在该工程的Setting的Link的Object/library modules项要加入ws2_32.lib#include #include void main()WORDwVersionRequested;WSADATA wsaData;int err; wVersionRequested = MAKEWORD(1,1);err = WSAStartup(wVersionRequested,&wsaData);if( err != 0) return; if

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号