.Net方面的一些东西

1.         OSI七层参考模型的名称? 2.         UDP连接和TCP连接有何异同? 3.         进程和线程分别怎么理解? 4.         活动目录的作用? 5.         ASP中的七大对象是什么? 6.         在ASP中如何连接数据库?(编写一段代码描述) 7.         COM+环境的主要特性? 8.         什么是NLB、什么是CLB? 9.         VSS的作用? 10.     面向对象的思想主要包括什么? 11.     什么是DNA架构? 12.     分析一下SQL Server、Exchange Server、SharePoint Portal Server、BizTalk Server各自的功能及其作用。 .net部分 1.         什么叫应用程序域? 2.         CTS、CLS、CLR分别作何解释? 3.         什么是受管制的代码? 4.         什么是强类型系统 5.         什么是装箱和拆箱? 6.         什么是重载? 7.         值类型和引用类型的区别? 8.         如何理解委托? 9.         .net中读写数据库需要用到那些类?他们的作用? 10.     ASP.net的身份验证方式有哪些?分别是什么原理? 11.     什么是Code-Behind技术? 12.     .net中读写XML的类都归属于那些命名空间? 13.     解释一下UDDI,WSDL的意义及其作用? 14.     什么是SOAP,它有哪些应用? 15.     在.net中,配件的意思是? 16.     如何部署一个ASP.net页面。 17.     如何理解.net中的垃圾回收机制? 18.     常用的调用WebService的方法有哪些? 19.     什么是ASP.net中的用户控件? 20.     在.net中如何使用COM组件? 21.     列举一下你所了解的XML技术及其应用。 22.     ADO.net中常用的对象有哪些?分别描述一下。 23.     C#中接口和类有什么异同 24.     .net Remoting 的工作原理是什么? 项目管理部分 1.         项目管理一般分哪几个阶段? 2.         项目管理中的几大要素是什么? 3.         什么样的项目是成功的项目? 4.         一个软件开发项目通常分几个阶段?         8个:问题的定义,可行性的研究,需求分析,总体的设计,详细设计.编码和单元测试,综合测试,软件维护.[顶].Net面试题(二)1 (1)面向对象的语言具有__继承性_性、_封装性_性、_多态性 性。 (2)能用foreach遍历访问的对象需要实现 _ IEnumerable 接口或声明_ GetEnumerator 方法的类型。1.c#中的三元运算符是__?:__ 2.当整数a赋值给一个object对象时,整数a将会被__装箱___? 3.类成员有__3__种可访问形式? 4.public static const int A=1;这段代码有错误么?是什么? const成员都是static所以应该去掉static 5.float f=-123.567F; int i=(int)f; i的值现在是_-123____? 6.利用operator声明且仅声明了==,有什么错误么? 要同时修改Equale和GetHash() ? 重载了"==" 就必须重载 "!=" 7.委托声明的关键字是___ delegate ___? 8.用sealed修饰的类有什么特点?不可被继承 9.在Asp.net中所有的自定义用户控件都必须继承自_ System.Web.UI.UserControl _______? 10.在.Net中所有可序列化的类都被标记为__[serializable]___? 11.在.Net托管代码中我们不用担心内存漏洞,这是因为有了_ gC __? 12.下面的代码中有什么错误吗?_ abstract override 是不可以一起修饰______ using System; class A { public virtual void F(){ Console.WriteLine("A.F"); } } abstract class B:A { public abstract override void F(); } 13.当类T只声明了私有实例构造函数时,则在T的程序文本外部,_不可以_(可以 or 不可以)从T派生出新的类,_不可以_(可以 or 不可以)直接创建T的任何实例。 14.下面这段代码有错误么?case():不行 default; switch (i){ case(): CaseZero(); break; case 1: CaseOne(); break; case 2: dufault; CaseTwo(); break; } 15.在.Net中,类System.Web.UI.Page 可以被继承么?可以 2. 不定项选择: (1) 以下叙述正确的是: B C A. 接口中可以有虚方法。B. 一个类可以实现多个接口。 C. 接口不能被实例化。 D. 接口中可以包含已实现的方法。    (2) 从数据库读取记录,你可能用到的方法有:B C D       A. ExecuteNonQuery            B. ExecuteScalar      C. Fill                        D. ExecuteReader 2.对于一个实现了IDisposable接口的类,以下哪些项可以执行与释放或重置非托管资源相关的应用程序定义的任务?(多选)   (        ABC         )     A.Close B.Dispose C.Finalize     D.using E.Quit     3.以下关于ref和out的描述哪些项是正确的?(多选)   (    ACD   )     A.使用ref参数,传递到ref参数的参数必须最先初始化。     B.使用out参数,传递到out参数的参数必须最先初始化。     C.使用ref参数,必须将参数作为ref参数显式传递到方法。     D.使用out参数,必须将参数作为out参数显式传递到方法。 1.在对SQL Server 数据库操作时应选用(A)。 a)SQL Server .NET Framework 数据提供程序; b)OLE DB .NET Framework 数据提供程序; c)ODBC .NET Framework 数据提供程序; d)Oracle .NET Framework数据提供程序; 2.下列选项中,(C)是引用类型。 a)enum类型   b)struct类型 c)string类型   d)int类型 3.关于ASP.NET中的代码隐藏文件的描述正确的是(C) a)Web窗体页的程序的逻辑由代码组成,这些代码的创建用于与窗体交互。编程逻辑唯一与用户界面不同的文件中。该文件称作为“代码隐藏”文件,如果用C#创建,该文件将具有“.ascx.cs”扩展名。 b)项目中所有Web窗体页的代码隐藏文件都被编译成.EXE文件。 c)项目中所有的Web窗体页的代码隐藏文件都被编译成项目动态链接库(.dll)文件。 d)以上都不正确。 4.以下描述错误的是(A) a)在C++中支持抽象类而在C#中不支持抽象类。 b)C++中可在头文件中声明类的成员而在CPP文件中定义类的成员,在C#中没有头文件并且在同一处声明和定义类的成员。 c)在C#中可使用 new 修饰符显式隐藏从基类继承的成员。 d)在C#中要在派生类中重新定义基类的虚函数必须在前面加Override。 5.C#的数据类型有(A) a)值类型和调用类型; b)值类型和引用类型;c)引用类型和关系类型;d)关系类型和调用类型; 6.下列描述错误的是(D) a)类不可以多重继承而接口可以; b)抽象类自身可以定义成员而接口不可以; c)抽象类和接口都不能被实例化; d)一个类可以有多个基类和多个基接口; 7.在DOM中,装载一个XML文档的方法(D) a)save方法   b)load方法 c)loadXML方法 d)send方法 8.下列关于构造函数的描述正确的是(C) a)构造函数可以声明返回类型。 b)构造函数不可以用private修饰 c)构造函数必须与类名相同 d)构造函数不能带参数 9.以下是一些C#中的枚举型的定义,其中错误的用法有() a)public enum var1{ Mike = 100, Nike = 102, Jike } b)public enum var1{ Mike = 100, Nike, Jike } c)public enum var1{ Mike=-1 , Nike, Jike } d)public enum var1{ Mike , Nike , Jike } 10.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]的值是(D)。 a)9                   b)2             c)6              d)越界 11.接口是一种引用类型,在接口中可以声明(A),但不可以声明公有的域或私有的成员变量。 a)方法、属性、索引器和事件; b)方法、属性信息、属性; c)索引器和字段;    d)事件和字段; 12.ASP.NET框架中,服务器控件是为配合Web表单工作而专门设计的。服务器控件有两种类型,它们是(A ) a)HTML控件和Web控件 b)HTML控件和XML控件 c)XML控件和Web控件    d)HTML控件和IIS控件 13.ASP.NET中,在Web窗体页上注册一个用户控件,指定该控件的名称为”Mike”,正确的注册指令为( D) a)<%@Register TagPrefix = “Mike” TagName = “Space2” Src = “myX.ascx”%> b)<%@Register TagPrefix = “Space2” TagName = “Mike” Src = “myX.ascx”%> c)<%@Register TagPrefix = “SpaceX” TagName = “Space2” Src = “Mike”%> d)以上皆非 14.在ADO.NET中,对于Command对象的ExecuteNonQuery()方法和ExecuteReader()方法,下面叙述错误的是(C)。 a)insert、update、delete等操作的Sql语句主要用ExecuteNonQuery()方法来执行; b)ExecuteNonQuery()方法返回执行Sql语句所影响的行数。 c)Select操作的Sql语句只能由ExecuteReader()方法来执行; d)ExecuteReader()方法返回一个DataReder对象; 15.下列ASP.NET语句(b)正确地创建了一个与SQL Server 2000数据库的连接。 a)SqlConnection con1 = new Connection(“Data Source = localhost; Integrated Security = SSPI; Initial Catalog = myDB”); b)SqlConnection con1 = new SqlConnection(“Data Source = localhost; Integrated Security = SSPI; Initial Catalog = myDB”); c)SqlConnection con1 = new SqlConnection(Data Source = localhost; Integrated Security = SSPI; Initial Catalog = myDB); d)SqlConnection con1 = new OleDbConnection(“Data Source = localhost; Integrated Security = SSPI; Initial Catalog = myDB”); 16.Winform中,关于ToolBar控件的属性和事件的描述不正确的是(D)。 a)Buttons属性表示ToolBar控件的所有工具栏按钮 b)ButtonSize属性表示ToolBar控件上的工具栏按钮的大小,如高度和宽度 c)DropDownArrows属性表明工具栏按钮(该按钮有一列值需要以下拉方式显示)旁边是否显示下箭头键 d)ButtonClick事件在用户单击工具栏任何地方时都会触发 17.在ADO.NET中执行一个存储过程时,如果要设置输出参数则必须同时设置参数的方向和(B ),必要时还要设置参数尺寸。 a)大小;             b)上限;              c)初始值;            d)类型; 18.如果将窗体的FormBoderStyle设置为None,则( B)。 a)窗体没有边框并不能调整大小;        b)窗体没有边框但能调整大小; c)窗体有边框但不能调整大小;          d)窗体是透明的; 19.如果要将窗体设置为透明的,则( B) a)要将FormBoderStyle属性设置为None;      b)要将Opacity属性设置为小于100%得值; c)要将locked 属性设置为True;              d)要将 Enabled属性设置为True; 20.下列关于C#中索引器理解正确的是(B/C ) a)索引器的参数必须是两个或两个以上   b)索引器的参数类型必须是整数型 c)索引器没有名字                     d)以上皆非 21.下面描述错误的是( C/D)。 a)窗体也是控件; b)窗体也是类; c)控件是从窗体继承来的; d)窗体的父类是控件类; 22.要对注册表进行操作则必须包含( D)。 a)System.ComponentModel命名空间; b)System.Collections命名空间; c)System.Threading命名空间;      d)Microsoft.Win32命名空间; 23.要创建多文档应用程序,需要将窗体的(D )属性设为true。 a)DrawGrid;         b)ShowInTaskbar;          c)Enabled;            d)IsMdiContainer; 24.如果设treeView1=new TreeView(),则treeView1.Nodes.Add("根节点")返回的是一个 ()类型的值。 a)TreeNode; b)int; c)string; d)TreeView; 25.下面关于XML的描述错误的是(D)。 a)XML提供一种描述结构化数据的方法; b)XML 是一种简单、与平台无关并被广泛采用的标准; c)XML文档可承载各种信息; d)XML只是为了生成结构化文档; 1.装箱、拆箱操作发生在: (  C  ) A.类与对象之间   B.对象与对象之间 C.引用类型与值类型之间   D.引用类型与引用类型之间 2.用户类若想支持Foreach语句需要实现的接口是: (  A  ) A.IEnumerableB.IEnumerator C.ICollectionD.ICollectData 3..Net Framework通过什么与COM组件进行交互操作?(   C ) A.Side By SideB.Web Service C.InteropD.PInvoke 4..Net依靠以下哪一项技术解决COM存在的Dll Hell问题的?( A   ) A.Side By SideB.Interop C.PInvokeD.COM+ 5.装箱与拆箱操作是否是互逆的操作?(  B  ) A.是B.否 6.以下哪个是可以变长的数组?(  D  ) A.Array                      B.string[] C.string[N]                  D.ArrayList 7.用户自定义异常类需要从以下哪个类继承:(  A  ) A.Exception                             B.CustomException C.ApplicationException                  D.BaseException 1.      填空: (1)面向对象的语言具有________性、_________性、________性。         (2)能用foreach遍历访问的对象需要实现 ________________接口或声明________________方法的类型。         (3)列举ADO.net中的五个主要对象_______________、_____________、_______________、_______________、_________________。 2. 不定项选择: (1) 以下叙述正确的是:       A. 接口中可以有虚方法。     B. 一个类可以实现多个接口。       C. 接口不能被实例化。       D. 接口中可以包含已实现的方法。    (2) 从数据库读取记录,你可能用到的方法有:       A. ExecuteNonQuery            B. ExecuteScalar       C. Fill                        D. ExecuteReader 3. 简述 private、 protected、 public、 internal 修饰符的访问权限。 4. 写出一条Sql语句: 取出表A中第31到第40记录(SQLServer, 以自动增长的ID作为主键,  注意:ID可能不是连续的。) 5 .列举ASP.NET 页面之间传递值的几种方式。 6. 写出程序的输出结果 class Class1  {        private string str = "Class1.str";        private int i = 0;        static void StringConvert(string str)  {            str = "string being converted.";        }        static void StringConvert(Class1 c)  {            c.str = "string being converted.";        }        static void Add(int i)  {            i++;        }        static void AddWithRef(ref int i)  {            i++;        }        static void Main()  {            int i1 = 10;            int i2 = 20;            string str = "str";            Class1 c = new Class1();            Add(i1);            AddWithRef(ref i2);            Add(c.i);            StringConvert(str);                    StringConvert(c);            Console.WriteLine(i1);            Console.WriteLine(i2);            Console.WriteLine(c.i);            Console.WriteLine(str);            Console.WriteLine(c.str);        }      } 7.写出程序的输出结果 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();          } } 8.      写出程序的输出结果: public class A  {         public virtual void Fun1(int i)        {             Console.WriteLine(i);         }    public void Fun2(A a)          {             a.Fun1(1);             Fun1(5);         } } public class B : A  {         public override void Fun1(int i)           {             base.Fun1 (i + 1);         }         public static void Main()          {             B b = new B();             A a = new A();             a.Fun2(b);             b.Fun2(a);                  } } 9. 一列数的规则如下: 1、1、2、3、5、8、13、21、34......    求第30位数是多少, 用递归算法实现。(C#语言) 10.  程序设计: 猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒。(C#语言) 要求:  1.要有联动性,老鼠和主人的行为是被动的。 2.考虑可扩展性,猫的叫声可能引起其他联动效应。 .net面试题答案1. (1) 继承性、封装性、多态性。(考基本概念) (2) IEnumerable 、 GetEnumerator (对foreach机制的理解,本来不想出这题的,凑分) (3) ... (送分题, 对ADO.net的了解) 评分标准:一空1分,满分10分。 2. (1) B、C (考对接口的理解) (2) B、C、D (考查对ADO.net的熟练程度) 评分标准: 一题5分,不选或者错选均不得分。漏选得2分。满分10分。 3. . private : 私有成员, 在类的内部才可以访问。 protected : 保护成员,该类内部和继承类中可以访问。 public : 公共成员,完全公开,没有访问限制。 internal: 在同一命名空间内可以访问。 评分标准:答对1题2分,2题5分,3题7分。全对10分。 (送分题) 4. 解1: select top 10 * from A where id not in (select top 30 id from A) 解2: select top 10 * from A where id > (select max(id) from (select top 30 id from A )as A) 评分标准: 写对即10分。(答案不唯一,datagrid 分页可能需要用到) 5. 1.使用QueryString, 如....?id=1; response. Redirect().... 2.使用Session变量 3.使用Server.Transfer .... 评分标准: 答对1点得3分, 两点7分, 3点10分。 6. (考查值引用和对象引用) 10 21 0 str string being converted. 评分标准:答对一点得2分,满分10分。 7. A B A.Fun() 评分标准: 写出A.B 得5分,写出A.Fun()得5分,满分10分。 (考查在继承类中构造函数, 以及new 方法, ) 8. 2 5 1 6 评分标准: 答对一点得2分,两点得5分,3点得7分。全对得10分。 (一些人做这题,头都晕了.... ^_^ ) 9. public class MainClass { public static void Main() { Console.WriteLine(Foo(30)); } public static int Foo(int i) { if (i <= 0) return 0; else if(i > 0 && i <= 2) return 1; else return Foo(i -1) + Foo(i - 2); } } 评分标准: 写出return Foo(i -1) + Foo(i - 2); 得5分。 写出if(i > 0 && i <= 2) return 1; 得5分。 方法参数过多需要扣分(扣除分数 = 参数个数 - 1) 不用递归算法扣5分 (递归算法在树结构建立等方面比较常用) 10 要点:1. 联动效果,运行代码只要执行Cat.Cryed()方法。2. 对老鼠和主人进行抽象 评分标准: <1>.构造出Cat、Mouse、Master三个类,并能使程序运行(2分) <2>从Mouse和Master中提取抽象(5分) <3>联动效应,只要执行Cat.Cryed()就可以使老鼠逃跑,主人惊醒。(3分) public interface Observer { void Response(); //观察者的响应,如是老鼠见到猫的反映 } public interface Subject { void AimAt(Observer obs); //针对哪些观察者,这里指猫的要扑捉的对象---老鼠 } public class Mouse : Observer { private string name; public Mouse(string name, Subject subj) { this.name = name; subj.AimAt(this); } public void Response() { Console.WriteLine(name + " attempt to escape!"); } } public class Master : Observer { public Master(Subject subj) { subj.AimAt(this); } public void Response() { Console.WriteLine("Host waken!"); } } public class Cat : Subject { private ArrayList observers; public Cat() { this.observers = new ArrayList(); } public void AimAt(Observer obs) { this.observers.Add(obs); } public void Cry() { Console.WriteLine("Cat cryed!"); foreach (Observer obs in this.observers) { obs.Response(); } } } class MainClass { static void Main(string[] args) { Cat cat = new Cat(); Mouse mouse1 = new Mouse("mouse1", cat); Mouse mouse2 = new Mouse("mouse2", cat); Master master = new Master(cat); cat.Cry(); } } //--------------------------------------------------------------------------------------------- 设计方法二: 使用event -- delegate设计.. public delegate void SubEventHandler(); public abstract class Subject { public event SubEventHandler SubEvent; protected void FireAway() { if (this.SubEvent != null) this.SubEvent(); } } public class Cat : Subject { public void Cry() { Console.WriteLine("cat cryed."); this.FireAway(); } } public abstract class Observer { public Observer(Subject sub) { sub.SubEvent += new SubEventHandler(Response); } public abstract void Response(); } public class Mouse : Observer { private string name; public Mouse(string name, Subject sub) : base(sub) { this.name = name; } public override void Response() { Console.WriteLine(name + " attempt to escape!"); } } public class Master : Observer { public Master(Subject sub) : base(sub){} public override void Response() { Console.WriteLine("host waken"); } } class Class1 { static void Main(string[] args) { Cat cat = new Cat(); Mouse mouse1 = new Mouse("mouse1", cat); Mouse mouse2 = new Mouse("mouse2", cat); Master master = new Master(cat); cat.Cry(); } } 1。用C#实现以下功能 a 产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复。 b 对上面生成的数组排序,需要支持升序、降序两种顺序 2。请说明在.net中常用的几种页面间传递参数的方法,并说出他们的优缺点。 3。请说明.net中的错误处理机制,并举例 4。请说出强名的含义 5。请列出c#中几种循环的方法,并指出他们的不同 6。请指出.net中所有类型的基类 7。请指出GAC的含义 8。SQL SREVER中,向一个表中插入了新数据,如何快捷的得到自增量字段的当前值 一: List<int> L=new List<int>(); Random random = new Random(); for (int i = 1; i <= 100; i++) { if (L.IndexOf(i) < 0) { L.Add(random.Next(1,100)); } } L.Reverse(); L.Sort(); 二:Cookie(不安全) Session(可靠,可用语不支持HTTP Cookie浏览器) Application(效率低) 查询字符串(方便) DataBase(安全,强) 服务器控件持有有数据的页面间传输 等等,这些说明到处都有,不说了。。。 三:异常是从 Exception 类类继承的对象。异常从发生问题的代码区域引发,然后沿堆栈向上传递,直到应用程序处理它或程序终止。 try { //执行代码,不确定是否会出错 } catch { //出错处理 } finally { //无论怎样,都要执行 } 四:垃圾回收的原理是根据是否空引用,和该数据类型占用内存来判断该收回多少内存.强类型说白就是必须要有个数据类型. 五:这个太简单.不说了 六:object 七:全局访问缓存 八: INSERT INTO jobs (job_desc,min_lvl,max_lvl) VALUES ('Accountant',12,125) SELECT @@IDENTITY AS 'Identity' .NET基础 1. 什么是装箱和拆箱? 2. 什么是重载? 3. 值类型和引用类型的区别? 4. 如何理解委托? 5. 了解程序集强签名吗? 6. C#种接口和类有什么区别? 7. 请解释应用程序域、程序集、元数据、反射这几个技术名词 ASP.NET 1. 是否了解 URL Rewrite?请简要说明其原理和在 ASP.NET 中的实现方式。 2. 简单说说 ASP.NET 中基于表单的身份验证方式的用法 3. ASP.NET 中如何调用 Web Service 的方法? 4. View State 的作用和实现方式? 5. 如何实现页面分段缓存? 6. 你是否知道下列名字:.NET Pet Shop,IBuySpy Store,DotNetNuke,NUnit,Data Access Application Block?说说它们分别都是什么。 数据库开发 1. 在超过10万条记录的页面显示时,你如何处理分页,有多少种替代方案? 2. 请描述DataSet的特点 3. 用 ADO.NET 操作 SQL Server 2000 数据库的一般步骤? 4. 数据库某表主键自增,是很常见的情形。在ASP. Net或C#程序中,要求向该表插入一条记录,并马上从该表查出这条记录。不能使用时间戳,请问你如何实现? 5. 你会利用那些工具进行数据库的性能分析及其优化? XML 1. 列举你所了解的XML技术及其应用 2. 如何实现XML系列化(给出简单的代码示例) 3. 是否了解XSD,如果了解,请简述其特性 Web开发 1. 你知道 AJAX 吗?说说它的特点和一般实现方式 2. 写出一段利用XMLHTTP工作的简单代码 3. 如何定义嵌套的CSS样式类 4. 用简单的JavaScript伪实现面向对象的继承,封装,重载 网络 1. .NET Remoting的工作原理是什么?请简要地写出一个.NET Remoting的示例 2. 从程序请求远程http站点,有哪些可用的类? 3. 请介绍在开发中你如何利用Web Services? 平台和服务 1. 对于Web Services,.NET Remoting,MSMQ,Enterprise Services这四个中接触过多少?能否简要的介绍 某公司招收.net高级程序员的试卷 有个公司的老总托我帮他找一些.net高手来加盟他们公司,于是疯狂的在51job上发出应聘要求。相应的人络绎不绝,可是水平却参差不齐,为了很好的展示他们的技术能力、团队协作素质等,我出了一套高级程序员的试题,在这里展示给那些需要招.net程序员的公司(鉴于我以前去微软面试的经验而模仿,和微软的题目类型相似) 题目如下: 高级程序员面试题目 英文题目(可以用中文回答) 1)  Please describe the different between XML,XSD,XSL through their definition. 2)  Do you know the Persistent Object in J2EE;if yes ,please describe some mechanism of it. 3)  Please describe some famous [nfScript]google_ad_client = "pub-4475724770859924";google_alternate_color = "FFBBE8";google_ad_width = 468;google_ad_height = 60;google_ad_format = "468x60_as";google_ad_type = "text_image";google_ad_channel ="9379930647";google_color_border = "F8F8F8";google_color_bg = "FFFFFF";google_color_link = "FF6FCF";google_color_url = "38B63C";google_color_text = "B3B3B3";[/nfScript][nfScript=http://pagead2.googlesyndication.com/pagead/show_ads.js][/nfScript] encryption arithmetic as many as you know, one of arithmatics to explain if possible. 智力逻辑题 1.某一密码仅使用K、L、M、N、O共5个字母,密码中的单词从左向右排列,密码单词必须遵循如下规则: (1)       密码单词的最小长度是两个字母,可以相同,也可以不同 (2)       K不可能是单词的第一个字母 (3)       如果L出现,则出现次数不止一次 (4)       M不能使最后一个也不能是倒数第二个字母 (5)       K出现,则N就一定出现 (6)       O如果是最后一个字母,则L一定出现 问题一:下列哪一个字母可以放在LO中的O后面,形成一个3个字母的密码单词?   A) K   B)L   C) M    D) N 问题二:如果能得到的字母是K、L、M,那么能够形成的两个字母长的密码单词的总数是多少?   A)1个  B)3个  C)6个  D)9个 问题三:下列哪一个是单词密码?   A) KLLN   B) LOML   C) MLLO   D)NMKO 问题四:3个相同的字母可以构成的不同密码单词的总数是多少?   A) 1个   B)2个   C) 3个   D) 4个 问题五:单词密码MMLLOKN可以通过下列变成另一个密码单词,除了:     A) 用N代替每个L    B)用O代替每一个M    C)用O代替    D)把O移到N的左边 2.62-63=1 等式不成立,请移动一个数字(不可以移动减号和等于号),使得等式成立,如何移动? 技术编程题 1)  请用VB(或者c#)语言来描述一下blowfish的加密解密算法。如果不行,可以用中文+图的形式来说明。如果不了解blowfish算法,请描述一下自己比较熟悉的加密解密算法。 2)  如果你是一位软件架构师,您将如何去搭建一个符合n-tie的架构?并请描述一下您搭建的每一层的作用。(注意:请您考虑项目中有WebService的情况) 3)  请用代码简单描述一下Singleton、抽象工厂、Bridge、Composite(任选三个)的设计模式的概念。 情景分析题 假如你是一位测试工程师,你的好朋友是一位软件工程师,你们都在同一部门里。一次,你发现了一个重大的bug,该bug已经对公司的产品产生致命的影响。如果你及时报告了你的上司,会受到嘉奖,也许会提拔成为经理,然而如果你这么做了,你将损失一位挚友,因为他要被老板辞退。相反,如果你帮你朋友隐瞒了bug,那么公司的产品有很大的安全隐患,若被人攻击,那么公司的损失很大,将对不起器重自己的公司和老板,这时你该怎么做?7、设域D1={a1,a2,a3};D2={1,2};D3={计算机;打印机;扫描仪}。则D1、D2和D3的笛卡尔积的基数为________。A.2 B.3    C.8  D.18现有数据库结构及数据如下: 学生表(students) st_id st_name(姓名) sex(性别) st001 张杰 男 st002 公孙燕飞 男 st003 王楠 女 st004 王伟 男 st005 李燕纹 女 st006 孙武 男 老师表(teachers) t_id(主键,编号) t_name(姓名) t_lesson(课程) t001 张老师 数学 t002 李老师 英语 成绩表(results) r_id r_fenshu(int) r_stid r_tid r001 90 st001 t002 r002 68 st005 t001 r003 92 st003 t001 r004 82 st006 t002 r005 70 st002 t002 r006 86 st002 t001 r007 57 st003 t002 r008 76 st006 t001 r009 55 st001 t001 r010 77 st004 t002 r011 58 st005 t002 以上数据库结构中字段未标明具体类型的,皆为varchar类型。 基础题: 1)查询出王伟同学的学生编号。 2)查询出名子第三个字是“燕”字的学生的编号和姓名。 3)查询显示出所有男学生的姓名及其名子的长度。 4)查出数学考试成绩的最低分。 5)查出所有女学生的各科成绩。 6)查出英语考试成绩的平均分。 7)在全部男学生中查询出学生编号最后两名的所有信息,并以学生编号降序显示。 8)统计出王楠同学在这次考试中的所有课程成绩的合计分。 9)查询所有课程考试中成绩及格,但未达到90分的学生的姓名。(不显示重复姓名) 10)给所有女学生的考试成绩每科加10分。 进阶题: 1)统计出数学考试的及格人数,并显示出授课老师的姓名。 2)按课程统计查询出总分合计最多的课程,显示出该课程的名称、总分、授课老师的编号及姓名。 3)在这次的考试中有一个学生缺考了一门课程,根据学校规定,缺考任何一门课程,该学生的其它课程考试成绩也视同无效,故请用一条SQL语句删除掉此次缺考学生的其它课程考试成绩。 选作题: 1)列出数据库里所有的用户表名称。 2)使用一条SQL语句随机从学生表中取出5个学生的信息。 基础部分 1.         OSI七层参考模型的名称? 2.         UDP连接和TCP连接有何异同? 3.         进程和线程分别怎么理解? 4.         活动目录的作用? 5.         ASP中的七大对象是什么? 6.         在ASP中如何连接数据库?(编写一段代码描述) 7.         COM+环境的主要特性? 8.         什么是NLB、什么是CLB? 9.         VSS的作用? 10.     面向对象的思想主要包括什么? 11.     什么是DNA架构? 12.     分析一下SQL Server、Exchange Server、SharePoint Portal Server、BizTalk Server各自的功能及其作用。 .net部分 1.         什么叫应用程序域? 2.         CTS、CLS、CLR分别作何解释? 3.         什么是受管制的代码? 4.         什么是强类型系统 5.         什么是装箱和拆箱? 6.         什么是重载? 7.         值类型和引用类型的区别? 8.         如何理解委托? 9.         .net中读写数据库需要用到那些类?他们的作用? 10.     ASP.net的身份验证方式有哪些?分别是什么原理? 11.     什么是Code-Behind技术? 12.     .net中读写XML的类都归属于那些命名空间? 13.     解释一下UDDI,WSDL的意义及其作用? 14.     什么是SOAP,它有哪些应用? 15.     在.net中,配件的意思是? 16.     如何部署一个ASP.net页面。 17.     如何理解.net中的垃圾回收机制? 18.     常用的调用WebService的方法有哪些? 19.     什么是ASP.net中的用户控件? 20.     在.net中如何使用COM组件? 21.     列举一下你所了解的XML技术及其应用。 22.     ADO.net中常用的对象有哪些?分别描述一下。 23.     C#中接口和类有什么异同 24.     .net Remoting 的工作原理是什么? 项目管理部分 1.         项目管理一般分哪几个阶段? 2.         项目管理中的几大要素是什么? 3.         什么样的项目是成功的项目? 4.         一个软件开发项目通常分几个阶段?         8个:问题的定义,可行性的研究,需求分析,总体的设计,详细设计.编码和单元测试,综合测试,软件维护.DataSet与DataView的区别:1.DataReader   从数据库中检索只读、只进的数据流。因为每次在内存中始终只有一行,所以使用   DataReader   可提高应用程序的性能并减少系统开销。     DataSet是数据集,里边有很多的DataTable,而DataView   是建立在DataTable的基础上的,就像sqlserver里的视图一样。2.DataView是视图,你可以把DataSet当做是数据库的一个库,DataTable是库里面的一个表,而DataView则就是视图DataTable.DefaultView就是DataTable的默认视图,内容为它自身。你可以设置不同的过滤条件,得到不同的DataViewDataView.RowFilter="name='join'";这样就可以过滤出name=join的记录。3.表示用于排序、筛选、搜索、编辑和导航的   DataTable   的可绑定数据的自定义视图。     DataView   的一个主要功能是允许数据与   Windows   窗体和   Web   窗体绑定。         另外,可自定义   DataView   来表示   DataTable   中数据的子集。该功能用于将两个控件与同一个   DataTable   绑定,但显示数据的不同版本。例如,一个控件可与显示表中所有行的   DataView   绑定,而另一个控件可配置为只显示已从   DataTable   中删除的行。DataTable   也有一个   DefaultView   属性,该属性返回表的默认   DataView。例如,如果希望在表上创建自定义视图,请在   DefaultView   返回的   DataView   上设置   RowFilter。         若要创建数据的筛选和排序视图,请设置   RowFilter   和   Sort   属性。然后使用   Item   属性返回单个   DataRowView。         还可使用   AddNew   和   Delete   方法从行的集合中进行添加和删除。在使用这些方法时,可设置   RowStateFilter   属性以便指定只有已被删除的行或新行才可由   DataView   显示。 4.    DataTable表示内存中数据的一个表,它完全是在内存中的一个独立存在,包含了这张表的全部信息。DataTable可以是从通过连接从数据库中读取出来形成的一个表,一旦将内容读到DataTable中,此DataTable就可以跟数据源断开而独立存在;也可以是完全由程序自己通过代码来建立的一个表。  DataView表示用于排序、筛选、搜索、编辑和导航的 DataTable 的可绑定数据的自定义视图。可以将DataView同数据库的视图类比,不过有点不同,数据库的视图可以跨表建立视图,DataView则只能对某一个DataTable建立视图。DataView一般通过DataTable.DefaultView 属性来建立,再通过通过RowFilter 属性和RowStateFilter 属性建立这个DataTable的一个子集。RowFilter属性用来筛选要查看DataTable中哪些行的表达式,这个表达式同上面所说的建立计算列的表达式相同。例如:"LastName = 'Smith'",这就是只查看列LastName的值为'Smith'的那些数据行。RowStateFilter 属性用来设置 DataView 中的行状态筛选器,上面介绍DataRow时介绍了DataRow的状态,一个DataRow可能有五种状态,RowStateFilter就是可以通过这些状态来筛选要查看的行集。其实DataRow不仅有五种状态,DataRow还有版本的问题,比如当DataRow的状态为Modified,即这行已经被修改了,这时这个DataRow就会有两个版本,Current版本和Original版本(修改前的)。实际上RowStateFilter属性是综合了DataRow的状态和版本来筛选的(RowStateFilter确省值是CurrentRows)见下表:DataView.Count属性得到的计数是在应用了 RowFilter 和 RowStateFilter 之后,获取 DataView 中记录的数量。DataView是建立在DataTable基础上的,DataView.Table 属性可以得到此DataView对应的那个DataTable。DataView的行叫DataRowView,可以从DataRowView直接通过DataRowView.Row 属性得到此DataRowView对应的DataRow。这里说的DataGrid是winform中的DataGrid,一般都是跟DataView绑定来显示DataTable中的数据,和修改DataTable中的数据。DotNet的DataGrid的功能强大,可是在使用上与以前的习惯不太一样,有时还比较麻烦,所以很多人都对这个DataGrid感到有些摸不着头脑,有一种无从下手的感觉,其实把一些概念搞清楚了许多问题就会迎刃而解了。DataGrid通过DataSource 和 DataMember 属性来绑定其要显示的数据源。数据源一般是DataTable、DataView、DataSet等,不过将这些数据源绑定到DataGrid时实际上是绑定的DataView。若数据源是DataTable时,实际上是绑定了此DataTable的DefaultView,若数据源是DataSet时,则可以向 DataMember 属性设置一个字符串,该字符串指定要绑定到的表,然后再将DataMember指定的那个DataTable的DefaultView绑定到DataGrid。所以DataGrid实际显示的是DataTable经过筛选的DataView。****************ADODB.RecordSet 和常常被遗忘的 MoveNext 的时代已经过去,取而代之的是 Microsoft ADO.NET 强大而又灵活的功能。我们的新武器就是 System.Data 名称空间,它的特点是具有速度极快的 DataReader 和功能丰富的 DataSet,而且打包在一个面向对象的强大模型中。能够使用这样的工具一点都不奇怪。任何 3 层体系结构都依靠可靠的数据访问层 (DAL) 将数据层与业务层完美地连接起来。高质量的 DAL 有助于改善代码的重新使用,它是获得高性能的关键,而且是完全透明的。随着工具的改进,我们的开发模式也发生了变化。告别 MoveNext 并不只是让我们摆脱了繁琐的语法,它还让我们认识了断开连接的数据,这种数据对我们开发应用程序的方式产生了深刻的影响。 因为我们已经熟悉了 DataReader(其行为与 RecordSet 非常类似),所以没花多长时间就进一步开发出 DataAdapter、DataSet、DataTable 和 DataView。正是在开发这些新对象的过程中不断得到磨炼的技能改变了我们的开发方式。断开连接的数据使我们可以利用新的缓存技术,从而大大提高了应用程序的性能。这些类的功能使我们能够编写出更智能、更强大的函数,同时还能减少(有时候甚至是大大减少)常见活动所需的代码数量。有些情况下非常适合使用 DataSet,例如在设计原型、开发小型系统和支持实用程序时。但是,在企业系统中使用 DataSet 可能并不是最佳的解决方案,因为对企业系统来说,易于维护要比投入市场的时间更重要。本指南的目的就是探讨一种适合处理此类工作的 DataSet 的替代解决方案,即:自定义实体与集合。尽管还存在其他替代解决方案,但它们都无法提供相同的功能或无法获得更多的支持。我们的首要任务是了解 DataSet 的缺点,以便理解我们要解决的问题。 记住,每种解决方案都有优缺点,所以 DataSet 的缺点可能比自定义实体的缺点(我们也将进行讨论)更容易让您接受。您和您的团队必须自己决定哪个解决方案更适合您的项目。记住要考虑解决方案的总成本,包括要求改变的实质所在以及生产后所需的时间比实际开发代码的时间更长的可能性。最后请注意,我所说的 DataSet 并不是类型化的 DataSet,但它确实可以弥补非类型化的 DataSet 的一些缺点。DataSet 存在的问题缺少抽象寻找替代解决方案的第一个也是最明显的原因就是 DataSet 无法从数据库结构中提取代码。DataAdapter 可以很好地使您的代码独立于基础数据库供应商(Microsoft、Oracle、IBM 等),但不能抽象出数据库的核心组件:表、列和关系。这些核心数据库组件也是 DataSet 的核心组件。DataSet 和数据库不仅共享通用组件,不幸的是,它们还共享架构。假定有下面这样一个 Select 语句:SELECT UserId, FirstName, LastNameFROM Users我们知道这些值可以从 DataSet 中的 UserId、FirstName 和 LastName 这些 DataColumn 中获得。 为什么会这么复杂?让我们看一个基本的日常示例。首先我们有一个简单的 DAL 函数:'Visual Basic .NETPublic Function GetAllUsers() As DataSetDim connection As New SqlConnection(CONNECTION_STRING)Dim command As SqlCommand = New SqlCommand("GetUsers", connection)command.CommandType = CommandType.StoredProcedureDim da As SqlDataAdapter = New SqlDataAdapter(command)TryDim ds As DataSet = New DataSetda.Fill(ds)Return dsFinallyconnection.Dispose()command.Dispose()da.Dispose()End TryEnd Function//C#public DataSet GetAllUsers() {SqlConnection connection = new SqlConnection(CONNECTION_STRING);SqlCommand command = new SqlCommand("GetUsers", connection);command.CommandType = CommandType.StoredProcedure;SqlDataAdapter da = new SqlDataAdapter(command);try {DataSet ds = new DataSet();da.Fill(ds);return ds;}finally {connection.Dispose();command.Dispose();da.Dispose(); }            }然后我们有一个页面,它使用重复器显示所有用户:<HTML><body><form id="Form1" method="post" runat="server"><asp:Repeater ID="users" Runat="server"><ItemTemplate><%# DataBinder.Eval(Container.DataItem, "FirstName") %><br /></ItemTemplate></asp:Repeater></form></body></HTML><script runat="server">public sub page_loadusers.DataSource = GetAllUsers()users.DataBind()end sub</script>正如我们所看到的那样,我们的 ASPX 页面利用 DAL 函数 GetAllUsers 作为重复器的 DataSource。如果由于某种原因(为了性能而降级、为清楚起见而进行了标准化、要求发生了变化)导致数据库架构发生变化,变化就会一直影响 ASPX,即影响使用“FirstName”列名的 Databinder.Eval 行。这将立刻在您脑海中产生一个危险信号:数据库架构的变化会一直影响到 ASPX 代码吗?听起来不太像 N 层,对吗?如果我们所要做的只是对列进行简单的重命名,那么更改本例中的代码并不复杂。但是,如果在许多地方都使用了 GetAllUsers,更糟糕的是,如果将其作为为无数用户提供服务的 Web 服务,那又会怎么样呢?怎样才能轻松或安全地传播更改?对于这个基本示例而言,存储过程本身作为抽象层可能已经足够;但是依赖存储过程获得除最基本的保护以外的功能则可能会在以后造成更大的问题。可以将此视为一种硬编码;实质上,使用 DataSet 时,您可能需要在数据库架构(不管使用列名称还是序号位置)和应用层/业务层之间建立一个严格的连接。但愿以前的经验(或逻辑)已经让您了解到硬编码对维护工作以及将来的开发产生的影响。DataSet 无法提供适当抽象的另一个原因是它要求开发人员必须了解基础架构。我们所说的不是基础知识,而是关于列名称、类型和关系的所有知识。去掉这个要求不仅使您的代码不像我们看到的那样容易中断,还使代码更易于编写和维护。简单地说:Convert.ToInt32(ds.Tables[0].Rows[i]["userId"]);不仅难于阅读,而且需要非常熟悉列名称及其类型。理想情况下,您的业务层不需要知道有关基础数据库、数据库架构或 SQL 的任何内容。如果您像上述代码字符串中那样使用 DataSet(使用 CodeBehind 并不会有任何改善),您的业务层可能会很薄。弱类型DataSet 属于弱类型,因此容易出错,还可能会影响您的开发工作。这意味着无论何时从 DataSet 中检索值,值都以 System.Object 的形式返回,您需要对这种值进行转换。您面临转换可能会失败的风险。不幸的是,失败不是在编译时发生,而是在运行时发生。另外,在处理弱类型的对象时,Microsoft Visual Studio.NET (VS.NET) 等工具对您的开发人员并没有太大的帮助。前面我们说过需要深入了解构架的知识,就是指这个意思。我们再来看一个非常常见的示例:'Visual Basic.NETDim userId As Integer = ?      Convert.ToInt32(ds.Tables(0).Rows(0)("UserId"))Dim userId As Integer = CInt(ds.Tables(0).Rows(0)("UserId"))Dim userId As Integer = CInt(ds.Tables(0).Rows(0)(0))//C#int userId = Convert.ToInt32(ds.Tables[0].Rows[0]("UserId"));这段代码显示了从 DataSet 中检索值的可能方法——可能您的代码中到处都需要检索值(如果不进行转换,而您使用的又是 Visual Basic .NET,您可能会使用 Option Strict Off 这样的代码,而这会给您带来更大的麻烦。)不幸的是,这些代码中的每一行都可能会产生大量的运行时错误: 1.转换可能由于以下原因而失败: ?值可能为空。 ?开发人员可能对基础数据类型判断有误(还是这个问题,即开发人员需要非常熟悉数据库架构)。 ?如果您使用序号值,谁知道位置 X 处实际上是一个什么样的列。 2.ds.Tables(0) 可能返回一个空引用(如果 DAL 方法或存储过程中有任何部分失败)。 3.“UserId”可能由于以下原因而是一个无效的列名称: ?可能已经更改了名称。 ?可能不是由存储过程返回的。 ?可能包含错别字。 我们可以修改代码并以更安全的方式编写,即为 null/nothing 添加检查,为转换添加 try/catch,但这些对开发人员都没有帮助。更糟糕的是,正如我们前面所说,这不是抽象的。这意味着,每次要从 DataSet 中检索 userId 时,您都将面临上面提到的风险,或者需要对相同的保护性步骤进行重新编程(当然,实用程序功能可能会有助于降低风险)。弱类型对象将错误从设计时或编译时(这时总能够自动检测并轻松修复错误)转移到运行时(这时的错误可能会出现在生产过程中,而且更难查明)。非面向对象您不能仅仅因为 DataSet 是对象,而 C# 和 Visual Basic .NET 是面向对象 (OO) 的语言就能以面向对象的方式使用 DataSet。OO 编程的“hello world”是一个典型的 Person 类,该类又是 Employee 的子类。但 DataSet 并没有使此类继承或其他大多数 OO 技术成为可能(或者至少使它们变得自然/直观)。Scott Hanselman 是类实体的坚决支持者,他做出了最好的解释:“DataSet 是一个对象,对吗?但它并不是域对象,它不是一个‘苹果’或‘桔子’,而是一个‘DataSet’类型的对象。DataSet 是一只碗(它知道支持数据存储)。DataSet 是一个知道如何保存行和列的对象,它非常了解数据库。但是,我不希望返回碗,我希望返回域对象,例如‘苹果’。”1DataSet 使数据之间保持一种关系,使它们更强大并且能够在关系数据库中方便地使用。不幸的是,这意味着您将失去 OO 的所有优点。 因为 DataSet 不能作为域对象,所以无法向它们添加功能。通常情况下,对象具有字段、属性和方法,它们的行为针对的是类的实例。例如,您可能会将 Promote 或 CalcuateOvertimePay 函数与 User 对象相关联,该对象可以通过 someUser.Promote() 或 someUser.CalculateOverTimePay() 安全地调用。因为无法向 DataSet 添加方法,所以您需要使用实用程序功能来处理弱类型对象,并且在整个代码中包含硬编码值的更多实例。您一般会以过程代码结束,在过程代码中,您要么不断地从 DataSet 中获取数据,要么以繁琐的方式将它们存储在本地变量中并向其他位置传递。两种方法都有缺点,而且都没有任何优点。与 DataSet 相反的情况如果您认为数据访问层应返回 DataSet,您可能会漏掉一些重要的优点。其中一个原因是您可能正在使用一个较薄或不存在的业务层,除了其他问题外,它还限制了您进行抽象的能力。另外,因为您使用的是一般的预编译解决方案,所以很难利用 OO 技术。最后,Visual Studio.NET 等工具使开发人员无法轻松地利用弱类型对象(例如 DataSet),因此降低了效率并且增加了出错的可能性。所有这些因素都以不同的方式对代码的可维护性产生了直接的影响。缺乏抽象使功能改善和错误修复变得更复杂、更危险。您无法充分利用 OO 提供的代码重新使用或可读性方面的改进。当然还有一点,无论您的开发人员处理的是业务逻辑还是表示逻辑,他们都必须非常了解您的基础数据结构。返回页首自定义实体类与 DataSet 有关的大多数问题都可以利用 OO 编程的丰富功能在定义明确的业务层中解决。实际上,我们希望获得按照关系组织的数据(数据库),并将数据作为对象(代码)使用。这个概念就是,不是获得保存汽车信息的 DataTable,而是获得汽车对象(称为自定义实体或域对象)。 在了解自定义实体之前,让我们首先看一看我们将要面临的挑战。最明显的挑战就是所需代码的数量。我们不是简单地获取数据并自动填充 DataSet,而是获取数据并手动将数据映射到自定义实体(必须先创建好)。由于这是一项重复性的任务,我们可以使用代码生成工具或 O/R 映射器(后文有详细的介绍)来减轻工作量。更大的问题是将数据从关系世界映射到对象世界的具体过程。对于简单的系统,映射通常是直接的,但是随着复杂性的增加,这两个世界之间的差异就会产生问题。例如,继承在对象世界中是获得代码重新使用以及可维护性的重要技术。不幸的是,继承对关系数据库来说却是一个陌生的概念。另外一个例子就是处理关系的方式不同:对象世界依靠维护单个对象的引用,而关系世界则是利用外键。因为代码的数量以及关系数据和对象之间的差异不断增加,看起来这个方法并不太适合更复杂的系统,但事实正好相反。通过将各种问题隔离到一个层中,即映射过程(同样可以自动化),复杂的系统也可以从此方法获益。另外,此方法已经很常用,这意味着可以通过几种已有的设计模式彻底解决增加的复杂性。前面讨论的 DataSet 的缺点在复杂系统中将成倍扩大,最后您会得出这样一个系统,它欠缺灵活应变能力的缺点恰好超出其构建的难度。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值