zoukankan      html  css  js  c++  java
  • C# CLR 几道面试题

    1 static 成员和static构造函数

    using System;

    namespace testStatic
    {
        class Program
        {
            static void Main(string[] args)
            {
                Console.WriteLine(A.X.ToString()); //Return: 2
                Console.WriteLine(B.Y.ToString()); //Return: 1

                Console.Read();
            }
        }

        class A
        {
            public static int X = B.Y;

            static A()
            {
                ++X;
            }
        }
        class B
        {
            public static int Y = A.X;

            static B()
            {
                ++Y;
            }
        }
    }

    原则:

    1 语句按照顺序执行;

    2 static 成员函数初始化先于静态构造函数,限于一般构造函数

    3 static成员初始化和static构造函数只执行一次。

    分析

    当调用到第一条语句的时候:
    Console.WriteLine(A.X.ToString());
         首先是访问A这个类型,那么要对A这个类型的静态成员进行初始化,其次如果有静态构造函数,需要调用它。

    对于A的静态成员只有“X”,按照上一单元的过程:
    先给其分配空间,并辅以0来初始化.
    其次调用其对应的成员初始化语句来初始化这个静态成员。
    那么它的成员初始化语句是“X = B.Y”,那么需要访问“B.Y”来初始化X这个静态成员。
    对于“B.Y”的访问,就是访问B类型,也是和访问A一样,首先对这个类型的静态成员进行初始化,其次如果有静态构造函数,需要调用它。
    而B的静态成员只有“Y”,先给其分配空间,并辅以0来初始化.
    其次调用其对应的成员初始化语句来初始化这个静态成员,那么对于“Y = A.X”成员初始化语句,由于此时不是第一次访问类型A,所以不再进行静态成员初始化和静态构造函数的调用,对于“A.X”的访问是直接访问。此时 “A.X”的值为0,那么Y的值也为0;接着执行B的静态构造函数,这样处理后Y的值为1。
    那么对于A中的成员初始化语句“X = B.Y”,到此就执行完了.

    此时A类型中的X与B类型中的Y都是一样的,值为1。
    不过B中的静态成员初始化语句和静态构造函数都执行过了,而A中的静态构造函数还未执行。
    因此经过A的静态构造函数处理,A的X值为2,这也就是最后显示的结果。

    2 分页SQL语句

    2.1 方法1

    SELECT TOP 页大小 *
    FROM table1
    WHERE id NOT IN
    (
    SELECT TOP 页大小
    *(页数-1) id FROM table1 ORDER BY id
    )
    ORDER BY id

    2.1 方法2

    SELECT TOP 页大小 *
    FROM table1
    WHERE id
    >
    (
    SELECT ISNULL(MAX(id),
    0)
    FROM
    (
    SELECT TOP 页大小
    *(页数-1) id FROM table1 ORDER BY id
    ) A
    )
    ORDER BY id

    2.3 方法3

    SELECT TOP 页大小 * 
    FROM
    (
    SELECT ROW_NUMBER() OVER (ORDER BY id) AS RowNumber,
    * FROM table1
    ) A
    WHERE RowNumber
    > 页大小*(页数-1)

    分页方案二:(利用ID大于多少和SELECT TOP分页)效率最高,需要拼接SQL语句
    分页方案一:(利用Not In和SELECT TOP分页)   效率次之,需要拼接SQL语句
    分页方案三:(利用SQL的游标存储过程分页)    效率最差,但是最为通用

  • 相关阅读:
    广商14级软件工程团队第一次冲刺相关问题
    Github团队开发示例(二)
    广商14级软件工程团队作业分数
    Github团队开发示例(一)
    《Head First 设计模式》之装饰者模式
    《Head First 设计模式》之观察者模式
    《Head First 设计模式》之策略模式
    AD域登录验证
    广商14级软件工程:助教总结
    广商14级软件工程分数:第十四回合
  • 原文地址:https://www.cnblogs.com/zjwei55/p/2142938.html
Copyright © 2011-2022 走看看