个⼈总结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表达式是什么呢?transport中文谐音怎么读
Lambda表达式是匿名函数,⽽匿名函数⼜是委托,所以lambda表达式就是委托。
6.EF是什么?
EF是微软以Ado为基础发展⽽来的对象关系映射的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语法简单,容易上⼿python如果那么语句
7、什么是委托,事件是不是⼀种委托?mysql面试题常问
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
memorystream与stream转化事务分类:显式事务:⽤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.请说明在中常⽤的⼏种页⾯间传递参数的⽅法,并说出他们的优缺点。
1、session(viewstate) 简单,但易丢失
2、application 全局
3、cookie 简单,但可能不⽀持,可能被伪造
react app是什么意思4、input type=”hidden” 简单,可能被伪造
5、url参数简单,显⽰于地址栏,长度有限
6、数据库稳定,安全,但性能相对弱
21.IOC容器?
IOC即控制反转,是⼀种设计思想,在之前的项⽬中,当我们需要⼀个对象时,需要new⼀个对象,⽽IOC的设计思想是我们将需要的对象注⼊到⼀个容器中,
就会获得我们所需要的资源
【扩展】:IOC和DI IOC是控制反转,DI是依赖注⼊,控制反转的解释有些模棱两可,⽽依赖注⼊就很明确,我们将需要的对象注⼊到容器中,获取所需要的资源22.Ado五⼤对象?
(1)Connection对象
construction techniqueConnection 对象就像是打仗时候的通信兵,他们在打仗之前需要先接通司令部与各个作战单位之间的通信线路。之后作战命令的获取以及发布都要靠通信线路来完成。
这⾥的司令部就类似于服务器,各作战单位就类似于各应⽤程序。
(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 对象这个桥梁,实现了与数据源沟通的能⼒。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论