.NET面试题(二)
基础方面:
1.简单的描述一下C# 中重写,重载,隐藏的概念
C#中重写(overide)是子类继承父类后,对父类中的方法进行行为改写。
重载是指方法名相同,参数不同
子类B继承A,也声明一个方法a(){}
如果B里面的a()使用override,那么访问A的方法时实际上调用了B里面声明的方法,相当于A的方法被覆盖了,new就不是,访问A的a还是A里面定义的方法,访问B就是B里面定义的方法.

重写和隐藏的定义:
重写:基类方法声明为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

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
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面试题(二)的更多相关文章
- 数据库基础SQL知识面试题二
数据库基础SQL知识面试题二 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.选课系统SQL语法练习 course数据库中有以下四张表: •students表(学生表): si ...
- C/C++常考面试题(二)
网上看到的面经,说是dynamic_cast的实现,和RTTI的相关,这才发现原来对这个概念这么模糊,所以作了这个总结. C/C++常考面试题(二) RTTI(Runtime Type Informa ...
- php面试题二--解决网站大流量高并发方案(从url到硬盘来解决高并发方案总结)
php面试题二--解决网站大流量高并发方案(从url到硬盘来解决高并发方案总结) 一.总结 从外到内解决网站大流量高并发问题---从提交一个url开始(从用户按下搜索栏回车键开始) url最开始会到d ...
- php开发面试题---2、php常用面试题二(表单提交方式中的get和post有什么区别)
php开发面试题---2.php常用面试题二(表单提交方式中的get和post有什么区别) 一.总结 一句话总结: 数据位置:get参数在url里面,post在主体里面 数据大小:get几kb,pos ...
- C++经典面试题(二)
近期看一些面试题,认为假设自己被问到了,并不能非常利落的回答出来. 一是从来没有这个意识,二是没有认真的梳理下. 以下对这些题做出分析,哈!个人能力有限,当中难免有疏漏,欢迎大家补充咯. 11.引用与 ...
- JAVA面试题二
JAVA 综合面试题 2007-08-12 目录 Java面试题整理 9 Java面向对象 9 1. super()与this()的区别? 9 2. 作用域public,protected,priva ...
- Java面试题(二)
系统整理了一下有关Java的面试题,包括基础篇,javaweb篇,框架篇,数据库篇,多线程篇,并发篇,算法篇等等,陆续更新中.其他方面如前端后端等等的面试题也在整理中,都会有的. 注:文末有福利! 1 ...
- Java常考面试题(二)
序言 昨天刚开始的”每日5题面试“这类文章,感觉还不错,把一些平常看似懂了的东西,弄清楚了.就像什么是虚拟机?这个问题,看起来知道,但是要说出个所以然来,又懵逼了,经常回过头来看看做过的面试题,试着用 ...
- C# 面试题 二
1.进程和线程的区别 进程是系统进行资源分配和调度的单位:线程是CPU调度和分派的单位,一个进程可以有多个线程,这些线程共享这个进程的资源. 2.成员变量和成员函数前加static的作用 它们被称为常 ...
- python面试题(二)
最近参加了几场招聘,发现好多人的一些基础知识不是很扎实,做的题很多都是错误的,因此找了一些我们公司面试过程中的一些最基本的面试题供大家参考,希望各位都能找到一个好的工作.今天给大家先分享的是关于Pyt ...
随机推荐
- nginx 域名跳转 Nginx跳转自动到带www域名规则配置、nginx多域名向主域名跳转
nginx 域名跳转 Nginx跳转自动到www域名规则配置,如果设置使 mgcrazy.com域名在用户访问的时候自动跳转到 www.mgcrazy.com呢?在网上找了好多资料都没有一个完整能解决 ...
- 常用 U-boot命令详解
转:http://www.360doc.com/content/10/0827/13/496343_49168699.shtml 获取帮助环境变量与相关指令U-boot的使用网络命令Nand Flas ...
- cocos2d-x 学习笔录:将iOS项目编译成Andriod项目
一.Android 环境搭建 1.安装Andriod-NDK(Native Development Kit) 新建一个文件夹(eg:NDK),解压Android-NDK,将解压文件与压缩包放在一个目录 ...
- 剖析ASP.NET Core(Part 4)- 调用MVC中间件(译)
原文:https://www.stevejgordon.co.uk/invoking-mvc-middleware-asp-net-core-anatomy-part-4 发布于:2017年5月环境: ...
- Linq:Group By用法
1.简单形式: var q =from p in db.Products group p by p.CategoryID into g select g; 语句描述:使用Group By按Catego ...
- SQL Compare 10.4.8.87 Edition 数据库比较工具 完全破解+使用教程
一.使用教程 SQL Compare是编程人员常用的比较两个数据库之间差异的工具.可以用来比较数据库里面的对象.比如存储过程,数据库中的数据,表的结构. 下面我就简单介绍一下如何使用 1.选择要比较的 ...
- 使用maven命令搭建多模块企业级项目
http://www.cnblogs.com/xdp-gacl/p/4242221.html
- nodejs之路-[0]安装及简易配置
题外话: 之前写过ubuntu下编译nodejs- 传送门:Ubuntu15.04编译安装nodejsV0.12.3 只是如今基本在win下做开发了-. 就以这篇帖子为开头,作为我踏上nodejs之路 ...
- QSignalMapper类的使用
Qt中当定义了非常多的button,而他们的信号都同样时(比方都是点击信号),没有必要给他们每一个都设置信号和槽的链接.QSignalMapper给我们攻克了这个难题. 今天完毕这个相似的功能时,不知 ...
- limit是mysql的语法
select * from table limit m,n 其中m是指记录开始的index,从0开始,表示第一条记录 n是指从第m+1条开始,取n条. , 即取出第3条至第6条,4条记录 转自:htt ...