.net软件工程师面试

本文涉及的产品
云数据库 RDS SQL Server,独享型 2核4GB
简介:

.net软件工程师面试题一. 填空题:

  1. 类的三大特性是(封装)(继承)(多态)。

  2. 在SELECT语句的FROM子句中最多可以指定(256)个表或视图,相互之间要用(逗号)分隔,当所查询的表不在当前数据库时,可用(数据库名.所有者名.表名)格式来指出表或视图对象。

  3. 创建存储过程的命令是(create proc 存储过程名)删除表的命令是(drop 表名)。

  4. 计算字段的累加和的函数是:(sum),统计项目数的函数是:(count)。

  5. 关系数据库中,主键是(外键)。

  6. 声明抽象类的关键字是(abstract),抽象类不能(sealed)。

  7. .NET运行库支持被称为(委托)的引用类型,其作用类似于C++中函数指针的用途。

  8. XML的全称是(Extensible Markup Language)。

  9. C#中所有的类型实质上都是从(Object)类派生而来的。

  10. 声明静态变量的关键字是(static),声明常量的关键字是(const)。

  11. C#中处理内存管理功能的是(托管代码)。

  12. 在C#中用于显式地将一个值或引用转换为另一种不同的类型称为(拆箱)。

  13. 在ADO。NET中,command对象是用(ExcuteNonQuery)(ExcuteScalar)(ExcuteDataReader)方法执行命令。

  14. B/S通常使用的结构设计模型分为(模型)(视图)(控制)。

  15. SQL SERVER中索引类型包括的三种类型分别是(主键索引)(唯一索引)(聚集索引)。

  .net软件工程师面试题二. 简答题:

  1.什么是中间语言(IL)?它的作用?

  答:代码在执行前都要被编译为托管代码,与CPU无关的指令集。

  其作用:支持平台无关性,还支持语言的互操作性。

  2.什么是装箱和拆箱?

  答:值类型转换成引用类型是装箱,引用类型转换成值类型是拆箱。

  3. 出ADO。NET中读写数据库的主要的几个类?它们的作用?

  答:Connection数据库连接;Command执行SQL语句或存储过程;DataAdapter用于填充DataSet和更新数据库的一组数据命令和数据库连接,断开模式;DataReader,读取数据库信息,是只读向前的;DataSet数据在内存中的缓存。

  4. C#中接口和类有什么异同?

  答:类是引用类型,可以继承类、接口和被继承,有默认的构造函数,有析构函数,可以使用abstract和sealed,有protected修饰符,必须使用new初始化。

  结构是值类型,只能继承接口,不能被继承,没有默认的构造函数,可以创建,没有析构函数,不可以用abstract和sealed,没有protected修饰符,可以不用new初始化。

  如何选择使用结构还是类:

  1.堆栈的空间有限,对于大量的逻辑的对象,创建类要比创建结构好一些

  2.结构表示如点、矩形和颜色这样的轻量对象,例如,如果声明一个含有 1000 个点对象的数组,则将为引用每个对象分配附加的内存。在此情况下,结构的成本较低。

  3.在表现抽象和多级别的对象层次时,类是最好的选择

  4.大多数情况下该类型只是一些数据时,结构是最佳的选择

  5. 解释ASP。NET中的code-behind?

  答:代码隐藏,显示逻辑的代码和处理逻辑的代码分离

  6. 什么是ASP。NET中的用户控件?

  答:是asp.net代码创建的控件,就像在标准的ASP.NET Web页面中创建控件一样,可以在多个ASP.NET页面中重用它们。

  7. 在C#中,string str = null 与 string str = “” 请尽量说明其中的区别。

  答:string str=null没有分配空间,string str=“”分配了空间

  8. 什么是受管制代码?

  答:由公共语言运行环境进行管理的代码,它主要负责内存管理。在.net平台上运行的代码都是受管制代码

  9 C#中常用的访问形式?它们各自的作用域?

  答:public 不受限制的访问。

  private 只能在本类中访问

  protected 本类和继承他的类中访问

  internel表示在同一个应用程序(application)或类库(library)中都能使用

  10. SQL SERVER 中的存储过程的理解?

  答:存储过程是 SQL 语句和可选控制流语句的预编译集合,以一个名称存储并作为一个单元处理。存储过程存储在数据库内,可由应用程序通过一个调用执行,而且允许用户声明变量、有条件执行以及其它强大的编程功能。

  11.CTS,CLS,CLR分别作何解释?

  答: CTS:公共类型系统.主要是为了语言之间的进行标准化处理.

  CLS:公共语言规范.主要是确保代码可以在任何语言中访问的最小标准集体

  CLR:公共语言运行时.主要是管理代码..处理,加载代码,以及所有服务的代码

  12. ASP。NET和ASP的主要优势?

  答:ASP.Net的优势:

  ASP.Net摆脱了以前ASP使用脚本语言来编程的缺点,理论上可以使用任何编程语言包括C++ , VB , JS等等,当然,最合适的编程语言还是MS为.Net Frmaework专门推出的C(读c sharp),它可以看作是VC和Java的混合体吧,尽管MS自己讲C#内核中更多的象VC,但实际上我还是认为它和Java更象一些吧。首先它是面向对象的编程语言,而不是一种脚本,所以它具有面向对象编程语言的一切特性,比如封装性、继承性、多态性等等,这就解决了刚才谈到的ASP的那些弱点。封装性使得代码逻辑清晰,易于管理,并且应用到ASP.Net上就可以使业务逻辑和Html页面分离,这样无论页面原型如何改变,业务逻辑代码都不必做任何改动;继承性和多态性使得代码的可重用性大大提高,你可以通过继承已有的对象最大限度保护你以前的投资。并且C#和C++、Java一样提供了完善的调试/ 纠错体系。

  13. NET的错误处理机制是什么?

  答:try{可能要出错的代码}

  catch{扑捉到错误后的处理}

  finally{不论代码是否出错都要执行}

  14. 解释Page.IsPostBack属性?

  答:使用者第一次浏览这个网页时Page.IsPostBack 会传回False,不是第一次浏览这个网页时就传回True

  15..net framework包含哪几种技术?

  答:Application Framework,Domain Framework

  16.触发器分为事前触发和事后触发,有何区别?

  答:事前触发器运行于触发事件发生之前,而事后触发器运行于触发事件发生之后。通常事前触发器可以获取事件之前和新的字段值

  17.解释SQL SERVER2000中HAVING的用法?]

  答:在分组时筛选数据

  18.解释SQL SERVER2000中GROUP BY的用法?

  答:分组

  19.解释下C#中的方法的重载?

  答:重载方法:是指使用相同的方法名,但指定不同的参数(个数,类型)。

  20.事务是什么?

  答:在许多大型、关键的应用程序中,计算机每秒钟都在执行大量的任务。更为经常的不是这些任务本身,而是将这些任务结合在一起完成一个业务要求,称为事务。当某一个任务失败时,就恢复到指定的恢复点,这个叫回滚。

  21.描述下ASP。NET中使用DataReader对象 和DataSet对象的区别?

  答:dataset是保存数据的数据结构,断开模式,而DataReader不承担保存数据的责任,需要自己手动关闭连接数据库,它只负责从数据源读取数据到本地而已,是只读向前的,它不是数据结构,而是网络通讯组件的高层封装。

  22.分析类和结构的异同?

  答:类是引用类型,可以继承类、接口和被继承,有默认的构造函数,有析构函数,可以使用abstract和sealed,有protected修饰符,必须使用new初始化。

  结构是值类型,只能继承接口,不能被继承,没有默认的构造函数,可以创建,没有析构函数,不可以用abstract和sealed,没有protected修饰符,可以不用new初始化。

  如何选择使用结构还是类:

  1.堆栈的空间有限,对于大量的逻辑的对象,创建类要比创建结构好一些

  2.结构表示如点、矩形和颜色这样的轻量对象,例如,如果声明一个含有 1000 个点对象的数组,则将为引用每个对象分配附加的内存。在此情况下,结构的成本较低。

  3.在表现抽象和多级别的对象层次时,类是最好的选择

  4.大多数情况下该类型只是一些数据时,结构是最佳的选择

  23.解释ADO。NET中的使用Connection 类的CLOSE()和DISPOSE()的区别?

  答:close只是关闭,dispose是释放资源。

  24.叙述ADO。NET中的DataAdapte类的作用?

  答:断开模式连接数据库,并且填充DataSet。

  25.什么是WEBSERVICE ?

  答:web服务,是利用SOAP(简单对象访问协议,Simple Object Access Protocol)在HTTP上执行远程方法调用的一种方法,也可以使用WSDL(Web Service Description Language,Web服务描述语言)来完整的描述Web服务,基于XML标准。

  26.行下面代码后:

  String strTemp ="abcdefg 某某某";

  int i System.Text.Encoding.Default.GetBytes(strTemp).Length;

  int j = strTemp.Length;

  问:i=( 14) ;j=( 11)

  原因是什么?

  答:汉字占2个字节,所以i=14

  27..叙述ASP。NET中的几种验证控件(equiredFieldValidato, CompareValidator, RangeValidator, RegularExpressionValitor, CustomValidator, ValidationSummary)及作用?

  答:

  a) RequiredFieldValidator(必须字段验证);

  b) CompareValidator(比较验证);

  c) RangeValidator (范围验证);

  d) RegularExpresionValidator(正则表达式);

  e) ValidationSummary(验证总结);

  f) CustomValidator(自定义验证)

  .net软件工程师面试题三. 编程题:

  1.有三个表,结构如下:

  STUDENT(学生证号,姓名,性别,出生年月)

  COURSE(课程号,课程名,授课教师)

  SC(学生证号,课程号,成绩,授课教师)

  用标准SQL 语句完成下列操作

  1. 查询女生的基本情况,并按照学生证号降序排列

  答:select * from STUDENT where性别=’女’order by 学生证号 desc

  2. 查询成绩在90分以上的学生的姓名

  答:select 姓名from STUDENT,SC where STUDENT.学生证号 = SC.学生证号 and SC.成绩 > 90

  3. 查询数学类课程的课程号和课程名(模糊查询,以S开头)

  答:select 课程号,课程名 from COURSE where 课程名 like ‘S%’

  4. 查询选课学生所选课程的课程号和成绩,以及该学生的姓名和性别

  答:select 课程号,成绩,姓名,性别 from SC,STUDENT,COURSE

  where SC.学生证号 = STUDENT.学生证号

  and COURSE.课程号 = SC.课程号 group by 学生证号

  5. 查询03号课程的平均成绩

  答:select avg(成绩) from SC where 课程号 = ‘03’

  6. 删除成绩不及格的学生姓名

  答:delete from STUDENT where学生证号 in (select学生证号 from SC where 成绩 < 60);

  delete from SC where成绩 < 60;

  注意:删除的顺序不能反

  7. 把学生证号为90876的学生所选的01号课程成绩改为80分

  答:update SC set 成绩 = ’80’where 学生证号=’90876’ and课程号 = ‘01’

  2.SQLSERVER服务器中,给定表 table1 中有两个字段 ID、LastUpdateDate,ID表示更新的事务号, LastUpdateDate表示更新时的服务器时间,请使用一句SQL语句获得最后更新的事务号。(10)

  答:select ID from table1 where LastUpdateDate = (select max(LastUpdateDate) from table1)

         以上面试资料.net软件工程师面试题精华集锦中的一部分,经过一段时间的工作经验的积累后,可发展成为高级软件工程师、算法应用开发工程师和需求工程师,但需要具有丰富的软件开发经验和相关工作的技术背景。如果想成为技术精英、项目经理,则还需要具有较强的管理和组织等方面的能力。

原文地址



本文转自Work Hard Work Smart博客园博客,原文链接:http://www.cnblogs.com/linlf03/archive/2012/12/26/2834908.html,如需转载请自行联系原作者

相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS&nbsp;SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/sqlserver
目录
相关文章
|
1月前
|
SQL 数据库 C#
C# .NET面试系列十一:数据库SQL查询(附建表语句)
#### 第1题 用一条 SQL 语句 查询出每门课都大于80 分的学生姓名 建表语句: ```sql create table tableA ( name varchar(10), kecheng varchar(10), fenshu int(11) ) DEFAULT CHARSET = 'utf8'; ``` 插入数据 ```sql insert into tableA values ('张三', '语文', 81); insert into tableA values ('张三', '数学', 75); insert into tableA values ('李四',
62 2
C# .NET面试系列十一:数据库SQL查询(附建表语句)
|
1月前
|
开发框架 算法 搜索推荐
C# .NET面试系列九:常见的算法
#### 1. 求质数 ```c# // 判断一个数是否为质数的方法 public static bool IsPrime(int number) { if (number < 2) { return false; } for (int i = 2; i <= Math.Sqrt(number); i++) { if (number % i == 0) { return false; } } return true; } class Progr
58 1
|
1月前
|
并行计算 安全 Java
C# .NET面试系列四:多线程
<h2>多线程 #### 1. 根据线程安全的相关知识,分析以下代码,当调用 test 方法时 i > 10 时是否会引起死锁? 并简要说明理由。 ```c# public void test(int i) { lock(this) { if (i > 10) { i--; test(i); } } } ``` 在给定的代码中,不会发生死锁。死锁通常是由于两个或多个线程互相等待对方释放锁而无法继续执行的情况。在这个代码中,只有一个线程持有锁,且没有其他线程参与,因此不
102 3
|
1月前
|
SQL 存储 关系型数据库
C# .NET面试系列十:数据库概念知识
#### 1. 为什么要一定要设置主键? 设置主键是数据库设计中的一个重要概念,有几个主要原因: 1、唯一性 ```c# 主键必须保证表中的每一行都有唯一的标识。这样可以避免数据冗余和不一致性。如果没有主键或者主键不唯一,就可能出现数据混乱或错误。 ``` 2、查询性能 ```c# 数据库系统通常会使用主键来加速数据检索。主键通常会被索引,这样可以更快速地找到特定行的数据,提高查询效率。 ``` 3、关联性 ```c# 主键常常用于建立表与表之间的关系。在关系数据库中,一个表的主键通常与其他表中的外键建立关联,这种关系对于数据的一致性和完整性非常重要。 ``` 4、数据完
131 1
C# .NET面试系列十:数据库概念知识
|
1月前
|
XML 开发框架 .NET
C# .NET面试系列八:ADO.NET、XML、HTTP、AJAX、WebService
## 第二部分:ADO.NET、XML、HTTP、AJAX、WebService #### 1. .NET 和 C# 有什么区别? .NET(通用语言运行时): ```c# 定义:.NET 是一个软件开发框架,提供了一个通用的运行时环境,用于在不同的编程语言中执行代码。 作用:它为多语言支持提供了一个统一的平台,允许不同的语言共享类库和其他资源。.NET 包括 Common Language Runtime (CLR)、基础类库(BCL)和其他工具。 ``` C#(C Sharp): ```c# 定义: C# 是一种由微软设计的面向对象的编程语言,专门为.NET 平台开发而创建。 作
174 2
|
1月前
|
开发框架 中间件 .NET
C# .NET面试系列七:ASP.NET Core
## 第一部分:ASP.NET Core #### 1. 如何在 controller 中注入 service? 在.NET中,在ASP.NET Core应用程序中的Controller中注入服务通常使用<u>依赖注入(Dependency Injection)</u>来实现。以下是一些步骤,说明如何在Controller中注入服务: 1、创建服务 首先,确保你已经在应用程序中注册了服务。这通常在Startup.cs文件的ConfigureServices方法中完成。例如: ```c# services.AddScoped<IMyService, MyService>(); //
60 0
|
1月前
|
开发框架 前端开发 .NET
C# .NET面试系列六:ASP.NET MVC
<h2>ASP.NET MVC #### 1. MVC 中的 TempData\ViewBag\ViewData 区别? 在ASP.NET MVC中,TempData、ViewBag 和 ViewData 都是用于在控制器和视图之间传递数据的机制,但它们有一些区别。 <b>TempData:</b> 1、生命周期 ```c# TempData 的生命周期是短暂的,数据只在当前请求和下一次请求之间有效。一旦数据被读取,它就会被标记为已读,下一次请求时就会被清除。 ``` 2、用途 ```c# 主要用于在两个动作之间传递数据,例如在一个动作中设置 TempData,然后在重定向到另
95 5
|
1月前
|
XML 数据可视化 C#
C# .NET面试系列五:WPF
<h2>WPF #### 1. WPF 由哪两部分组成? Windows Presentation Foundation (WPF) 由两个主要部分组成: 1、XAML (eXtensible Application Markup Language) ```c# 这是一种基于 XML 的标记语言,用于定义用户界面的结构和外观。XAML允许开发人员使用声明性语法来描述应用程序的用户界面元素,而不是使用传统的编程方式。XAML 被广泛用于定义 WPF 窗体、控件、布局和动画。 ``` 2、Code-behind 文件 ```c# 这是包含与用户界面相关逻辑的代码文件。通常,开发人员可
73 4
|
1月前
|
开发框架 安全 .NET
C# .NET面试系列三:集合、异常、泛型、LINQ、委托、EF!
<h2>集合、异常、泛型、LINQ、委托、EF! #### 1. IList 接口与 List 的区别是什么? IList 接口和 List 类是C#中集合的两个相关但不同的概念。下面是它们的主要区别: <b>IList 接口</b> IList 接口是C#中定义的一个泛型接口,位于 System.Collections 命名空间。它派生自 ICollection 接口,定义了一个可以通过索引访问的有序集合。 ```c# IList 接口包含一系列索引化的属性和方法,允许按索引访问、插入、移除元素等。 由于是接口,它只定义了成员的契约,而不提供具体的实现。类似于 IEnumera
149 2
|
1月前
|
存储 开发框架 安全
C# .NET面试系列二:面向对象
<h2>面向对象 #### 1. 什么是构造函数? 构造函数(Constructor)是一种特殊类型的方法,它在创建类的实例(对象)时被调用,用于初始化对象的状态。构造函数的名称必须与包含它的类的名称相同,并且没有返回类型。 主要特点和用途包括: 初始化对象: ```c# 构造函数主要用于初始化类的实例。当使用 new 关键字创建类的对象时,构造函数会被调用,确保对象在使用之前处于一个合适的状态。 ``` 与类同名: ``` 构造函数的名称必须与包含它的类的名称完全相同。 ``` 没有返回类型: ```c# 构造函数没有返回类型,甚至不能声明 void。它的目的是初始化对象
48 0