- 1、本文档共42页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
软件工厂面试资料
软件工厂收集整理
2009-10-
概念题部分
软件工厂收集整理
2009-10-
第一部分
C#
谈谈你对面向对象的认识?
答案:
面向对象是一种编程思想,也是一种设计理念。在软件编程中,面向对象有几个基本的概念,他们是:类、对象、继承、封装和多态。而正是这些元素构成了面向对象设计开发的基本逻辑。而实际上,理解面向对象一个重要的方法就是以实际的生活来类比对象世界,对象世界的逻辑和我们生活得逻辑形成对比的时候,这种体验将会更有亲切感。
面向对象的三大特征是:封装、继承、多态;
封装隐藏了类内部的具体实现细节,对外则提供统一访问接口,来操作内部数据成员。这样实现的好处是实现了UI分离,程序员不需要知道类内部的具体实现,只需按照接口协议进行控制即可。同样对类内部来说,封装保证了类内部成员的安全性和可靠性。
继承,就是面向对象中类与类之间的一种关系。继承的类称为子类、派生类,而被继承类称为父类、基类或超类。通过继承,使得子类具有父类的属性和方法,同时子类也可以通过加入新的属性和方法或者修改父类的属性和方法建立新的类层次。
多态分为基类继承式多态和接口实现式多态。几类继承多态的关键是继承体系的设计与实现,而接口实现式多态通过实现接口的方法约定形成继承体系,具有更高的灵活性。
你如何理解事件与委托的概念?
答案:
事件:事件是对象发送的消息,以发信号通知操作的发生。操作可能是由用户交(例如鼠标单击)互引起的,也可能是由某些其他的程序逻辑触发的。引发事件的对象叫做事件发送方。捕获事件并对其作出响应的对象叫做事件接收方。在C#中,事件与委托一起使用来实现事件处理。在实现事件时,需要3个相互联系的元素:提供事件数据的类(消息)、事件委托和引发事件的类。
委托:委托是一种引用方法的类型。一旦为委托分配了方法,委托将与该方法具有完全相同的行为。委托方法的使用可以像其他任何方法一样,具有参数和返回值。委托可以理解成类型安全的函数指针。
类和结构的异同?
答案:
class(类)是面向对象编程的基本概念,是一种自定义数据结构类型,通常包含字段、属性、方法、构造函数、索引器、操作符等。所有的类都最终继承自System.Object类。
struct(结构)是一种值类型,用于将一组相关的信息变量组织为一个单一的变量实体。所有的结构都继承自System.ValueType类,因此是一种值类型。
相同点:语法类似;
不同点:
class是引用类型,继承自System.Object类;struct是值类型,继承自System.ValueType类,因此不具多态性。
从职能观点来看,class表现为行为;而struct常用于存储数据;
class支持继承,可以继承自类和接口;而struct没有继承性,struct不能从class继承,也不能作为class的基类,但struct支持接口继承;
class可以声明无参构造函数,可以声明析构函数;而struct职能声明带参数构造函数,且不能声明析构函数。因此,struct没有自定义的默认无参构造函数,默认无参构造器只是简单地把所有初始化为它们的0等价值。
实例化时,class要使用new关键字;而struct可以不使用new关键字,如果不以new来实例化struct,则其所有的字段将处于未分配状态,直到所有字段完成初始化,否则引用未赋值的字段会导致编译错误;
class可以为抽象类(abstract),可以声明抽象函数;而struct不能为抽象类,也不能声明抽象函数;
class可以声明protected成员、virtual成员、sealed成员和override成员;而struct不可以,但是struct可以重载System.Object的3个虚方法,Equals()、ToString()和GetHashTable();
class的对象复制为浅拷贝和深拷贝,必须经过特别的方法来完成复制;而struct创建的对象复制简单,直接以等号连接即可;
class实例由垃圾回收机制来保证内存的回收处理;而struct变量使用完成后立即自动解除内存分配;
作为参数传递时,class变量和struct变量有所不同;
实现一个主要用于存储数据的结构时,应该考虑struct;
Struct变量占有堆栈的空间,因此只适用于数据量相对小的场合;
结构数组具有更高的效率;
提供某些和非托管代码通信的兼容性。
抽象类和接口的异同?
答案:
接口是包含一组虚方法的抽象类型,其中每一种方法都有其名称、参数和返回值。接口方法不能包含任何实现,CLR允许接口可以包含事件、属性、索引器、静态方法、静态字段、静态构造函数以及常量。
抽象类提供多个派生类共享基类的公共定义,它既可以提供抽象方法
您可能关注的文档
最近下载
- 交叉偶极声波测井资料在碳酸盐岩储层评价中的应用.pdf VIP
- BIM建模——Revit建筑设计PPT教学课件(全707页).ppt VIP
- 钢筋翻样自动计算excel表格.xls VIP
- 高中数学竞赛(强基计划)历年真题练习 专题14 初等数论 (学生版+解析版).docx
- 高中数学竞赛(强基计划)历年真题练习 专题13 数学归纳法 (学生版+解析版).docx
- 钢筋笼(螺旋箍筋)工程量自动计算表.xlsx VIP
- G平法识图与钢筋量计算.pptx VIP
- 2024华医网继续教育心血管病预防与康复题库答案.docx VIP
- 雷克萨斯is250维修手册m be 0023.pdf VIP
- 2020年国家公务员考试面试真题(海关+海事局).doc VIP
文档评论(0)