c#常见面试题与解析

ops/2024/11/28 18:56:21/

1.简述 private、 protected、 public、internal 修饰符的访问权限

public 公有的

protected 受保护的

private 私有的

internal 内部的

前三者的关系public>protected>private

internal表示在同意程序集内,可访问。

2.列举ASP.NET页面之间传递值的几种方式

a.如果按照页面请求方式来说,有这样的几种方式

get请求,参数通过url传递,后端通过Request.QueryStirng接收

post请求,参数通过流的方式进行提交,后台通过StreamReader流读取器获取

b.session传递

c.cookie传递

3.一列数的规则如下: 1、1、2、3、5、8、13、21、34...... 求第30位数是多少,用递归算法实现

4.C#中的委托是什么?事件是不是一种委托?

举例说明

delegate in Plus(int a,int b);//定义一个委托

Plus plus=new Plus(funciton);//实例化一个委托,并把同样参数,同样返回类型的函数作为委托的参数放进去

plus(2,2);//通过委托调用这个函数

事件是委托

5.实现多态的过程中overload 重载与override 重写的区别

overload重载:

举个例子:

ClassA

{

public int Test(int a,int b)

{

return a+b;

}

public int Test(int a)

{

return a;

}

//这就是Test方法的重载

}

也就是说方法重载是通过不同的参数数量或不同的参数类型或不同的参数顺序实现的

override重写:就是一个派生类继承父类的方法,对父类的方法进行重写

6.请编程实现一个冒泡排序算法?

8.用.net做B/S结构的系统,您是用几层结构来开发,每一层之间的关系以及为什么要这样分层?

结合我以前的webForm项目,我们是分为这样几层

一个叫Model,Model顾名思义模型层,说白了就是前端用到的表结构

一个叫BLL Business Logic Layer 业务逻辑层,从前端来说,就是根据前端页面逻辑产生的对应的操作方法,从后端来说就是对DAL层的封装后的调用

一个叫DAL Data Access Layer 数据访问层,最底层访问数据库,操作数据库的方法

9.什么是装箱和拆箱?

值类型转换为引用类型,就是装箱

反之就是拆箱

10.什么是受管制(托管)的代码?

跑在CLR(公共语言运行时)上的代码

11.ADO.NET中常用的对象有哪些?说明一下。

ADO.NET用于数据库的连接和操作,最开始的时候,我接触的是Sql Server。

我结合Sql Server说一下这个常用的对象有哪些

SqlConnection 顾名思义连接数据

SqlDataAdapter 这叫数据适配器,它有个自动开关的功能

SqlCommand 用于存放和处理sql语句

DataSet 用于盛放读取后的数据集

SqlDataReader 这个不常用,顾名思义数据读取器,特点就是只读取第一条

12.Code-Behind技术是什么

vs2017新建一个webForm,在新建一个aspx文件的时候,实际上会有三个文件。这三个文件的后缀分别是

.aspx,.aspx.cs,aspx.desgin.cs。

.aspx用于存放html以及一些asp.net的空间。

.cs文件就是后台逻辑了。

所谓的Code-Behind就是把页面代码和后台代码分开了,当然想写在一起也是可行的。

13.配件是什么意思

就是程序集(包括dll文件,一些资源文件,图片,文档之类的)

14.WebService如何调用

我从项目上是这样调用的,右击项目名称,添加,再选择服务引用,然后把WebService的地址放进去,就完成了对webServcie的调用

非项目的情况下有个叫wsdl.exe的程序,可以通过类似添加WebService地址的方式进行调用

15.在C#中,string str = null 与 string str = “” 请尽量使用文字或图象说明其中的区别。

string str=null,不占内存空间

str="",表示空字符串,但是有内存空间

16.class与结构体有什么异同

异:

class是引用类型,结构体值类型

class有析构函数,结构体没有

class可让其他类继承,结构体没有继承

二者都可以定义变量,定义方法

二者都可以实现接口

二者都可以有自定义的构造函数

ps:结构的构造函数,必须有结构体的所有字段

17.写出一条Sql语句:取出表A中第31到第40记录(SQLServer,以自动增长的ID作为主键,注意:ID可能不是连续的。

select top 10 * from dbo.Stus where id not in(select top 30 id from (select top 40 * from dbo.Stus) as tb)

18.说一下GC

GC是Garbage Collection的缩写,中文意思就是垃圾回收,有了GC会自动释放应用程序不占用的内存

19.String s = new String("xyz");创建了几个String Object?

答:两个对象,一个是“xyz”,一个是指向“xyz”的引用对象s。

20.try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?

会执行。return之后。

finally里的代码,不管有没有捕获到异常都会执行。

21.Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?

通过迭代器区分重复与否,用起来没区别。

22.谈谈final, finally, finalize的区别。

final可用作类或类成员的修饰符

final用于class表示类无法继承,final翻译成中文,最后的,那就当然无法继承

final用在方法上,说明方法不可重写

final用在变量上,变量不可修改

finally。用于try,catch搭配

finalize是java平台的一个方法

23.如何处理几十万条并发数据?

事务和存储过程

24.进程和线程的区别

exe启动就是产生一个进程,线程是进程的具体执行单位

25.堆和栈的区别

引用类型放在堆上

值类型放在栈上

26.成员变量和成员函数加Static的作用

1.从代码的角度上看,有了Static的方法和变量,类可直接调用

2.从程序运行的角度就是,Static修饰的类和方法,程序启动后,就加载完成。

27.GAC

Global Assembly Cache 全局程序集缓存

28.DataReader和DataSet的含义

以sql server为例,通过DataReader去读取数据库的时候,就算表里有不止一条的数据,它也就返回第一条。

DataSet则是把查询出的所有数据存起来。DataSet和SqlDataAdapter连用

29.c#中using和new的用法

using的用法

第一点,也是最普遍的用法,引用命名空间

第二点,当using放入具体的代码块的时候,using会起到dispose的作用

new的用法

第一点就是实例化对象

第二点就是隐藏父类的方法

30.什么是虚函数,什么是抽象函数

举例:public virtual void Test();这就是虚函数

抽象函数则是方法上加了abstract

31.C#中的property和attribute,阐述一下。

property和attribute有一个共同的翻译,叫属性

c#的property我把它理解为资产,比如这个类有name字段,这个name字段就是它的资产

attribute则是对这个类的一些特性的描述,好比说这个人气质很高贵。

32.HashMap和Hashtable的区别

c#没有HashMap

33.c#和.NET的区别

c#开发语言

.NET是开发平台

34.线程如何启用

start

35.数组有没有length(),字符串有没有length()

数组没有length()方法,有length属性

字符串也没有length(),有length属性

String类也没有length(),也没有length属性

String实例化的对象有length属性,没有length()

36.值类型和引用类型的区别,通过代码说明

int a=3;

int b=a;

b=44;

这时a还是3

Person p1=new Person();

p1.Name="abc";

Person p2=p1;

p2.Name="efg";

这时p1.Name="efg"

这就是值类型和引用类型最主要的区别。

37.c#中的接口和类有什么异同

同:

二者都可以定义变量,方法

二者都可以继承

异:

class可以继承class,class可以继承接口。接口只能继承接口

class里的方法有修饰符,有方法体,接口没有

class有构造函数,析构函数,接口没有


http://www.ppmy.cn/ops/137438.html

相关文章

数据结构(初阶6)---二叉树(遍历——递归的艺术)(详解)

二叉树的遍历与练习 一.二叉树的基本遍历形式1.前序遍历(深度优先遍历)2.中序遍历(深度优先遍历)3.后序遍历(深度优先遍历)4.层序遍历!!(广度优先遍历) 二.二叉树的leetcode小练习1.判断平衡二叉树1)正常解法2)优化解法 2.对称二叉…

索尼欲推新一代PSP/PSV掌机,将支持PS4/5游戏

原文转载修改自(更多互联网新闻/搞机小知识): 新一代索尼掌机将支持PS4/PS5游戏,或与PS6同时期推出 说起索尼掌机,很难逃得过一句:怒其不争。PSP、PSV打下的大好河山,愣是断送在时代洪流的大浪…

UE5 Spawm Emitter at Location(在位置处生成发射器)

在 Unreal Engine 5 (UE5) 中,Spawn Emitter at Location 是一个非常有用的节点,用来在特定位置生成粒子效果(Particle Emitter)。这个节点常用于在蓝图中创建临时的粒子效果,例如爆炸、火花或其他动态效果。 如何使用…

docker 安装mysql8.4.0

1、拉取mysql8.4.0镜像 docker pullmysql:8.4.0-oraclelinux8查看镜像 docker images2、新建宿主机本地目录:用来挂载MySQL容器所产生的数据的目录 mkdir -p /home/admin/data/mysql /home/admin/logs/mysql /home/admin/conf/mysql3、在/home/admin/conf/mysql目…

HTTP 缓存技术

HTTP 缓存技术 1. 缓存概述 HTTP 缓存技术通过存储已请求资源的副本,减少重复请求、提升响应速度,并节省带宽。缓存可以在客户端、代理服务器、CDN(内容分发网络)等位置进行,能够有效提升 Web 应用的性能、降低服务器…

限制对 etcd 的访问范围是确保 Kubernetes 集群安全的一个重要环节。

限制对 etcd 的访问范围是确保 Kubernetes 集群安全的一个重要环节。通常,etcd 只应当对 Kubernetes 控制平面的组件(如 API Server、Controller Manager、Scheduler 等)以及某些维护工具(如备份工具)开放访问权限&…

泷羽sec学习打卡-shell命令2

声明 学习视频来自B站UP主 泷羽sec,如涉及侵权马上删除文章 笔记的只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负 关于shell的那些事儿-shell2 临时变量和永久变量为什么使用ls、dir命令可以输出一些内容呢?如…

java 集合 菱形内定义封装类 而非基本数据类型 原因解释 详解

在 Java 中&#xff0c;泛型&#xff08;例如 List<E>、Map<K, V>&#xff09;要求使用封装类&#xff08;Wrapper Class&#xff09;而不是基本数据类型&#xff08;Primitive Types&#xff09;。这是因为 Java 泛型的实现机制&#xff08;基于类型擦除&#xff…