《aspnet面试题六》 

一道数据库设计的面试题,考查的重点和供参考的解决方案如下。

==================================

一大型企业,有10000名员工,每半个月发一次工资,试为此企业设计一个工资数据库.(数据库为SQL server).


这题考查的重点是面对数据量大时,如何设计一个系统的性能好、速度快的数据库。

-----------------------------------------

可供参考的解决方法有几点,希望大家补充:

1.建立索引是必须的。

2.可以设计成两个表,一个用来操作,一个用来查询。操作表只保存最近若干段时间内的数据,就如移动公司查询话费记录。

3.查询考虑用最优的存储过程。


9:算法分析
AH 20060625 12 44 01 CAD001
AH 20060625 12 44 01 CAD001
AH 20060625 13 44 02 CAD001
AH 20060625 14 44 03 CAD001
说明:第二列表示日期,第三列表示温度,第四列表示水位,第五列表示流量,第6列表示水位测站编码,每一列表示一个字段
很明显第一条数据和第二条数据重复,然数据表中有主键和外键的约束,是不允许有重复的数据存在的,请构造算法将重复的数据Del掉

答:改变表结构
   alter    table    表    add      ID   int    identity(1,1)   
   delete    表   
   where    newfield    not    in   
   (   
   select    top 1 ID   from 表 group by 日期,温度,水位,流量,水位测站编码  
   )       
   alter    table    表    drop    column    ID


6.有一人事表,计算两个同时入职的员工的生日的差,用一句 SQL语句 将EGTB1中的结果变成EGTB2的结果?
Field_AField_BField_C
User12004-10-261981-01-01
User22004-10-261976-01-01
………
Field_B Name_1Name_2Field_4 
2004-10-26User1User21825
…………
Question 31. (单选) 
  根据线程安全的相关知识,分析以下代码,当调用test方法时i>10时是否会引起死锁?
public void test(int i) 
{ 
lock(this) 
{ 
if (i>10) 
{ 
i--; 
test(i); 
} 
} 
} 
   1. 会锁死
   2. 不会锁死
Question 32. (单选)
  以下描述错误的是()
  1. 在C++中支持抽象类而在C#中不支持抽象类。
  2. C++中可在头文件中声明类的成员而在CPP文件中定义类的成员,在C#中没有头文件并且在同一处声明和定义类的成员。
  3. 在C#中可使用 new 修饰符显式隐藏从基类继承的成员。
  4. 在C#中要在派生类中重新定义基类的虚函数必须在前面加Override。

Question 33. (单选)
  int[][] myArray3=new int[3][]{new int[3]{5,6,2},new int[5]{6,9,7,8,3},new int[2]{3,2}}; myArray3[2][2]的值是()。
  1. 9
  2. 2
  3. 6
  4. 越界

Question 34. (单选)
  在C#中利用Socket进行网络通信编程的一般步骤是:建立Socket侦听、( )、利用Socket接收和发送数据。
  1. 建立Socket连接
  2. 获得端口号;
  3. 获得IP地址;
  4. 获得主机名;

Question 35. (单选)
  如果设treeView1=new TreeView(),TreeNode node=new TreeNode("根结点" ),则treeView1.Nodes.Add(node)返回的是一个 ()类型的值。
  1. TreeNode;
  2. int;
  3. string;
  4. TreeView;

Question 36. (单选)
  声明一个委托public delegate int myCallBack(int x); 则用该委托产生的回调方法的原型应该是
  1. void myCallBack(int x)
  2. int receive(int num)
  3. string receive(int x)
  4. 不确定的

Question 37. (单选)
  关于ASP.NET中的代码隐藏文件的描述正确的是
  1. Web窗体页的程序的逻辑由代码组成,这些代码的创建用于与窗体交互。编程逻辑唯一与用户界面不同的文件中。该文件称作为“代码隐藏”文件,如果用C#创建,该文件
  2. 项目中所有Web窗体页的代码隐藏文件都被编译成.EXE文件
  3. 项目中所有的Web窗体页的代码隐藏文件都被编译成项目动态链接库(.dll)文件
  4. 以上都不正确

Question 38. (单选)
  What compiler switch creates an xml file from the xml comments in the files in an assembly?
  1. /text
  2. /doc
  3. /xml
  4. /help

Question 39. (单选)
  下面的代码实现了设计模式中的什么模式
  public class A {
  private A instance;
  private A() {
  }
  public static A Instance {
  get
  {
  if ( A == null )
  A = new A();
  return instance;
  }
  }
  }
   1. Factory
   2. Abstract Factory
   3. Singleton
   4. Builder

Question 40. (单选)
class Class1
{
public static int Count = 0;
static Class1()
{
Count++;
}
public Class1()
{
Count++;
}
}
Class1 o1 = new Class1();
Class1 o2 = new Class1();
  请问,Class1.Count的值是多少?( )
   1. 1
   2. 2
   3. 3
   4. 4
Question 41. (单选) 
abstract class BaseClass
{
public virtual void MethodA()
{
Console.WriteLine("BaseClass");
}
public virtual void MethodB()
{
}
}
class Class1: BaseClass
{
public void MethodA()
{
Console.WriteLine("Class1");
}
public override void MethodB()
{
}
}
class Class2: Class1
{
new public void MethodB()
{
}
}
class MainClass
{
public static void Main(string[] args)
{
Class2 o = new Class2();
o.MethodA(); 
}
}
  请问,此程序输出结果是:
   1. BaseClass
   2. BassClass Class1
   3. Class1
   4. Class1 BassClass

Question 42. (单选)
public static void Main(string[] args)
{
int i = 2000;
object o = i;
i = 2001;
int j =(int) o;
Console.WriteLine("i={0},o={1}, j={2}",i,o,j);
}
   1. i=2001,o=2000,j=2000
   2. i=2001,o=2001,,j=2001
   3. i=2000,o=2001,,j=2000
   4. i=2001,o=2000,j=2001

Question 43. (多选)
  您要创建ASP.NET应用程序用于运行AllWin公司内部的Web站点,这个应用程序包含了50个页面。您想要配置这个应用程序以便当发生一个HTTP代码错误时它可以显示一个自定义的错误页面给用户。您想要花最小的代价完成这些目标,您应该怎么做?(多选)
   1. 在这个应用程序的Global.asax文件中创建一个Application_Error过程去处理ASP.NET代码错误。
   2. 在这个应用程序的Web.config文件中创建一个applicationError节去处理ASP.NET代码错误。
   3. 在这个应用程序的Global.asax文件中创建一个CustomErrors事件去处理HTTP错误。
   4. 在这个应用程序的Web.config文件中创建一个CustomErrors节去处理HTTP错误。

Question 44. (单选)
  如下程序的运行结果是:
public abstract class A 
{ 
public A() 
{ 
Console.WriteLine('A'); 
} 
public virtual void Fun() 
{ 
Console.WriteLine("A.Fun()"); 
} 
} 
public class B: A 
{ 
public B() 
{ 
Console.WriteLine('B'); 
} 
public new void Fun() 
{ 
Console.WriteLine("B.Fun()"); 
} 
public static void Main() 
{ 
A a = new B(); 
a.Fun(); 
} 
} 
   1. A B A.Fun() 
   2. A B B.Fun()
   3. B A A.Fun()
   4. B A B.Fun()

Question 45. (单选)
  Which of these string definitions will prevent escaping on backslashes in C#?*
   1. string s = #”n Test string”;
   2. string s = “’n Test string”;
   3. string s = @”n Test string”;
   4. string s = “n Test string”;

Question 46. (单选)
  Which of the following operations can you NOT perform on an ADO.NET DataSet?
   1. A DataSet can be synchronised with a RecordSet.
   2. A DataSet can be synchronised with the database.
   3. A DataSet can be converted to XML.
   4. You can infer the schema from a DataSet

Question 47. (单选)
  In Object oriented Programming, how would you describe encapsulation?
   1. The conversion of one type of object to another.
   2. The runtime resolution of method calls.
   3. The exposition of data.
   4. The separation of interface and implementation.

Question 48. (单选)
  How does assembly versioning in .NET prevent DLL Hell?
   1. The runtime checks to see that only one version of an assembly is on the machine at any one time.
   2. .NET allows assemblies to specify the name AND the version of any assemblies they need to run.
   3. The compiler offers compile time checking for backward compatibility.
   4. It doesn’t.

Question 49. (单选)
  三种常用的字符串判空串方法:
   1: bool isEmpty = (str.Length == 0); 
   2: bool isEmpty = (str == String.Empty); 
   3: bool isEmpty = (str == "");
  哪种方法最快?
   1. 1
   2. 2
   3. 3

Question 50. (单选)
public sealed class SampleSingleton1
{
private int m_Counter = 0;
  private SampleSingleton1()
{
Console.WriteLine(""初始化SampleSingleton1。"");
}
public static readonly SampleSingleton1 Singleton = new SampleSingleton1();
public void Counter()
{
m_Counter ++;
}
}