回忆版—实习生应聘的c#笔试基础

       本人互联网小白,去年才开始接触编程,以c#为主,了解到这个网站的强大和重要性!故在记录自己做过的一些小项目和面试、笔试经验。各位过来人可以随意看看,欢迎提出意见,大神可忽略。。。。。


这一个月来本人厚着脸皮去了两次IT公司的实习生招聘,简历和一面都挺顺利,但都挂在了笔试关,因此回来后把一些个人容易疏忽的点记录下来了,或许对于大多数人来说都是基础,但小弟希望能让自己勤于总结,希望各位提点宝贵意见!

结合两家公司的笔试题目回忆版:


1.抽象类与接口的区别?

相同点:
A.不能被实例化,但可以被继承
B.包含未实现的方法声明
C.派生类必须实现未实现的方法,抽象类是抽象方法,接口则是所有成员
区别:
A.一个类可以直接继承多个接口,但只能直接继承一个类(包括抽象类)
B.可以把抽象类理解为把类当作对象,抽象成的类叫做抽象类.而接口只是一个行为的规范或规定
C.抽象类更多的是定义在一系列紧密相关的类间,而接口大多数是关系疏松但都实现某一功能的类中
D.接口基本上不具备继承的任何具体特点,它仅仅承诺了能够调用的方法
E.接口可以用于回调,而抽象类并不具备这个特点
F.抽象类不能被密封
G.抽象类实现的具体方法默认为虚的,但实现接口的类中的接口方法却默认为非虚的,当然可以声明为虚的
H.如果抽象类实现接口,则可以把接口中方法映射到抽象类中作为抽象方法而不必实现,而在抽象类的子类中实现接口中方法
I.接口除了可以包含方法之外,还可以包含属性、索引器、事件,而且这些成员都被定义为公有的,不能声明为虚拟或静态。除此之外,不能包含任何其他的成员,例如:常量、域、构造函数、析构函数、静态成员

2.C#的内存管理机制?
A.C#有自动内存管理机制,垃圾回收器会自动处理所有的内存清理工作
B.C#数据分两种:值类型和引用类型。前者储存在堆栈中,后者储存在内存的托管堆中
C.堆栈:对象成员的值数据类型调用方法时,堆栈储存的是所有参数的副本;堆栈存储的变量的生命周期都是嵌套的
D.托管堆:当希望在方法退出后的很长一段时间内,存储的数据还可以用,这是就使用托管堆;新建对象的内存地址存储在堆栈中,但是对象的实例是存储在托管堆中,当引用变量赋给另一个引用变量时,就有两个引用同一数据的变量,当一个变量超出作用域时,会从堆栈中删除,但是对象的数据仍然保留在托管堆中。
E.装箱与拆箱:装箱可以将值类型转化为引用类型;拆箱则相反
F..NET运行库认为需要时才运行垃圾收集器;可以调用System.GC.Collect()强制垃圾回收器在代码的某个地方运行
G.垃圾回收器不会释放非托管的资源(例如文件句柄,网络连接和数据库连接)
H.定义一个类时,可以用两种机制来自动释放非托管资源:声明析构函数(或终结器)或在类中实现System.IDisposable接口

3.哪些资源手动释放,哪些不行?
值类型变量不能手动释放,当变量超出作用域后会自动释放;引用类型数据是存储在托管堆上的,一般情况下有GC自动完成内存释放回收;非托管类型资源(例如文件句柄,网络连接和数据库连接)需要手动释放。、

4.C#中的引用关系,引用对内存机制的影响?
A.引用类型的变量存储对其数据(对象)的引用,当引用变量赋给另一个引用变量时,就有两个引用同一数据的变量,因此,对一个变量执行的操作会影响另一个变量所引用的对象。
B.使用引用,可以对数据的生存周期进行控制;引用变量存储在堆栈上,但是它指向的数据(对象)是存储在托管堆上的,当变量超出作用域时,被释放,而所指向的数据(对象)不会被释放,只有该数据不再被任何变量引用时,它才会被释放。

5.形参ref和不ref的区别,out的使用
A.形参ref时,方法对变量所做的任何改变都会影响原始对象的值
B.不ref时,方法只会对变量的副本修改,而不影响原始对象
C.Out:输入参数前面加out时,传递给方法的变量可以不用初始化

6.StringBuilder与String的区别?
A.String的对象是不可改变的,每次调用类的方法时,都要在内存中创建一个新的字符串对象,这就需要为该对象分配新的空间
B.StringBuilder的对象是动态的,允许扩充它所封装的字符串中的数量,但是可以设定一个容量,当StringBuilder对象修改至达到最大容量时,自动分配新空间且容量翻倍

7.struct与class的区别,C#中哪些数据结构是struct类型的?
A.struct是值类型,class是引用类型
B.struct不能被继承,class可以被继承
C.struct大多数或全部字段声明为public,而class应总是私有的,并由公有属性封装
D.struct的new运算符并不分配内存,只是调用相应的构造函数,根据传送给它的参数初始化字段。而class是在堆上分配一块内存后再调用构造函数

8.什么是委托?委托的实现?
A.委托是类型安全的类,它定义了方法的类型,使得可以将方法作为另一个方法的参数来进行传递,可看作方法引用
B.定义委托类:如public delegate void delegate1();使用委托类实例化对象
C.通过+=和-=来为委托添加、去除方法
D.与函数指针最大不同是类型是安全的

9.Object类中GetHashCode()与Equals()的作用?
A.Equals():把当前对象与参数对象Object进行比较,比较两个对象所封装的信息是否完全一样
B.GetHashCode():为相应的类型提供哈希码值,应用于哈希算法与哈希表中
C.ToString():返回对象的字符串表达形式
D.Finalize():可用于析构函数

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值