.NET 面试编程题之程序题

1.一列数的规则如下: 1、1、2、3、5、8、13、21、34...... 求第30位数是多少,用递归算法实现。
  static void Main(string[] args)
        {
            Console.WriteLine(add(30));        
        }

        public static int add(int i)
        {
            if (i == 1 || i == 2)
                return 1;
            else
                return add(i - 1) + add(i - 2);
        }
2. override 和Overload(重载)的区别

override 与重载的区别。重载是方法的名称相同。参数或参数类型不同,进行多次重载以适应不同的需要
Override 是进行基类中函数的重写。实现多态。

3.委托是什么?事件和委托的区别

委托:委托是对函数方法的一种封装,事件是一种特殊的委托

4.值类型和引用类型的区别

值类型 分配在内存栈中,引用类型的具体内容分配在内存堆中,引用类型地址分配在栈中

5.ref关键字的作用

写在值类型前面表示 传入值类型的地址,也就是值类型的内容会随之改变
写在引用类型前面表示 传入引用类型在栈上的的实际地址,如果不加此关键字,在方法中修改类型的指向地址将不会起作用
<u>ref关键字表示传入栈的地址,不加ref表示传入栈中某一地址存的具体内容</u>

  class Program
    {
        static void Main(string[] args)
        {
            testc cc = new testc { name="AAAAA" };
            testc( cc);
           //cc的Name属性不会发生变化
        }
        public static void testc( testc m)
        {
            m = new testc { name = "BBBBBB" };
        }
    }

    class testc
    {
        public string name { get; set; }
        public int age { get; set; }
    }
6.Asp.Net六大对象是什么
  • Request-->读取客户端在Web请求期间发送的值
  • Response-->封装了页面执行期后返回到Http客户端的输出
  • Server-->提供对服务器上的属性和方法的访问
  • Application-->用于整个运行期间的状态对象
  • Session-->会话期状态保持对象,用于跟踪单一用户的会话
  • Cookie-->客户端保持会员信息的一种方法
7.MVC的路由选择是什么?

路由选择功能帮你定义一个URL规则,映射URL到控制器。

8.求以下表达式的值,写出您想到的一种或几种实现方法:1-2+3-4+……+m
if (m % 2 == 0)
                sum = -(m / 2);
            else
                sum = -(m - 1) / 2 + m;
9.CTS、CLS、CLR分别作何解释?

CTS:通用语言系统。CLS:通用语言规范。CLR:公共语言运行库。

10.程序集和命名空间的区别

程序集:物理分组
命名空间:逻辑分组

11.分析以下代码,完成填空
string strTmp = "abcdefg某某某";
int i= System.Text.Encoding.Default.GetBytes(strTmp).Length;
int j= strTmp.Length;

i=13,j=10
//一个中文占两个字节(byte)
12.try{}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?

会在return之前执行

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

session(viewstate) 简单,但易丢失
application全局
cookie简单,但可能不支持,可能被伪造
inputttype="hidden" 简单,可能被伪造
url参数 简单,显示于地址栏,长度有限
数据库 稳定,安全,但性能相对弱

14. 冒泡算法
 int[] array = new int[*];
            int temp = 0;
            for (int i = 0; i < array.Length - 1; i++)
            {
                for (int j = i + 1; j < array.Length; j++)
                {
                    if (array[j] < array[i])
                    {
                        temp = array[i];
                        array[i] = array[j];
                        array[j] = temp;
                    }
                }
            }
15. 设计模式六大原则

单一职责
里氏代换(用到子类的地方都可以用父类替代)
依赖倒置(高层模块不依赖于底层模块,二者都应依赖于抽象)
接口隔离原则(客户端不应依赖他不需要的接口)
迪米特法则(一个对象应该对其他对象保持最少了解)
开闭原则(对拓展开放,对修改关闭)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. [C#语言基础]请简述拆箱和装箱。 答: 装箱操作: 值类型隐式转换为object类型或由此值类型实现的任何...
    胤醚貔貅阅读 10,309评论 1 29
  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy阅读 13,143评论 1 51
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,308评论 19 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,898评论 18 399
  • 1、关注内在成长 因为下周要出差半月,想着提前理个发,就约了当天晚上8点半,考虑距离、路况和晚饭时间,我下午5点就...
    旅小羊阅读 3,142评论 0 0