zoukankan      html  css  js  c++  java
  • .NET面试题系列之面向对象

    上个月离职了,这几天整理了一些常见的面试题,整理成一个系列给大家分享一下,机会是给有准备的人,面试造火箭,工作拧螺丝,不慌,共勉。
    1.net必问的面试题系列之基本概念和语法
    2.net必问的面试题系列之面向对象
    3.net必问的面试题系列之设计模式
    4.net必问的面试题系列之集合、异常、泛型
    5.net必问的面试题系列之简单算法
    6.net必问的面试题系列之数据库
    7.net必问的面试题系列之web前端
    .net打杂工程师的面试感想和总结

    问题目录

    1.通常采用的访问修饰符有哪五种
    2.多态的理解
    3.什么是构造函数
    4.重写和重载的区别
    5.class和struct的异同
    6.构造函数是否能被重写?
    7.简述一下面向对象的三大特性
    8.抽象类和接口有什么区别?
    9.类的执行顺序
    10.接口是否可继承接口?抽象类是否可实现(implements)接口?抽象类是否可继承实现类(concrete class)?
    11.继承最大的好处?
    12.请说说引用和对象?
    13.什么是匿名类,有什么好处
    14.有哪些引用类型,有哪些值类型,有什么区别
    15.C#中有没有静态构造函数,如果有是做什么用的?
    16.怎样理解静态变量?静态成员和非静态成员的区别?
    17.在项目中为什么使用接口?接口的好处是什么?什么是面向接口开发?
    18.属性能在接口中声明吗?
    19.什么时候用重载?什么时候用重写?
    20.静态方法可以访问非静态变量吗?如果不可以为什么?

    1.通常采用的访问修饰符有哪五种

    public:公开,访问无限制
    internal:本项目内可以访问
    internal protected:本项目的父子类可以访问
    protected:子类可以访问
    private:受保护的,只能在奔类中使用,对外完全封闭

    2.多态的理解

    解释:同一操作作用于不同的对象,实现不同的结果。
    作用:增强代码的灵活性,重用性,可读性
    实现:通过派生类,覆写基类的虚方法、重写基类的override方法。

    3.什么是构造函数

    概念:构造函数的方法名与类型相同、没有返回类型
    作用:完成对类的对象初始化
    创建一个类的新对象时,系统会自动调用该构造函数初始化新对象,
    如果没有写定义,那么系统会自动提供一个不带任何参数的public 构造函数

    4.重写和重载的区别

    重写方法:关键字用override修饰,派生类重写基类的方法,方法命名、返回类型,参数必须相同,
    重载方法:方法名必须相同,参数列表必须不相同,返回类型可以不相同。
    作用:重写主要是实现面向对象的多态性、重载主要是实现实例化不同的对象

    5.class和struct的异同?

    相同点:
    1.都可以实现接口
    不同点:
    1.class是引用类型,struct是值类型
    2.class允许继承、被继承,struct不允许,只能继承接口
    3.class可以初始化变量,struct不可以
    4.class可以有无参的构造函数,struct不可以,必须是有参的构造函数,而且在有参的构造函数必须初始化所有成员
    使用场景:
    1.Class比较适合大的和复杂的数据,表现抽象和多级别的对象层次时。Struct适用于作为经常使用的一些数据组合成的新类型,表示诸如点、矩形等主要用来存储数据的轻量级对象时,偏简单值。
    2.Struct有性能优势,Class有面向对象的扩展优势。

    6.构造函数是否能被重写?

    构造器Constructor不能被继承,因此不能重写,但可以被重载

    7.简述一下面向对象的三大特性

    封装、继承、多态。
    封装:是通过把对象的属性的实现细节隐藏起来,仅对外提供公共的访问方法。
    继承:是通过子类继承基类、继承抽象类、继承接口实现的。
    多态:是通过重写基类的override 方法、重写虚方法实现的。
    好处是,方便维护、易扩展。
    缺点是:比面向过程性能低。

    8.抽象类和接口有什么区别?

    相同点:都不能直接实例化
    1.抽象类用abstract修饰、接口用interface修饰
    2.抽象类中的方法可以实现,也可以不实现,有抽象方法的类一定要用abstract修饰,接口中的方法不允许实现
    3.抽象类只能单继承,接口支持多继承
    4.抽象类有构造方法,接口不能有构造方法
    5.接口只负责功能的定义,通过接口来规范类的,(有哪些功能),而抽象类即负责功能的定义有可以实现功能(实现了哪些功能)

    9.类的执行顺序

    执行顺序:父类,子类,静态块,静态字段,非静态块,非静态字段,构造器,方法

    10.接口是否可继承接口?抽象类是否可实现(implements)接口?抽象类是否可继承实现类(concrete class)?

    接口可以继承接口,抽象类可以实现接口,抽象类可以继承实现类,但前提是实现类必须有明确的构造函数。

    11.继承最大的好处?

    对父类成员进行重用,增加代码的可读性、灵活性。

    12.请说说引用和对象?

    对象和引用时分不开的,对象生成一个地址,放在堆里面,引用则指向这个地址,放在栈里面

    13.什么是匿名类,有什么好处

    不用定义、没有名字的类,使用一次便可丢弃。好处是简单、随意、临时的。

    14.有哪些引用类型,有哪些值类型,有什么区别

    引用类型:类、接口、委托、字符串、数组
    值类型:整形、浮点型、结构体、枚举、bool
    值类型和引用类型的区别在于,值类型的变量直接存放实际的数据,而引用类型的变量存放的则是数据的地址,即对象的引用。
    默认值,值类型是0,引用类型null。

    15.C#中有没有静态构造函数,如果有是做什么用的?

    有.
    特点:
    静态构造函数既没有访问修饰符,也没有参数。
    在创建第一个实例或引用任何静态成员之前,将自动调用静态构造函数来初始化类。
    无法直接调用静态构造函数。在程序中,用户无法控制何时执行静态构造函数。
    用途:
    当类使用日志文件时,将使用这种构造函数向日志文件中写入项。

    16.怎样理解静态变量?静态成员和非静态成员的区别?

    静态变量属于类,而不属于对象;并对所有对象所享;静态成员在加类的时候就被加载。

    17.在项目中为什么使用接口?接口的好处是什么?什么是面向接口开发?

    接口是一种约束,描述类的公共方法/公共属性,不能有任何的实现
    好处是:结构清晰,类之间通信简单易懂,扩展性好,提高复用性。
    面向接口开发就是指面向抽象协议编程,实现者在实现时

    18.属性能在接口中声明吗?

    可以,不能有访问修饰符,不能初始化赋值。

    19.什么时候用重载?什么时候用重写?

    当一个类需要用不同的实现来做同一件事情,此时应该用重写,而重载是用不同的输入做同一件事情

    20.静态方法可以访问非静态变量吗?如果不可以为什么?

    静态方法和非静态变量不是同一生命周期,静态方法属于类,非静态变量属于具体的对象,静态方法和具体的对象没有任何关联

  • 相关阅读:
    SPOJ 694 (后缀数组) Distinct Substrings
    POJ 2774 (后缀数组 最长公共字串) Long Long Message
    POJ 3693 (后缀数组) Maximum repetition substring
    POJ 3261 (后缀数组 二分) Milk Patterns
    UVa 1149 (贪心) Bin Packing
    UVa 12206 (字符串哈希) Stammering Aliens
    UVa 11210 (DFS) Chinese Mahjong
    UVa (BFS) The Monocycle
    UVa 11624 (BFS) Fire!
    HDU 3032 (Nim博弈变形) Nim or not Nim?
  • 原文地址:https://www.cnblogs.com/zhangmumu/p/11408026.html
Copyright © 2011-2022 走看看