个人总结ASP.NET必备面试题

1.你能解释下MVC的完整流程吗?

所有的终端用户请求被发送到控制器。控制器依赖请求去选择加载哪个模型,并把模型附加到对应的视图。附加了模型数据的最终视图做为响应发送给终端用户。

2. 那你说一下你对MVC的理解?

MVC是一种设计模式即主要的思想,是一种功能结构模块化的一种开发思想,目的是更好的管理自己的代码。

ASP.NET MVC是微软对ASP.NET WebForm框架做出的彻底重构,使Web应用程序的开发更加容易,更加清楚,而推出的一种UI框架。

3.什么是MVC中的Razor?

它是一个轻量级的视图引擎。

4.LinQ是什么?

LINQ是一种用来进行数据访问的编程模型,使得.NET语言可以直接支持数据查询LINQ的目标是降低访问数据的复杂度,

LINQ可以用统一的方法访问不同类型的数据,可以将数据作为对象使用,能够更好地与编程模型集成

5.Lambda表达式是什么呢?

Lambda表达式是匿名函数,而匿名函数又是委托,所以lambda表达式就是委托。

6.EF是什么?

EF是微软以Ado.net为基础发展而来的对象关系映射的orm框架,有三种实现方式:Code First,DB First,Model First,我们常用的是DB Frist,

设计好数据库,再进行代码编程,通过上下文对象实现交互。EF和Dapper的区别,EF是强类型的ORM框架,Dapper是弱类型的ORM框架

一、  Dapper

问题:简述你对Dapper的了解?

答案:1、Dapper是一个轻量级的ORM类,代码就一个SqlMapper.cs文件,编译后只有70k

        2、Dapper支持多数据库,支持SqlServer,MySql,Oracle等

        3、Dapper语法简单,容易上手

7、什么是委托,事件是不是一种委托?

 1、委托可以把一个方法作为参数代入另一个方法。
     2、委托可以理解为指向一个函数的引用。
     3、事件是一种特殊的委托

delegate <函数返回类型> <委托名> (<函数参数>)

8.c#多线程是什么

多线程的优点:可以同时完成多个任务;可以使程序的响应速度更快;可以节省大量时间进行处理任务;可以随时停止任务;可以设置每个任务的优先级,以优化程序性能。

9.WebApi概述

Web API是在.NET Framework之上构建的Web的API的框架,Web API是一个编程接口,用于操作可通过标准HTTP方法和标头访问的系统,

Web API需要基于.NET 3.5或更高版本才可以进行开发

10.什么是WebService

webservice是一种跨平台,跨语言的规范,用于不同平台,不同语言开发的应用之间的交互,是基于网络的、分布式的模块化组件,它执行特定的任务,

遵守具体的技术规范。

11.存储过程是什么?有什么用?有什么优点?用什么来调用?

存储过程是预编译,安全性高,也是大大提高了效率,存储过程可以重复使用以减少数据库开发人员的工作量,复杂的逻辑我们可以使用存储过程完成,

在存储过程中我们可以使用临时表,还可以定义变量,拼接sql语句,调用时,只需执行这个存储过程名,传入我们所需要的参数即可,

12.何为触发器?

触发器是一种特殊的存储过程,主要是通过事件触发而被执行。它可以强化约束来维护数据的完整性和一致性,可以跟踪数据库内的操作从

而不允许未经许可的更新和变化。可以级联运算,

常见的触发器有三种:分别应用于Insert , Update , Delete 事件。

13.SQL优化

1.选择最有效率的表名顺序2.WHERE子句中的连接顺序3.SELECT查询中避免使用'*'4.减少访问数据库的次数5.使用DECODE函数来减少处理时间
6.用Where子句替换HAVING子句7.减少对表的查询使用表的别名9.用EXISTS替代IN。10.用NOT EXISTS替代NOT IN。11.用表连接替换EXISTS。
12.用EXISTS替换DISTINCT。13.用索引提高效率14.避免在索引列上使用计算15.避免在索引列上使用IS NULL和IS NOT NULL

 14..事务的作用?

事物简单来说就是要么一起执行,要么就都不执行,如有一个地方出错,全部回滚,不执行
事务4大属性:
1   原子性(Atomicity):事务是一个完整的操作。
2   一致性(Consistency):当事务完成时,数据必须处于一致状态。
3   隔离性(Isolation):对数据进行修改的所有并发事务是彼此隔离的。
4   持久性(Durability):事务完成后,它对于系统的影响是永久性的。
T-SQL中管理事务的语句:开始事务:begin transaction提交事务commit transaction回滚事务 rollback transaction
 事务分类:显式事务:用begin transaction明确指定事务的开始。
2 隐性事务:当以隐性事务模式操作时,SQL Servler将在提交或回滚事务后自动启动新事务。无法描述事务的开始,只需要提交或回滚事务。
3 自动提交事务:SQL Server的默认模式,它将每条单独的T-SQL语句视为一个事务。如果成功执行,则自动提交,否则回滚。

什么是Ajax异步调用?

就是不需要加载整个页面的数据,只请求一小部分的数据,这样可以实现了异步的调用。

15.ORM是什么?

ORM,即Object-Relational Mapping(对象关系映射),它的作用是在关系型数据库和业务实体对象之间作一个映射,
这样,我们在具体的操作业务对象的时候,就不需要再去和复杂的SQL语句打交道,只需简单的操作对象的属性和方法。
ORM方法论基于三个核心原则: 简单:以最基本的形式建模数据。 传达性:数据库结构被任何人都能理解的语言文档化。
 精确性:基于数据模型创建正确标准化的结构。

16.什么叫做泛型?

从编程的角度说是在定义类或者方法的时候省去具体的类型,由调用者来指定,类型+泛型类型合成得到真正的类型。从实现机制上说,泛型是CLR在

运行时动态根据泛型类型创建的匿名类型。从OO设计的角度说,泛型体现了多态性。泛型使得程序员可以复用数据结构和算法,并且适应不同的类型,

享有编译期间的强类型检查和语法提示。一些经典的FCL提供的泛型类型和接口:   List<T>、Dictionary<T1, T2>这个属于复用数据结构    

IComparer<T>、IEnumerable<T>这个属于复用算法

17. C#中值类型和引用类型分别有哪些? 

值类型:结构体(数值类型,bool型,用户定义的结构体),枚举,可空类型。引用类型:数组,用户定义的类、接口、委托,object,字符串。

18.在项目中如何解决高并发问题?

答案:尽量使用缓存,包括用户缓存,信息缓存等,多花点内存来做缓存,可以大量减少与数据库的交互,提高性能。
    优化数据库查询语句。
    优化数据库结构,多做索引,提高查询效率。
    统计的功能尽量做缓存,或按每天一统计或定时统计相关报表,避免需要时进行统计的功能。
    能使用静态页面的地方尽量使用,减少容器的解析(尽量将动态内容生成静态html来显示)。
    解决以上问题后,使用服务器集群来解决单台的瓶颈问题。

19.敏捷开发?

敏捷开发(Agile Development)是一种以人为核心、迭代、循序渐进的开发方式。它并不是一门技术,而是一种开发方式,也就是一种软件开发的流程。
它会指导我们用规定的环节去一步一步完成项目的开发。
因为它采用的是迭代式开发,所以这种开发方式的主要驱动核心是人。

20.请说明在.net中常用的几种页面间传递参数的方法,并说出他们的优缺点。
1、session(viewstate) 简单,但易丢失

2、application 全局
3、cookie 简单,但可能不支持,可能被伪造
4、input type=”hidden” 简单,可能被伪造
5、url参数简单,显示于地址栏,长度有限
6、数据库稳定,安全,但性能相对弱

21.IOC容器?

IOC即控制反转,是一种设计思想,在之前的项目中,当我们需要一个对象时,需要new一个对象,而IOC的设计思想是我们将需要的对象注入到一个容器中,
就会获得我们所需要的资源
【扩展】:IOC和DI IOC是控制反转,DI是依赖注入,控制反转的解释有些模棱两可,而依赖注入就很明确,我们将需要的对象注入到容器中,获取所需要的资源

22.Ado.net五大对象?

(1)Connection对象
Connection 对象就像是打仗时候的通信兵,他们在打仗之前需要先接通司令部与各个作战单位之间的通信线路。之后作战命令的获取以及发布都要靠通信线路来完成。
这里的司令部就类似于服务器,各作战单位就类似于各应用程序。
(2)Command对象
     执行一些简单操作命令,如:增删改删,即执行T-SQL语句。Command对象有几个比较重要的方法,如ExecuteNonQuery()方法,执行增删改命令,返回的是受影
响的行数。查询方法有2种:一个是ExecuteReader()方法,返回一个DataReader对象。还有ExecuteScale()方法,返回首行首列值。
(3)DataAdapter对象
     数据适配器,从数据库中检索数据,再填充到本地数据集中。同时,我们可以利用DataAdapter,再将数据反向从DataSet中更新回数据库。DataAdapter使用中主
要有4个命令对象比较重要。它们分别是:SelectCommand、InsertCommand、UpdateCommand、DeleteCommand。SelectCommand,主要是从数据库中检索数据
InsertCommand、UpdateCommand、DeleteCommand这3个命令对象主要负责把本地数据集DataSet中的数据上传回服务器。我们主要使用的是前者。
DataAdapter的Fill方法,用于使用DataAdapter的SelectCommand的执行结果集来填充DataSet。
(4)DataReader对象
 当我们只需要循序的读取数据而不需要其它操作时,可以使用DataReader 对象。DataReader对象只是一次一笔向下循序地读取数据源中的数据,不作其它的操作
。因为DataReader 在读取数据的时候限制了每次只读取一笔,而且只能只读,所以使用起来不但节省资源而且效率很好。此外,因为不用把数据全部传回,
故可以降低网络的负载。但是,当我们从数据源中一条一条的读取数据的时候,一定记得要时刻打开数据库的连接。
二、DataSet对象
    DataSet 这个对象可以视为本地内存中的一个数据库,可以把从数据库中所查询到的数据保留到本地。DataSet 的能力不只是可以储存多个Table,
还可以透过DataAdapter 对象取得一些例如主键等数据表结构,并可以记录数据表间的关联。当我们使用DataSet读取数据的时候,数据库的连接是否
关闭已经无关紧要了。DataSet 对象可以说是ADO.NET 中重量级的对象,通过DataAdapter 对象这个桥梁,实现了与数据源沟通的能力 。

猜你喜欢

转载自www.cnblogs.com/zmj520/p/9581770.html