您的位置:首页 > 职场人生

软件测试面试题

2008-04-10 14:15 393 查看
品高软件:

1. 封装,继承,多态的含义。
封装就是把各种方法和变量合并到一个类,用这个类代表某个对象为完成一定的任务所能保存的范围以及它能执行的操作。
继承就是根据现有类的方法和成员变量生成新的类的功能
多态就是对象随着程序执行而使其形式发生改变的能力。
抽象就是在暂时忽略对象的具体细节的功能。
2. 接口和抽象类的特点和区别,类的私有成员能否被继承。
1.抽象类是一个不完全的类,需要进一步专业化.接口只是一个行为的规范或规定;
2.接口基本上不具备继承的任何具体特点,它仅仅承诺了能够调用的方法;
3.一个类一次可以实现若干个接口,但是只能扩展一个父类
4.接口可以用于支持回调,而继承并不具备这个特点.

如果预计要创建组件的多个版本,则创建抽象类。抽象类提供简单易行的方法来控制组件版本。通过更新基类,所有继承类都随更改自动更新。另一方面,接口一旦创建就不能更改。如果需要接口的新版本,必须创建一个全新的接口。
如果创建的功能将在大范围的全异对象间使用,则使用接口。
抽象类应主要用于关系密切的对象,而接口最适合为不相关的类提供通用功能。
如果要设计小而简练的功能块,则使用接口。
如果要设计大的功能单元,则使用抽象类。
如果要在组件的所有实现间提供通用的已实现功能,则使用抽象类。抽象类允许部分实现类,而接口不包含任何成员的实现。

3. Sql Server中有几种索引
clustered索引和nonclustered索引
如果column保存了高度相关的数据,并且常常被顺序访问时,最好使用clustered索引,这是因为如果使用clustered索引,SQL Server会在物理上按升序(默认)或者降序重排数据列,这样就可以迅速的找到被查询的数据。同样,在搜寻控制在一定范围内的情况下,对这些column也最好使用clustered索引。这是因为由于物理上重排数据,每个表格上只有一个clustered索引。

与上面情况相反,如果columns包含的数据相关性较差,你可以使用nonculstered索引。你可以在一个表格中使用高达249个nonclustered索引——尽管我想象不出实际应用场合会用的上这么多索引。

当表格使用主关键字(primary keys),默认情况下SQL Server会自动对包含该关键字的column(s)建立一个独有的cluster索引。很显然,对这些column(s)建立独有索引意味着主关键字的唯一性。当建立外关键字(foreign key)关系时,如果你打算频繁使用它,那么在外关键字cloumn上建立nonclustered索引不失为一个好的方法。如果表格有clustered索引,那么它用一个链表来维护数据页之间的关系。相反,如果表格没有clustered索引,SQL Server将在一个堆栈中保存数据页。

4. Cokie, Session, Application, ViewState的作用和生命周期。Asp.net有几种页面传值方式?
Application
1. Application用来保存所有用户共用的信息
2. 在Asp时代,如果要保存的数据在应用程序生存期内不会或者很少发生改变,那么使用Application是理想的选择。但是在Asp.net开发环境中我们把类似的配置数据放在Web.config中。
3. 如果要使用Application 要注意的是所有的写操作都要在Application_OnStart事件中完成(global.Asax),尽管可以使用Application.Lock()避免了冲突,但是它串行化了对Application的请求,会产生严重的性能瓶颈。
4. 不要使用Application保存大数据量信息
5. 代码:Application[“UserID”]=”test”;
String UserName=Application[“UserID”].ToString();
Session
1. Session用来保存每一个用户的专有信息
2. Session的生存期是用户持续请求时间加上一段时间(一般是20分钟左右)
3. Session信息是保存在Web服务器内存中的,保存数据量可大可小
4. Session超时或者被关闭将自动释放数据信息
5. 由于用户停止使用应用程序之后它仍在内存中存留一段时间,因此这种方法效率较低
6. 代码:Session[“UserID”]=”test”;
String UserName=Session[“UserID”].ToString();
Cookie
1. Cookie用来保存客户浏览器请求服务器页面的请求信息
2. 我们可以存放非敏感的用户信息,保存时间可以根据需要设置
3. 如果没有设置Cookie失效日期,它的生命周期保存到关闭浏览器为止
4. Cookie对象的Expires属性设置为MinValue表示永不过期
5. Cookie存储的数据量受限制,大多数的浏览器为4K因此不要存放大数据
6. 由于并非所有的浏览器都支持Cookie,数据将以明文的形式保存在客户端
7. 代码:Resopnse.Cookies[“UserID”]=”test”;
String UserName= Resopnse.Cookies [“UserID”].ToString();
ViewState
1. ViewState用来保存用户的状态信息,有效期等于页面的生命周期
2. 可以保存大量数据但是要慎用,因为会影响程序性能
3. 所有的Web服务器控件都是用ViewState在页面PostBack期间保存状态
4. 不需要则关闭 @page 里面设置EnableViewState=false
5. 代码:ViewState[‘”ID”]=”yiner”;
String ID =ViewState[“ID”].ToString();
Cache
1. Cache用于在Http请求期间保存页面或者数据
2. Cache的使用可以大大的提高整个应用程序的效率
3. 它允许将频繁访问的服务器资源存储在内存中,当用户发出相同的请求后
服务器不是再次处理而是将Cache中保存的数据直接返回给用户
4. 可以看出Cache节省的是时间—服务器处理时间
5. Cache实例是每一个应用程序专有的,其生命周期==该应用程序周期
应用程序重启将重新创建其实例
6. 注意:如果要使用缓存的清理、到期管理、依赖项等功能必须使用Insert 或者Add方法方法添加信息
7. 代码:Cache[‘”ID”]=”yiner”;或者Cache.Insert(“ID”,”test”);
String ID =Cache[“ID”].ToString();
Hidden
1. Hidden控件属于Html类型的服务器控件,始终处于隐藏状态
2. 每一次提交的时候它会和其他服务器控件一起提交到服务器端
3. 代码如下:Hidden.Value=”king”;
string id=Hidden.Value; 要使用Runat=server

一、使用Querystring
  Querystring是一种非常简单的传值方式,其缺点就是会把要传送的值显示在浏览器的地址栏中,并且在此方法中不能够传递对象。如果你想传递一个安全性不是那么太重要或者是一个简单的数值时,用此方法最好不过了。下面通过一个小例子来完成传值工作,步骤如下:
  1、创建一个web form
  2、在新建的web form中放置一个button1,在放置两个TextBox1,TextBox2
  3、为button按钮创建click事件
  代码如下:
  private void Button1_Click
  (object sender, System.EventArgs e)
  {
   string url;
   url="webform2.aspx?name=" +
    TextBox1.Text + "&email=" +
    TextBox2.Text;
   Response.Redirect(url);
  }
  4、新建一个目标页面命名为webform2
  5、在webform2中放置两个Label1,Label2
  在webform2的Page_Load中添加如下代码:
  private void Page_Load
  (object sender, System.EventArgs e)
  {
   Label1.Text=Request.QueryString["name"];
   Label2.Text=Request.QueryString["email"];
  }
  运行,即可看到传递后的结果了。
  
  二、使用Session变量
  使用Session变量传值是一种最常见的方式了,此中方式不仅可以把值传递到下一个页面,还可以交叉传递到多个页面,直至把Session变量的值removed后,变量才会消失。举个例子看看:
  1、创建一个web form
  2、在新建的web form中放置一个button1,在放置两个TextBox1,TextBox2
  3、为button按钮创建click事件
  代码如下:
  private void Button1_Click
  (object sender, System.EventArgs e)
  {
          Session["name"]=TextBox1.Text;
   Session["email"]=TextBox2.Text;
   Response.Redirect("webform2.aspx");
  }
  4、新建一个目标页面命名为webform2
  5、在webform2中放置两个Label1,Label2
  在webform2的Page_Load中添加如下代码:
  private void Page_Load
  (object sender, System.EventArgs e)
  {
   Label1.Text=Session["name"].ToString();
   Label2.Text=Session["email"].ToString();
   Session.Remove("name");
   Session.Remove("email");
  }
  运行,即可看到传递后的结果了。
  
  三、使用Server.Transfer
  虽然这种方法有点复杂,但也不失为一种在页面传值的方式。
  举个例子看看:
  1、创建一个web form
  2、在新建的web form中放置一个button1,在放置两个TextBox1,TextBox2
  3、为button按钮创建click事件
  代码如下:
  private void Button1_Click
  (object sender, System.EventArgs e)
  {
   Server.Transfer("webform2.aspx");
  }
  4、创建过程来返回TextBox1,TextBox2控件的值代码如下:
  public string Name
  {
   get
   {
    return TextBox1.Text;
   }
  }
  
  public string EMail
  {
   get
   {
    return TextBox2.Text;
   }
  }
  5、新建一个目标页面命名为webform2
  6、在webform2中放置两个Label1,Label2
  在webform2的Page_Load中添加如下代码:
  private void Page_Load
  (object sender, System.EventArgs e)
  {
   //创建原始窗体的实例
   WebForm1 wf1;
   //获得实例化的句柄
   wf1=(WebForm1)Context.Handler;
   Label1.Text=wf1.Name;
   Label2.Text=wf1.EMail;
  
  }
  运行,即可看到传递后的结果了。

健康在线:
1. 简述一下缺陷的生命周期。
2. 一个测试工程师应具备那些素质和技能?
3. 一个缺陷测试报告的组成?
1) 缺陷的标题;
2)缺陷的基本信息;
a) 测试的软件和硬件环境;
b )测试的软件版本;
c缺陷的类型;
d缺陷的严重程度;
e缺陷的处理优先级。
3) 复现缺陷的操作步骤;
4) 缺陷的实际结果描述;
5) 期望的正确结果描述;
6) 注释文字和截取的缺陷图像。

4. 集成测试通常都有那些策略?
5. 软件测试项目在什么时候开始,为什么?

大展集团:
1. 存储过程的好处
使用存储过程的优点:
1.提高性能 存储过程创建的时候就进行了编译,将来使用的时候就不用重新编译,所以提高了效率。
2.减少网络流量 存储过程位于服务器上,调用的时候只须传递存储过程的名称以及参数,不用每次访问都传递很长的sql 语句
3.安全性 减少sql 注入式攻击

---------------------------------------------------------------------
1.存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。

2.当对数据库进行复杂操作时(如对多个表进行Update,Insert,Query,Delete时),可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用。

3.存储过程可以重复使用,可减少数据库开发人员的工作量

4.安全性高,可设定只有某些用户才具有对指定存储过程的使用权

2. 左连接,右连接
inner joins內连接:內连接仅选出两张表中互相匹配的记录
left join(左连接):包含所有的左边表中的记录甚至是右边表中没有和它匹配的记录。
right join(右连接):即包含所有的右边表中的记录甚至是左边表中没有和它匹配的记录。
而full join(全连接)顾名思义,左右表中所有记录都会选出来。
外连接分为左外连接(LEFT OUTER JOIN或LEFT JOIN)、右外连接(RIGHT OUTER JOIN或RIGHT JOIN)和全外连接(FULL OUTER JOIN或FULL JOIN)三种。与内连接不同的是,外连接不只列出与连接条件相匹配的行,而是列出左表(左外连接时)、右表(右外连接时)或两个表(全外连接时)中所有符合搜索条件的数据行。

3. 数据库连接方式
ADO.net 中数据库连接方式(微软提供)
  微软提供了以下四种数据库连接方式:
  System.Data.OleDb.OleDbConnection
  System.Data.SqlClient.SqlConnection
  System.Data.Odbc.OdbcConnection
  System.Data.OracleClient.OracleConnection

4. 4个表进行嵌套的最优
5. 面向对象的好处

大展外派用友笔试题目:
1. 一列数的规则如下:1、1、2、3、5、8、13、21、34 --- ---,求第n (n<30)位数是多少,请分别用递归和非递归两种算法实现下面的函数。
Public static int Compute (int n)
{
// write your code here
}

public class MainClass 编程博客­P2u|U­zj$}H
{
8].K2L G6s*s[1]Qyc1OdL0 public static void Main()
^'vS6P~0 {
xt /a+c/Y3s0 Console.WriteLine(Foo(30)); 编程博客[*e/])NN7L
} 编程博客0Hi2bg9[*d[1]?8h
public static int Foo(int i)
+N(}/|H3nW4n2]z A0 { 编程博客,Lc0bt!q O
if (i <= 0) 编程博客LY;t!E­rM2T(NVj3V
return 0;
s_#OG4?+c$b7^0 else if(i > 0 && i <= 2)
­O%Ff4t4i q vX0 return 1; 编程博客3y//

y6b1c9N]h
else return Foo(i -1) + Foo(i - 2); 编程博客t @ g dp%X
}
{9R­ZW6X9{ d

S)IP-n r0 } y4]:I I[1]B+i0

2. 将小写的人民币的金额转换为大写金额(例如:1234返回一千二百三十四元整)。
Public static String numtochinese (String input)
{
// write your code here
}

3. 1 – 100 一百个自然数,放入一个99个元素的数组a[99], 要求找出没有被放入数组的这个数(注意用最简便的方法)。
利用一个辅助数组b(100),循环原数组一遍,对b赋值(b[a[i]] = 1),那么,b中不是1的元素的下标(位置)就是需要找的数字:
for( i=1; i<=99, i++)
b[a[i]] = 1;
for( i=1; i<=100; i++)
if(b[i]) != 1)
return i;
平均复杂度为n+n/2, 如果是C语言,初始化b数组需要n次赋值,复杂度为2n+n/2.

var s ;
var r ;
s = 0 ;
r = 0 ;
for (int i = 0 ; i < 99 ; i++)
{
s = s + a[i];
}
r = 5050 - s;
如果这里不用1-100,而是200或300...
那么就可以先定义一个数组,数组中包含所有的数字,然和把这个数组相加得到总和即可。

4.数据库
已知有如下三个关系表:
学生 Student (学号,姓名,系号)
项目 Project (项目名,项目名称,报酬)
项目参与 Actor(学号,项目号,工时)
其中:系号指学生所在系的编号;
报酬指参加该项目每个工时所得的报酬。
基于以上关系回答:
1. 分析以下SQL语句
SELECT DISTINCT X .学号
FROM Actor X, Actor Y
WHERE X .学号 = Y.学号
AND X.项目号 <> Y.项目号
请问上述语句完成了什么查询操作.

2. 试用SQL语句写出下列查询:
列出每个系所有学生参加项目所获得的总报酬.

5. 判断题
甲乙丙三个学生, 一个学生在北京, 一个上海, 一个武汉; 一个学习国际金融, 一个学习工商管理, 一个学习外语. 其中:
a) 甲不是学国际金融
b) 乙不学习外语
c) 学国际金融的不出生在北京
d) 学外语的生在北京
e) 乙不生在武汉
请根据已知条件判断甲学什么专业? (请写出推理过程)

定谊科技:
1. Dos platform:
Windows platform:
Linux/Unix platform:
2. 软件测试的步骤和方法
3. 写测试数据
4. ASM: 自动存储管理(ASM) 是Oracle 数据库10g 的新特性,它为数据库管理员提供了一个简单的存储管理界面,并且该界面在所有服务器和存储平台上都是一致的。
MAKE:
Directshow: DirectShow是微软公司提供的一套在Windows平台上进行流媒体处理的开发包,与DirectX开发包一起发布。
COM:组件对象模型
OLE: OLE是Object Linking and Embedding的缩写,直译为对象连接与嵌入
XML: XML全称EXtensible Markup Language,翻译为可扩展置标语言,可扩展标记语言或可延伸标示语言,是一种置标语言。
DHCP: DHCP 是Dynamic Host Configuration Protocol(动态主机分配协议)缩写﹐它的前身是BOOTP。
HTTP: HTTP协议(Hypertext Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传送协议。它可以使浏览器更加高效,使网络传输减少。
5. 英译汉
RTT
6. 汉译英
SML---标准模板类库

睿剑科技北京有限公司
将近30道题目吧,都是英文的,就记住的几道罗列如下:
1. Java为什么可以在多个平台上运行?
2. 软件缺陷的生命周期?
3. 写出实现下列三角阵的条件语句
1
2 2
3 3 3
4 4 4 4
5 5 5 5 5
4.你正负责一项AAA项目,但遇到了一些问题,需要负责人提供一些技术资料,但负责人迟迟没有提供,而项目经理又催着要结果,而负责人和项目经理都在美国,不好直接交流,请写一封信给负责人。
5.如何设置环境变量。
国家软件检测中心:
1. 什么是远程调用RPC
远程过程调用(remote procedure call) (rpc): 客户机用来请求执行来自服务器的过程调用的工具。
2. 软件工程包括哪些内容


3. 缺陷报告包括哪些内容
i. 缺陷的标题;
2)缺陷的基本信息;
a) 测试的软件和硬件环境;
b )测试的软件版本;
c缺陷的类型;
d缺陷的严重程度;
e缺陷的处理优先级。
3) 复现缺陷的操作步骤;
4) 缺陷的实际结果描述;
5) 期望的正确结果描述;
6) 注释文字和截取的缺陷图像。

4. 以下语句要完成的功能
int abc (int c)
{
if (c > ‘A’ && c< ‘Z’)
return c + ‘A’ – ‘Z’
else
return c
}
5. 用C语言编写程序,实现测试是2 的N次方的数据
6. SQL语句
1) 视图

7. 英译汉
8. 汉译英
9. 你理想的工作环境是怎样的?(100字)
10.谈一下你的家庭(100字)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: