面试体会一:试题

考试两份试题 ADO.net和SQL SERVER 2000 其中有JavaScript ,Asp.net 方面的试题。

合理答案都是我自己后来找的觉得对的,具体对不对我不保证,还请多多指教。

一、ADO.net 试题

1.可以通过什么方法使得DataSet中的DataTable之间保持数据的完整性?

合理答案:为DataTable设置约束。(约束是用于维护 DataTable 中的数据的完整性的规则。)

 

2.DataTable中新增一条数据后此条数据的状态变成Added,然后把这条数据删除,请问这条数据的状态?(1.状态变成Deleted 2.直接删除 3.状态为Added  )

暂时答案: 

添加一个题目:Copy和clone的区别?

如果希望将DataTable添加到多个DataSet中,就必须使用Copy方法或Clone方法。

Copy方法创建一个与原DataTable结构相同并且包含相同行的新DataTable;

Clone方法创建一个与原DataTable结构相同,但没有包含任何行的新DataTable。

 

3.DataTable 执行了AcceptChanges操作有什么变化?

合理答案:提交自上次调用 AcceptChanges 以来对该表进行的所有更改。

调用 AcceptChanges 时,任何仍处于编辑模式的 DataRow 对象将成功结束其编辑。DataRowState 也发生更改:所有 AddedModified 行成为 UnchangedDeleted 行被移除。在您尝试使用 DbDataAdapter.Update 方法更新 DataSet 之后,通常会对 DataTable 调用 AcceptChanges 方法。

 

4.如果你只需要读取数据库中的数据而不需要进行修改,DataSet DataTable DataReader你会使用哪个?为何?

合理答案:DataReader。DataReader提供一个来自数据库的快速、仅向前、只读数据流。而DataSet 是一次性读取放入缓冲池中。

DataReader 不需要缓存数据。

DataReader要处理的结果集太大,内存中放不下。

DataReader一旦需要以仅向前、只读方式快速访问数据。

 

5.一般情况下我们可以使用MissingSchemaAction.AddWithKey为DataTable设置主键,但是数据库表中已设置了主键,在什么情况下不可以用MissingSchemaAction.AddWithKey为DataTable设置主键?大概是这样的题目。

合理答案:可能是因为数据库中有ABC,ABC空格之类的的数据。在DataTable 中设置主键的时候会忽略空格。ABC和ABC空格就是相同的数据了。所以设置不了主键。

 

6.考了一个Merge的,有两个dataset1

1   A  unchanged

2   B  unchanged

3   C  unchanged

添加一行后

1   A  unchanged

2   B  unchanged

3   C  unchanged

4   null Added

dataset2中

1   A  changed

2   B  changed

3   C  unchanged

4   null Added

请通过merge方法得到dataset2中的

1   A  changed

2   B  unchanged

3   C  unchanged

4   null Added

合理答案:dataset2.merge(dataset1.Table[0].row[1]).

 

二、Asp.net试题

1.请说明一下IsPostBack的意义?

暂时答案:区分页面是否为第一次加载。

 

2.ViewState的作用?开启与不开启的区别?

暂时答案:存值; 跟踪变化。

 开启ViewState的不利因素:

- 泄漏重要的数据
- ViewState攻击
- 性能受影响
- 应用程序不能扩展:如果用户会在每一次Postback的时候都加少50K的ViewState数据。。。
- 影响整体设计

 

3.Session可以被保存在那些地方?在客户端是否一定要保持cookies?

暂时答案:一般情况被保存于aspnet_wp.exe w3wp.exe 进程中。也可以保持于StateServer中和SQLServer中。

 

4.有一个Web Server Control ,如果让客户端脚本在执行后台代码前先执行?

暂时答案:为控件注册一个客户端的onclick事件,并返回True。

 

 

三、JavaScript试题

1.开启一个新窗口有几种方法?如果有返回值该怎么办?

暂时答案:asp.net中打开新窗口的多种方法: (我还没有验证)
(1)Response.Redirect("XXX.aspx",true)——直接转向新的页面,原窗口被代替;
(2)Response.Write(" <script>window.open(XXX.aspx'',''_blank'') </script>")——原窗口保留,另外新增一个新页面;
(3)Response.Write(" <script>window.location=XXX.aspx'' </script>")——打开新的页面,原窗口被代替;
(4)Server.Transfer("XXX.aspx")——打开新的页面;
(5)Response.Write(" <script>window.showModelessDialog(XXX.aspx'') </script>")——原窗口保留,以对话框形式打开新窗口;
(6)Response.Write(" <script>window.showModalDialog(XXX.aspx'') </script>")——对话框形式打开新窗口,原窗口被代替;

 

2.Window.event.srcElement的用法?

合理答案: window.event.srcElement是指触发事件的对象。比如你设定document.onclick   =   myfunc;这时所有页面点击的事件都交给myfunc处理,在myfunc函数里可以写vSrc   =   window.event.srcElement,知道用户是点击了什么地方,做相应处理。   
  例如HTML文件中添加

  <script   languange   =   "javascript">  
  document.onclick   =   myfunc;  
  function   myfunc()  
  {  
      alert(window.event.srcElement.nodeName);  
  }  
  </script>      
  void(0)是一个不做任何事的函数。

 

3.有一个CSS样式.myStyle ,如何应用这个样式。

合理答案:红色的字体

<input id="txt" Name="Text"  Css="myStyle"/>

<asp:TextBox id="TXT" Name = "TEXT"  CssClass="myStyle"/>

 

 四、 SQL 2000试题

1.Where和Having的区别?

合理答案:Where 是一个约束声明,使用Where来约束来之数据库的数据,Where是在结果返回之前起作用的。Having是一个过滤声明,是在查询返回结果集以后对查询结果进行的过滤操作。

2. 考了Union 和一个子查询。具体题目我就不写了。

合理答案:select A,B,C from AA union select A,B,C from BB order by A ASC.

3. 死锁(deadLock)是什么?如何防止死锁。

合理答案:在两个或多个任务中,如果每个任务锁定了其他任务试图锁定的资源,此时会造成这些任务永久阻塞,从而出现死锁。

防止死锁的发生遵循以下规则:

  1. 按同一顺序访问对象。
  2. 避免事务中的用户交互。保持事务简短并处于一个批处理中。
  3. 使用较低的隔离级别。
  4. 使用基于行版本控制的隔离级别
  5. 将 READ_COMMITTED_SNAPSHOT 数据库选项设置为 ON,使得已提交读事务使用行版本控制。
  6. 使用快照隔离。
  7. 使用绑定连接。

4. 在SQL2000中 事务是什么?

合理答案:事务是单个的工作单元。如果某一事务成功,则在该事务中进行的所有数据修改均会提交,成为数据库中的永久组成部分。如果事务遇到错误且必须取消或回滚,则所有数据修改均被清除。

其他内容:

SQL Server 以下列事务模式运行。

自动提交事务

每条单独的语句都是一个事务。

显式事务

每个事务均以 BEGIN TRANSACTION 语句显式开始,以 COMMIT 或 ROLLBACK 语句显式结束。

隐式事务

在前一个事务完成时新事务隐式启动,但每个事务仍以 COMMIT 或 ROLLBACK 语句显式完成。

批处理级事务

只能应用于多个活动结果集 (MARS),在 MARS 会话中启动的 Transact-SQL 显式或隐式事务变为批处理级事务。当批处理完成时没有提交或回滚的批处理级事务自动由 SQL Server 进行回滚。

5.事务分为哪几个隔离级别?其中各个级别之间有何差别?

合理答案:详细见下面的文章
  1、未授权读取(Read Uncommitted):允许脏读取,但不允许更新丢失。如果一个事务已经开始写数据,则另外一个数据则不允许同时进行写操作,但允许其他事务读此行数据。该隔离级别可以通过“排他写锁”实现。

  2、授权读取(Read Committed):允许不可重复读取,但不允许脏读取。这可以通过“瞬间共享读锁”和“排他写锁”实现。读取数据的事务允许其他事务继续访问该行数据,但是未提交的写事务将会禁止其他事务访问该行。

  3、可重复读取(Repeatable Read):禁止不可重复读取和脏读取,但是有时可能出现幻影数据。这可以通过“共享读锁”和“排他写锁”实现。读取数据的事务将会禁止写事务(但允许读事务),写事务则禁止任何其他事务。

  4、序列化(Serializable):提供严格的事务隔离。它要求事务序列化执行,事务只能一个接着一个地执行,但不能并发执行。如果仅仅通过“行级锁”是无法实现事务序列化的,必须通过其他机制保证新插入的数据不会被刚执行查询操作的事务访问到。


 

posted @ 2009-05-12 13:45  笑萧亦然  阅读(302)  评论(0)    收藏  举报