非常详细的C#面试题集


Posted in 面试题 onJuly 13, 2016
1、在C#中,string str = null与string str = “” 请尽量使用文字或图象说明其中的区别。
回答要点:说明详细的空间分配。(10分)
答:string str = null是不给他分配内存空间,而string str = “” 给它分配长度为空字符串的内存空间.
2、请详述在dotnet中类(class)与结构(struct)的异同:(10分)
答:Class可以被实例化,属于引用类型,是分配在内存的堆上的,Struct属于值类型,是分配在内存的栈上的.
3、根据委托(delegate)的知识,请完成以下用户控件中代码片段的填写:(10)
namespace test
{
public delegate void OnDBOperate();
public class UserControlBase : System.Windows.Forms.UserControl
{
public event OnDBOperate OnNew;
privatevoidtoolBar_ButtonClick(objectsender,System.Windows.Forms.ToolBarButtonClickEventArgs e)
{
if(e.Button.Equals(BtnNew))
{
//请在以下补齐代码用来调用OnDBOperate委托签名的OnNew事件。
}
}
}
答:if( OnNew != null )
OnNew( this, e );
4、分析以下代码,完成填空(10分)
string strTmp = “abcdefg某某某”;
int i= System.Text.Encoding.Default.GetBytes(strTmp).Length;
int j= strTmp.Length;
以上代码执行完后,i= j=
答:i=13,j=10
5、SQLSERVER服务器中,给定表table1中有两个字段ID、LastUpdateDate,ID表示更新的事务号, LastUpdateDate表示更新时的服务器时间,请使用一句SQL语句获得最后更新的事务号。(10)
答:Select ID
FROM table1
Where LastUpdateDate = (Select MAX(LastUpdateDate) FROM table1)
6、根据线程安全的相关知识,分析以下代码,当调用test方法时i>10时是否会引起死锁?并简要说明理由。(10分)
public void test(int i)
{
lock(this)
{
if (i>10)
{
i–;
test(i);
}
}
}
答:不会发生死锁,(但有一点int是按值传递的,所以每次改变的都只是一个副本,因此不会出现死锁。但如果把int换做一个object,那么死锁会发生)
7、分析以下代码。(10)
public static void test(string ConnectString)
{
System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection();
conn.ConnectionString = ConnectString;
try
{
conn.Open();
…….
}catch(Exception Ex)
{
MessageBox.Show(Ex.ToString());
}finally
{
if (!conn.State.Equals(ConnectionState.Closed))
conn.Close();
}
请问
1}以上代码可以正确使用连接池吗?
答:回答:如果传入的connectionString是一模一样的话,可以正确使用连接池。不过一模一样的意思是,连字符的空格数,顺序完全一致。
2}以上代码所使用的异常处理方法,是否所有在test方法内的异常都可以被捕捉并显示出来?
答:只可以捕捉数据库连接中的异常吧. (finally中,catch中,如果有别的可能引发异常的操作,也应该用try,catch。所以理论上并非所有异常都会被捕捉。)
8、简要谈一下您对微软.NET构架下remoting和webservice两项技术的理解以及实际中的应用。(10)
答:WS主要是可利用HTTP,穿透防火墙。而Remoting可以利用TCP/IP,二进制传送提高效率。

9、公司要求开发一个继承System.Windows.Forms.ListView类的组件,要求达到以下的特殊功能:点击ListView各列列头时,能按照点击列的每行值进行重排视图中的所有行 (排序的方式如DataGrid相似)。根据您的知识,请简要谈一下您的思路:(10)
答:根据点击的列头,包该列的ID取出,按照该ID排序后,在给绑定到ListView中
10、给定以下XML文件,完成算法流程图。(10)









请画出遍历所有文件名(FileName)的流程图(请使用递归算法)。
答:
void FindFile( Directory d )
{
FileOrFolders = d.GetFileOrFolders();
foreach( FileOrFolder fof in FileOrFolders )
{
if( fof is File )
You Found a file;
else if ( fof is Directory )
FindFile( fof );
}
}
简单的说就是从根节点开始遍历找子节点,在从找到的子节点找它的子节点,一层层下去

果你的简历上面写“熟悉/了解C#”,那么你就应该能够回答下面的这些基础问题。我将给出自己的简要答案以供参考。欢迎讨论。

传入某个属性的set方法的隐含参数的名称是什么?
value,它的类型和属性所声名的类型相同。
如何在C#中实现继承?
在类名后加上一个冒号,再加上基类的名称。
C#支持多重继承么?
不支持。可以用接口来实现。
被protected修饰的属性/方法在何处可以访问?
在继承或间接继承与这个类的子类中可以访问。
私有成员会被继承么?
会,但是不能被访问。所以看上去他们似乎是不能被继承的,但实际上确实被继承了。
请描述一下修饰符protected internal。
被protected internal修饰的属性/方法只能在它的在同一个程序集(Assembly)中的子类被访问。
C#提供一个默认的无参数构造函数,当我实现了另外一个有一个参数的构造函数时候,还想保留这个无参数的构造函数。这样我应该写几个构造函数?
两个,一旦你实现了一个构造函数,C#就不会再提供默认的构造函数了,所以需要手动实现那个无参数构造函数。
C#中所有对象共同的基类是什么?
System.Object.
重载和覆写有什么区别?
重载提供了对一个方法签名的不同参数调用的实现。覆写提供了子类中改变父类方法行为的实现。
在方法定义中,virtual有什么含意?
被virtual修饰的方法可以被子类覆写。
能够将非静态的方法覆写成静态方法么?
不能,覆写方法的签名必须与被覆写方法的签名保持一致,除了将virtual改为override。
可以覆写私有的虚方法么?
不可以,甚至子类中无法访问父类中的私有方法。
能够阻止某一个类被其他类继承么?
可以,使用关键字sealed。
能够实现允许某个类被继承,但不允许其中的某个方法被覆写么?
可以,标记这个类为public,并标记这个方法为sealed。
什么是抽象类(abstract class)?
一种不可以被实例化的类。抽象类中一般含有抽象方法,当然也可有具体实现。继承类只有实现过所有抽象类的抽象方法后才能被实例化。
何时必须声明一个类为抽象类?
当这个类中包含抽象方法时,或是该类并没有完全实现父类的抽象方法时。
接口(interface)是什么?
只含有共有抽象方法(public abstract method)的类。这些方法必须在子类中被实现。
为什么不能指定接口中方法的修饰符?
接口中的方法用来定义对象之间通信的契约,指定接口中的方法为私有或保护没有意义。他们默认为公有方法。
可以继承多个接口么?
当然。
那么如果这些接口中有重复的方法名称呢?
这种情况中你可以决定如何实现。当然需要特别得小心。但是在编译环节是没有问题的。
接口和抽象类的区别是什么?
接口中所有方法必须是抽象的,并且不能指定方法的访问修饰符。抽象类中可以有方法的实现,也可以指定方法的访问修饰符。
如何区别重载方法?
不同的参数类型,不同的参数个数,不同的参数顺序。
const和readonly有什么区别?
const关键字用来声明编译时常量,readonly用来声明运行时常量。
System.String 和System.StringBuilder有什么区别?
System.String是不可变的字符串。System.StringBuilder存放了一个可变的字符串,并提供一些对这个字符串修改的方法。

Tags in this post...

面试题 相关文章推荐
Eclipse面试题
Mar 22 面试题
WebSphere 应用服务器都支持哪些认证
Dec 26 面试题
抽象方法、抽象类怎样声明
Oct 25 面试题
天逸系统(武汉)有限公司Java笔试题
Dec 29 面试题
随机分配座位,共50个学生,使学号相邻的同学座位不能相邻
Jan 18 面试题
一套带答案的C++笔试题
Jan 10 面试题
如何判断一段程序是由C 编译程序还是由C++编译程序编译的
Aug 04 面试题
Order by的几种用法
Jun 16 面试题
广州迈达威.net面试题目
Mar 10 面试题
NET程序员上机面试题
May 23 面试题
C#如何进行LDAP用户校验
Nov 21 面试题
27个经典Linux面试题及答案,你知道几个?
Jan 10 面试题
介绍一下MD5加密算法
Nov 12 #面试题
介绍一下常见的木马种类
Nov 15 #面试题
局域网标准
Sep 10 #面试题
什么是静态路由,其特点是什么?什么是动态路由,其特点是什么?
Jul 26 #面试题
作为网站管理者应当如何防范XSS
Aug 16 #面试题
能否解释一下XSS cookie盗窃是什么意思
Jun 02 #面试题
什么是跨站脚本攻击
Dec 11 #面试题
You might like
利用js调用后台php进行数据处理原码
2006/10/09 PHP
php使用Jpgraph绘制柱形图的方法
2015/06/10 PHP
PHP简单检测网址是否能够正常打开的方法
2016/09/04 PHP
PHP addcslashes()函数讲解
2019/02/03 PHP
thinkphp5 + ajax 使用formdata提交数据(包括文件上传) 后台返回json完整实例
2020/03/02 PHP
Jquery iframe内部出滚动条
2010/02/11 Javascript
Javascript匿名函数的一种应用 代码封装
2010/06/27 Javascript
js 输出内容到新窗口具体实现代码
2013/05/31 Javascript
Javascript数组操作函数总结
2015/02/05 Javascript
详解jQuery中的deferred对象的使用(一)
2016/05/27 Javascript
基于jQuery实现表格的查看修改删除
2016/08/01 Javascript
移动前端图片压缩上传的实例
2017/12/06 Javascript
详解无限滚动插件vue-infinite-scroll源码解析
2019/05/12 Javascript
layui问题之渲染数据表格时,仅出现10条数据的解决方法
2019/09/12 Javascript
vue 公共列表选择组件,引用Vant-UI的样式方式
2020/11/02 Javascript
[04:01]2014DOTA2国际邀请赛 TITAN告别Ohaiyo期望明年再战
2014/07/15 DOTA
[39:07]LGD vs VP 2018国际邀请赛淘汰赛BO3 第二场 8.21
2018/08/22 DOTA
[01:18]PWL开团时刻DAY10——一拳超人
2020/11/11 DOTA
python读取TXT到数组及列表去重后按原来顺序排序的方法
2015/06/26 Python
详解python的数字类型变量与其方法
2016/11/20 Python
Python实现基本数据结构中队列的操作方法示例
2017/12/04 Python
磁盘垃圾文件清理器python代码实现
2020/08/24 Python
Python3.6基于正则实现的计算器示例【无优化简单注释版】
2018/06/14 Python
python实现网页自动签到功能
2019/01/21 Python
基于Tensorflow使用CPU而不用GPU问题的解决
2020/02/07 Python
css3 background属性调整增强介绍
2010/12/18 HTML / CSS
servlet面试题
2012/08/20 面试题
学徒工职责
2014/03/06 职场文书
2015年公司新年寄语
2014/12/08 职场文书
初中英语教师个人工作总结
2015/02/09 职场文书
公务员政审个人总结
2015/02/12 职场文书
活动简报范文
2015/07/22 职场文书
2016应届大学生自荐信模板
2016/01/28 职场文书
QT与javascript交互数据的实现
2021/05/26 Javascript
Java elasticsearch安装以及部署教程
2021/06/28 Java/Android
mysql全面解析json/数组
2022/07/07 MySQL