软件开发工程师笔试试题-应届毕业生

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

天音通信软件开发工程师岗位笔试试题

1、面向对象的思想主要包括什么?

封装:用抽象的数据类型将数据和基于数据的操作封装在一起,数据被保护在抽象数据类型内部。

继承:子类拥有父类的所有数据和操作。

多态:一个程序中同名的不同方法共存的情况。

2、进程和线程分别怎么理解?

进程是表示资源分配的基本单位,又是调度运行的基本单位;

线程是进程中执行运算的最小单位,亦即执行处理机调度的基本单位。

进程和线程的关系

1、一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程。

2、资源分配给进程,同一进程的所有线程共享该进程的所有资源。

3、处理机分给线程,即真正在处理机上运行的是线程。

4、线程在执行过程中,需要协作同步。不同进程的线程间要利用消息通信的办法实现

同步。

3、黑盒测试和白盒测试是软件测试的两种基本方法,请分别说明各自的优点和缺点?

黑盒测试:不关心软件的内部结构,只关心输入和输出,主要依据需求文档;

白盒测试:专注于设计和实现的内部结构的软件和程序,主要依据设计文档;

缺点:

白盒测试只考虑测试软件产品,他不保证完全满足规范要求;

黑盒测试只考虑测试需求规格说明,它并不保证所有部件进行测试来实现;

优点:

黑盒测试会发现缺失的缺陷,指出哪部分是未完成的规范;

白盒测试会发现代码的缺陷,实现部分是错误的。

4、选择测试用例有哪些原则?

1、代表性:能够代表并覆盖各种合理的和不合理、合法的和非法的、边界的和越界的、

以及极限的输入数据、操作和环境设置等。

2、可判性:即测试执行结果的正确性是可判定的,每一个测试用例都应有相应的期望

结果。

3、再现性:即对同样的测试用例,系统的执行结果应当是相同的。

5、请阅读以下程序:

public class ClassParent

{

public int Add(int a, int b)

{

return a + b;

}

public virtual int Substract(int a, int b)

{

return a - b;

}

public abstract int Multiply(int a, int b);

protected abstract int Divide(int a, int b);

}

public class ClassChild : ClassParent

{

public override int Substract(int a, int b)

{

return b - a;

}

public override int Add(int a, int b)

{

return a * 2 - b;

}

public override int Divide(int a, int b)

{

return a / b;

}

}

请问以上程序能否正常编译运行?如果不能,请说出程序中有哪几处错误,应如何改正?

6、请写出以下程序的运行结果:

public class A

{

public static int i = 0;

public A()

{

Console.WriteLine(@"A");

}

public virtual void fun()

{

i++;

}

}

public class B : A

{

public new int i = 0;

public B()

{

Console.WriteLine(@"B");

i++;

}

public override void fun()

{

i--;

base.fun();

}

}

public class Main

{

static void Main(string[] args)

{

A a = new A();

B b = new B();

b.fun();

Console.WriteLine(A.i);

Console.WriteLine(b.i);

}

}

7、请编写一个函数,它可以找出某一字符串中出现次数最多的英文字母(不区分大小写,

只考虑A-Z),并且可以返回这个字母以及它出现的个数。比如对于输入字符串“I am a student”,该函数应当返回字母“A”以及个数2。只可以使用.NET标准类库内的成员。

#include "stdio.h"

#include "string.h"

void fun(char *p,int *a)

{

int i;

while(*p)

{

for(i=0;i<26;i++)

if(*p=='a'+i||*p=='A'+i)

{

a[i]++;

}

p++;

}

for(i=0;i<26;i++)

printf("%d\n",a[i]);

}

相关文档
最新文档