经典C#面试题
1、在下面的代码中,如何引用命名空间fabulous中的great?
namespace fabulous{// code in fabulous namespace}
namespace super{ namespace smashing{// great name defined }}
答:super.smashing.great
2、字符串“supercalifragilisticexpialidocious”对于string变量是否太长?为什么?
答:否,在C#中,对于字符串的长度没有限制。
3、概述反射和序列化?
答:反射:反射提供了封装程序集,模块和类型对象,可以用反射动态地创建类型的实例,将类型绑定到现有对象,或者从现有对象类型里获取类型,然后调用类型的方法或访问字段和属性。
序列化:将对象转换为另一种媒介传输的格式过程。如,序列化一个对象,用Http通过internet在客户端和服务器之间传递该对象,在另一端用反序列化从该流中重新得到对象。
4、C#中的委托是什么?事件是不是一种委托呢?
答:委托是一种安全的类似与函数指针,但是它比指针要安全的多,它可以把方法作为一个参数传递给另一个方法,可以理解为指向函数的引用。事件是一种消息机制,它是一种委托,委托不带方法体。
5、C#中索引器实现过程,是否只能根据数字索引?
答:不是的,可以是任意类型。
6、请你说说.NET中类和结构的区别?
答:结构和类具有相似的语法,但结构受到的限制比类要多。结构不能申明有默认的构造函数,为结构的副本是又编译器创建和销毁的,所以不需要默认的构造函数和析构函数。结构是值类型,所以对结构变量所做的改变不会影响其的原值,而类是应用类型,改变其变量的值会改变其原值。申明结构用Struck关键字,申明类用class关键字,向方法传递结构是时是通过值传递的,而不是通过引用。与类不同,结构的实例化可以不使用New关键字。类可以实现接口。
7、如果有两个整数存储在变量var1和var2中,什么样的布尔测试可以查看它们其中一个是否大于10?
答:(var1 > 10)^(var2 > 10)。
8、在c#中,using和new这两个关键字有什么意义?
答:using 引入名称空间或者使用非托管资源。
new 新建实例或者隐藏父类方法。
9、const和readonly有什么区别?
答:const关键字用来声明编译时常量。
readonly用来声明运行时常量。
10、System.String 和System.StringBuilder有什么区别?
答:System.String是不可变的字符串。System.StringBuilder存放了一个可变的字符串,并提供一些对这个字符串修改的方法。
11、请在C#中举例说明new关键字可用于那些方面?
答:在C#中,new关键字可用作运算符或修饰符。作为运算符用于在堆上创建对象和调用构造函数。作为修饰符用于隐藏基类成员的继承成员。
12、sealed关键字的作用是什么?什么情况需要使用sealed关键字?
答:sealed修饰符主要用于防止非有意的派生,但是它还能促使某些运行时优化。具体说来,由于密封类永远不会有任何派生类,所以对密封类的实例的虚拟函数成员的调用可以转换为非虚拟调用来处理。
13、在C#中,哪些关键字可以用于版本控制?
答:override关键字和new关键字均可用于版本控制。
在C#中,默认情况下方法不是虚拟的。若要使方法成为虚拟方法,必须在基类的方法声明中使用virtual修饰符。然后,派生类可以使用override关键字重写基类中的虚拟方法,或使用new关键字隐藏基类中的虚拟方法。如果override关键字和new关键字均未指定,编译器将发出警告,并且派生类中的方法将隐藏基类中的方法。
14、分别写出下列语句执行的结果。
(1)Console.WriteLine("{0}--{0:p}good",12.34F);
(2)Console.WriteLine("{0}--{0:####}good",0);
(3)Console.WriteLine("{0}--{0:00000}good",456);
答:执行结果分别为:
(1)12.34--1,234.00%good
(2)0--good
(3)456--00456good
15、C#中的数组类型有何特点?
答:C#中的数组类型的特点包括:
(1) 数组一般用于存储同一种类型的数据,包括Object类型。
(2) 数组是一种引用类型,而不是值类型。
(3) C#中除了可以有一维数组、多维数组外,还有交错型数组。
16、错误和异常有什么区别,为什么要进行异常处理,用于异常处理的语句有哪些?
答:错误是指在执行代码过程中发生的事件,它中断或干扰代码的正常流程并创建异常对象。当错误中断流程时,该程序将尝试寻找异常处理程序(一段告诉程序如何对错误做出响应的代码),以帮助程序恢复流程。换句话说,错误是一个事件,而异常是该事件创建的对象。
当使用短语“产生异常”时,表示存在问题的方法发生错误,并创建异常对象(包含该错误的信息及发生的时间和位置)来响应该错误。导致出现错误和随后异常的因素包括用户错误、资源失败和编程逻辑失败。这些错误与代码实现特定任务的方法有关,而与该任务的目的无关。
如果不进行异常处理,即不对错误做出响应,程序的健壮性就会大打折扣,甚至无法保证正常运行,所以必须要进行异常处理。
用于异常处理的语句有:try-catch语句、try-catch-finally语句、throw语句。
17、C#中不同整型之间进行转换的原则是什么?
答:在整型之间进行转换时,小范围类型可以隐式转换为大范围类型,但大范围类型转换为小范围类型时需要使用显式转换。
18、简述装箱和拆箱的过程。
答:装箱是将值类型隐式地转换为object类型或者转换为由该值类型实现了的接口类型。装箱一个数值会为其分配一个对象实例,并把该数值拷贝到新对象中。拆箱是显式地把object类型转换成值类型,或者把值类型实现了的接口类型转换成该值类型。
19、什么是命名空间?命名空间和类库的关系是什么?
答:名称空间是对类的一种逻辑上的分组,即将类按照某种关系或联系划分到不同的名称空间下。
名称空间又可以包含其它的名称空间,例如System.Windows.Forms,是指System名称空间下有Windows名称空间,Windows名称空间下有Forms名称空间。
20、可以用C#编写哪些类型的应用程序?
答:控制台应用程序,Windows应用程序,水晶报表应用程序,ASP.NET Web应用程序,ASP.NET Web服务应用程序,ASP.NET 水晶报表Web应用程序和智能设备应用程序等。
经典C#面试题的更多相关文章
- 那晚征服的一道js经典的面试题
今天朋友共享了一道js中经典的面试题,需求是这样的 给定你任意一个字符串,让你写出一个算法,求算出该字符串中出现次数最多的一个字符,并将其结果输出 刚拿到这道题的第一感觉便是定义一个count计时器, ...
- 解析js中作用域、闭包——从一道经典的面试题开始
如何理解js中的作用域,闭包,私有变量,this对象概念呢? 就从一道经典的面试题开始吧! 题目:创建10个<a>标签,点击时候弹出相应的序号 先思考一下,再打开看看 //先思考一下你会怎 ...
- Spring经典高频面试题,原来是长这个样子
Spring经典高频面试题,原来是长这个样子 2019年08月23日 15:01:32 博文视点 阅读数 719 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文 ...
- 100+经典Java面试题及答案解析
面向对象编程(OOP) Java是一个支持并发.基于类和面向对象的计算机编程语言.下面列出了面向对象软件开发的优点: 代码开发模块化,更易维护和修改. 代码复用. 增强代码的可靠性和灵活性. 增加代码 ...
- 经典Java面试题收集(二)
经典的Java面试题(第二部分),这部分主要是与Java Web和Web Service相关的面试题. 96.阐述Servlet和CGI的区别? 答:Servlet与CGI的区别在于Servlet处于 ...
- 超全面!1.5w字总结50个Java经典基础面试题(已根据知识点分类)
大家好,我是fancy. 在面试中将基础问题回答好就是成功的一半. 我总结了50道经典的Java基础面试题,里面包含面试要回答的知识重点,并且我根据知识类型进行了分类,可以说非常全面了. 小伙伴们点赞 ...
- 【转】 71道经典Android面试题和答案,重要知识点都包含了
,,面试题1. 下列哪些语句关于内存回收的说明是正确的? (b ) A. 程序员必须创建一个线程来释放内存 B.内存回收程序负责释放无用内存 C.内存回收程序允许程序员直接释放内存 ...
- 71道经典Android面试题和答案
,,面试题1. 下列哪些语句关于内存回收的说明是正确的? (b ) A. 程序员必须创建一个线程来释放内存 B.内存回收程序负责释放无用内存 C.内存回收程序允许程序员直接释放内存 ...
- 经典C面试题
12个有趣的C语言面试题 面试题C 摘要:12个C语言面试题,涉及指针.进程.运算.结构体.函数.内存,看看你能做出几个! 1.gets()函数 问:请找出以下代码里的问题: #include< ...
- 【BAT经典算法面试题系列】求和为n的连续正整数
马上就要到9月份了,意味着一年一度的秋招就要开始了,相信不论是正在实习的童鞋还是马上就要找工作的童鞋,BAT无疑是国内的"明星企业",是每个学计算机的小伙伴们心之向往的企业,但是呢 ...
随机推荐
- opencv 角点检测+相机标定+去畸变+重投影误差计算
https://blog.csdn.net/u010128736/article/details/52875137 https://blog.csdn.net/h532600610/article/d ...
- JS代码识别扫码设备
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- 17.Delete Methods-官方文档摘录
介绍delete的方法 MongoDB provides the following methods to delete documents of a collection: db.collectio ...
- Python并行编程(五):线程同步之信号量
1.基本概念 信号量是由操作系统管理的一种抽象数据类型,用于在多线程中同步对共享资源的使用.本质上说,信号量是一个内部数据,用于标明当前的共享资源可以有多少并发读取. 同样在threading中,信号 ...
- Python 调用 Shell脚本的方法
Python 调用 Shell脚本的方法 1.os模块的popen方法 通过 os.popen() 返回的是 file read 的对象,对其进行读取 read() 的操作可以看到执行的输出. > ...
- 使用selenium找出外卖点餐次数最多的10个顾客
大锅在做外卖,给我说能否统计出这半年点餐次数最多的10个顾客,我不知道APP本身是否有这个功能,想了下最近用selenium较多,就用selenium尝试下吧. 1 定义一个类,这里先描述需要的属性和 ...
- jquery Chosen使用
1,首先去http://harvesthq.github.io/chosen/下载插件. 2,在网页中加入下面的文件. <link rel="stylesheet" href ...
- django 增加验证邮箱功能
在user文件夹下新建python包,utils 在包内新建文件email_send.py,其中包括验证字符串随机码的产生,数据库的存储和email的发送 # -*- coding: utf-8 -* ...
- 什么是Java中的原子操作( atomic operations)
1.啥是java的原子性 原子性:即一个操作或者多个操作 要么全部执行并且执行的过程不会被任何因素打断,要么就都不执行. 一个很经典的例子就是银行账户转账问题: 比如从账户A向账户B转1000元,那么 ...
- javaWeb 使用线程池+队列解决"订单并发"问题
解决方式:使用线程池+队列 项目基于Spring,如果不用spring需要自己把 ThreadPoolManager.java 改成单例模式 1.写一个Controller(Spring mvc) / ...