zoukankan      html  css  js  c++  java
  • 题目总结2

    1.根据线程安全的相关知识,分析以下代码,当调用test方法时 i>10时是否会引起死锁?并简要说明理由。

    public void test(int i)
    {
        lock(this)
        {
            if(i>10)
            {
                i--;
                test(i);
            }
        }
    }

    不会发生死锁。int型是按值传递的,所以每次改变都是一个副本,因此不会发生死锁。但如果int换做一个object,那么死锁会发生。

    2.简要谈一下您对.Net构架下remoting和Webservice两项技术的理解以及实际中的应用?

    WS主要是可利用HTTP,穿透防火墙。

    而Remoting可以利用TCP/IP,二进制传送提高效率。

    3.什么是方法签名?

    方法签名由方法名称和一个参数列表(方法的参数顺序和类型)组成。并没有返回值和访问修饰符。

    4.怎样实现类中的某个方法不会被覆盖(override)?

    class CC
        {
            public virtual void Print()
            {
                Console.WriteLine("CC");
            }
        }
    
        class DD:CC
        {
            public sealed override void Print()
            {
                Console.WriteLine("DD");
            }
        }

    sealed override。则在DD的子类中则无法覆盖DD中的Print方法。

     5.类可以继承多个接口么?如果这些接口中包含相同方法名呢?

    可以。可以使用 完全限定接口成员名

    6.const和readonly有什么区别?

    const在声明时必须初始化,而readonly则不需要。readonly只能在 声明时构造函数中被初始化

    const关键字用来声明编译时常量,readonly用来声明运行时常量。

    7.写出一条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)

    答案3:  select *
         from (
        select ROW_NUMBER() OVER (ORDER BY GroupID ASC) AS [GSort],*
        from AA
      ) AS TA
      where [GSort]>30 AND [GSort]<=40

    注:

    row_number() OVER (PARTITION BY COL1 ORDER BY COL2) 表示根据COL1分组,在分组内部根据 COL2排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内连续的唯一的)。

    8.请说明在.Net中常用的几种页面间传递参数的方法,并说明他们的优缺点。

    session(viewstate)简单,但易丢失;

    application是全局;

    cookie简单,但可能不支持,可能被伪造;

    input type="hidden"简单,可能被伪造;

    url参数简单,显示于地址栏,长度有限制;

    数据库稳定,安全,但性能相对较弱。

    9.接口和类的异同?

    接口和类都是类,不同的是,接口只包含方法或属性的声明,不包含具体实现方法的代码,接口可以实现多重继承,而类只能是单继承,继承接口的类必须实现接口中声明的方法或属性。

    接口主要定义一种规范,统一调用方法,在大型项目中,接口整发挥着重要的作用。

    10.DataReader 和DataSet 的异同。

    DataReader 和DataSet 最大的区别在于,DataReader 使用时始终占用SqlConnection,在线操作数据库..任何对SqlConnection 的操作都会引发
    DataReader 的异常..因为DataReader 每次只在内存中加载一条数据,所以占用的内存是很小的..因为DataReader 的特殊性和高性能.所以DataReader 是只进的..你读了第一条后就不能再去读取第一条了..DataSet 则是将数据一次性加载在内存中.抛弃数据库连接..读取完毕即放弃数据库连接..因为DataSet 将数据全部加载在内存中.所以比较消耗内存...但是确比DataReader 要灵活..可以动态的添加行,列,数据.对数据库进行回传更新操作。


    11.在c#中using 和new 这两个关键字有什么意义?说出你所知道的意义?

    using可以引入命名空间;在using语句里声明的变量,使用完后会自动调用Dispose方法(实现IDisposable接口)。

    new:实例化变量,调用构造函数,修饰一个方法,泛型声明中用于对泛型参数的约束。

    12.死锁的必要条件?怎么克服?

    系统资源不足;进程的推进的顺序不合适;资源分配不当;一个资源每次只能被一个进程使用,一个资源请求资源资源时,而此时这个资源已阻塞,对已获得资源不放,进程获得资源时,未使用完前,不能强行剥夺。

    13.接口是否可以继承接口?抽象类是否可以实现接口?抽象类是否可以继承实体类?

     接口可以继承接口;抽象类可以实现接口;抽象类也可以继承实体类,但有条件:实体类必须有明确的构造函数

    子类在实例化的时候,必定调用父类的构造函数。

     public class t
        {
            //若类未定义任何构造函数 系统会自动生成一个无参构造函数
            public t()
            {
                
            }
        }
    
        public abstract class c : t
        {
            //若类未定义任何构造函数 系统会自动生成一个无参构造函数 
            public c():base()//未指定base的情况下 子类默认调用base()
            {
                
            }
        }

     14.构造器Constructor 是否可以被继承?是否可以被Override?

     Constructor 不可以被继承,因此不能被重写(Overriding),但可以被重载(Overloading).

    15.当一个线程进入一个对象的方法后,其它线程是否可以进入该对象的方法?

     不可以,一个对象的方法只能由一个线程访问。

    16.用最有效的方法算出等已8 对于几?

    2<<3

    17.C#是否可以对内存直接进行操作?

    C#是可以对内存进行直接操作的,虽然很少用到指针,在用的时候需要在前面加上unsafe。在.NET中使用了垃圾回收机制(GC)功能,它代替了程序员,不过在C#中不可以直接使用finalize方法,而是在析构函数中调用基类的finalize()方法。

    非安全代码

    非安全代码就是不在CLR完全控制下执行的代码,它可能会导致一些问题,因此他们必须用“unsafe”进行表明。

    unsafe
    {
         //unsafe context
        ..................
    }

    在其他一些地方也可以使用关键字“unsafe”,例如我们可以将类或方法标明为非安全的:

    unsafe class Class1{}
    
    unsafe static void FastMove(int *p, int *pdi,int length){...}

    18.谈谈final,finally,finallize 的区别?

     final: 用于申明属性,方法和类;属性不可变,方法不可以被覆盖,类不可以被继承。

     Finally:是异常处理语句结构中,表示总是被执行的部分。

     Finalize:表示是object类个一个方法,在垃圾回收机制中执行的时候会被调用被回收对象的方法。

     19.HashMap 和Hashtable 区别?

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

    20.C#中委托是什么?事件是不是一种委托?

    委托是一种安全的类似于函数指针,但是他比指针要安全的多,它可以把方法作为一个参数传递给另一个方法,可以理解为指向函数的引用。

    事件是一种消息机制,它是一种委托,委托不带方法体。

    委托是安全的函数指针

    • C或C++,int (*P)() 定义了一个指向返回值为整型的函数指针,无需关心函数参数;
    • 委托则需指定具体的参数类型,个数等;

    21.new的几种用法?

    • 实例化对象;
    • 隐藏继承自父类的方法;
    • 泛型声明中对泛型参数的约束(泛型参数必须有公共无参构造函数);
    class ItemFactory<T> where T : new()
     {
       public T GetNewItem()
      {
                return new T();
             }
        }

     22.任何把一个Array 复制到Arraylist 中?

    • 使用foreach语句逐条加入到ArrayList;
    • 使用ArrayList的Adapter方法,ArrayList list1=ArrayList.Adapter(array);
    • 直接使用构造方法传入,因为Array实现了ICollection:ArrayList list3 = new ArrayList(array);

    arrayList.ToArray()可以转换为数组;

    23.概述反射和序列化?

    反射

       反射是一种动态分析程序集、模块、类型、字段等目标对象的机制。可以用反射动态的创建类型的实例,将类型绑定到现有的对象,或从现有的对象类型里获取类型,然后调用类型的方法或访问字段和属性等。

       他的实现依托于元数据。元数据是存储在PE(portable executable可移植执行)文件中的数据块,它详细记录了程序集或模块内部的结构,引用类型、程序集和清单。(大体可分为:定义表,引用表,清单表)。

    序列化

      对象的序列化,是指把实例对象转换为可方便存储、传输和交互的流。

      如:序列化一个对象,用HTTP通过internet在客户端和服务器之间传递该对象,在另一端用反序列化从该流中重新获得到对象。

    24.UDP和TCP连接有何异同?

      TCP是传输控制协议,提供的是面向连接的,是可靠的字节流服务;当用户和服务器彼此进行数据交互的时候,必须在他们数据交互前要进行TCP连接之后才能传输数据;TCP提供超时重拨检验数据功能。

      UDP是用户数据报协议,是一个简单的面向数据报的传输协议,是不可靠的连接。

    25.进程和线程的理解?

      进程是比线程大的程序运行单元,都是由操作系统的系统运行单元。一个程序中至少要有一个进程;一个进程中,至少要有一个线程;

    线程的划分尺度要比进程要小,进程拥有独立的内存单元,而线程是共享内存的,从而极大的提高了程序的运行效率,同一个进程中的多个线程可以并发执行。

    26.什么叫应用程序域?什么是托管代码?什么是强类型系统?什么是装箱和拆箱?什么是重载?CTS、CLS 和CLR 分别作何解释?

     应用程序域:就是为安全性、可靠性、隔离性和版本控制,及卸载程序提供的隔离边界。它通常由运行库宿主创建,应用程序域提供了一个更安全,用途更广的处理单元。

     托管代码:使用CLR编译语言编译器开发编写的代码就叫托管代码。

     装箱和拆箱:是把值类型转换为引用类型的过程,是隐式的,相反的过程就是拆箱,是显式的

     CTS 是公共类型系统,CLS 是公共语言规范,CLR 公共语言运行库。

     强类型系统:每个变量和对象都必须具有申明类型。

    27.值类型和引用类型的区别?

      值类型的值是存放在堆栈中的,作为函数参数传递时,改变其值,不改变变量原有的值,而引用类型的值是存放在堆中的,其引用的地址是存放在堆栈中的,改变其值也就改变了变量原有的 值。值类型不允许包含null 值,然而可空类型可以将null 赋值给值类型。

    28.ASP.net 的身份验证方式有哪些?

    windows,forms,passport。

    29.解释一下UDDI、WSDL 的意义及其作用?

       UDDI是统一描述集成协议,是一套基于Web的,分布式的,为WEB服务提供的信息注册的实现标准规范,同时为也是为企业本身提供的web服务注册以让别的企业能够发现并访问的协议标准。提供了基于标准的规范,用于描述和发现服务,还提供了一组基于因特网的实现。

      WSDL是一个基于XML的描述WEB服务的接口。

    30.SOAP?

     简单对象访问协议:是在分布式环境中,交换信息并实现远程调用的协议。是一个基于XML的协议。使用SOAP可以不考虑任何传输协议,但通常还是HTTP协议,可以允许任何类型的对象或代码。在任何平台上,以任一种语言相互通信,它是一种轻量级协议。

    31.如何理解.net 中的垃圾回收机制?

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

    32.能用foreach 遍历访问的对象需要实现?

    实现IEnumerable接口或声明GetEnumerator方法的类型。

     33.Heap 与stack 的差别?

      Heap是堆,空间由手动操作分配和释放的,它是存储区很大的自由存储区。

      Statck是栈,是由操作系统自动分配和释放的,栈上的空间是有限的。程序在编译期间变量和函数分配内存都是在栈上进行的,且在运行时函数调用时的参数传递也是在栈上运行的。

  • 相关阅读:
    为知笔记使用备注
    困惑激发的正能量
    再多坚持一会,相信自己就好!
    看博文《前路漫漫,何为终点?》的一点小感想
    前端的杂谈
    JS 客户端检测
    DOM
    JavaScript & XML
    我所认识的XPath
    Javascript 面向对象编程
  • 原文地址:https://www.cnblogs.com/zzunstu/p/3550722.html
Copyright © 2011-2022 走看看