.NET面试题(二)

基础方面:

1.简单的描述一下C# 中重写,重载,隐藏的概念

C#中重写(overide)是子类继承父类后,对父类中的方法进行行为改写。

重载是指方法名相同,参数不同

重写和隐藏的定义:

重写:基类方法声明为virtual(虚方法),派生类中使用override申明此方法的重写.

隐藏:基类方法不做申明(默认为非虚方法),在派生类中使用new声明此方法的隐藏。

这样看起来似乎不是很清晰明了,换成我自己的理解就是:

比如父类A,有个方法标记为virtual,a(){}   
子类B继承A,也声明一个方法a(){}   
如果B里面的a()使用override,那么访问A的方法时实际上调用了B里面声明的方法,相当于A的方法被覆盖了,new就不是,访问A的a还是A里面定义的方法,访问B就是B里面定义的方法.

说白了:new是覆盖,override是重载,“覆盖”并不意味着“删除”,但“重载”意味着“删除”,这就是“覆盖”和“重载”的区别

重写和隐藏的定义:
重写:基类方法声明为virtual(虚方法),派生类中使用override申明此方法的重写.
隐藏:基类方法不做申明(默认为非虚方法),在派生类中使用new声明此方法的隐藏。
这样看起来似乎不是很清晰明了,换成我自己的理解就是:
比如父类A,有个方法标记为virtual,a(){}
子类B继承A,也声明一个方法a(){}
如果B里面的a()使用override,那么访问A的方法时实际上调用了B里面声明的方法,相当于A的方法被覆盖了,new就不是,访问A的a还是A里面定义的方法,访问B就是B里面定义的方法.
说白了:new是覆盖,override是重载,“覆盖”并不意味着“删除”,但“重载”意味着“删除”,这就是“覆盖”和“重载”的区别
隐藏(new)示例:
using    System;
   class    A
   {
         public    void    F()
         {
               Console.WriteLine("A.F");
         }
   }
   class    B:    A
   {
         new    public    void    F()
         {
               Console.WriteLine("B.F");
         }
   }
   class    Test
   {
         static void Main(string[] args)
         {
               B    b    =    new    B();
               b.F();
               A    a    =    b;
               a.F();
         }
   }
   输出为
   B.F
   A.F
重写virtual(虚方法)示例
   using    System;
   class    A
   {
         public    virtual    void    F()
         {
               Console.WriteLine("A.F");
         }
   }
   class    B:    A
   {
         public    override    void    F()
         {
               Console.WriteLine("B.F");
         }
   }
   class    Test
   {
         static    void    Main()
         {
               B    b    =    new    B();
               b.F();
               A    a    =    b;
               a.F();
         }
   }
   输出为
   B.F
   B.F

隐藏(new)与重写virtual(虚方法):

2.执行string str=”xxx”+"yy”+"zz”所分配的内存

一个字符串的内存,上述代码中,所有字符串都是直接变量,C#编译器会在编译时连接他们,最终只会将一个字符串(即“xxxyyzz”)放入模块的元数据中。

如果对非直接量字符串使用+操作符,会在运行时进行连接。

3.string和String以及object与Object有什么区别

String是标准类型,string只是.NET平台给String类型的别称。String和string是一样的。

4.请看下面代码:

string str1=”a”;

   string str2=str1;

   str1=”a”+"b”;

   问str1是否和str2相等。

不相等。代码敲了下,运行结果:str1:ab  str2:b。搞不清楚出此题目的意义

5.简单的描述下HashTable和Dictionary的区别,能否说说这两种结构在遇到哈希冲突时的解决方案

6.ArrayList可以认为他是动态数组,请问他是怎么解决数组不需要预定义内存分配大小的问题的

7.简单的描述一下委托和事件以及他们的关系和区别.

8.我们知道.net平台的队列类(Queue)的内部是用数组(Array)实现的,请问你能想象一下是怎么实现的吗?

9.在这样的一个数组里面

A[0] = "are" 
    A[1] = "few" 
    A[2] = "girls" 
    A[3] = "in" 
    A[4] = "Missouri." 
    A[5] = "Rolla," 
    A[6] = "There"

需要寻找"There"需要经历O(n)的复杂度,随着n的增大,性能的消耗也会加大,请问怎么减少查找的性能损失.

10.C#里如何在某一时刻知道某个类的当前的实例个数,要求不影响正常的垃圾回收.

11.虚方法和接口的区别.虚方法的实现原理是什么?

虚方法有方法体,而接口没有;子类继承父类,对虚方法进行重写,类实现接口,对接口中的方法进行实现。

12.struct和class的区别,简单描述他们的相同点,不同点,以及在内存中的存储方式

13.能简单的叙述下动态规划算法的的步骤吗?

14.括号的匹配性检查,如何实现,请简述你的想法. 如{(x+(a+b)+c)},当用户以字符串输入时,如何判断是否括号完整匹配.

Web方面:

1.简单的描述下ViewState的实现原理

将对象转换为二进制,然后把二进制转换为Base64

2.Webservice如何进行针对调用者的权限管理

3.能够简单描述一下MVC干了了什么事情,有哪些好处吗?

4.能够描述一下asp.net的webform的生存周期吗?

DoNet框架方面:

1.什么是CLR.简单的描述一下.net的运行机制

CLR:公共语言运行库。

运行机制:

2.值类型和引用类型的区别,以及内存中的存储方式

值类型一般有默认值,不可以派生出其他的类型,存储在栈上,;引用类型相反;存储在堆上

3.简单描述一下装箱和拆箱,怎么避免带来的性能损失

装箱是值类型转换为引用类型;拆箱是引用类型转换为值类型。一般可以用泛型来存储数据集,如:List<String>,强制指定类型,即可以避免装箱和拆箱。

4.简单描述一下.net下的垃圾回收(GC)机制

垃圾回收分为0,1,2代,始终从第0代开始回收。

.NET面试题(二)

时间: 2024-11-04 10:59:27

.NET面试题(二)的相关文章

某支付公司笔试题二

题目:用java编写一段程序采用选择排序法对数组array = {25,15,42,16,12,36}进行由小到大排序. 1.选择排序法 该排序法的思想是每次从当前元素开始往后查找最小元素,将最小与当前元素进行位置互换.选择排序和冒泡排序相比优势在于交换次数减少. // 时间复杂度n(n-1)/2,即O(n^2) public static void selectSort(int[] array){ int k,tmp,len; len=array.length; for(int i=0;i<l

菜鸟系列之C/C++经典试题(二)

求子数组的最大和 题目描述: 输入一个整形数组,数组里有正数也有负数.数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和.求所有子数组的和的最大值.要求时间复杂度为O(n). 例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为3, 10, -4,7, 2,因此输出为该子数组的和18. 这个问题在各大公司面试中出现频率之频繁,被人引用次数之多,非一般面试题可与之匹敌.ok,下面,咱们来一步一步分析这个题. 分析与解法 解法一 求一个数组的最大子数组和

C++经典面试题(二)

最近看一些面试题,觉得如果自己被问到了,并不能很利落的回答出来. 一是从来没有这个意识,二是没有认真的梳理下. 下面对这些题做出分析,哈!个人能力有限,其中难免有疏漏,欢迎大家补充咯! 11.引用与指针有什么区别? [参考答案] 1) 引用必须被初始化,指针不必. 2) 引用初始化以后不能被改变,指针可以改变所指的对象. 3) 不存在指向空值的引用,但是存在指向空值的指针. 可以参考下 在 5 题中补充的内容 12.C++中virtual与inline的含义分别是什么? [参考答案] 在基类成员

Java面试题(二)

系统整理了一下有关Java的面试题,包括基础篇,javaweb篇,框架篇,数据库篇,多线程篇,并发篇,算法篇等等,陆续更新中.其他方面如前端后端等等的面试题也在整理中,都会有的. 注:文末有福利! 1.String s = new String("xyz");创建了几个StringObject?是否可以继承String类? 两个或一个都有可能,"xyz"对应一个对象,这个对象放在字符串常量缓冲区,常量"xyz"不管出现多少遍,都是缓冲区中的那一个

Java常考面试题(二)(转)

序言 昨天刚开始的"每日5题面试"这类文章,感觉还不错,把一些平常看似懂了的东西,弄清楚了.就像什么是虚拟机?这个问题,看起来知道,但是要说出个所以然来,又懵逼了,经常回过头来看看做过的 面试题,试着用自己的话说出来,看会不会,不会的话就继续看看,理解理解. ------WZY 一.Java中的方法覆盖(Overriding)和方法重载(Overloading)是什么意思? 自己解答: 覆盖:又称作重写, 前提条件:继承.   子类将父类中的某个方法,原封不动的抄下来,方法体中就自己写

几个让我印象深刻的面试题(二)

前言 原文地址&&我的博客知乎&&知乎专栏简书河南前端交流群官网 上次写了一篇几个让我印象深刻的面试题(一)没看过的同学可以去看哦.这次文章的题目来源:这里有超过20家的前端面试题,你确定不点进来看看?.如果上面的问题在我这篇文章里没有提到的话,那就说明有些问题可以很容易查得到或者很简单或者我能力有限不能解答出来的.如果有的问题你不会而且我又没有提的那就认为就是我能力有限不能解答出来吧.嘿嘿嘿.开个玩笑,不过可以在下面留言哦! 正文 还是老规矩先给题目,然后在看我的答案,有

【面试】iOS 开发面试题(二)

1. 我们说的oc是动态运行时语言是什么意思? 答案:多态. 主要是将数据类型的确定由编译时,推迟到了运行时. 这个问题其实浅涉及到两个概念,运行时和多态. 简单来说,运行时机制使我们直到运行时才去决定一个对象的类别,以及调用该类别对象指定方法. 多态:不同对象以自己的方式响应相同的消息的能力叫做多态.意思就是假设生物类(life)都用有一个相同的方法-eat; 那人类属于生物,猪也属于生物,都继承了life后,实现各自的eat,但是调用是我们只需调用各自的eat方法. 也就是不同的对象以自己的

web前端整套面试题(二)--今日头条面试题

12道单选,7道不定项选择,2道编程题 一.单选(12题) 1.[单选题]在HTML中,( )可以在网页上通过链接直接打开邮件客户端发送邮件. A.<a href=”telnet:[email protected]”>发送邮件</a> B.<a href=”mail:[email protected]”>发送邮件</a> C.<a href=”mailto:[email protected]”>发送邮件</a> D.<a hre

C++面试题二

1.在C++程序中调用被C编译器编译后的函数,为什么要加 extern "C"? 答案:C语言不支持函数重载,C++ 提供了C连接交换制定符号extern "C"解决名字匹配问题. 2.如何判断一段程序是由C编译程序还是由C++编译程序编译的? 答案:C++编译时定义了_cplusplus.C编译时定义了_STDC_. 3.main主函数执行完毕后,是否可能会再执行一段代码?给出说明. 答案:如果需要加入一段在main退出后执行的代码,可以使用atexit()函数注

PHP面试题二

1.抓取远程图片到本地,你会用什么函数? fsockopen, A 2.用最少的代码写一个求3值最大值的函数. function($a,$b,$c){* W0 z* u6 k+ e. L  a: }5 }    return $a>$b? ($a>$c? $a : $c) : ($b>$c? $b  :  $c );5 O: F6 v1 W# U} 3.用PHP打印出前一天的时间,打印格式是2007年5月10日22:21:21 Echo date('Y-m-d H:i:s',strtot