• 面试必备2014


    基础知识

    1、可以使用抽象函数重写基类中的虚函数吗? 
    答:可以,需使用new修饰符显式声明,表示隐藏了基类中该函数的实现。

    class BaseClass
    {
        public virtual void A()
        {
    
        }
    }
    
    abstract class dClass : BaseClass
    {
        public new abstract void A();
    }

    2、接口可以包含哪些成员?
    答:接口可以包含属性、方法、索引指示器和事件,但不能包含常量、域、操作符、构造函数和析构函
    数,而且也不能包含任何静态成员。

    3、什么是虚函数?什么是抽象函数?
    答:
    虚函数:没有实现的,可以由子类继承并重写的函数。
    抽象函数:规定其非虚子类必须实现的函数,必须被重写。

    7、在.net托管代码总我们不必担心内存泄漏,这是因为有了?
    答:GC 垃圾收集器。

    GC是垃圾收集器。程序员不用担心内存管理,因为垃圾收集器会自动进行管
    理。要请求垃圾收集,可以调用下面的方法之一:
    System.gc()
    Runtime.getRuntime().gc()

    8、覆盖与重载的区别?
    答:
    覆盖:采用override声明,参数列表必须相同。
    重载:不需要特别声明,只要参数列表不同(个数不同或类型不同)。

    10、是否可以继承String类。
    答:String类是final类故不可以继承。

    11、简述private、protected、public、internal修饰符的访问权限。
    答:private : 私有成员, 在类的内部才可以访问。
    protected : 保护成员,该类内部和继承类中可以访问。
    public : 公共成员,完全公开,没有访问限制。
    internal: 在同一程序集内可以访问。

    12、下面这段代码输出什么?为什么?

    int i = 5;
    int j = 5;
    if (Object.ReferenceEquals(i, j))
        Console.WriteLine("Equal");
    else
        Console.WriteLine("Not Equal"); 

    答:不相等,因为比较的是对象

     14、什么是强类型系统?
    答:RTTI:类型识别系统, 每个变量和对象都必须具有申明类型。

    16、谈谈final、finally的区别。
    答:
    final:不能作为父类被继承。一个类不能声明是final,又声明为abstract。
    finally:用于try{}catch{}finally{}结构,用于异常处理时执行任何清除操作。

    18请你说说.NET中类和结构的区别?
    答:结构和类具有大体的语法,但是结构受到的限制比类要多。结构不能申明有默认的构造函数,为结构的副本是又编译器创建和销毁的,所以不需要默认的构造函数和析构函数。结构是值类型,所以对结构变量所做的改变不会影响其的原值,而类是应用类型,改变其变量的值会改变其原值。申明结构用Struck关键字,申明类用class关键字,向方法传递结构是时是通过值传递的,而不是通过引用。与类不同,结构的实例化可以不使用New关键字。类可以实现接口。

    // Structctor1.cs
    using System;
    
    public struct Point 
    {
       public int x, y;
       // Constructor:
       public Point(int x, int y) 
       {
          this.x = x;
          this.y = y;
       }
       // Override the ToString method:
       public override string ToString()
       {
          return(String.Format("({0},{1})", x, y));   
       }
    }
    
    class MainClass 
    {
       static void Main()  
       {
          // Initialize two points:
          Point p1 = new Point();
          Point p2 = new Point(10,15);
          Point p3;
          p3.x = 1;
    
          // Display the results using the overriden ToString method:
          Console.WriteLine("Point #1 (default initialization): {0}", p1);
          Console.WriteLine("Point #2 (explicit initialization): {0}", p2);
          Console.WriteLine("Point #3 (default initialization): {0}", p2);
    
       }
    }
    
    //输出
    //Point #1 (default initialization): (0,0)
    //Point #2 (explicit initialization): (10,15)
    //Point #3 (explicit initialization): (1,0)

    20接口是否可以继承接口?抽象类是否可以实现接口?抽象类是否可以继承实体类?
    答:接口是可以继承接口的,抽象类是可以实现接口的,抽象类可以继承实体类,但是有个条件,条件是,实体类必须要有明确的构造函数。

        public class ClassD
        {
            protected int x;
            protected int y;
    
            //这里!
            public ClassD() { }
    
            //如果存在非0个参数的构造函数, 必须带上面的0个参数的构造函数.
            public ClassD(int a, int b)
            {
                this.x = a;
                this.y = b;
            }
        }
    
        public abstract class ClassE : ClassD
        {
    
        }

    21构造器Constructor是否可以被继承?是否可以被Override?
    答:Constructor不可以被继承,因此不能被重写(Overriding),但可以被重载(Overloading).

    23用最有效的方法算出2乘以8对于几?
    答:2<<3.

    24C#是否可以对内存直接进行操作?
    答:这个问题比较难回答,也是个很大的问题。但是可以这样问答。C#是可以对内存进行直接操作的,虽然很少用到指针,但是C#是可以使用指针的,在用的时候需要在前边加unsafe,,在.net中使用了垃圾回收机制(GC)功能,它替代了程序员,不过在C#中不可以直接使用finalize方法,而是在析构函数中调用基类的finalize()方法。

    扩展阅读: http://blog.csdn.net/wudibaobei8/article/details/2474532

    25数组有没有Length()这和方法?string有没有这个方法?
    答:数组中没有这个方法,但有这个属性,string中有这个方法。

    26谈谈final,finally,finallize的区别?
    答:final用于申明属性,方法和类,表示属性不可变,方法不可以被覆盖,类不可以被继承。
      Finally是异常处理语句结构中,表示总是执行的部分。
      Finallize表示是object类一个方法,在垃圾回收机制中执行的时候会被调用被回收对象的方法。

    27HashMap和Hashtable区别?
    答:HashMap是Hashtable的轻量级实现,非线程安全的实现他们都实现了map接口,主要区别是HashMap键值可以为空null,效率可以高于Hashtable。

    扩展阅读: http://blog.csdn.net/tangkechu/article/details/6584991

    28Collection和Collections的区别?
    答:Collection是集合类的上级接口,Collections是针对集合类的一个帮助类,它提供一系列静态方法来实现对各种集合的搜索,排序,线程安全化操作。

    30New有种用法?
    答:有3种,第一种是,实例化如:New Class()
      第二种是,public new 隐藏基类的方法
      第三种是,在泛型类申明中的任何类型参数都必须有公共的无参构造函数。

    31概述反射和序列化?
    答:反射:要给发射下一个定义还是比较难的,这里先说说我的理解。反射提供了封装程序集,模块和类型对象,可以用反射动态地创建类型的实例,将类型绑定到现有对象,或者从现有对象类型里获取类型,然后调用类型的方法或访问字段和属性。
    序列化:将对象转换为另一种媒介传输的格式过程。如,序列化一个对象,用Http通过internet在客户端和服务器之间传递该对象,在另一端用反序列化从该流中重新得到对象。

    32Const和ReadOnly?
    答:Const用来申明编程时申明常量,ReadOnly用来申明运行时常量。

    35值类型和引用类型的区别?
    答:值类型的值是存放在栈(Stack)中的,改变其值,不改变变量原有的值; 而引用类型的值是存放在堆(heap)中的,其引用的地址是存放在栈(Stack)中的,改变其值也就改变了变量原有的值。值类型不允许包含null值,然而可空类型可以将null赋值给值类型l。

      特别注意的是,这种字面值的引用与类对象的引用不同。假定两个类对象的引用同时指向一个对象,如果一个对象引用变量修改了这个对象的内部状态,那么另一个对象引用变量也即刻反映出这个变化。相反,通过字面值的引用来修改其值,不会导致另一个指向此字面值的引用的值也跟着改变的情况。如上例,我们定义完a与b的值后,再令a=4;那么,b不会等于4,还是等于3。在编译器内部,遇到a=4;时,它就会重新搜索栈中是否有4的字面值,如果没有,重新开辟地址存放4的值;如果已经有了,则直接将a指向这个地址。因此a值的改变不会影响到b的值。


    装箱:从值类型转换到引用类型。
    拆箱:从引用类型转换到值类型。

    38、如何理解.net中的垃圾回收机制?
    答:.NET中的垃圾回收机制是引用程序对内存的回收和释放。当每次用new关键字创建一个对象时,运行库都要从托管堆中为其分配内存,因为空间是有限的,最终垃圾回收机制是要回收不用的内存的。已释放内存,重新使用。

    39、面向对象的三大基本原则?
    答:封装,继承,多态。

    40、能用foreach遍历访问的对象需要实现?
    答:需要实现IEnumerable接口和GetEnumerator ()方法。

    41、Heap与stack的差别?
    答:Heap是堆,空间是由手动操作分配和释放的,它的存储区很大的自由存储区。Stack是栈,是由是操作系统自动分配和释放的,栈上的空间是有限的。程序在编译期间变量和函数分配内存都是在栈上进行的,且在运行时函数调用时的参数的传递也是在栈上进行的。
    ==,比较的是栈内的内容,就是值类型的比较或者对引用的比较。
    值类型用“==”比较,就是比较的值,引用类型比较则是比较这两个引用类型的存在栈内的地址是否相同。
    Equals()分为虚拟方法和静态方法两种,比较的是引用,同ReferenceEquals(),但是Equals()的虚拟方法常常被override,以比较引用类型实际的值,这是它最重要的用途,比如.Net的string类就重写了Equals()方法,用于比较两个字符串的值是否相等,而不是引用是否相等。如果值类型用Equals()方法比较的话,结果一定返回为false,因为必须先进行装箱操作。

    42、堆和栈的区别?
    答:栈:由编译器自动分配、释放。在函数体中定义的变量通常在栈上。
    堆:一般由程序员分配释放。用new、malloc等分配内存函数分配得到的就是在堆上。

    43、什么是强命名程序集?
    答:程序集需要经过加密签名,强命名程序集可以部署到全局程序集缓存中,成为公共程序集。

    44、在C#中,string str = null 与 string str = “” 请尽量使用文字或图象说明其中的区别。
    答:string str = null 是不给他分配内存空间,而string str = "" 给它分配长度为空字符串的内存空间。

    47、请指出GAC的含义?
    答:全局程序集缓存。

    49、软件开发过程一般有几个阶段?每个阶段的作用?
    答:可行性分析(风险控制),需求分析,架构设计,代码编写,测试,部署,维护

    52、C#中property与 attribute的区别,他们各有什么用处,这种机制的好处在哪里?
    答:property是属性,用于对类中的字段进行包装,方便读、写类中的字段,其实质是set和get方法。
    attribute是特性,用来标识元数据的一些附加信息。可以使用反射提取元数据的特性,在编写代码时可以根据元数据的不同特性产生不同的行为。

    53、XML 与 HTML 的主要区别
    答:1. XML是区分大小写字母的,HTML不区分。
    2. 在HTML中,如果上下文清楚地显示出段落或者列表键在何处结尾,那么你可以省略</p>或者</li>之类的结束标记。在XML中,绝对不能省略结束标记。
    3. 在XML中,拥有单个标记而没有匹配的结束标记的元素必须用一个 / 字符作为结尾。这样分析器就知道不用查找结束标记了。
    4. 在XML中,属性值必须分装在引号中。在HTML中,引号是可用可不用的。
    5. 在HTML中,可以拥有不带值的属性名。在XML中,所有的属性都必须带有相应的值。

    55、C#可否对内存进行直接的操作?
    答:可以,C#可以使用指针,但要加上unsafe语句。

    14、CTS、CLS、CLR分别作何解释?
    答:CTS:通用语言系统。CLS:通用语言规范。CLR:公共语言运行库。

    27、分析以下代码,完成填空

    string strTmp = "abcdefg某某某";
    int i= System.Text.Encoding.Default.GetBytes(strTmp).Length;
    int j= strTmp.Length;

    以上代码执行完后,i= j=
    答:i=13,j=10

    37String s = new String("xyz");创建了几个String Object?
    答:两个对象,一个是“xyx”,一个是指向“xyx”的引用对象s。

    43try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?
    答:会执行,在return前执行。

    53short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
    答:short s1 = 1; s1 = s1 + 1;有错,s1是short型,s1+1是int型,不能显式转化为short型。可修改为s1 =(short)(s1 + 1) 。short s1 = 1; s1 += 1正确。

    92在.Net中所有可序列化的类都被标记为_____?
    答:[serializable]

    95当类T只声明了私有实例构造函数时,则在T的程序文本外部,______(可以 or 不可以)从T派生出新的类,____(可以 or 不可以)直接创建T的任何实例。
    答:不可以,不可以。

    96下面这段代码有错误么?

    switch (i){
          case(): CaseZero();break; //case()条件不能为空
          case 1: CaseOne();break;
          case 2: CaseTwo();break;
          default; //wrong,缺少":break;"
    }

    98net的错误处理机制是什么?
    答:.net错误处理机制采用try->catch->finally结构,发生错误时,层层上抛,直到找到匹配的Catch为止。

    99利用operator声明且仅声明了==,有什么错误么?
    答:要同时修改Equale和GetHash() ? 重载了"==" 就必须重载 "!="

    44、两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对?
    答:不对,有相同的hash code。

    45、swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?
    答:switch(expr1)中,expr1是一个整数表达式。因此传递给 switch 和case 语句的参数应该是 int、 short、 char 或者 byte。long,string 都不能作用于swtich。

    48、abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?
    答:都不能。

    49、List, Set, Map是否继承自Collection接口?
    答:List,Set是Map不是

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

    58、堆和栈的区别?
    答:
    栈:由编译器自动分配、释放。在函数体中定义的变量通常在栈上。
    堆:一般由程序员分配释放。用new、malloc等分配内存函数分配得到的就是在堆上。

    63、请指出GAC的含义?
    答:全局程序集缓存。

    67、在c#中using关键字有什么意义?
    答:using 引入名称空间或者使用非托管资源

    68、需要实现对一个字符串的处理,首先将该字符串首尾的空格去掉,如果字符串中间还有连续空格的话,仅保留一个空格,即允许字符串中间有多个空格,但连续的空格数不可超过一个.
    答:

    string inputStr=" xx xx ";
    inputStr=Regex.Replace(inputStr.Trim()," *"," ");

    71、什么是反射?
    答:动态获取程序集信息

    78、列举一下你所了解的XML技术及其应用
    答:xml用于配置,用于保存静态数据类型.接触XML最多的是web Services..和config

    81、什么是SOAP,有哪些应用。
    答:simple object access protocal,简单对象接受协议.以xml为基本编码结构,建立在已有通信协议上(如http,不过据说ms在搞最底层的架构在tcp/ip上的soap)的一种规范Web Service使用的协议..

    84、c#中的三元运算符是?
    答:?:。

    85、当整数a赋值给一个object对象时,整数a将会被?
    答:装箱。

    86、类成员有_____种可访问形式?
    答:this.;new Class().Method;

    87、public static const int A=1;这段代码有错误么?是什么?
    答:const不能用static修饰。

    88、float f=-123.567F; int i=(int)f;i的值现在是_____?
    答:-123。

    89、委托声明的关键字是______?
    答:delegate.

    90、用sealed修饰的类有什么特点?
    答:密封,不能继承。

    106、C#中 property 与 attribute的区别,他们各有什么用处,这种机制的好处在哪里?
    答:attribute:自定义属性的基类;property :类中的属性

    107、C#可否对内存进行直接的操作?
    答:在.net下,.net引用了垃圾回收(GC)功能,它替代了程序员 不过在C#中,不能直接实现Finalize方法,而是在析构函数中调用基类的Finalize()方法

    111、Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?
    答:不能,可以实现接口

    112、Static Nested Class 和 Inner Class的不同,说得越多越好
    答:Static Nested Class是被声明为静态(static)的内部类,它可以不依赖于外部类实例被实例化。而通常的内部类需要在外部类实例化后才能实例化。

    113、,&和&&的区别。
    &是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and).

    114、HashMap和Hashtable的区别。
    答:HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高于Hashtable.

    116、Overloaded的方法是否可以改变返回值的类型?
    答:Overloaded的方法是可以改变返回值的类型。

    117、error和exception有什么区别?
    答:error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况。exception 表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况。

    121、描述一下C#中索引器的实现过程,是否只能根据数字进行索引?
    答:不是。可以用任意类型。

    122、在C#中,string str = null 与 string str = " " 请尽量使用文字或图象说明其中的区别。
    答:null是没有空间引用的;" " 是空间为0的字符串;

    127、什么是WSE?目前最新的版本是多少?
    答:WSE (Web Service Extension) 包来提供最新的WEB服务安全保证,目前最新版本2.0。

    130、abstract class和interface有什么区别?
    答:

          声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性
          可通过实现这样的接口而获得。接口中的所有方法都是抽象的,没有一个有程序体。接口只可以定义static final成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof 运算符可以用来决定某对象的类是否实现了接口。

    委托与事件

    29C#中委托是什么?事件是不是一种委托?
    答:委托是一种安全的类似与函数指针,但是她比指针要安全的多,它可以把方法作为一个参数传递给另一个方法,可以理解为指向函数的引用。事件是一种消息机制,它是一种委托,委托不带方法体。

    55、委托与事件的联系和区别

    扩展阅读: http://www.cnblogs.com/dirichlet/archive/2013/09/15/3247020.html


     ASP.NET

    6、在ASP.net中所有的自定义用户控件都必须继承自?
    答:Control类

    9、ASP.NET页面传值的几种方式?
    答:
    1、使用Request.QueryString或Request.Form。
    2、使用Session,Cookies,Application。
    3、使用Server.Transfer。
    4、使用PostBackUrl传递。

    13、什么是ASP.NET中的用户控件。
    答:ASP.NET中用户控件很关键一点是要区别于自定义控件。用户控件说白了其实就像是asp中的
    include,只是功能更加强大。用户控件易于创建但易用性差,自定义控件难创建,但易用性好。

    17、ASP.NET与ASP相比,有哪些进步。
    答:
    ASP.NET编译型,面向对象编程语言,代码与界面分离。
    ASP解释型,脚本语言。

    36ASP.net的身份验证方式有哪些?
    答:windows,forms,passport

    扩展阅读: http://baike.baidu.com/view/1182418.htm

    37什么是单点登录

    扩展阅读: http://www.blogjava.net/Jack2007/archive/2008/04/10/191795.html

    48、向服务器发送请求有几种方式?
    答:get和post。get一般为链接方式,post一般为按钮方式。

    51、什么是code-Behind技术。
    答:将一个页面的Html部分与服务器代码分离,页面的Html文件使用aspx为扩展名,页面代码文件使用cs为扩展名。方便代码编写和整理,将页面展示与后台代码相互剥离。

    57、大概描述一下ASP.NET服务器控件的生命周期
    答:初始化
    加载视图状态
    处理回发数据
    加载
    发送回发更改通知
    处理回发事件
    预呈现
    保存状态
    呈现
    处置
    卸载

    31、公司要求开发一个继承System.Windows.Forms.ListView类的组件,要求达到以下的特殊功能:点击ListView各列列头时,能按照点击列的每行值进行重排视图中的所有行 (排序的方式如DataGrid相似)。根据您的知识,请简要谈一下您的思路
    答:根据点击的列头,包该列的ID取出,按照该ID排序后,在给绑定到ListView中。

    56、Session有什么重大BUG,微软提出了什么方法加以解决?
    答:是iis中由于有进程回收机制,系统繁忙的话Session会丢失,可以用Sateserver或SQL Server数据库的方式存储Session不过这种方式比较慢,而且无法捕获Session的END事件。

    118、<%# %> 和 <% %> 有什么区别?
    答:<%# %>表示绑定的数据源
    <% %>是服务器端代码块

    119、你觉得ASP.NET 2.0(VS2005)和你以前使用的开发工具(.Net 1.0或其他)有什么最大的区别?你在以前的平台上使用的哪些开发思想(pattern /architecture)可以移植到ASP.NET 2.0上 (或者已经内嵌在ASP.NET 2.0中)
    答:1 ASP.NET 2.0 把一些代码进行了封装打包,所以相比1.0相同功能减少了很多代码.
    2 同时支持代码分离和页面嵌入服务器端代码两种模式,以前1.0版本,.NET提示帮助只有在分离的代码文件,无 法 在页面嵌入服务器端代码获得帮助提示,
    3 代码和设计界面切换的时候,2.0支持光标定位.这个我比较喜欢
    4 在绑定数据,做表的分页.Update,Delete,等操作都可以可视化操作,方便了初学者
    5 在ASP.NET中增加了40多个新的控件,减少了工作量

    Windows Form

    101、在.net(C# or vb.net)中如何取消一个窗体的关闭。

    private void Form1_Closing(object sender, System.ComponentModel.CancelEventArgs e)
    {
         e.Cancel=true;
    }

    102、在.net(C# or vb.net)中,Appplication.Exit 还是 Form.Close有什么不同?
    答:一个是退出整个应用程序,一个是关闭其中一个form。 

    126、公司要求开发一个继承System.Windows.Forms.ListView类的组件,要求达到以下的特殊功能:点击ListView各列列头时,能按照点击列的每行值进行重排视图中的所有行 (排序的方式如DataGrid相似)。根据您的知识,请简要谈一下您的思路:
    答:根据点击的列头,包该列的ID取出,按照该ID排序后,在给绑定到ListView中

    数据访问

    5、ADO.net常用对象有哪些?
    答:
    Connection:数据库连接对象
    Command:数据库命令
    DataReader:数据阅读器
    DataSet:数据集

    56、ADO.NET相对于ADO等主要有什么改进?
    答:
    ado.net不依赖于ole db提供程序,而是使用.net托管提供的程序。
    不使用COM。
    不支持动态游标和服务器端游标。
    可以断开connection而保留当前数据集可用。
    强类型转换。
    xml支持。

    65、DataReader与Dataset有什么区别?
    答:一个是只能向前的只读游标,一个是内存中虚拟的数据库。

    108、ADO。NET相对于ADO等主要有什么改进?
    答:1:ado.net不依赖于ole db提供程序,而是使用.net托管提供的程序,2:不使用com3:不在支持动态游标和服务器端游 4:,可以断开connection而保留当前数据集可用 5:强类型转换 6:xml支持

    线程

    4、什么是Web Service?
    答:Web Service是基于网络的、分布式的模块化组件,它执行特定的任务,遵守具体的技术规范,这些
    规范使得Web Service能与其他兼容的组件进行互操作。

    19死锁的必要条件?怎么克服?
    答:

    产生死锁的原因主要是:
    (1) 因为系统资源不足。
    (2) 进程运行推进的顺序不合适。
    (3) 资源分配不当等。

        如果系统资源充足,进程的资源请求都能够得到满足,死锁出现的可能性就很低,否则
    就会因争夺有限的资源而陷入死锁。其次,进程运行推进顺序与速度不同,也可能产生死锁。
    产生死锁的四个必要条件:
    (1) 互斥条件:一个资源每次只能被一个进程使用。
    (2) 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。
    (3) 不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。
    (4) 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。
    这四个条件是死锁的必要条件,只要系统发生死锁,这些条件必然成立,而只要上述条件之
    一不满足,就不会发生死锁。

    死锁的解除与预防:
        理解了死锁的原因,尤其是产生死锁的四个必要条件,就可以最大可能地避免、预防和
    解除死锁。所以,在系统设计、进程调度等方面注意如何不让这四个必要条件成立,如何确
    定资源的合理分配算法,避免进程永久占据系统资源。此外,也要防止进程在处于等待状态
    的情况下占用资源。因此,对资源的分配要给予合理的规划。

    22 当一个线程进入一个对象的方法后,其它线程是否可以进入该对象的方法?
    答:不可以,一个对象的方法只能由一个线程访问。

    33进程和线程分别该怎么理解?
    答:进程是比线程大的程序运行单元,都是由操作系统所体会的系统运行单元,一个程序中至少要有一个进程,有一个进程中,至少要有一个线程,线程的划分尺度要比进程要小,进程拥有独立的内存单元,线程是共享内存,从而极大的提高了程序的运行效率同一个进程中的多个线程可以并发执行。

    进程是系统进行资源分配和调度的单位;线程是CPU调度和分派的单位,一个进程可以有多个线程,这些线程共享这个进程的资源。.

    34什么叫应用程序域?什么是托管代码?CTS、CLS和CLR分别作何解释?
    答:应用程序域:就是为安全性,可靠性,隔离性,和版本控制,及卸载程序提供的隔离边界。它通常由运行库宿主创建,应用程序域提供了一个更安全,用途更广的处理单元。

    扩展阅读: http://www.cnblogs.com/leslies2/archive/2012/03/06/2379235.html
      托管代码:使用CLR编译语言编辑器开发编写的代码就叫托管代码。
      CTS是公共类型系统,CLS是公共语言规范,CLR公共语言运行库。

    45、当一个线程进入一个对象的一个Synchronized方法后,其它线程是否可进入此对象的其它方法?
    答:不能,一个对象的一个Synchronized方法只能由一个线程访问。

    45、[MethodImpl(MethodImplOptions.Synchronized)]、lock(this)与lock(typeof(...))

    扩展阅读: http://www.cnblogs.com/artech/archive/2008/10/17/1313209.html

    39、启动一个线程是用run()还是start()?
    答:启动一个线程是调用start()方法,使线程所代表的虚拟处理机处于可运行状
    态,这意味着它可以由JVM调度并执行。这并不意味着线程就会立即运行。run()
    方法可以产生必须退出的标志来停止一个线程。

    47、当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?
    不能,一个对象的一个synchronized方法只能由一个线程访问。

    52、sleep() 和 wait() 有什么区别?
    答:sleep()方法是使线程停止一段时间的方法。在sleep 时间间隔期满后,线程不一定立即恢复执行。这是因为在那个时刻,其它线程可能正在运行而且没有被调度为放弃执行,除非(a)“醒来”的线程具有更高的优先级(b)正在运行的线程因为其它原因而阻塞。wait()是线程交互时,如果线程对一个同步对象x 发出一个wait()调用,该线程会暂停执行,被调对象进入等待状态,直到被唤醒或等待时间到。

    73、什么是Application Pool?
    答:Web应用,类似Thread Pool,提高并发性能。

    Web Service

    58、什么是WSE?目前最新的版本是多少?
    答:WSE (Web Service Extension) 包来提供最新的WEB服务安全保证,目前最新版本2.0。

    59UDP和TCP连接有和异同?
    答:TCP是传输控制协议,提供的是面向连接的,是可靠的,字节流服务,当用户和服务器彼此进行数据交互的时候,必须在他们数据交互前要进行TCP连接之后才能传输数据。TCP提供超时重拨,检验数据功能。UDP是用户数据报协议,是一个简单的面向数据报的传输协议,是不可靠的连接。

    60解释一下UDDI、WSDL的意义及其作用?
    答:UDDI是统一描述集成协议,是一套基于Web的,分布式的,为WEB服务提供的信息注册的实现标准规范,同时为也是为企业本身提供的Web服务注册以让别的企业能够发现并访问的协议标准。提供了基于标准的规范,用于描述和发现服务,还提供了一组基于因特网的实现。
    WSDL这是一个基于XML的描述WEB服务的接口。

    61、常用的调用WebService的方法有哪些?
    答:1.使用WSDL.exe命令行工具。2.使用VS.NET中的Add Web Reference菜单选项

    62、简要谈一下您对微软.NET 构架下remoting和webservice两项技术的理解以及实际中的应用。
    答:webservice主要是可利用HTTP,穿透防火墙。而Remoting可以利用TCP/IP,二进制传送提高效率。

    63、什么是SOAP?简单对象访问协议 SOAP:Simple Object Access Protocol
    答:是简单访问协议。是在分布式环境中,交换信息并实现远程调用的协议。是一个基于XML的协议。使用SOAP,可以不考虑任何传输协议,但通常还是HTTP协议,可以允许任何类型的对象或代码,在任何平台上,以任一种语言相互通信。它是一种轻量级协议。
    SOAP 包括四个部分:
    SOAP 封装:它定义了一个框架 , 该框架描述了消息中的内容是什么,谁应当处理它以及它是可选的还是必须的。
    SOAP 编码规则:它定义了一种序列化的机制,用于交换应用程序所定义的数据类型的实例。
    SOAP RPC 表示:它定义了用于表示远程过程调用和应答的协定。
    SOAP 绑定:定义了一种使用底层传输协议来完成在节点间交换SOAP封装的约定。

    64、Net Remoting 的工作原理是什么?
    答:服务器端向客户端发送一个进程编号,一个程序域编号,以确定对象的位置。

    30、简要谈一下您对微软.NET 构架下remoting和webservice两项技术的理解以及实际中的应用。
    答:WS主要是可利用HTTP,穿透防火墙。而Remoting可以利用TCP/IP,二进制传
    送提高效率。

    数据库

     15、写出一条Sql语句:取出表A中第31到第40记录(SQLServer,以自动增长的ID作为主键,注意:ID可能不是连续的。
    答:扩展阅读: 常用SQL Server分页方式

    46、如何处理几十万条并发数据?
    答:用存储过程或事务。取得最大标识的时候同时更新。注意主键不是自增量方式这种方法并发的时候是不会有重复主键的,取得最大标识要有一个存储过程来获取。

    50、什么叫做SQL注入,如何防止?请举例说明。
    答:利用sql关键字对网站进行攻击。过滤关键字、使用存储过程等。

    28、SQLSERVER服务器中,给定表 table1 中有两个字段 ID、LastUpdateDateID表示更新的事务号, LastUpdateDate表示更新时的服务器时间,请使用一句
    SQL语句获得最后更新的事务号
    答:

    Select ID 
    FROM table1 
    Where LastUpdateDate = 
              (
               Select MAX(LastUpdateDate) 
               FROM table1
              )

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

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

    逻辑问题 

    104、某一密码仅使用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
    答案:B

    问题二:如果能得到的字母是K、L、M,那么能够形成的两个字母长的密码单词的总数是多少?
    A)1个 B)3个 C)6个 D)9个
    答案:A

    问题三:下列哪一个是单词密码?
    A) KLLN B) LOML C) MLLO D)NMKO
    答案:C

    8、62-63=1 等式不成立,请移动一个数字(不可以移动减号和等于号),使得等式成立,如何移动?
    答案:62移动成2的6次方

    Javascript

    109、写一个HTML页面,实现以下功能,左键点击页面时显示“您好”,右键点击时显示“禁止右键”。并在2分钟后自动关闭页面。

    <script language=javascript>
        setTimeout('window.close();',3000);
        function show()
        {
            if (window.event.button == 1)
            {
                 alert("左");
            }
            else if (window.event.button == 2)
            {
                alert("右");
            }
        }
    </script>

    其它

    实例代码:

     下载

  • 相关阅读:
    win7系统激活最简单方法
    如何删除计算机多系统中不需要了的系统?
    SQL SERVER 中 GO 的用法2
    SQL SERVER 中 GO 的用法
    SQL SERVER中架构的理解
    linux诡异的半连接(SYN_RECV)队列长度
    skbtrace
    IO之流程与buffer 图
    MYSQL 缓存详解 [myownstars] 经典博客
    TCP 函数
  • 原文地址:https://www.cnblogs.com/xachary/p/3968650.html
Copyright © 2020-2023  润新知