聂梓晨吧 关注:27贴子:362
  • 11回复贴,共1

最近面试总结

只看楼主收藏回复

面试遇到的东西都在这。不管会或者不会都总结了下


IP属地:北京1楼2013-07-12 12:59回复
    1.强类型和弱类型(这个确实学过不过忘了)以下来自网络
    强类型和弱类型的区别? 这是自己在做MVC项目时,自己找的一些资料,希望可以帮到大家! ---强类型-------
    是自定义类所具有的优势。它使得对象处理的数据更容易被理解,而不需要与ADO.NET和XML编程模型打交道。这在大型系统里是很有用的,特别是当设计者定义了由自定义类所组成的数据访问层,并把设计向组织内的其他程序员发布的时候。当然,现在自定义类的使用有下降的趋势:它们需要编更多的代码,因为你必须创建.NET Framework所缺少的对象关系映射层。强/弱类型是指类型检查的严格程度的。语言有无类型,弱类型和强类型三种。无类型的不检查,甚至不区分指令和数据。弱类型的检查很弱,仅能严格的区分指令和数据。强类型的则严格的在编译期进行检查。 C# 是强类型语言;因此每个变量和对象都必须具有声明类型。
    为所有变量指定数据类型称为“强类型”。
    在.NET中使用强类型有以下优点:
    1.它为变量启用 IntelliSense? 支持。这允许您在输入代码时看到变量的属性和其他成员。
    2.它会运用编译器类型检查。这将捕捉到因溢出等错误而在运行时失败的语句。这也可以在不支持方法的对象上捕捉对方法的调用。
    3.执行速度更快 简单点:假设你在c#代码中,你定义了一个整型变量后,就不能赋一个字符型数据给这个变量
    (除非你用强制类型转换) 弱类型就像javascript
    var 可以接受任何类型


    IP属地:北京2楼2013-07-12 13:00
    回复
      2. DataReader与DataSet有什么区别?
      dataset表示一个数据集,是数据在内存中的缓存。 可以包括多个表
      DatSet 连接数据库时是非面向连接的。把表全部读到Sql中的缓冲池,并断开于数据库的连接 datareader 连接数据库时是面向连接的。读表时,只能向前读取,读完数据后有用户决定是否断开连接。


      IP属地:北京3楼2013-07-12 13:03
      回复
        3. c#中值类型和引用类型的区别
        1. 值类型的数据存储在内存的栈中;引用类型的数据存储在内存的堆中,而内存单元中只存放堆中对象的
        地址。 2. 值类型存取速度快,引用类型存取速度慢。 3. 值类型表示实际数据,引用类型表示指向存储在内存堆中的数据的指针或引用 4. 值类型继承自System.ValueType,引用类型继承自System.Object 5. 栈的内存分配是自动释放;而堆在.NET中会有GC来释放 6. 值类型的变量直接存放实际的数据,而引用类型的变量存放的则是数据的地址,即对象的引用。
        7. 值类型变量直接把变量的值保存在堆栈中,引用类型的变量把实际数据的地址保存在堆栈中,而实际数据则保存在堆中。注意,堆和堆栈是两个不同的概念,在内存中的存储位置也不相同,堆一般用于存储可变长度的数据,如字符串类型;而堆栈则用于存储固定长度的数据,如整型类型的数据int(每个int变量占用四个字节)。由数据存储的位置可以得知,当把一个值变量赋给另一个值变量时,会在堆栈中保存两个完全相同的值;而把一个引用变量赋给另一个引用变量,则会在堆栈中保存对同一个堆位置的两个引用,即在堆栈中保存的是同一个堆的地址。在进行数据操作时,对于值类型,由于每个变量都有自己的值,因此对一个变量的操作不会影响到其它变量;对于引用类型的变量,对一个变量的数据进行操作就是对这个变量在堆中的数据进行操作,如果两个引用类型的变量引用同一个对象,实际含义就是它们在堆栈中保存的堆的地址相同,因此对一个变量的操作就会影响到引用同一个对象的另一个变量。 注:此系列文章或为自己所写、或为转载于网络。仅用于个人收集及备忘。


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


          IP属地:北京6楼2013-07-17 08:27
          回复
            补充:
            一个类可以有多个接口 只能有继承一个父类
            抽象类可以有构造方法,接口中不能有构造方法。
            抽象类中可以有普通成员变量,接口中没有普通成员变量
            接口里边全部方法都必须是abstract的 抽象类的可以有实现了的方法
            抽象类中的抽象方法的访问类型可以是public,protected 但接口中的抽象方法只能是public类型的,并且默认即为public abstract类型
            抽象类中可以包含静态方法,接口中不能包含静态方法
            抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是public static final类型,并且默认即为public static final类型。


            IP属地:北京7楼2013-07-17 08:29
            回复
              5.老话题冒泡算法
              一个winform程序 主窗体上有一个按键和一个文本框 代码如下: private void button1_Click(object sender, EventArgs e) { //要排序的数据 string a = "012683746145239487519263876932847569823760126034127380598230485168756"; char[] b = a.ToCharArray(); int[] c = new int; //把要排序的数据转为int数组 for (int i = 0; i < b.Length; i++) { //0的acsii码对应的是48 因此要减去48 c[i] = Convert.ToUInt16(b[i])-48; } for (int i = 0; i < c.Length - 1; i++) { for (int j = 0; j < c.Length - 1 -i; j++) { C#快速入门c#Express2008开...c#与.net编程 if (c[j] > c[j + 1]) { //如果一个元素比后一个大 就交换他们的位置 var temp = c[j]; c[j] = c[j + 1]; c[j + 1] = temp; } } } string str = ""; for (int i = 0; i < c.Length; i++) { str += c[i].ToString(); } //输出排序后的字符串 textBox1.Text = str;


              IP属地:北京8楼2013-07-17 08:39
              回复
                7.类成员的几种访问形式
                private (私有)
                public (共有的)
                protected (protected 关键字是一个成员访问修饰符。 受保护成员在其所在的类中可由派生类实例访问)
                internal (关键字是类型和类型成员的访问修饰符。只有在同一个程序集的文件中,内部类型或者是成员才可以访问。这是msdn上对internal的描述)
                最基本的


                IP属地:北京11楼2013-07-17 09:27
                回复
                  8.stringbuffer与string 的区别
                  来自百度
                  String 操作后都是产生一个新的字符串对象,
                  而stringBuffer操作的始终是原对象,
                  当字符串长度大时,并且多字要进行字符串连接时,
                  使用 StringBuffer 性能要高许多。 而且 StringBuffer 是线程同步的。
                  所以应该可以看出来了


                  IP属地:北京12楼2013-07-22 12:59
                  回复
                    补充:
                    String操作的是字符串常量,不可改变。
                    Stringbufffer操作的是字符串变量,可以扩充和修改。当然,它的内部结构是数组。
                    对字符串进行多操作时,Stringbuffer效率比String要高。


                    IP属地:北京13楼2013-07-22 13:00
                    回复
                      啊帮忙


                      IP属地:安徽来自手机贴吧14楼2014-04-07 00:00
                      回复