第一篇:某公司软件工程师笔试题4
1.面向对象的特点
2.java类是否可以多继承,怎样实现多继承
3.多线程的优点
4.谈谈final,finally,finalize的区别
5.JAVA中异常处理机制,事件机制、6.写出SQL语句:从表A中查出值大于40、小于80的记录,从表B中查出值小于
10、并将表A和表B查出的记录合并于表C中
7.Java多线程编程。用Java写一个多线程程序,如写四个线程,二个加1,二个对一个变量建议,输出。
8.Java的通信编程,编程题(或问答),用java socket编程,读服务器几个字符,再写入本地显示?
9.Servlet的基本架构 ?
第二篇:软件测试工程师笔试题
软件测试工程师笔试题一及答案
一、基础理论
1、软件测试的结束标准是什么?
2、一套完整的测试应该由哪些阶段组成?分别阐述一下各个阶段。
3、什么是缺陷报告?
4、缺陷报告的作用
5、缺陷报告的要点
6、软件测试缺陷报告的“5C”原则
7、缺陷的二八定理
8、软件测试的流程
9、测试计划的目的是什么?测试计划的内容都包括什么?其中哪些是最重要的?
10、请试着比较一下黑盒测试、白盒测试、单元测试、集成测试、系统测试、验收测试的区别与联系。
11、Alpha 测试与beta 测试的区别
答案:
一、基础理论
1、测试计划中所有规定的测试内容和回归测试都已经运行完成或根据上级主管对测试结果的意见,就可以结束本次测试
2、计划阶段、设计阶段、白盒单元、白盒集成、黑盒单元、黑盒集成、系统测试、回归测试、验收测试
一套完整的测试应该由五个阶段组成:
1)测试计划首先,根据用户需求报告中关于功能要求和性能指标的规格说明书,定义相应的测试需求报告,即制订黑盒测试的最高标准。以后所有的测试工作都将围绕着测试需求来进行,符合测试需求的应用程序即是合格的,反之即是不合格的;同时,还要适当选择测试内容,合理安排测试人员、测试时间及测试资源等。
2)测试设计将测试计划阶段制订的测试需求分解、细化为若干个可执行的测试过程,并为每个测试过程选择适当的测试用例(测试用例选择的好坏将直接影响测试结果的有效性)。
3)测试开发建立可重复使用的自动测试过程。
4)测试执行执行测试开发阶段建立的自动测试过程,并对所发现的缺陷进行跟踪管理,测试执行一般由单元测试、组合测试、集成测试、系统联调及回归测试等步骤组成,测试人员应本着科学负责的态度,一步一个脚印地进行测试。
5)测试评估结合量化的测试覆盖域及缺陷跟踪报告,对于应用软件的质量和开发团队的工作进度及工作效率进行综合评价。
3、缺陷报告是描述软件缺陷现象和重现步骤地集合。软件缺陷报告Software Bug Report(SBR)或软件问题报告Software Problem Report(SPR)
4、缺陷报告是软件测试人员的工作成果之一,体现软件测试的价值
缺陷报告可以把软件存在的缺陷准确的描述出来,便于开发人员修正
缺陷报告可以反映项目/产品当前的质量状态,便于项目整体进度和质量控制
软件测试缺陷报告是软件测试的输出成果之一,可以衡量测试人员的工作能力
5、标题(Title)
简洁、准确、完整、反映缺陷本质、方便查询
前缀 + 标题正文,标题正文采用结果和动作,或者现象和位置的方式表达
步骤(Steps)
可复现、完整、简洁、准确
按数字编号
实际结果(Actual results)
准确、详细描述软件的现象和特征
期望结果(Expected results)
准确、丰富、有理有据
平台(Platforms)
准确
截图(Screenshots)
准确反映缺陷特征
注释(Notes)
关于缺陷的辅助说明
6、内容准确(Correct):
每个组成部分的描述准确,不会引起误解
步骤简洁(Concise):
只包含必不可少的信息,不包括任何多余的内容
内容清晰(Clear):
每个组成部分的描述清晰,易于理解
结构完整(Complete):
包含复现该缺陷的完整步骤和其他本质信息
风格一致(Consistent):
按照一致的格式书写全部缺陷报告
7、在分析、设计、实现阶段的复审和测试工作能够发现和避免80%的缺陷,而系统测试又能找出其余缺陷中的80%,最后的4%的缺陷可能只有在用户大范围、长时间使用后才会暴露出来。
8、制订测试计划、设计测试用例、实施测试、提交缺陷报告、测试总结。
9、测试计划的目的:编写软件测试计划的目的是指导测试组成员进行工作和让测试组以外的项目成员了解测试工作的。
测试计划的内容:测试目的和测试项目简介、测试参考文档和测试提交文档、术语和定义、测试策略、确定测试内容、资源、测试进度、测试员的职责与任务分配、项目通过或失败的标准、暂
停和重新启动测试的标准、风险和问题等。
最重要的:测试策略、确定测试内容、资源、测试进度、测试员的职责与任务分配、项目通过或失败的标准
10、黑盒测试:把测试对象当成一个黑盒子,测试人员完全不考虑逻辑结构和内部特性,只依据程式的需求说明书来检查程式的功能是否满足它的功能说明。
白盒测试:把测试对象当成一个透明的盒子,允许测试人员利用程序内部逻辑结构及相关信息,设计或选择测试用例,对程式所有逻辑路径进行测试。
单元测试:白盒测试的一种,对软件设计中的单元模块进行测试。
集成测试:在单元测试的基础上,对单元模块之间的连接和组装w进行测试。
系统测试:在所有都考虑的情况下,对系统进行测试。
验收测试:第三方进行的确认软件满足需求的测试。
第三篇:某公司软件工程师笔试题
软件工程师-笔试试题
说明:不需要全部完成,做你懂的就可以。
Java基础
1.Set、Map、List有什么异同?
2.Abstract class和interface有什么区别?什么是基于接口编程?
3.类C有4个方法m1、m2、m3、m4,其中m1、m2、m3使用synchronized声明,m3还有static声明,m4没有特殊的声明。当一个线程T1进入C的一个实例的m1方法后,另一线程T2能立刻进入另一个实例的m1、m2、m3、m4方法吗?为什么?[高分] 4.String和StringBuffer区别,什么时候应该使用StringBuffer?
5.RuntimeException与一般异常(非RuntimeException的Exception)有何异同?
Web(HTML, DOM, JavaScript, CSS)
6.你平时有注意浏览器的兼容性吗?简述你知道的浏览器兼容性的例子。7.简述iframe的特点、使用模式 8.你用过些什么javascript的框架? 9.你了解什么是SEO吗?
10. 怎样的网页适合做缓存?一个网页怎样才会被缓存?网页缓存为什么重要? 11. 使用Cookie应注意什么问题,什么时候适合用Cookie,什么时候不适合?
JavaEE 12。说出Servlet的生命周期
13。Forward和redirect的区别
14。Jsp中动态include和静态include的区别?
15。不能往Session里面存储太多太大的对象,为什么?
16。Servlet里面,什么情况下会调用doGet()和doPost()?有什么区别
数据库
17。写一段数据库查询的JDBC或hibernate程序(select * from employee where empid=?”)(只要主要的代码,把你认为“不可缺少”的语句写上,但要完整)18。在SQL里面怎样过滤重复的记录?
19。What is a “transaction”?Why are they necessary? 20。Trigger 有什么作用?
21。What are stored procedures?How is it useful? 22。What is the advantage of using PreparedStatement?
XML和WebService 23。Xml文档定义有几种形式?它们之间有何本质区别? 24。What is the difference between SAX parser and DOM parser?
OOAD和UML 25。What is an usecase? 架构与框架
26.说说你对MCV的认识
第四篇:软件工程师笔试题3
预处理器(Preprocessor)
1.用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)#define SECONDS_PER_YEAR(60 * 60 * 24 * 365)UL
我在这想看到几件事情:
1).#define 语法的基本知识(例如:不能以分号结束,括号的使用,等等)
2).懂得预处理器将为你计算常数表达式的值,因此,直接写出你是如何计算一年中有多少秒而不是计算出实际的值,是更清晰而没有代价的。
3).意识到这个表达式将使一个16位机的整型数溢出-因此要用到长整型符号L告诉编译器这个常数是的长整型数。
4).如果你在你的表达式中用到UL(表示无符号长整型),那么你有了一个好的起点。记住,第一印象很重要。
2.写一个“标准”宏MIN,这个宏输入两个参数并返回较小的一个。
#define MIN(AB)((A)6”。原因是当表达式中存在有符号类型和无符号类型时所有的操作数都自动转换为无符号类型。因此-20变成了一个非常大的正整数,所以该表达式计算出的结果大于6。这一点对于应当频繁用到无符号数据类型的嵌入式系统来说是丰常重要的。如果你答错了这个问题,你也就到了得不到这份工作的边缘。
13.评价下面的代码片断:
unsigned int zero = 0;
unsigned int compzero = 0xFFFF;
/*1's complement of zero */
对于一个int型不是16位的处理器为说,上面的代码是不正确的。应编写如下: unsigned int compzero = ~0;
这一问题真正能揭露出应试者是否懂得处理器字长的重要性。在我的经验里,好的嵌入式程序员非常准确地明白硬件的细节和它的局限,然而PC机程序往往把硬件作为一个无法避免的烦恼。
到了这个阶段,应试者或者完全垂头丧气了或者信心满满志在必得。如果显然应试者不是很好,那么这个测试就在这里结束了。但如果显然应试者做得不错,那么我就扔出下面的追加问题,这些问题是比较难的,我想仅仅非常优秀的应试者能做得不错。提出这些问题,我希望更多看到应试者应付问题的方法,而不是答案。不管如何,你就当是这个娱乐吧… 动态内存分配(Dynamic memory allocation)
14.尽管不像非嵌入式计算机那么常见,嵌入式系统还是有从堆(heap)中动态分配内存的过程的。那么嵌入式系统中,动态分配内存可能发生的问题是什么?
这里,我期望应试者能提到内存碎片,碎片收集的问题,变量的持行时间等等。这个主题已经在ESP杂志中被广泛地讨论过了(主要是 P.J.Plauger 他的解释远远超过我这里能提到的任何解释),所有回过头看一下这些杂志吧!让应试者进入一种虚假的安全感觉后,我拿出这么一个小节目:下面的代码片段的输出是什么,为什么?
char *ptr;
if((ptr =(char *)malloc(0))== NULL)
puts(“Got a null pointer”);
else
puts(“Got a valid pointer”);
这是一个有趣的问题。最近在我的一个同事不经意把0值传给了函数malloc,得到了一个合法的指针之后,我才想到这个问题。这就是上面的代码,该代码的输出是“Got a valid pointer”。我用这个来开始讨论这样的一问题,看看被面试者是否想到库例程这样做是正确。得到正确的答案固然重要,但解决问题的方法和你做决定的基本原理更重要些。
Typedef
15.Typedef 在C语言中频繁用以声明一个已经存在的数据类型的同义字。也可以用预处理器做类似的事。例如,思考一下下面的例子:
#define dPS struct s *
typedef struct s * tPS;
以上两种情况的意图都是要定义dPS 和 tPS 作为一个指向结构s指针。哪种方法更好呢?(如果有的话)为什么?
这是一个非常微妙的问题,任何人答对这个问题(正当的原因)是应当被恭喜的。答案是:typedef更好。思考下面的例子:dPS p1p2;
tPS p3p4;
第一个扩展为
struct s * p1 p2;
上面的代码定义p1为一个指向结构的指,p2为一个实际的结构,这也许不是你想要的。第二个例子正确地定义了p3 和p4 两个指针。
16.C语言同意一些令人震惊的结构下面的结构是合法的吗,如果是它做些什么?int a = 5 b = 7 c;
c = a+++b;
这个问题将做为这个测验的一个愉快的结尾。不管你相不相信,上面的例子是完全合乎语法的。问题是编译器如何处理它?水平不高的编译作者实际上会争论这个问题,根据最处理原则,编译器应当能处理尽可能所有合法的用法。因此,上面的代码被处理成:
c = a++ + b;
因此 这段代码持行后a = 6 b = 7 c = 12。
第五篇:MTK深圳公司嵌入式软件工程师笔试题+
MTK深圳公司嵌入式软件工程师笔试题
//MTK深圳嵌入式软件工程师笔试题(B卷)
//1***************************************** #define pi 3.14
#define Area(R)pi*R*R
main()
{
int r1=5,r2=2;
double s=0;
s=Area(r1-r2);
printf(“The area is %f”,s);
}
//求结果
//2********************************************* //函数 int compare(int a,int b),定义为该函数的函数指针P:为_______________
//3********************************************* #include
void sub(char*s,int num)
{
int i ,j=num;
char t;
while(j-->1)
{
for(i=0;i { if(s[i] { t=s[i]; s[i]=s[i+1]; s[i+1]=t; } } } } main() { char*s=“CEAeded”; sub(s,6); printf(“%sn”,s) } //求结果 //4********************************************** //交换两个变量的值,不使用第三个变量,即a=3,b=5交换 //后b=3,a=5 unsigned char a=3,b=5; //5************************************************** #define N 100 void GetMemory1(char*p) { p=(char*)malloc(sizeof(char)*N); strcpy(p,“Have a good day!”); } char*GetMemory2(void) { char p[]=“Have a good day!”; return p; void main(void) { char*str1=NULL,*str2=NULL; GetMemory1(str1); GetMemory2(str2); printf(“nstr1:%s”,str1); printf(“nstr2:%s”,str2); //6****************************************************** //构造N个结点的单链表返回链表头指针,要求链表中各结点顺序 //与结点数据输入顺序相反,例如输入1,2,3,4,5,形成的链表为 //head->5 4 3 2 1 ,补充程序 #define N 10 typedef struct Node { int data; struct Node*next; }NODE; int Get_Data(int i);//定义省略 Node*Create_u() { int i; NODE*p,*Head=NULL; for(i=0;i { VP=New NODE; P->Data=Get_Data(i); ________________; ________________; return Head; } //7********************************************** //N个结点链表,每个结点中存放一个字符,判断链表存放的字符是否 //中心对称,即a b c c b a或a b c b a,补充程序 typedef struct Node { int data; struct Node*next; }NODE; bool Is_symmeic(NODE*head,*int n) { char D[N]; int i,d; __________; for(i=0;i { D[i]=head->data; head=head->next; } if(__________) { head=head->next; } while(head) { _______________; if(D[i]!=head->data) { return false; } head=head->next; } return true; } //8************************************* //str中只含有大写和小写字母函数change_move(char*str)将字符串中大写改成*并 //移到前面小写后返回*的个数 //如AabBdcYY改为*****abd,返回5 int chang_move(char*str) { int len,i,curstr=-1; len=strlen(str); for(i=len-1;i>=0;i--) { if(str[i]>='A'&&str[i]<='Z') { str[i]='*'; if(cursor==-1) { cursor=i; } else if(cursor>i) { _____________; str[i]='*'; _____________; } } return____________; } //9*********************************************** //求两个字符串的第一个公共子串,并返回该子串 //如:“a b c d e f g e h i” “a a c d e f * * g e h i” //第一个为“c d e f”;不许用strcmp() char*Maxf(char*str1,char*str2) { }