打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
.net面试题3

.NET面试题3

1.接口的特点是什么?什么情况下应用?

接口的作用就是定义规范,定义了要求继承于它的类必须实现的属性或方法。
C#
中,一个类只能有一个父类,但是可以多个父接口;

接口是方法的抽象,如果不同的类有同样的方法,那么就应该考虑使用接口。

2.面向对象的语言具有________性、_________性、________性。

 继承性、封装性、多态性。

3.简述 private protected public internal 修饰符的访问权限?

private : 私有成员, 在类的内部才可以访问。
protected :
保护成员,该类内部和继承类中可以访问。
public :
公共成员,完全公开,没有访问限制。
internal:
在同一命名空间内可以访问。

4. .NetJava的对比,.Net安全吗(说出为什么)?

对比:      Java                            .Net

( 跨平台 )  JDK                     .Net Framework        

             OS                              OS 
C#
代码     编译器   MSIL  CLR   平台专用代码
5.
重载与构造函数的用法(举例说明)?

参数不同的重载。
参数个数不同的重载。(注:两种只是返回类型不同的方法不能重载)

构造函数是一种特殊的成员函数,它主要用于为对象分配存储空间,对数据成员进行初始化.
构造函数的名字必须与类同名;
构造函数没有返回类型,它可以带参数,也可以不带参数;
构造函数的主要作用是完成对类的初始化工作;
在创建一个类的新对象(使用new关键字)时,系统会自动调用给类的构造函数初始化新对象;

6.抽象类和抽象方法(含义与注意事项)?

抽象类:含有一个或多个抽象方法的类称为抽象类,在声明时,类名前须添加“abstract”关键字
抽象方法:只包含方法定义,但没有具体实现的方法,需要其子类或者子类的子类来具体实现。

抽象方法必须写在抽象类当中
抽象方法中不能有方法体
子类继承抽象父类后,使用override关键字覆盖父类中的抽象方法,并做具体的实现。
抽象类不能是静态或者密封的
抽象类不能被实例化,这是因为它包含了没有具体实现的方法
子类继承抽象父类后,可以使用override关键字覆盖父类中的抽象方法,并做具体的实现。也可以不实现抽象方法,留给后代实现,这时子类仍旧是一个抽象类,必须声明为abstract
抽象方法和抽象类必须用abstract声明

7. 什么情况下使用虚方法及关键字?

具体方法能否重写。
virtual

8.虚方法抽象方法的区别?

虚方法                    抽象方法
virtual修饰         abstract
要有方法体         不允许有方法体
可以被子类重写         必须被子类重写
除了密封类外都可以 只能在抽象类中

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

 抽象类                         接口


不同点 abstract定义                 interface定义
 
只能继承一个类                 可以实现多个接口
 
非抽象派生类必须实现抽象方法 实现接口的类必须实现所有的成员
 
需要override实现抽象方法 直接实现


相似点 不能被实例化 
 
包含未实现的方法 
 
派生类必须实现未实现的方法 


10.
你认为泛型最大得优点在那及关键字?

安全。不用装、拆箱。
注:泛型集合可以作为类中的一个属性。使用泛型集合必须实例化

泛型集合List<T>
泛型集合Dictionary<k,v>

11.文件读写创建与序列化反序列化的区别(仅限代码)?

(序)二进制
      BinaryFormatter bf=new BinaryFormatter();
      bf.Serialize(fileSteram,Profile);
(文)创建读写器
      Streamwriter bf=new Streamwriter(fileSteram); 
      bf.write(contemt);

12.看代码回答。
public class A5
    {
        public virtual void MethodA()
        {
            Console.WriteLine("A5.MethodA");
            Console.Read();
        }
        public virtual void MethodB()
        {
            MethodA();
        }
    }
    public class B5 : A5
    {
        public new void MethodA()  
        {
            Console.WriteLine("B5.MethodA");
            Console.Read();
        }
    }

    public class virtul5test
    {
        public static void run()
        {
            B5 a = new B5();
            a.MethodB(); //
显示A5.MethodA
        }
    }

 

a.MethodB()不是调用B5中的继承MethodA而来的方法么,而B5中的MethodA不是隐藏A5中的MethodA了么,结果怎么不是B5.MethodA?

因为你使用的是 new 覆盖,而不是使用 override 重写!
关键就在于那个 new 关键字,如果把 new 换成 override,结果就是 B5.MethodA
所谓继承,是先查找派生类中有没有重写方法,如果有,则调用派生类中重写后的方法,否则调用基类的方法。所以你这里 a.MethodB(),调的是 base.MethodB(),然后又调用 MethodAB5 没有重写基类的 MethodA ,所以就显示 A5.MethodA 了。

13.程序设计: 猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒.

1. 联动效果,运行代码只要执行Cat.Cryed()方法。
2.
对老鼠和主人进行抽象
<1>.
构造出CatMouseMaster三个类,并能使程序运行
<2>
MouseMaster中提取抽象
<3>
联动效应,只要执行Cat.Cryed()就可以使老鼠逃跑,主人惊醒。


public interface Observer
{
void Response(); //
观察者的响应,如是老鼠见到猫的反映
}
public interface Subject
{
void AimAt(Observer obs); //
针对哪些观察者,这里指猫的要扑捉的对象---老鼠
}
public class Mouse : Observer
{
private string name;
public Mouse(string name, Subject subj)
{
this.name = name;
subj.AimAt(this);
}

public void Response()
{
Console.WriteLine(name + " attempt to escape!");
}
}
public class Master : Observer
{
public Master(Subject subj)
{
subj.AimAt(this);
}

public void Response()
{
Console.WriteLine("Host waken!");
}
}

public class Cat : Subject
{
private ArrayList observers;
public Cat()
{
this.observers = new ArrayList();
}
public void AimAt(Observer obs)
{
this.observers.Add(obs);
}
public void Cry()
{
Console.WriteLine("Cat cryed!");
foreach (Observer obs in this.observers)
{
obs.Response();
}
}
}
class MainClass
{
static void Main(string[] args)
{
Cat cat = new Cat();
Mouse mouse1 = new Mouse("mouse1", cat);
Mouse mouse2 = new Mouse("mouse2", cat);
Master master = new Master(cat);
cat.Cry();
}
}
口述:
14.
你对类和对象的理解?简单工厂的理解? 10
15.
在你印象中组长的形象好吗?有能力领导这个组吗?缺陷在那里?10
16.
你最讨厌的人有困难你会给以帮助吗?10

 

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
C#经典笔试题
C#综合笔试题下(上)
C#中接口的理解
B继承A A a=new B();B a=new B()区别
C#中A a=new B()的意义
c#中abstract、override、new、virtual、sealed使用和示例 .
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服