天音通信软件开发工程师岗位笔试试题
1、面向对象的思想主要包括什么?
封装:用抽象的数据类型将数据和基于数据的操作封装在一起,数据被保护在抽象数据类型内部。
继承:子类拥有父类的所有数据和操作。
多态:一个程序中同名的不同方法共存的情况。
2、进程和线程分别怎么理解?
进程是表示资源分配的基本单位,又是调度运行的基本单位;
线程是进程中执行运算的最小单位,亦即执行处理机调度的基本单位。
进程和线程的关系
1、一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程。
2、资源分配给进程,同一进程的所有线程共享该进程的所有资源。
3、处理机分给线程,即真正在处理机上运行的是线程。
4、线程在执行过程中,需要协作同步。不同进程的线程间要利用消息通信的办法实现同步。
3、黑盒测试和白盒测试是软件测试的两种基本方法,请分别说明各自的优点和缺点?
黑盒测试:不关心软件的内部结构,只关心输入和输出,主要依据需求文档;
白盒测试:专注于设计和实现的内部结构的软件和程序,主要依据设计文档;
缺点:
白盒测试只考虑测试软件产品,他不保证完全满足规范要求;
黑盒测试只考虑测试需求规格说明,它并不保证所有部件进行测试来实现;
优点:
黑盒测试会发现缺失的缺陷,指出哪部分是未完成的规范;
白盒测试会发现代码的缺陷,实现部分是错误的。
4、选择测试用例有哪些原则?
1、代表性:能够代表并覆盖各种合理的和不合理、合法的和非法的、边界的和越界的、以及极限的输入数据、操作和环境设置等。
2、可判性:即测试执行结果的正确性是可判定的,每一个测试用例都应有相应的期望结果。
3、再现性:即对同样的测试用例,系统的执行结果应当是相同的。
5、请阅读以下程序:
public cla ClaParent
{
public int Add(int a, int b) {} public virtual int Substract(int a, int b) {} public abstract int Multiply(int a, int b); return ab; return b - a;
6、请写出以下程序的运行结果:
public cla A
{
}
public cla B : A
{
public new int i = 0; public B() {} public override void fun() {i--; Console.WriteLine(@\"B\"); i++; public static int i = 0; public A() {} public virtual void fun() {} i++; Console.WriteLine(@\"A\");
} } public cla 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
if(*p==\'a\'+i||*p==\'A\'+i)
{
a[i]++;
}
p++;
}
for(i=0;i
printf(\"%d\\n\",a[i]);
}
void main()
{
char str[]=\"abedadHeIL\";int a[26]={0};fun(str,a);
}