【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相关的笔试面试知识点,其他几 ...
随机推荐
- Bootstrap 图标
Bootstrap 图标由 Glyphicons 提供.详情可以去bootstrap官网进行查看. 用法: <i class="icon_class_name">< ...
- 使用Repository模式构建数据库访问层
使用Repository模式构建数据库访问层 使用ASP.NET Web Api构建基于REST风格的服务实战系列教程[二]——使用Repository模式构建数据库访问层 系列导航地址http:// ...
- JAVA面试精选
JAVA面试精选[Java基础第一部分] 这个系列面试题主要目的是帮助你拿轻松到offer,同时还能开个好价钱.只要能够搞明白这个系列的绝大多数题目,在面试过程中,你就能轻轻松松的把面试官给忽悠了.对 ...
- media Queries实现一个响应式的菜单
使用media Queries实现一个响应式的菜单 Media queries是CSS3引入的一个特性,使用它可以方便的实现各种响应式效果.在这个示例中我们将会使用media queries实现一 ...
- Dirichlet's Theorem on Arithmetic Progression
poj3006 Dirichlet's Theorem on Arithmetic Progressions 很显然这是一题有关于素数的题目. 注意数据的范围,爆搜超时无误. 这里要用到筛选法求素数. ...
- 应用内支付(IAP)可加入三方支付
Windows Phone 放开政策 - 应用内支付(IAP)可加入三方支付 Windows Phone 应用商店在 今年(2013)11月04号 修改了商店政策 允许公司账户的应用使用三方支付S ...
- Code First 启用迁移时出错 HRESULT:0x80131040
问题:Enable-Migrations 使用“8”个参数调用“CreateInstanceFrom”时发生异常 (异常来自 HRESULT:0x80131040) PM> Enable-Mig ...
- 图解JOIN
阅读导航 一.概要 二.JOIN分类 三.JOIN分类详解 一.概要 JOIN对于接触过数据库的人,这个词都不陌生,而且很多人很清楚各种JOIN,还有很多人对这个理解也不是很透彻,这次就说说JOIN操 ...
- Centos 5上使用YUM安装GIT
网上搜索的基本上都是一样的内容 1.先安装git依赖的包 yum install zlib-devel yum install openssl-devel yum install perl yum i ...
- var, object, dynamic的区别以及dynamic的使用
var, object, dynamic的区别以及dynamic的使用 理解C# 4 dynamic(1) - var, object, dynamic的区别以及dynamic的使用 2013-06- ...