C#面试知识题目

1、简述 private、 protected、 public、 internal 修饰符的访问权限。 
  private:表示私有的,只有在类的内部访问。
  protected:受保护的,在类与继承中可以访问。
  public:公开的,没有访问权限限制。
  internal:当前程序集可以访问。
2、ADO.NET中的五个主要对象
 Connection :主要用于连接数据库
 Command:主要用于执行SQL语句
 DataSet:是全部把数据一次读出来啊,想当于一个临时仓库。
 DataReader:是一行一行的循环读,只会向前,不会后退
  DataAdapter:主要是在数据源和DataSet之间进行数据传递工作
3、列举ASP.NET 页面之间传递值的几种方式。 
  Session,Cookie,QueryString   "Index.aspx?id=6",Server.Transfer("地址");数据库
4、C#中的委托是什么?事件是不是一种委托?事件和委托的关系。
   (dalegate)委托是一种类型,可以理解一个函数指针,就是把一个方法的签名,做为一个参数进行传递到另一个方法。
   我觉得委托和事件没有可比性,因为一个是委托类型,事件一个是对象。
   事件用(event)表示,
5、override与重载(overload)的区别 
   override:就是子类重写父类的方法,是面向对象慨念
   overload:是重载,就是方法名相同,参数不同,根据不同的调用执行不同的操作。是面向过程慨念
6、C#中索引器语法?
 class suoyi  //声明一个类
    {
        int[] num = { 5, 6, 7, 3, 2, 2, 4, 5, 6, 7, 90 };//数组
        public int this[int index]  //索引
        {
            get { return num[index];}
            set { num[index] = value;}
        }
    }
7、属性和public字段的区别是什么?
 属性是通过GET和SET提供给外界访问的,字段只在类的内部,储存数据。
8、三层架构
 数据访问层(DAL),业务逻辑层(BLL),表现层(UI)。。。关系BLL引用DAL,UI引用BLL。。。。
10、关于拆箱装箱:
装箱:值类型转引用类型 拆箱:把引用类型转成值类型
object o=null;
o=1; //把引用类型封装成值类型
int i=(int)o; //把引用类型转换成值类型
12、CTS、CLS、CLR分别作何解释(*)把英文全称背过来。
CTS:common type system 通用类型
CLS: common Language system 通用语言
CLR: common Language  Runtime 公共语言运行库
13、在dotnet中类(class)与结构(struct)的异同?
     首先,从类型上,类是引用类型,结构是值类型,类可以继承或被继承,结构不可以,但是它们都可以实现接口。
14、堆和栈的区别?
    堆是程序运行是动态分配的内存空间。。栈是程序编译期间就分配好的内存空间,因此你代码中,必须就栈的大小有明确定义。局部值类型变量,值类型参数都存在栈内存中。
16、GC是什么? 为什么要有GC?  
Gc是垃圾回收处理机制,它可以为内存释放资源,垃圾回收机制是自动管理,但是有的还是需要程序员自己手动释放,比喻FileStream 和SqlConnection
18、值类型和引用类型的区别?
 值类型相当于复制文件,和原来的文件没有任何关系,两个完全分离,引用类型相当于创建快捷式,一个被改变另一个跟着变。。
19、C#中的接口和类有什么异同。
 不同点:类可以被实例,接口不能,类只能单继承,接口可以多继承,接口不能包含方法的实现,类可以。 相同点:它们都包含,方法,属性,事件和索引。接口可以定义了行为,不能实现,所以也就不能有字段。
20、abstract class和interface有什么区别? 
相同点:首先abstract calss 和interface都不能被实例化,都可以通过继承实现抽象方法。不同点:abstract calss 可以包含字段,和提供实现方法,interface只能定义行为,不包含实现方法。
抽象类只能单继承,接口可以多继承。接口可用作于值类型 和引用类型。但是抽象类只能用于引用类型。
21、是否可以继承String类? 
不能,因为string类是不可变的。
22、
        static void Main(string[] args)
        {
            Console.WriteLine(GetIt());
            Console.ReadKey();
        }

        static int GetIt()
        {
            int i = 8;
            try
            {
                i++;
                Console.WriteLine("a");
                return i;//把返回值设定为i,然后“尽快”返回(没啥事就回去吧)
            }
            finally
            {
                Console.WriteLine("b");
                i++;
            }
        }
  上面的程序执行结果是:ab9
  28、int、DateTime、string是否可以为null?
  int ,dateTime是strut类型,也就是值类型,值类型是编译期间都要定义明确的大小,string是引用类型,所以可以定义为空,因为引用类型是程序运行时动态分配的内存空间。
  29、using关键字有什么用?什么是IDisposable?
  using可以用来非托管的资源释放,实现了IDisposable类中的using创建,在using结束时,会自动调用Dispose方法执行资源释放。我认为using相当于,try--finally...
  31、string str = null 与 string str = “”说明其中的区别。 
  string  str=null表示什么也没有啊, string str=""表示已经开辟了内存为空的空间,
  32,写出一条Sql语句:取出表A中第31到第40记录(SQLServer,以自动增长的ID作为主键,注意:ID可能不是连续的。 
 解答一
 select top 10 * from TblArea where AreaId not in(select  top 30 AreaId from TblArea)
 解答二
 select *from(select ROW_NUMBER()over(order by Areaid)as num,* from TblArea)as t where num>30 and num<=40
 33,33.面向对象的语言具有________性、_________性、________性 
答:封装、继承、多态。 
 封装:就是把字段,方法,属性封装在类里面,提供给外界访问的方法。为了安全
 继承:一个类如果继承了另一个类,就可以调用该类的,属性,方法,构造函数、
 多态:就是建立在继承上,就是同一个类不同实例,执行结果不同。
 34.在.Net中所有可序列化的类都被标记为_____? 
答:[serializable]  serializable serializable serializable  serializable serializable 
36、接口是一种引用类型,在接口中可以声明(a),但不可以声明公有的域或私有的成员变量。   
  a) 方法、属性、索引器和事件;  
  b) 索引器和字段;     
  c) 事件和字段;   
解答:接口中不能声明字段,只能声明方法,属性,事件,和索引最后都被编译生成方法。字段属于实现层东西,只有存取值才用。
38. 下列关于C#中索引器理解正确的是(c)   
  a) 索引器的参数必须是两个或两个以上   
  b) 索引器的参数类型必须是整数型   
  c) 索引器没有名字   
  d) 以上皆非   
43.StringBuilder 和 String 的区别?
string每次处理字符串(如赋值,拼接)的时候,都会产生一个新的实例,stringbuilder不会,所以在大量处理字符串时,尽量用stringbuilder不要用string,
stringbuilder执行效率高。
49、您在什么情况下会用到虚方法?它与接口有什么不同?
 在基类的方法需要子类来重写的时候,需要用到虚方法。 接口的方法不能有方法体,如果一个类继承接口就必须实现它的方法。而基类的方法,子类可以不用重写。
57、通过超链接怎样传递中文参数?
通过queryString 传递,urlencode编码,urldecode解码
59、Server.Transfer和Response.Redirect的区别是什么?(常考)
    Server.Transfer:只和web服务器交互一次,它在客户端浏览器不会显示转向后的地址。(完全在服务端执行,浏览器根本不知道)
    Response.Redirect:这个就是完全跳转,浏览器会得到(服务器发来的新地址302重定向)跳转地址,重新请求连接,这样客户端就可以看到跳转地址。
60、不是说字符串是不可变的吗?string s="abc";s="123"不就是变了吗?(传智播客.Net培训班原创模拟题)
  这段代码的字符串,确实是不可变的,首先s="abc",然后将s="123",其实s指向原来的对象并没发生改变,而是存在内存里,只是s这个引用变量不在指向它了。
63、说出一些常用的类、接口,请各举5个 
  常用类:SqlConnection ,list<int>,File,FileStream,Regex ,StreamRead,StringBuilder
  常用接口:IDisposable,IList,IDictionary,IDbConnection,IColletion,IEnumerable.
65、编写一个单例(Singleton)类。
public class Singleton
    {
        private Singleton()
        {
        }
        private  static Singleton st=null;
        public static Singleton ST()
        {
            if (st == null)
            {
                st = new Singleton();
            }
            return st;
        }
    }
第二种考虑了线程安全,不过有点烦,但绝对是正规写法,经典的一叉 

public class Singleton
{
    private volatile static Singleton _instance = null;
    private static readonly object lockHelper = new object();
    private Singleton(){}
    public static Singleton CreateInstance()
    {
        if(_instance == null)
        {
            lock(lockHelper)
            {
                if(_instance == null)
                     _instance = new Singleton();
            }
        }
        return _instance;
    }
}
72、post、get的区别
post可以提交大量数据,get只能提交少量数据,get提交的参数会显示在浏览器地址栏,post不会显示,相对来安全。get提交会被搜索引擎抓取,post不会。
73、AJAX解决什么问题?AJAX有什么问题需要注意?
Ajax解决页面无刷新问题,提高了用户体验度,ajax最大的问题,就是无法跨域请求,也就是无法在当前页面中向和当前不同域名的页面发生请求,可在当前页面所在域的服务端做代理页面的方式解决。
//不用任何框架编写一个AJAX程序。XHR:XmlHttpRequest。
84、Application 、Cookie和 Session 两种会话有什么不同?
    Application是全局是用来存取整个网站的全局信息,session是用来存取某个访问者的关联信息,存在服务端,相对安全,cookie是存在客户端,只能存在少量数据。机密信息不能用cookie保存。
86、你对.net的GC的理解
     Gc是垃圾回收器是对内存资源的自动释放。但是对于非托管资源的释放,需要程序员调用dispose手动释放,比喻FileStream和SqlConnection
     附(托管跟非托管的区别):托管就是在.net框架下,能被CLR管控的,比喻程序分配的对象,变量名。反之则是非托管比喻文件流操作,数据库连接。
87、请写一个SQL语句:从user表中取出name列中的起始字符是“北京”的全部记录
    select * from [user]  where name like '北京%'
88、请你简单的说明数据库建立索引的优缺点
    首先优点是,查询速度快,缺点是,每次插入数据的时候的,都会建一个索引,相对来说,效率低,,而且占用磁盘空间。。
89、如何提高.NET性能?
   第一,尽量不要再循环体里面声明变量。
   第二,使用 try -catch -finally 的时候如果有资源需要释放,一定更要在finally里面释放。
   第三,不要使用ArrayList集合
90、什么是事务。
     事务包括:
           原子性:就是对数据库的操作要么全部执行,要么全不执行。
           一致性:就是数据库前后的数据要一致。
           隔离性:一个事务执行不被其它事务干扰。
           持久性:数据一旦被提交,将永久写入硬盘。
107、Http状态码各是什么意思。
301:永久重定向 302:重定向  404:找不到页面  500:服务器内部错误
110、Session有什么重大BUG,微软提出了什么方法加以解决?(常考)    
iis服务器有回收机制,和系统繁忙也回丢失Session,这样用户就要重新登录,添加购物车。解决这一办法,提供了Sql server,和state server 。state server还解决Session共享问题。
state server:首先开启asp state server服务。然后在web.config里面设置state server model="state server" 设置ip端口,
sql server:就是把session存在数据库,也是在web.config里面设置state server model="sql server"
111,ajax中get和post的区别
 首先get只能传送少量数据,但是它执行效率高,安全低,会被缓存。反之post 可以传送大量数据执行效率慢,安全高,不会被缓存。
112,asp.net中身份验证的方式
windows验证,Forms验证和Passport验证.
113,.net什么是配件
 程序集。(中间语言,源数据,资源,装配清单)
114,什么事应用程序域
应用程序域的本质的一种隔离,就是应用程序中运行的代码不能访问其他应用程序的代码和资源。
115,O/R Mapping原理
ORM指的是面向对象的对象模型(实体)和(数据库中的表)关系型数据库的数据结构之间的相互转换。
116,c#中const与readonly区别
 readonly 允许把一个字段设置成常量,但可以执行一些运算,可以确定它的初始值。
 const 的概念就是一个包含不能修改的值的变量。
117,ASP.net mvc的好处
    mvc是一种思想,就是把相关代码分开写而已,比喻界面,模型,逻辑分开写而已,这样代码就不会很乱,也好维护,我觉得MVC最大的好处就是方便管理代码
118,你采用什么样的方式和策略实现系统缓存
 缓存分为:页面缓存,数据源缓存,自定义缓存
 页面缓存:就是一个页面的内容不经常变的情况,我们采用页面缓存。(<% OutputCache Duration="15" VaryByParam="none"%>)
 数据源缓存:就是有的SQL语句执行耗时,对数据的及时性,要求不高的,我们可以采用数据源缓存。
自定义缓存:就是设置Cache.add();参数包括键,值。依赖关系,相对过期时间。
 缓存好处,减轻服务器压力。
119,xml中的xmlDocument跟xmlReader有什么区别?
xmlDocument用于读取操作和修改文档,xmlReader类也读取XML,但是它无法编辑属性值,或元素内容,或无法插入和移除节点。
120,什么叫反射?
 第一:可以读取物理文件程序集中的代码内容
 第二:可以根据类名动态创建类的对象。
 第三:可以在程序运行时,动态获得对象的信息(方法.属性.字段,索引)
 第四:可以根据成员名称(字符串)来调用对象里,对应的成员。
121,datalist 和gridview 还有datagridview什么区别 在线等
gridview :功能很强大,提供分页,编辑,删除,缺点:占用资源,它的分页把整个表的数据都读出来了。
datagridview:多种数据显示方式。
datalist:比较好控制样式。没有自带分页。
122,常用调用webservice的方法有哪些
1,用wsdl.exe;
123,存储过程跟函数的区别
--储存过程需要单独执行,函数可以随处调用。。
函数有限制只能返回一个变量,而存储过程可以返回多个。并且函数是可以嵌入在SQL中使用,可以在select等SQL语句中调用,而存储过程不行。

posted @ 2015-10-29 10:05  吴极限  阅读(162)  评论(0)    收藏  举报