【C#】面试题整理
1.C#中类是否支持多继承?请说明原因。
答:不支持,需要用接口来实现多继承
2.我们都知道一个类可以有多个构造函数,并且C#会在我们创建类的时候默认的提供一个无参的构造函数,当我实现了另外一个有参数的构造函数的时候,我还能调用无参数的构造函数吗?请说明原因。
答:不能,因为一旦你实现了一个构造函数,C#就不会再提供默认的构造函数了,所以需要自己手动写入一个无参数的构造函数。
3.请简略描述重载和重写的区别?
答:方法重载提供了一个相同的方法但是方法签名的参数不同的调用的实现。
重写提供了子类中改变父类方法行为的实现。
4.请问能设置类A可被继承,但类A中的某个方法不能被重写吗?
答:能,将类A的修饰符标记为public、标记类A中的不允许重写的方法为sealed
sealed关键字不仅可以限制类,也可以限制方法。
5.const和readonly有什么区别?
答:const关键字用来声明编译时的常量
readonly用来声明运行时的常量
6.什么时候必须声明一个类为抽象类?
答:(1)当这个类中有抽象方法的时候,必须声明类为抽象类
(2)该类没有完全实现父类的抽象方法时,也需要声明为抽象类
7.接口和抽象类的区别是什么?
答:接口中所有的方法都不能有实现,并且不能指定方法的修饰符
抽象类中可以有方法的实现,也可以指定方法的访问修饰符
第一个继承接口的类必须实现接口里的所有方法
而抽象类中抽象方法的实现是由第一个非抽象的派生类来实现
8.类的私有成员会被子类继承吗?请说明原因。
答:会被子类继承,但是不能被访问。所以看上去是不能被继承的,实际上确实被继承了。
9.请写出C#中的单例模式
答:
public class Single
{
private static Single instance;
private Single (){}
public static Single GetInstance ()
{
if (instance == null) {
instance = new Single ();
}
return instance;
}
}
10.现有一个整数number,请写一个方法判断这个整数是否是2的N次方
答:
private static bool GetFlag(int num)
{
if (num < 1) return false;
return (num & num - 1) == 0;
}
11.追加一个双重锁定的单例模式
using System;
using System.Collections.Generic;
/// <summary>
/// 适用于在多线程的情况下保证只有一个实例化对象的情况,例如银行的操作系统
/// </summary>
namespace DoubleLockInstance
{
//----------------------------------
// 双重锁定单例
public sealed class Singleton
{
// 定义一个类对象,用于内部实现
private static Singleton myInstance;
// readonly - 这个成员只能在“类初始化”时赋值 ,所谓的类初始化,就是直接在类里面初始化
// 变量标记为 readonly,第一次引用类的成员时创建实例
private static readonly object lockRoot = new object ();
// 设置构造方法为私有,这样就不能在外部实例化类对象了
private Singleton ()
{
}
// 实例化对象的方法
public static Singleton GetInstance ()
{
// 外部不能实例化对象,但是能调用类里面的静态方法
// 外部需要调用这个方法来使用类对象,如果对象不存在就创建
// 这里面使用两个判断是否为null的原因是,我们不需要每次都对实例化的语句进行加锁,只有当对象不存在的时候加锁就可以了
if (myInstance == null) {
// 锁定的作用就是为了保证当多线程同时执行这句代码的时候保证对象的唯一性
// 锁定会让同时执行这段代码的线程排队执行
// lock里面需要用一个已经存在的对象来判断,所以不能使用myInstance
lock (lockRoot) {
// 这里还需要一个判断的原因是,如果多线程都通过了外层的判断进行排队
// 那将会实例化多个对象出来,所以这里还需要进行一次判断,保证线程的安全
if (myInstance == null) {
myInstance = new Singleton ();
}
}
}
return myInstance;
}
}
}
【C#】面试题整理的更多相关文章
- 【web前端面试题整理06】成都第一弹,邂逅聚美优品
前言 上周四回了成都,休息了一下下,工作问题还是需要解决的,于是今天去面试了一下,现在面试回来了,我感觉还是可以整理一下心得. 这个面试题整理系列是为了以后前端方面的兄弟面试时候可以得到一点点帮助,因 ...
- C++ 面试题整理
我和朋友们面到的c++试题整理 虚表 static const sizeof 可构造不可继承的类 stl Iterator失效 map vector vector的removed_if 优化 ---- ...
- Touch事件or手机卫士面试题整理回答(二)
Touch事件or手机卫士面试题整理回答(二) 自定义控件 1. Touch事件的传递机制 顶级View->父View->子View,不处理逆向返回 OnInterceptTouchEve ...
- 尚学堂Java面试题整理
博客分类: 经典分享 1. super()与this()的差别? - 6 - 2. 作用域public,protected,private,以及不写时的差别? - 6 - 3. 编程输出例如以 ...
- 【JAVA面试】java面试题整理(4)
版权声明:转载请注明 https://blog.csdn.net/qq_33591903/article/details/83473779 ...
- 北京Java笔试题整理
北京Java笔试题整理 1.什么是java虚拟机?为什么ava被称作是"平台无关的编程语言? 答:Java虚拟机可以理解为一个特殊的"操作系统",只是它连接的不是硬件,而 ...
- Java笔试面试题整理第八波
转载至:http://blog.csdn.net/shakespeare001/article/details/51388516 作者:山代王(开心阳) 本系列整理Java相关的笔试面试知识点,其他几 ...
- Java笔试面试题整理第六波(修正版)
转载至:http://blog.csdn.net/shakespeare001/article/details/51330745 作者:山代王(开心阳) 本系列整理Java相关的笔试面试知识点,其他几 ...
- Java笔试面试题整理第五波
转载至:http://blog.csdn.net/shakespeare001/article/details/51321498 作者:山代王(开心阳) 本系列整理Java相关的笔试面试知识点,其他几 ...
- Java笔试面试题整理第四波
转载至:http://blog.csdn.net/shakespeare001/article/details/51274685 作者:山代王(开心阳) 本系列整理Java相关的笔试面试知识点,其他几 ...
随机推荐
- 定步长的龙格库塔7(8)阶C++程序(RKF78)
定步长,可以在稍微修改之后变为变步长形式,代码如下: void rkf78c( double h, double& T, vxd& X, double& err) { int ...
- 7.25 RPN转换
思想: 目的:将中缀表达式(即标准形式的表达式)转换为后缀式. 例子:a+b*c+(d*e+f)*g转换成abc*+de*f+g*+ 转换原则: 1.当读到一个操作数时,立即将它放到输出中.操作符则不 ...
- iOS基础 - 单元测试
单元测试(unit testing):对软件中最小可测试单元进行检查和验证.一般面向过程的语言中,基本单元为函数,面向对象的语言中,基本单元通常是类,其实对于一个手机上的app来说基本单元也可以是一个 ...
- REDGATE又一好用的脚本工具
REDGATE又一好用的脚本工具 REDGATE又一好用的脚本工具 先说明一下:这个工具是免费的 下载地址:http://www.red-gate.com/products/dba/sql-scr ...
- 逻辑回归模型(Logistic Regression, LR)基础
逻辑回归模型(Logistic Regression, LR)基础 逻辑回归(Logistic Regression, LR)模型其实仅在线性回归的基础上,套用了一个逻辑函数,但也就由于这个逻辑函 ...
- jQuery中的DOM操作《思维导图》
首先,是关于jQuery中的DOM操作的<思维导图>,请点击这里:jQuery中的DOM操作 列表框的左右选项移动 <html> <head> <title& ...
- MvcMovieStore实例 教程
转原创:MvcMovieStore 实例教程(新概念版:mvc5.0,EF6.01)-初露锋芒 如需转载,请注明出处:http://www.cnblogs.com/DoduNet/ 最近趁业余时间,把 ...
- [google面试CTCI] 1-8.判断子字符串
[字符串与数组] Q:Assume you have a method isSubstring which checks if one word is a substring of another G ...
- [原创]opencv实现图像拼接,制做全景图
转载请注明:http://www.cnblogs.com/ausk/p/3332255.html 调用opencv2.4.6中的库函数,实现图像的拼接功能,傻瓜式拼接,不需要太多的专业知识.. ...
- webservice 第一节 .net SoapHeader验证
在工作中经常用到webservice,在.net 开发中经常用到webservice,在java开发经常用到cxf. 今天闲置没事就介绍下 .net webservice中常用到 soapheader ...