嵌入式软件工程师面试题

2024-07-09

嵌入式软件工程师面试题(共11篇)

篇1:嵌入式软件工程师面试题

2012最新的嵌入式软件工程师面试题笔试并且含答案

随着科技信息的进步,在某个领域的突破发展也是大势所趋,就像各个企业对嵌入式软件工程师 的要求也是随着需求的变化不段变化,所以2012最新的嵌入式软件工程师的面试题还是有必要了 解熟悉下的。

1.算术运算符,赋值运算符和关系运算符的运算优先级按从高到低依次为

A.算术运算、赋值运算、关系运算

B.算术运算、关系运算、赋值运算

C.关系运算、赋值运算、算术运算

D.关系运算、算术运算、赋值运算

参考答案:B

2.设#define N 3

#define Y(n)((N+1)*n)

则表达式2*(N+Y(5+1))的值是

A.42

B.48

C.54

D.出错

深圳达内福田培训中心提供的参考答案:B

3.打印一个N*N的方阵,N为每边字符的个数(3〈N〈20),要求最外层为“X”,第二层为“Y ”,从第三层起每层依次打印数字0,1,2,3,...例子:当N =5,打印出下面的图形:

X X X X X

X Y Y Y X

X Y 0 Y X

X Y Y Y X

X X X X X

4.多态类中的虚函数表是Compile-Time,还是Run-Time时建立的?

参考答案:

虚拟函数表是在编译期就建立了,各个虚拟函数这时被组织成了一个虚拟函数的入口地址的数组.而对象的隐藏成员--虚拟函数表指针是在运行期--也就是构造函数被调用时进行初始化的,这是 实现多态的关键.5.执行下述程序的输出结果是ABCDEFCDEFEF。

#include

char b[]=“ABCDEF”;

main()

{

char *bp;

for(bp=b;*bp;bp+=2)

printf(“%s”,bp);

printf(“n”);

}

6.函数 int compare(int a,int b),定义为该函数的函数指针P:为

int(*p)(int,int);p= compare;

#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)

}

7.用变量a给出下面的定义

a)一个整型数(An integer)

b)一个指向整型数的指针(A pointer to an integer)

c)一个指向指针的的指针,它指向的指针是指向一个整型数(A pointer to a pointer to an integer)

d)一个有10个整型数的数组(An array of 10 integers)

e)一个有10个指针的数组,该指针是指向一个整型数的(An array of 10 pointers to integers)

f)一个指向有10个整型数数组的指针(A pointer to an array of 10 integers)

g)一个指向函数的指针,该函数有一个整型参数并返回一个整型数(A pointer to a function that takes an integer as an argument and returns an integer)

h)一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数(An array of ten pointers to functions that take an integer argument and return an integer)

深圳达内福田培训中心提供的答案是:

a)int a;// An integer

b)int *a;// A pointer to an integer

c)int **a;// A pointer to a pointer to an integer

d)int a[10];// An array of 10 integers

e)int *a[10];// An array of 10 pointers to integers

f)int(*a)[10];// A pointer to an array of 10 integers

g)int(*a)(int);// A pointer to a function a that takes an integer argument and returns an integer

以上是2012年嵌入式软件工程师面试题,答案也都是深圳福田达内培训中心提供的参考答案,如果想了解更多关于这类的信息或是对这有什么疑问可以打电话咨询0755-82353533。

篇2:嵌入式软件工程师面试题

2008-12-09 11:291、LINUX下的Socket套接字和Windows下的WinSock有什么共同点?请从C/C++语言开发的角度描述,至少说出两点共同点。(10分,说得好的每点加5分,没有上限。精通SOCK编程者破格录用。)

本题的目的就是考考应试者的SOCK功底,以及应用能力。答案可谓是五花八门,但是答对的少得可怜。其实答案很多,也很好回答。可见面试者功底确实一般,对SOCK编程只是一知半解。更有甚者,把TCP/IP的原理搬出来讲了一大堆,却无一条符合要求。

参考答案:

第1题,答中一个得5分,答出其它正确答案的,也得5分。

a)都基于TCP/IP协议,都提供了面向连接的TCP SOCK和无连接的UDP SOCK。b)都是一个sock结构体。

c)都是使用sock文件句柄进行访问。

d)都具有缓冲机制。

2、请编写一个标准Shell脚本testd,实现如下功能:

A、在Linux操作系统启动的时候,自动加载/mnt/test/test程序。

B、当test异常退出之后,自动重新启动。

C、当test程序重启次数超过100次,自动复位操作系统。

假设你所拥有的资源:

A、目标机器是一台具有标准shell的嵌入式计算机,CPU为ARM7 56MB,内存16MB,软件环境基于Linux2.6.11和BusyBox1.2构建。

B、当前已有11个用户进程在运行,占用了大部分的CPU时间和内存,你可使用的内存只有2MB左右,CPU时间由系统分派。

(本题满分20分,程序15分,注释5分。程序不能运行的0分,能够运行但有BUG的10分,能够正确无误的运行的15分。清楚编写注释的5分。)

本题是考查LINUX和嵌入式编程功底的,写出程序来的不少,但是95%以上的人竟无视我假设的资源,不知道在重启test程序的时候需要加上一个适当的掩饰时间,以便资源紧张的操作系统有时间回收资源。85%的人不知道写完testd之后,要在init里边加载这个脚本,才能实现启动时自动加载的功能。有人甚至在脚本开头使用bash作为脚本解析器,我已经清清楚楚说明了用“标准shell”!用sh不就完了吗?是习惯作祟吗?

参考答案:

########################################

#testd is a daemon script to start and watch the program test ########################################

#!/bin/sh

#load *.so that may need

if [-r /sbin/ldconfig ];then

ldconfig

fi

#add the libs PATH that may need

export LD_LIBRARY_PATH=“/lib”

#count is the counter of test started times count=0

#main loop

while [ 1 ];do

#add execute attribute for /mnt/test/test chmod +x /mnt/test/test

#run test

/mnt/test/test

#a running times counter

let count=count+1

echo “test running times is $count”

#Is test runs too many times?

if [ “$count”-gt 100 ];then

echo “Will reboot when test runs too many times” reboot

fi

#waiting for test stop...sleep 3

done

篇3:嵌入式软件工程师面试题

关键词:并行工程,软件工程,软件质量保障,软件测试

对航空嵌入式软件产品进行测试是保证其质量与可靠性的重要手段。近些年,航空嵌入式软件市场不断动荡与激烈竞争的局面对航空嵌入式软件测试提出了新的挑战,商业化的第三方软件测试面临着一些新的问题,那就是如何在保证质量的前提下,加快测试项目的进度、提高开发效率,降低测试成本等等。软件成熟度(CMM)实践证明,良好的软件过程与持续的过程改进是解决诸如此类问题的一个途径,不但可以保证产品质量,还可以大大提高生产效率。因此,如何定义一个“良好的”,适合于航空嵌入式软件测试的软件过程成为问题的关键。并行工程是生产制造行业中优化生产过程的一种重要手段,文中从对并行工程的研究入手,将并行工程的思想、方法运用到航空嵌入式软件测试实践中,用于解决以上问题。

1 并行过程的相关概念

并行工程(Concurrent Engineering)是生产制造行业中的一个重要概念,是一种对产品及其相关过程(包括制造过程和支持过程)进行并行、一体化设计的系统化工作模式。并行工程的目标主要体现在5个方面:(1)提高产品的整个研发设计过程的质量[1];(2)降低产品全寿命周期费用[2];(3)缩短产品研发周期和减少设计反复;(4)提高产品的可靠性,满足客户要求;(5)提高新产品在市场上的竞争力和新产品的投放速度,赢得市场先机。

生产过程的管理[3,4]是并行工程关注的主要对象,这是因为:

首先,并行工程的主要目标之一就在于缩短产品开发周期,因此,过程本身必然成为控制和优化的对象;其次,以过程为基础进行成本核算,能够更全面的反映成本的构成,基于活动的成本核算(Activity Based Costing)就体现了这种思想;第三,以过程为基础进行质量控制,把质量控制从事后检测转变为事前预防,能够尽量减少大的设计更改,需求管理、质量功能配置(Quality Function Deployment)、全面质量管理(Total Quality Management)都是这种思想的反映;第四,以可视化的过程模型为基础的协同设计支持环境,是通讯、监控、协调和信息管理的基础;第五,追踪由最初的顾客需求到最终产品实现的决策过程,从中获得有益的经验和知识,是组织学习、增强产品开发能力的基本手段。

并行工程的最显著特征是组织机构的分布形式,它从层次式转变为平面式。这种分布形式突出了整合性,主要表现在把各方面的专家融合到一起,赋予充分的职责,发挥各自专长,使设计周期中获得必要的技术支持。各部门共享数据信息、及时沟通、相互合作、尽早分析产品整个周期中的所有因素,尽快发现并解决浪费、故障和差错问题,以免造成错误的串联及蔓延,还可避免行政政策带来的僵化和墨守成规,最终提高工作效率、大幅度地提高产品质量、降低成本、缩短产品开发周期。并行工程的另一个特征是集成化的产品设计、制造、营销的过程,力图使产品开发一开始就考虑到产品生命周期(从产品概念形成到报废)中所有因素,注重企业内部的机构集成又重视企业与外部供应商、消费者、经销商等的集成。其基本工作原则是在进行上游环节工作的同时,尽可能早地考虑下游环节的工作,集成和并行地进行产品及其有关过程的设计,特别注意产品概念设计的并行协调。而在运行之中并行工程还强调以人为本的管理,是以人为主体的设计过程。主张简化各种过程,强调管理的作用,注重整体效益,建立项目团队,发挥团队合作精神,使作为团队的推进者共同保证企业运行机制的顺利完成。

2 并行工程思想对航空嵌入式软件测试的启示

航空嵌入式测试是保证航空嵌入式软件质量与可靠性的重要手段。考察航空嵌入式软件的测试[5],可以发现其具有以下特点或问题:

(1) 工作量庞大,测试质量、进度、成本受到挑战

航空嵌入式软件测试往往意味着大量测试用例、测试程序的开发,是一项极耗时间与人、财、物力的庞大工程。以美国Collins公司某飞控显示器测试项目为例,飞控显示器开发周期为6个月,测试时间为5个月,要求整个测试要求开发测试程序1 200多个,测试用例近40 000个,测试程序一次性通过率高于95%。这样,在5个月的时间里,平均每个月要求开发测试程序200多个,测试用例8 000个,达到这样的产品质量水平与生产率要求是一项非常艰巨的任务;

(2) 在过程问题

传统的测试遵循于瀑布模型,它本身不利于质量的保障与过程改进,这是因为:第一,瀑布模型是一种串行模型,在瀑布模型中,测试已经被定义为编码实现阶段之后和验收维护阶段之前的一个独立阶段,测试不具备完整性,其实是一种代码测试;第二,测试起始时间晚,不利于及早发现需求于设计中的缺陷与错误,容易造成错误级联;第三,仅关注代码测试过程,没有对软件全过程进行考虑,不利于软件过程的改进。对于中小型软件项目由于具有易开发、使用和维护的特性,受上述过程问题影响较小。但是对于大中型项目来说,其开发周期长、复杂性很强、难以维护,受这些问题的影响比较突出。

航空嵌入式软件功能复杂,对测试环境、测试方法都有一些特殊的要求,沿用传统的过程更容易造成项目执行中的困难。

3 并行工程在航空嵌入式软件测试中的应用

综上所述可以得出结论,航空嵌入式软件测试存在的质量、进度、成本等问题可以通过持续过程改进的方法得到改善。采用并行工程的方法并行、一体化设计整个测试过程是过程改进的一种思路。

3.1 基于并行工程的航空嵌入式软件测试模型

软件测试方法和技术的发展为并行技术在航空嵌入式软件测试中的运用提供了支持:

(1) 航空嵌入式软件测试环境的发展

航空嵌入式软件具有鲜明的行业特点,即嵌入性、实时性和高可靠性,这些特点给航空嵌入式软件测试带来很大的困难,根本原因在于一般测试技术和测试工具的实施缺乏基本条件。由于测试的特定性及专用外部设备的连接,使航空嵌入式软件在相应的航空嵌入式计算机系统未开发完成前不能真正运行,动态测试技术不能应用;航空嵌入式计算机系统的有限资源使运行监测和观察变得很困难,航空嵌入式软件的输入/输出涉及计算机系统专用的端口、外部设备、以及各种不同的信号量形式,如数字量、电压量、电流量、脉冲量、开关量等,各种输入/输出量电气特性也不一样,加上实时性要求输入/输出的时序特性,使航空嵌入式软件的测试输入和结果获得都很困难。

对环境的依赖曾经是航空嵌入式软件软件测试的一个瓶颈,但近些年对全数字仿真技术和交叉编译技术的研究都已经比较成熟。如美国Rockwell Collins开发的VISTA (Virtual Integrated Software Test-bed for Avionics) 测试平台,德国Condor公司开发了全套基于ARINC429、1553B总线、AFDX的航空嵌入式软件模拟测试工具等都已经投入商用,预研课题“航空嵌入式软件模拟测试平台”也通过验收,取得了成功。这些数字测试平台,工具的使用使航空嵌入式软件测试部分摆脱了对硬件的依赖,为测试与开发的并行提供了支持;

(2) 测试方法的发展

软件测试的实践已经证明,测试介入软件开发过程的时间越早,为纠正发现的缺陷和错误所付出的代价就越小。串行执行的测试是测试程序代码,必须要等到代码开发完成以后执行,不利于尽早发现需求和设计中的问题。并行执行的测试在需求阶段就可以开始,在需求和设计阶段使用技术评审的方法,由测试领域专家从软件测试的角度对需求与设计的正确性、一致性、可测性等进行评审。在代码开发阶段并行进行测试程序的开发,同时进行测试程序的同行评审,及时改正发现的需求、代码、测试中的错误。

基于并行工程的航空嵌入式软件测试模型如图1所示。

基于并行工程的航空嵌入式软件测试模型特点:

(1) 以质量保证为核心,在开发、测试的全过程中执行严格的质量管理;

(2) 抛弃了传统的软件测试阶段划分,将测试运用在航空嵌入式软件开发的全过程,早测试、早发现、早解决;

(3) 软件测试与软件开发过程并行进行,在不同的开发阶段采用不同的测试策略;对发现的缺陷、错误及时纠正,避免错误的蔓延与级联;

(4) 整合测试领域内的资源,对测试领域专家、测试工程师及质量保证工程师赋予充分的职责,发挥各自专长。

3.2 编码阶段的程序代码与测试代码开发的并行

如前所述,采用仿真测试环境使航空嵌入式软件的测试摆脱了对硬件环境的完全依赖,可以使测试在硬件环境搭建以前就开始执行,为代码与测试的同步开发提供了支持。在航空嵌入式软件的测试的过程中,测试程序的开发是最消耗时间与人、财、物力的一个阶段,也是过程优化的重点所在。如图2所示,航空嵌入式软件的测试可以通过并行工作流程实践开发与测试的同步进行。这种并行工作流程在越洋外包项目中效果尤为明显。

4 结束语

针对传统软件测试的缺陷,结合并行工程和软件过程改进的思想,设计了一种适用的航空嵌入式软件测试过程模型,该模型集中体现了并行工程中关注产品生产全过程的特性。具体说来,该模型具有如下优点:

(1) 借鉴并行工程思想,采用软件生命周期全过程测试策略,有效保障软件产品质量,提高了测试程序生产率,降低测试成本;

(2) 通过软件全过程测试,发现软件过程缺陷,吸取经验教训,并对软件过程改进,以达到优化开发过程的目的。

参考文献

[1]潘雪增.并行工程原理及应用[M].北京:清华大学出版社,1997.

[2]陈晓川.并行工程中面向成本的设计[M].长春:吉林人民出版社,2003.

[3]谈凤奎.基于并行工程的项目管理模式研究[J].制造技术,2003(5):21-23.

[4]Gordon Schulmeyer G.Handbook of Software Quality As-surance[M].北京:机械工业出版社,2003.

篇4:软件工程师面试题

指针用操作符“*”和“->”,引用使用操作符“&”. 相同点是:指针与引用都是让你间接引用其他对象。

区别:(1). 指针是一个实体,指向一块内存,它的内容是所指内存的地址;而引用仅是个别名,是某块内存的别名。

(2). 引用使用时无需解引用(*),指针需要解引用;

(3). 引用只能在定义时被初始化一次,之后不可变,“从一而终”;指针可变;

(4). 引用没有 const类型,指针有 const类型,const 的指针不可变;

(5). 引用不能为空,指针可以为空;

(6). “sizeof 引用”得到的是所指向的变量(对象)的大小,而“sizeof 指针”得到的是指针本身(所指向的变量或对象的地址)的大小;typeid(t) == typeid(t&) 恒为真,sizeof(t) == sizeof(t&) 恒为真,但是当引用作为成员时,其占用空间与指针相同(没找到标准的规定)。

(7). 指针和引用的自增(++)运算意义不一样;

你在程序代码中用assert吗?assert一般用于做什么?

(1) 是我常用。

(2)主要用于debug下断言,即假设一定是这样的,否则就是错误的。例如 asser ( a >100 );

i++ 相比 ++i 哪个更高效?为什么?

答:(1)++i 比 i++效率高。

(2)i++要多调用一次类的构造和析够函数

c#中的委托是什么?事件是不是一种委托?

委托是指具有相同属性(也称具有相同的函数签名:返回类型相同,参数类型、参数顺序及参数个数相同)的函数或方法的抽象,关键字为delegate。主要用途是三个:1)函数回调;2)传递方法;3)事件机制

事件就是一个狭义的委托,也就是事件是一个用于事件驱动模型的专用委托,对事件的声明, 实际是声明一个私有的委托变量,对委托变量进行封装,即委托变量加上event关键字后,不管其前面的访问修饰符是public还是private,编译器都会将其编译为private。

委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递,这种将方法动态地赋给参数的做法,可以避免在程序中大量使用if-else(switch)语句,同时使得程序具有更好的可扩展性。以委托为参数的函数具有一定的通用性。

使用委托可以将多个方法绑定到同一个委托变量,当调用此变量时(这里用“调用”这个词,是因为此变量代表一个方法),可以依次调用所有绑定的方法。

请叙述属性与索引器的区别。

属性:它是存取类的字段,索引器:indexer它是特殊的属性,用它可以使用户像访问数组一样访问类的成员。

请详述在dotnet中类(class)与结构(struct)的异同。

类class可以进行实例化,它是引用类型,内存分配在栈中,效率高,它有默认的构造函数,有析构函数可以使用 abstract 和 sealed, protected 修饰符。要用new进行初始化,

结构它是属于值类型,内存分配在堆中,效率低,它没有默认的构造函数,但是可以添加构造函数,没有析构函数没有 abstract 和 sealed(因为不能继承)不能有protected 修饰符 可以不使用new 初始化,但是可以在结构中初始化实例字段。

在c#中,string str = null与string str = “” 请尽量使用文字或图象说明其中的区别。

回答要点:说明详细的空间分配。

答:string str = null是不给他分配内存空间,而string str = “” 给它分配长度为空字符串的内存空间.

请详述在dotnet中类(class)与结构(struct)的异同

答:class可以被实例化,属于引用类型,是分配在内存的堆上的,struct属于值类型,是分配在内存的栈上的.

简要谈一下您对微软.net构架下remoting和webservice两项技术的理解以及实际中的应用。

答:ws主要是可利用http,穿透防火墙。而remoting可以利用tcp/ip,二进制传送提高效率。

如何区别重载方法?

不同的参数类型,不同的参数个数,不同的参数顺序。

请说明在.net中常用的几种页面间传递参数的方法,并说出他们的优缺点。

session(viewstate) 简单,但易丢失

application 全局

cookie 简单,但可能不支持,可能被伪造

input ttype=“hidden” 简单,可能被伪造

url参数简单,显示于地址栏,长度有限

篇5:软件工程师英语面试题

1. “How would you deal with changes being made a week or so before the ship date?

2. “How would you deal with a bug that no one wants to fix? Both the SDE and his lead have said they won’t fix it.

3. “Write a function that counts the number of primes in the range [1-N]. Write the test cases for this function.

4. “Given a MAKEFILE (yeah a makefile), design the data structure that a parser would create and then write code that iterates over that data structure executing commands if needed.

5. “Write a function that inserts an integer into a linked list in ascending order. Write the test cases for this function.

6. “Test the save dialog in Notepad. (This was the question I enjoyed the most).

7. “Write the InStr function. Write the test cases for this function.

8. “Write a function that will return the number of days in a month (no using System.DateTime).

9. “You have 3 jars. Each jar has a label on it: white, black, or white&black. You have 3 sets of marbles: white, black, and white&black. One set is stored in one jar. The labels on the jars are guaranteed to be incorrect (i.e. white will not contain white). Which jar would you choose from to give you the best chances of identifying the which set of marbles in is in which jar.

10. “Why do you want to work for Microsoft.

11. “Write the test cases for a vending machine.

“Those were the questions I was asked. I had a lot of discussions about how to handle situations. Such as a tester is focused on one part of an SDK. During triage it was determined that that portion of the SDK was not on the critical path, and the tester was needed elsewhere. But the tester continued to test that portion because it is his baby. How would you get him to stop testing that portion and work on what needs to be worked on?

“Other situations came up like arranging tests into the different testing buckets (functional, stress, perf, etc.).”

经典文章推荐大家阅读:

假设类面试题目

项目经理面试题

HR常考的“压力面试题”

篇6:常见的软件测试工程师面试题

2.测试用例最重要的是什么

3.谈谈你的工作经历

4.如何和开发人员沟通

5.如何确定一个bug

6.什么样的bug报告一个好的bug报告

7.如果在开会过程中测试人员和开发人员发生争论你会帮哪边

8.谈谈你的人生规划

9.给你一个例如用户登录功能页面如何进行测试

10.测试计划包括什么

11.如果开发人员不认为这是一个bug你如何和他沟通

12.Qtp如何使用

13.如何加入表检查点

14.如何开发测试脚本

15.你以前是如何使用qtp的

16.在使用qtp过程中你发现了什么优点和缺点

17.你在登录我们的网站时发现什么BUG了么

18.你使用飞信么,有发现什么bug么

19.谈谈你的一个项目

20.你喜欢测试么

21.你是如何看待测试的

22.Loadrunner如何使用(回答期间问了几个具体的技术问题,想不起来了)

23.怎样进行性能测试

24.例如100个用户同时登陆,你如何进行测试的

25.如何判定系统性能是否符合要求

篇7:嵌入式软件工程师面试题

NIST (美国国家标准技术研究院) 的研究报告称[1], 软件项目中有近80%的费用是用来纠正软件缺陷的。而美国国家科学院可靠软件系统委员会的一项研究揭示[2]:有效降低软件项目风险可从两个层面着手:其一, 发展高层次的软件结构, 限制组件之间的相互作用的复杂性。这种结构被称为软件架构。其二, 软件的行为不仅仅是软件本身, 还包括相互作用的外部环境。这个环境包括硬件和物理世界。因此, 任何软件的属性都是其中的一部分, 它定义了关于环境的假设。此外, 在自动分析方面, 软件的任何需要都应该是清晰的、明确的, 可以被捕获的。

2001年OMG (Object Management Group) 提出模型驱动体系结构 (Model Driven Architecture, MDA) 用来处理软件开发模型。MDA的核心思想是从系统使用其硬件能力的细节中分离出系统的运行规范, 提供独立于硬件平台的系统描述, 选择硬件平台并将平台无关的系统规范转换为平台相关的系统规范。MDA的思想[3]非常适合嵌入式系统的建模。作为软件工程的基于模型的工程学工具在体系结构的重要性和自动分析方面是被认可的。本文讨论这种工具———UML和AADL。它们可以促进了软件体系结构建模, 并提供元素去了解它。

1 UML和AADL介绍

UML (Unified Modeling Language的缩写) 统一建模语言, 是用来对软件密集系统进行可视化建模的一种语言。UML为面向对象开发系统的产品进行说明、可视化和编制文档的一种标准语言。

体系结构分析与设计语言 (architectural analysis and design language, AADL) [4]是由美国自动机协会 (Society of Automotive Engineers, SAE) 于2004年10月颁布的航空标准AS5506[4]。AADL由航电领域的体系结构描述语言Meta H演化而来, 最初被称为航电体系结构描述语言 (avionics architecture description language) 。AADL是一个建模语言, 考虑到性能关键属性, 通过一个可扩展的符号, 一个工具框架和精确定义的语义, 这个语言支持对系统的结构进行早期和反复论证。AADL为在软件开发过程中采用形式化方法提供了重要的支持, 不仅适用于航电领域, 也适用于其他应用领域, 尤其是各种具有高实时性要求的分布实时嵌入式系统 (distri-buted real-time and embedded systems, DRE) [5~7]。

2 UML和AADL的基础比较

UML通过图表集描述软件结构。这些图可以帮助软件设计师解决复杂的软件结构问题。然而, 虽然单个图在描述软件架构上是有效的, 但是UML不能完全确定图与图之间的关系。在表现软件的不同方面上, 这些图被作为单个的实体, 而不是作为一个共同体而被构造。这样, 图表的一致性还是要留给设计师来解决。尽管有这个问题, 但它还是能较好的反映程序的关系、通信需要, 以及软件设计, 所以UML在作为开发阶段, 去说明、可视化、构建和书写一个面向对象软件密集系统的制品的开放方法而被广泛采用。

AADL来自于传统的计算机语言, 而不是传统的图表。AADL的前身是Meta H, 是一种创建基于语言建模的组件。AADL作为一种设计语言被发展, 不仅仅定义了软件架构的文本表示法, 而且 (更重要) 也正式的详细定义了语法和语义。在表现形式上, AADL除了文字表述外, 也允许软件设计者用图表去表示系统。AADL使用的元素总结如图1所示。

因此, AADL的描述是符合语言的语法和语义的, 并且可以通过语法和语义的分析器进行验证, 这样可以确保AADL的描述是可被分析的, 是一致的。另一方面, 一个模型的构造可以被编译器检查, 以验证它们是“合法”:例如, 一个线程不能包含进程。AADL的描述还对正确性进行了评估:例如, 定义一个周期性线程不具有指定的期间。与编译器检查程序是否有恰当的结构, 一致性和正确的语义一样, AADL描述的确认也是以这样的方式进行的, 这样, 通过AADL的描述就能够产生可执行代码。

在AADL中, 任何软件描述都是可以被分析, 并且有一个明确的解释 (作为一个将被编辑的程序) 。分析是建立在结构语言之上的, 并更多的强调明确的解释。UML和AADL的基础性比较见表1:

3 UML和AADL的扩展机制比较

UML和AADL都为构建清晰的模型而扩展新结构。

UML的扩展机制有三个:构造型 (stereotypes) 、标记值 (tagged values) 和约束 (constraints) 。UML的这些扩展机制通常定义在一个配置文件中, 代表着为特定目的建模语言。其中构造型 (stereotypes) 是UML词汇的扩充, 其表现形式如图2所示。当在某些特定的问题领域中, 没有现成的基本的UML方法可以表达时, 构造型作为特殊元素被定义。它可以有特殊属性, 也可被用来作为扩展对注释元素的描述。标记值是UML元素特性的扩充, 允许使用者创建元素规格的新的信息。约束即限制, 是UML元素语义的扩展, 允许使用者对一个UML元素添加新规则或修改存在的规则。

AADL提供了一种扩展结构名为附件, 可以为不同类别的分析, 增加辅助描述元素, 不隐藏核心元素。这些附件被嵌入到核心语言的描述中, 并且能够在它构造中创建引用。附件是语言的扩展, 这意味着, 有了附件, 编译器就需要分析附件子模型的句法和语义的完整性。AADL分析工具, 例如开源AADL工具环境 (OSATE) , 就实现了附件 (插件) 作为剖析器、名字分析器、语义检查器。它们扩展了对核心语言的基本检查, 并且在级联综合编译过程提供充分的一致性验证。

有了附件后, AADL定义属性集扩展。在某种程度上, AADL扩展属性的设置类似于UML的标记值。然而, 由于所使用的语言不同, 属性的扩展使得涉及其他语言的结构、定义他们的类型或继承其他属性都变得可能。

UML和AADL的基础性比较归纳见表2:

4 UML和AADL的使用领域比较

传统的UML主要侧重于三个方面的功能结构:数据, 交互, 语义。其中数据是用类图来模拟的, 类是UML中数据建模的核心构件。交互是通过序列图和协作图来建模的, 这些图描述了一个应用程序在特定任务中的那些类的相互作用。上下文语义明确定义了的一种可以明确的描述系统的状态和转变的模型。语义元素也是嵌入有对象的状态图的易用的典型模型。

从2007年开始, UML社团一直致力于研究能够多角度分析模型系统的验证属性。对于嵌入式系统而言, 在这个方面的两个主要成就是Sys ML和MARTE的轮廓。Sys ML允许在一个数学模型和基于该模型的属性确认中捕获物理层面的交互, MARTE则有意增加了建模在验证实时性方面的性能, 例如及时性和可调度性。

Sys ML从根本上提供了两种新图:要求图和参数图。其中要求图支持对要求和可追溯性的强烈关注, 而参数图表达了软件和环境之间的关系。使用参数图, 设计人员可以模拟可被验证的数学层面的软件环境的关系, 例如, 软件是否可以控制环境或其他属性。参数图建模的重点是持续时间, 但计算是瞬间的。当理想模型转变成真正的可执行软件时, 这种重点的转变是不利的。因为非瞬时的执行危害着分析的正确性。

MARTE轮廓的主要目的是, 在不同操作系统下使用速率单调理论和代码生成, 去分析实时属性。在MARTE中, 多种构造型 (stereotypes) 被定义。这种新的构造详细说明了, 如何模拟三个方面的元素:软件资源模型、硬件资源模型和软件模型到硬件模型的分配。这种对资源的建模是基于速率单调的理论, 并包括了通用操作系统API和特殊操作系统API之间的映射, 使之能够自动的产生代码[6]。使用MARTE, 设计者可以利用多功能性、运行时间和硬件图去模拟系统。然后, 图表之间的联系就是模拟从一个图到其他图的实体分配。只不过, 图之间的一致性是留给设计者的。不同MARTE系统的平台搭建的差异性如图3所示:

AADL的核心重点是运行时体系结构建模和分析。运行时体系结构是一种软件结构, 它定义了最终执行的指令序列。这个结构的定义包括线程, 进程, 处理器和它们之间的相互作用 (数据, 事件和事件数据通信) , 这种相互作用封装了他们执行的功能模块。运行时架构用具体的特征属性来体现软件系统, 特征属性有如及时性, 容错性, 或安全性。

AADL的语义是一种通过编译器强制检查的技术, 是一种明确的执行语义, 这种语义在标准文档中被作为一种混合自动机而被详细定义[8]。混合自动机是一种数学模型, 它描述了软件和物理过程是如何相互作用的。在AADL中的这种可执行编码模型是被嵌入式开发者使用较多的一种结构, 它也被作为实时系统的理论假设, 例如它被编码成周期性的或非周期性的线程, 周期性的采样数据, 通信的状态变量, 基于事件的控制转移[9], 内存和时间隔离策略等。

AADL扩展使用范围表现在错误附件和行为附件上。错误和行为附件是目前对于语言而言的标准附件。错误附件能够被细化, 体系结构中的潜在错误被状态机描述。动作附件允许功能行为被描述, 使模型检测类型能够从形式上得到确认。另外, 附件机制的灵活性也可让设计人员基于需要添加准确的扩展。

5 小结

嵌入式实时系统中要利用UML图在通信方面的优势, 配合使用AADL建模与分析, 以及AADL在运行时体系结构中的精确性, 从而创建一个强大的组合。更重要的是, UML和AADL的结合能从Sys ML的物理建模能力和自动分析的潜力、UML的功能性建模能力、AADL的运行时建模和分析能力, 以及MARTE和AADL的错误附件四个方面减少嵌入式实时系统在核心方面的风险, 提高可预测性。

降低软件风险的方法是:改进“测试基础设施, 使其能够更早更有效地识别和减少软件缺陷”[10]。使用UML和AADL建模与分析, 可以为软件设计师在软件的结构和行为上提供重要的洞察力。

参考文献

[1]National Institute of Standards and Testing.The Economic Impacts ofInadequate Infrastructure for Software Testing (May 2002) PlanningReport[R].2002-3.

[2]Daniel Jackson, Martyn Thomas, Lynette I.Millett.Software forDependable Systems[M].National Academies Press, 2007.

[3]Feiler PH, de Niz D, Raistrick C, Lewis BA.From PIMs to PSMs[A].In:Proc.of the 12th IEEE International Conference on EngineeringComplexComputer Systems[C].Washington:IEEE Computer Society Press, 2007:365-370.

[4]P.H.Feiler, B.Lewis, and S.Vestal.The SAE Architecture Analysis andDesign Language (AADL) Standard:A basis for model-basedarchitecture-driven embedded systemsengineering[A].In Proceedings oftheRTASWorkshoponModel-drivenEmbeddedSystems[C].2003:1-10.

[5]FEILER P H, GLUCH D P, HUDAK J J.T he architecture analysis&design language (AADL) :an introduction[R].[CMU/SEI-2006-TN-011], 2006.

[6]P.J.Denning and A.McGettrick.Recentering Computer Science[J].Commununications ofthe ACM, 2005, 48 (11) :15-19.

[7]TOKAR J L Architecting dependable systems with the SAE architectureanalysis and description language (AADL) [C].Proc of Workshop onArchitecting Dependable Systems IV.Berlin, Heidelberg:Springer, 2007:1-13.

[8]TILMANJ F Buildingtool suite for AADL[EB/OL].[2008-12-03].http://www.springerlink.com/content/4bq43j8g505wk48e/fulltext.pdf.

[9]Peter H.Feiler, David P.Gluch, John J.Hudak.The ArchitectureAnalysis&Design Language (AADL) :Technical Note[R].CMU/SEI-2006-TN-011, 2006.

篇8:北大方正软件测试工程师面试题

笔试题, 工程, 软件测试

一、数量关系

1、甲乙2人比赛爬楼梯,已知每层楼梯相同,速度不变,当甲到3层时,乙到2层,照这样计算,当甲到9层时,乙到(A)层

A.5 B.6 C.7 D.82、有一份选择题试卷共6个小题,其得分标准是:一道小题答对得8分,答错得0分,不答得2分,某位同学得了20分,则他(D)

A.至多答对一道题 B.至少有三个小题没答 C.至少答对三个小题 D.答错两小题

3、有只蜗牛要从一口井底爬出来。井深20尺。蜗牛每天白天向上爬3尺,晚上向下滑2尺。请问 该蜗牛几天才能爬出井口?A

A.20 B.19 C.18 D.154、下列哪一个计算结果最接近1.25×8的值?A

A.3.3×3 B.1.7×6 C.1.6×6 D.2.1×

5二、逻辑推理

1、住在某个旅馆的同一房间的四个人A、B、C、D正在听一组流行音乐,她们当中有一个1人在修指甲,2一个人在写信,一3个人躺在床上,另4一个人在看书。

1)A不在修指甲,也不在看书

32)B不躺在床上,也不在修指甲;

43)如果A不躺在床上,那么D不在修指甲;

4)C既不在看书,也不在修指甲;

25)D不在看书,也不躺在床上。

1她们各自在做什么呢?

2、一种香,分布不均匀,点燃以后会燃烧整1个小时,问如何确定半个小时和45分钟。

三、职业素质测试

1你认为软件测试工程师最应该具备的职业素质是(A)。

A 编码能力 B 逻辑能力 C 管理能力 D 协调能力

2求职面试准备阶段,你认为你最应该准备什么(D)。

A 服装 B 技术 C 简历 D 应聘公司背景

3入职第一天你最应该准备什么(C)。

A 服装 B 小礼物 C 心态 D 上班路线

4你最喜欢的领导是(C)。

A 温和型 B 情绪型 C 技术型 D 谋略型

5你最喜欢服务的企业是(D)。

A 国企 B 私企 C 合资企业 D 外资企业

6你认为测试工程师在一个开发团队中是(A)。

A 非常重要 B 可有可无 C 没有程序员重要

7你认为一份“好工作”的标准是(C)。A 工资待遇高 B 工作环境好C 发展前途好 D 能锻炼人8以下是行业发展周期和人才供给的对应图,您觉得自己该何时切入这个行业?(B)。

A 引入期 B成长期 C 成熟期 D 衰退期

9如果你进入北大方正从事软件测试工作,你认为除了测试技术之外,做好本职工作你最需要具备的还有:(B)。

A深刻了解企业文化 B培养团队协作意识 C加强自我学习D良好的语言表达能力

10当工作中因为意见不同和领导发生冲突,而您又认为您的意见完全正确时,您会选择以下哪种解决方案(C)?

A当时即和领导激烈争执,坚持正确观点.B当时即召集同事,通过辩论的方式由大家对不同意见进行判断.C当时对领导观点不发表意见,事后通过邮件或当面等方式向领导建议.D当时对领导观点表示认同,期望通过以后的事实证明双方观点的对错.四、职业兴趣测试

下面各道题,请根据自己的实际情况作出回答。符合的回答“是”;疑惑的回答“?”;不符合的回答“否”

R:

1、你在中学里喜欢做实验吗?是

2、你喜欢尝试着做一些木工、电工、钳工、修钟表、印照片等其中的一件或几件事情吗?是或者你对织毛衣、绣花、裁剪等很感兴趣吗?否

3、当你家里有些东西需要修补时(诸如窗子关不严了、门锁上而忘带钥匙了、凳子坏了、衣服不合身了等),常常是由你做的吗?是

I:

1、你对电视或单位的智力竞赛很感兴趣吗?否

2、你经常翻阅图书吗?(文艺小说除外)是

3、你总想要知道一件新产品或新事物的构造或工作原理吗?是

4、看推理小说或电影时,你常常试图在结果出来以前分析出谁是罪犯,并且这种分析时常和小说或电影的结果相吻合? 是

S:

1.你主动给朋友写信或打电话吗?是

2、你很愿意参加学校单位或社会团体组织的各种活动吗?是

3、你看到不认识的人遇到困难时,能主动去帮助他或向他表示同期也安慰的心情吗? 是

4、你喜欢去新场所活动并结交新朋友吗?是

C:

1、你能按领导或老师的要求尽自己的能力做好每一件事吗?是

2、在讨论会上,如果不少人已经讲的观点与你的不同,你就不发表自己的观点了吗?否

3、你喜欢重复别人已经做过的事情而不喜欢做那些要自己动脑筋摸索着干的事吗?否

4、你喜欢做那些已经习惯了的工作,同时这种工作责任心小一些,工作时还能聊聊天,听听歌曲吗?否

五、简答题

1、简述你今后五年的职业生涯规划。

2、简述你心目中软件测试工程师的工作前景及工作内容。

3、简述你掌握一门新知识的方法和技巧

1.什么是信息管理系统,你觉得信息管理系统的核心是什么?为什么?

2.什么是数据库?什么是关系数据库?解释概念:主键,外键,索引

3.你对测试的理解?

4.如果你是一个自行车质量检测员,应该从哪几个重点来测试,为什么,且怎么检测?如果你只能选择3个主要的功能,你会选择哪几种?

专业题:

1.数据库,关于一个餐厅提供价格不等的咖啡,分大小杯,另有价格不等的食物,用户在餐厅的用餐也要根据消费时间来进行收费。服务员会拿着记账机到每一张桌子进行结账,当用户结完帐后可以办理会员卡。会员卡信息包含消费总额,并根据不同的额度又不用的折扣率。针对这些信息设计相关数据库,并划出E-R图。(这个题当时没做)

2.给出了流程图,遍历S点到G点。写出遍历案例!(感觉还是比较容易做的,具体图就不画了)

3.Java题,看输出。

public class Userouter

{

public static void main(String[] args)

{

Outer uter=new Outer(args);

outer.print();

}

}

public class Outer

{

private String[] uterval=new String[]{“this”,“is”,“a”,“test!”};

public Outer(String[] Ival)

{outerval=Ival;}

class Inner

{

void display()

{

for(int i=0;i

System.out.println(outerval[i]);

}

}public void print(){Inner inner=new Inner();inner.display();}}

输入" Java userouter I can answer this question”运行结果是什么?并简单解释程序逻辑?

运行结果:I can answer this question

程序逻辑:new Outer(args)构造对象,并调用构造函数 public Outer(String[] Ival)对其进行初始化,并调用其print()方法,print()方法中new Inner()构造inner对象,并用对象调用其display()方法。

4.class sin

{

Private static final sin newsin=new sin();

Private sin(){}

Public static sin Getsin(){return newsin;}

Public void Test(){}

}

篇9:嵌入式软件工程师面试题

.net软件工程师是IT行业具有前景的一个职业,从学习到就业期间要经历很多,除了学习之外,面试中也蕴含了很多技巧和知识点,有的也不是在学习专业知识中所能获得了,这一点已经被很多人多认同了,要想在拥真正技能的同时就职于一个很好的企业,面试题也是一个需要掌握的技能。

以下所总结的都是根据深圳达内福田培训中心学员的口述和经历中总结出来的,希望对于每一个想从事与.net软件工程师执业的学员来说是一个很好的借鉴。如果想了解更多关于福田达内培训有关.net面试题的知识点,可以打电话咨询0755-82353533 也可以直接登陆网站查询。

1.你是哪个学校毕业的,学的什么专业?有没有参加过专业的培训?

答:我是深圳大学毕业的,学的是计算机专业,毕业后在朋友的推荐下进入深圳达内福田培训中心学习,主要学的是.net

2.XmlSerializer是如何工作的?使用这个类的进程需要什么ACL权限?

答:我只知道XmlSerializer是将对象的属性和字段进行序列化和反序列化的,序列化成为xml数据,反序列化再将xml转换成对象。应该至少需要ACL权限中的读权限.3.Debug Build和Release Build的区别,是否会有明显的速度变化?请说明理由。

答:Debug会产生pdb文件,release不会。Debug用于开发时的调试,不能要于部署,而release用于部署.debug编译一些特殊代码,比如#IFDEBUG Debug.Write等,而Release则会将那些特殊标记省略

4.Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?

答:Set里的元素是不能重复的,那么用iterator()方法来区分重复与否。equals()是判读两个Set是否相等。equals()和==方法决定引用值是否指向同一对象equals()在类中被覆盖,为的是当两个分离的对象的内容和类型相配的话,返回真值。

5.sleep()和 wait()有什么区别?

答:sleep()方法是使线程停止一段时间的方法。在sleep 时间间隔期满后,线程不一定立即恢复执行。这是因为在那个时刻,其它线程可能正在运行而且没有被调度为放弃执行,除非(a)“醒来”的线程具有更高的优先级(b)正在运行的线程因为其它原因而阻塞。

wait()是线程交互时,如果线程对一个同步对象x 发出一个wait()调用,该线程会暂停执行,被调对象进入等待状态,直到被唤醒或等待时间到。

产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复。

int[] intArr = new int[100];

Random rnd = new Random();while(myList.Count < 100){int num = rnd.Next(1, 101);if(!myList.Contains(num))myList.Add(num);}for(int i = 0;i < 100;i++)intArr[i] =(int)myList[i];6.DataReader与Dataset有什么区别?DataSet可以离线处理,前后滚动 和进行数据更新.DataReader不能离线处理,是个只读向前的游标,但速度会很快DataSet可以存储数据库各种对象的,比如表触发器等,而DataReader只能存储游标记录7.ASP。NET与ASP相比,主要有哪些进步?答:asp解释形,aspx编译型,性能提高,有利于保护源码。8.不定项选择:(1)以下叙述正确的是:bcA.接口中可以有虚方法。B.一个类可以实现多个接口。C.接口不能被实例化。D.接口中可以包含已实现的方法。(2)从数据库读取记录,你可能用到的方法有:bcdA.ExecuteNonQueryB.ExecuteScalarC.FillD.ExecuteReader9.列举ASP.NET 页面之间传递值的几种方式。

答:

session(viewstate)简单,但易丢失

application全局

cookie简单,但可能不支持,可能被伪造

input type=“hidden”简单,可能被伪造

url参数简单,显示于地址栏,长度有限

数据库稳定,安全,但性能相对弱

10.简述 private、protected、public、internal 修饰符的访问权限。

答:public 不受限制的访问

Private 只能在本类中访问

Protected 本类和继承与他的类中的都能访问

Internal 同一个应用程序或类库中

11.写出一条Sql语句: 取出表A中第31到第40记录(SQLServer, 以自动增长的ID作为主键,注意:ID可能不是连续的。)

答:select top 10 from a whereid not in(select top 30 from a)

或:select top 10 from a whereid >(select max(id)from(select top 30 from a)as b)

12.C#中接口和类有什么异同?

答:类是引用类型,可以继承类、接口和被继承,有默认的构造函数,有析构函数,可以使用abstract和sealed,有protected修饰符,必须使用new初始化。

结构是值类型,只能继承接口,不能被继承,没有默认的构造函数,可以创建,没有析构函数,不可以用abstract和sealed,没有protected修饰符,可以不用new初始化。

13.SQL SERVER 中的存储过程的理解?

篇10:博朗软件Java面试题

2.JAVA的多线程机制。

3.数据结构。主要涉及java.util包中的一些集合类。

4.OO。按照他的一段描述建模。主要是类的继承关系以及接口实现。还有构造函数和析构函数在继承体系中的作用等等。

5.反射机制的作用,以及在哪些方面使用了反射机制。

6.网络:TCP/IP协议。HTTP访问机制。还问到了SSL之类。

7.DesignPatten:用过几种DesignPattern,J2EE中有哪些Pattern已经自动实现等等

8.数据库:比较EJB中的QL语言和SQL。还写了一段QL查询语句。

9.软件工程:常见的开发模型。平常项目管理中软件工程的运用。

10.CMP中Home接口,Remote接口是如何实现的。

更多热门的面试试题分享:

华为c语言笔试题

箭牌脑筋急转弯类面试题

网络工程师面试常见问题

篇11:软件测试面试题4

解答:热备份针对归档模式的数据库,在数据库仍旧处于工作状态时进行备份。而冷备份指在数据库关闭后,进行备份,适用于所有模式的数据库。热备份的优点在于当备份时,数据库仍旧可以被使用并且可以将数据库恢复到任意一个时间点。冷备份的优点在于它的备份和恢复操作相当简单,并且由于冷备份的数据库可以工作在非归档模式下,数据库性能会比归档模式稍好。(因为不必将archive log写入硬盘)

2. 你必须利用备份恢复数据库,但是你没有控制文件,该如何解决问题呢?

解答:重建控制文件,用带backup control file 子句的recover 命令恢复数据库。

3. 如何转换init.ora到spfile?解答:使用create spfile from pfile 命令.

4. 解释data block , extent 和 segment的区别(这里建议用英文术语)

解答:data block是数据库中最小的逻辑存储单元。当数据库的对象需要更多的物理存储空间时,连续的data block就组成了extent . 一个数据库对象拥有的所有extents被称为该对象的segment.

5. 给出两个检查表结构的方法

解答:1.DESCRIBE命令

2.DBMS_METADATA.GET_DDL 包

6. 怎样查看数据库引擎的报错

解答:alert log.

7. 比较truncate和 命令

解答:两者都可以用来删除表中所有的记录。区别在于:truncate是DDL操作,它移动HWK,不需要 rollback segment .而Delete是DML操作, 需要rollback segment 且花费较长时间.

8. 使用索引的理由

解答:快速访问表中的data block

9. 给出在STAR SCHEMA中的两种表及它们分别含有的数据

解答:Fact tables 和dimension tables. fact table 包含大量的主要的信息而 dimension tables 存放对fact table 某些属性描述的信息

10. FACT Table上需要建立何种索引?

解答:位图索引 (bitmap index)

11. 给出两种相关约束?

解答:主键和外键

12. 如何在不影响子表的前提下,重建一个母表

解答:子表的外键强制实效,重建母表,激活外键

13. 解释归档和非归档模式之间的不同和它们各自的优缺点

解答:归档模式是指你可以备份所有的数据库 transactions并恢复到任意一个时间点。非归档模式则相反,不能恢复到任意一个时间点。但是非归档模式可以带来数据库性能上的少许提高.

14. 如何建立一个备份控制文件?

解答:Alter database backup control file to trace.

15. 给出数据库正常启动所经历的几种状态 ?

解答:STARTUp NOMOUNT 数据库实例启动

STARTUp MOUNT 数据库装载

STARTUp OpEN 数据库打开

16. 哪个column可以用来区别V$视图和GV$视图?

解答: INST_ID 指明集群环境中具体的 某个instance 。

17. 如何生成explain plan?

解答:运行utlxplan.sql. 建立plan 表

针对特定SQL语句,使用 explain plan set statement_id = st1 into plan_table

运行utlxplp.sql 或 utlxpls.sql察看explain plan

18. 如何增加buffer cache的命中率?

解答:在数据库较繁忙时,适用buffer cache advisory 工具,查询v$db_cache_advice . 如果有必要更改,可以使用 alter system set db_cache_size 命令

19. ORA-01555的应对方法?

解答:具体的出错信息是snapshot too old within rollback seg , 通常可以通过增大rollback seg来解决问题。当然也需要察看一下具体造成错误的SQL文本

20. 解释$ORACLE_HOME和$ORACLE_BASE的区别?

解答:ORACLE_BASE是oracle的根目录,ORACLE_HOME是oracle产品的目录。

++++++++++++++++++++++++++++++++++++++++++++

oracle面试题集锦

12月09日 星期六 08:35

面试题集锦

―――――――――ORCLE―――――――――

1. 解释冷备份和热备份的不同点以及各自的优点

解答:热备份针对归档模式的数据库,在数据库仍旧处于工作状态时进行备份。而冷备份指在数据库关闭后,进行备份,适用于所有模式的

数据库。热备份的优点在于当备份时,数据库仍旧可以被使用并且可以将数据库恢复到任意一个时间点。冷备份的优点在于它的备份和恢复

操作相当简单,并且由于冷备份的数据库可以工作在非归档模式下,数据库性能会比归档模式稍好。(因为不必将archive log写入硬盘)

2. 你必须利用备份恢复数据库,但是你没有控制文件,该如何解决问题呢?

解答:重建控制文件,用带backup control file 子句的recover 命令恢复数据库。

3. 如何转换init.ora到spfile?

解答:使用create spfile from pfile 命令

.

4. 解释data block , extent 和 segment的区别(这里建议用英文术语)

解答:data block是数据库中最小的逻辑存储单元。当数据库的对象需要更多的物理存储空间时,连续的data block就组成了extent . 一

个数据库对象拥有的所有extents被称为该对象的segment.

5. 给出两个检查表结构的方法

解答:1、DESCRIBE命令

2、DBMS_METADATA.GET_DDL 包

6. 怎样查看数据库引擎的报错

解答:alert log.

7. 比较truncate和 命令

解答:两者都可以用来删除表中所有的记录。区别在于:truncate是DDL操作,它移动HWK,不需要 rollback segment .而Delete是DML操作

, 需要rollback segment 且花费较长时间.

8. 使用索引的理由

解答:快速访问表中的data block

9. 给出在STAR SCHEMA中的两种表及它们分别含有的数据

解答:Fact tables 和dimension tables. fact table 包含大量的主要的信息而 dimension tables 存放对fact table 某些属性描述的

信息

10. FACT Table上需要建立何种索引?

解答:位图索引(bitmap index)

11. 给出两种相关约束?

解答:主键和外键

12. 如何在不影响子表的前提下,重建一个母表

解答:子表的外键强制实效,重建母表,激活外键

13. 解释归档和非归档模式之间的不同和它们各自的优缺点

解答:归档模式是指你可以备份所有的数据库 transactions并恢复到任意一个时间点。非归档模式则相反,不能恢复到任意一个时间点。

但是非归档模式可以带来数据库性能上的少许提高

.

14. 如何建立一个备份控制文件?

解答:Alter database backup control file to trace.

15. 给出数据库正常启动所经历的几种状态 ?

解答:

STARTUp NOMOUNT 数据库实例启动

STARTUp MOUNT - 数据库装载

STARTUp OpEN 数据库打开

16. 哪个column可以用来区别V$视图和GV$视图?

解答: INST_ID 指明集群环境中具体的某个instance 。

17. 如何生成explain plan?

解答:

运行utlxplan.sql. 建立plan 表针对特定SQL语句,使用 explain plan set statement_id = st1 into plan_table 运行

utlxplp.sql 或 utlxpls.sql察看explain plan

18. 如何增加buffer cache的命中率?

解答:在数据库较繁忙时,适用buffer cache advisory 工具,查询v$db_cache_advice . 如果有必要更改,可以使用 alter system set

db_cache_size 命令

19. ORA-01555的应对方法?

解答:具体的出错信息是snapshot too old within rollback seg , 通常可以通过增大rollback seg来解决问题。当然也需要察看一下具

体造成错误的SQL文本

20. 解释$ORACLE_HOME和$ORACLE_BASE的区别?

解答:ORACLE_BASE是oracle的根目录,ORACLE_HOME是oracle产品的目录

21. 如何判断数据库的时区?

解答:SELECT DBTIMEZONE FROM DUAL;

22. 解释GLOBAL_NAMES设为TRUE的用途

解答:GLOBAL_NAMES指明联接数据库的方式。如果这个参数设置为TRUE,在建立数据库链接时就必须用相同的名字连结远程数据库

23。如何加密pL/SQL程序?

解答:WRAp

24. 解释FUNCTION,pROCEDURE和pACKAGE区别

解答:function 和procedure是pL/SQL代码的集合,通常为了完成一个任务。procedure 不需要返回任何值而function将返回一个值在另一

方面,package是为了完成一个商业功能的一组function和proceudre的集合

25. 解释TABLE Function的用途

解答:TABLE Function是通过pL/SQL逻辑返回一组纪录,用于普通的表/视图。他们也用于pipeline和ETL过程。

26. 举出3种可以收集three advisory statistics

解答:Buffer Cache Advice, Segment Level Statistics, Timed Statistics

27. Audit trace 存放在哪个oracle目录结构中?

解答:unix $ORACLE_HOME/rdbms/audit Windows the event viewer

28. 解释materialized views的作用

解答:Materialized views 用于减少那些汇总,集合和分组的信息的集合数量。它们通常适合于数据仓库和DSS系统。

29. 当用户进程出错,哪个后台进程负责清理它

解答: pMON

30. 哪个后台进程刷新materialized views?

解答:The Job Queue processes.

31. 如何判断哪个session正在连结以及它们等待的资源?

解答:V$SESSION / V$SESSION_WAIT

32. 描述什么是 redo logs

解答:Redo Logs 是用于存放数据库数据改动状况的物理和逻辑结构。可以用来修复数据库.

33. 如何进行强制LOG SWITCH?

解答:ALTER SYSTEM SWITCH LOGFILE;

34. 举出两个判断DDL改动的方法?

解答:你可以使用 Logminer 或 Streams

35. Coalescing做了什么?

解答:Coalescing针对于字典管理的tablespace进行碎片整理,将临近的小extents合并成单个的大ex

上一篇:执业药师继教试题下一篇:养殖场岗位管理制