C# 常见面试问答题

 

C# 问答题汇总(一)
      2007-8-12
一般面试题中会遇到很多C#基础概念的问题,因此我在这里做了一下汇总,希望给大家做一个参考。其中内容参考网上、书藉中和个人的想法,如有不正确的,请指出。
1.C#中类型分为两种:值类型、引用类型。
值类型: 内置值类型、枚举、自定义值类型、结构
引用类型:接口、指针、自我描述的类
自我描述的类:类类型、数组
类类型:委托、自定义类、装箱的值类型
                        类型
             值类型                     引用类型
        内置值类型    枚举         接口    自我描述的类      指针
自定义值类型 结构                类类型 数组
                                 委托    自定义类 装箱的值类型
2.抽象类和抽口的区别
从结构上的区别:
抽象类可以有自己的实现方法,字段。
接口只是一个契约,没有实现任何方法,不能有字段
从使用方法上区别:
实现抽象类的子类可以使用父类的默认方法,可以扩展父类,使用环境一般是子类为了增强父类的功能或多个子类使用一组相同的方法。
实现接口的子类必须实现接口中所有的方法,使用环境一般是为多个子类统一操作方式但是操作方式各不相同的情况。
3. ASP.NET中页面传值共有这么几种方式
    7种,表单提交、URL传值、Session共享、Application共享、Cookie、隐藏字段、数据库
4. 接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)?
接口可以继承接口。抽象类可以实现(implements)接口,抽象类是否可继承实体类,但前提是实体类必须有明确的构造函数。
5.ASP.NET中的身份验证有那些?
ASP.NET有两种身份验证模式,WINDOWS和FORMS。
6.垃圾回收集的介绍
在Windows平台中,释放内存有两种方式:
1.完全以手工方式使应用程序代码完成这些工作,特点是高效,但容易出错并导致内存遗漏。
2.让对象维护引用计数,是COM对象采用的技术,其特点是自动计数对内存和资源的引用,当降低到0时就清理,因为COM对象可能存在于它自己的进程中,所以可能永远不会被删除。
.NET运行库采用的方法是垃圾收集器GC,这是一个程序,其目的是清理内存,它被CLR使用,工作原理是当。NET检测到进程的托管堆已满,需要清理时就调用垃圾收集器,垃圾收集器处理目前代码中的所有变量,检查对存储在托管堆上的对象的引用,确定哪些对象可以从代码中访问,没有引用的对象就被删除。垃圾收集器的优点是类型安全,缺点是不确定性,它由。NET运行库来决定什么时候需要它。
7.ASP和ASP.NET来区别
ASP是用于创建带有动态内容的WEB页面的一种MICROSOFT技术,ASP页面基本是一个嵌有服务器端脚本的HTML文本。当客户端浏览器请求一个ASP而面时,WEB服务器就会发送页面的HTML部分,并处理服务器端脚本。这些脚本通常会查询数据库的数据并显示在HTML中。ASP的缺点:一是服务器是解释性的而不是编译的,页面有时显示比较慢;二是ASP文件结构混乱不方便维护,服务器端脚本与HTML混在一起;第三:ASP有时调试起来会比较困难,没有错误和语法检查。
ASP.NET是ASP的修订版本,它解决了ASP的很多问题。但ASP。NET页面并没有替代ASP,而是与原来的ASP应用程序在同一个服务器上可以并行运行。ASP。NET是结构化的,每一个页面都继承了SYSTEM。WEB。UI。PAGE类,代码和HTML页面分离,并且可以方便的创建N层架构的程序。
编译到运行的过程:C#或VB。NET源码经过编译后生成IL语言,并通过CTS和CLS来时行语言交互,引用.NET基类库,交给CLR组织,CLR进行加载程序集,JIT编译,许可安全权限,内存类型安全检查,创建应用程序域后在进程中执行。同时GC(垃圾回收器)需要时进行维护。
8.使用常量的优点:
Const是常量的关键字,常量具有如下特征:
常量必须要声明时初始化,指定了其值后就不能理修改
常量的值必须在编译时可以计算。因此,不能从一个变量中提取的值来初始化常量,如果需要这么做的话请使用只读字段
常量总是表态的,不允许加static。
常量的优点如下:
    常量用易于理解的名称代替了含义不明确的幻数(数字和字符串)。
    常量使程序易于修改。
    常量更容易避免程序出错。
9.特别的String类型
.NET中有两个预定义引用类型,Object和String,object是所有类的根类。String类是一个引用类型。但它的使用方式很象值类型,String保留在堆上,而不是堆栈上。因此,当把一个字符串变量赋给另一个字符串时,会得到对内存中同一个字符串的两个引用。但是如果修改一个字符串时就会创建一个新的string对象,而原来的没有改变。这就是当需要大量操作字符串时使用String类会变的非常低率的原因。
10.枚举的好处
从长远来看,创建枚举可以节省大量时间,减少许多麻烦。使用枚举比使用数字更有优势。一、枚举使代码易于维护,防止出错。二、枚举使代码更加清晰,允许用描述的名称表示整数值,而不是含义模糊的数来表示。三、枚举易于键入,IDE中会有智能感知。
11.结构
结构是值类型,它不能被继承,但它的使用语法上,常常可以把它当做类来处理,结构的工作方式是当使用new运算符时,它并不分配堆中的内存,而是调用相应的构造函数,根据传送给它的参数,初始化所有字段。它的优点是在使用和清理时,因为它是存储在堆栈上的,所以使用和清理时都会很快,它的缺点在于传递时结构并不是传递一个引用,而是把值复制了一次,所以导致性能下降。所以在传递时可以加上ref关键字。
12..NET2.0中新增加的特性“部分类”
    Partial关键字允许把类、接口、结构等主在多个文件中。便于多个人员可以同时写一个类。在ASP。NET中就是使用部分类,一部是系统自动生成的,另一部分是提供给人编写的。
下一次说继承和委托
数据库类
1.很BT的题:在不计是否重复的情况下,给一个表增加100W以上的数据
 答:先给表增加一条数据,然后insert into table1 select table1

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值