面试题(一)

1、如何理解委托,什么情况使用委托?

委托是保存某个方法参数中的引用类型变量。委托变量可以传入不同的方法实现不同的功能。

委托特别用于实现事件和回调方法。

2、什么是泛型,泛型约束有什么作用?

允许延迟编写类或方法中的数据类型、直接实际在程序中使用它的时候才确定的数据类型。

所谓泛型约束,实际就是约束类型T。使T必须遵守一定的规则。比如T必须继承自某个类,或者T必须实现某个接口等。

3、内置的泛型委托有哪些?

Action、func

 4、使用接口有什么好处?

接口指定规范、让实现类实现接口定义的方法。提供多态的实现,实现类实现接口,让接口类型接受实现类接收实现类的实例。IStudent stu = new Student();

5、接口与抽象类有什么不同?

相同:不能实例化

不同:一个类可以继承多个接口,一个类只能继承一个类(包括抽象类)。抽象类可以用具体的方法实现,也可以定义字段等。

6、面对对象三大特征是什么,如何实现多态?

封账、继承、多态

使用接口或抽象类后,继承或实现不同类型的对象,调用相同的方法,表现不同的行为。

7、值类型与引用类型的区别?

引用类型:分配在堆上,存储引用类型本身的数据,另一个块空间分配在栈上,储存对堆上数据的引用(实际上存储的堆上的内存地址,也就是指针)。

值类型:分配在栈上

值类型储取速度快,引用类型存取速度慢

栈是内存分配的自动释放;而堆在.net中会有GC来释放。

8、什么是装箱和拆箱?

装箱:将值类型(如int,或定义的值类型等)装换为object或者引用类型的一个过程。

拆箱:将引用类型装换为值类型的一个过程。

9、谈谈http协议的理解

超文本传输协议,http是一个客户端终端(用户)和服务器端(网站)请求和应答的标准TCP协议

一个请求报文由请求行、请求头部、空行和请求数据组成。

一个相应报文由状态行、想要头部、空行和相应正文组成。

10、get请求和post请求方式对比

GET请求的数据会附上URL之后(就是把数据放置在HTTP协议之后),以?分割和传输数据,参数之间以&相连

GET请求可被缓存、请求保留在浏览器历史记录中、请求可被收藏为书签、请求不应在处理敏感数据时使用、请求的长度限制、请求只应当于取回数据

POST请求的参数在请求参数体中、请求不会被缓存、请求不会保存在浏览器历史记录中、不能被收藏为书签、请求堆数据长度没有要求

11、什么是SQL注入攻击,我们可以怎么预防?

针对程序员编写是的疏忽,通过SQL语句,实现无账号登录,甚至篡改数据库。

可以过滤特殊的字符、使用带参数的SQL语句

12、工厂设计模式中,工厂类的作用是什么?

使用工厂类为我创建对象,把创建的权利交个工厂来执行。

13、什么是高内聚,低耦合?

高内聚,一般是指一个软件模块是由相关性很强的代码组成,只负责一项任务,也就是常说的单一责任原则

低耦合,降低模块间的耦合度能减少模块间的影响,防止对某一模块修改所引起的“牵一发动全身“的水波效应,保证系统设计顺利进行

14、谈谈IOC与DI

IOC控制反转,把创建对象交给容器去做,不需要自己手动去new对象。

DI依赖注入,创建对象时,对象之间的引用会自动创建注入。

15、谈谈你对中间件的理解

中间件事组装应用程序管道中以处理请求和响应的组件。可以选择是否将请求传递给管道中的下一个组件。可以在调用管道中下一个组件之前和之后执行工作。

16、什么是ORM框架,你使用过那些ORM框架

对象关系映射,让数据库和对象做一个映射,这样,我们在具体的操作数据库的时候,就不用需要再去和复杂的SQL语句打交道,只要像平常一样操作对象一样操作它就可以了。

17、与直接使用ADO.NET相比,使用ORM框架优缺点是什么?

优点:不用编写复杂的SQL语句,可以操作对象来操作数据库。

缺点:使用了自动映射,带来了性能的消耗

18、String与StringBuilder的区别

字符串一旦创建就不可修改大小,修改字符串在内存中需要创建一个新的字符串,如果频繁的修改字符串会提高系统的开销。则频繁修改字符串时使用StringBuilder

19、left join、inner join的区别

在连接保证左表中所有数据都查询出来,而右表中没有匹配的数据为null。

内连接保证左右两张表都匹配的数据才会查询出来。

20、IEnumerable与IQueryable的区别

要使用foreach就必须继承Ienumerable,IQueryable继承自Ienumerable。IQueryable在使用EF时有延迟加载机制,直到ToList是才会查询出来。

21、.Net Core有几种过滤器

权限过滤器 、 资源过滤器 、 方法过滤器 、 异常过滤器 、 结果过滤器

22、为什么有些类型行可以写在方法或控制器上?

因为这些类是特性,特性类必须继承自Attribute,特性本质也是一个类。

23、.net core 中startup文件的主要作用是什么?

Startup文件是.Net Core应用程序启动的配置文件,实现全局配置。Configure方法,通过向IApplicationBuilder实例添加中间件组件来配置请求管道。ConfigureServices方法注入对象时使用。

24、IOC容器中3种声明周期是什么?

Transient:瞬时生命周期,Transient服务在每次被请求是都会被创建一个全新的对象(每次要对象都是全新的实例)

Scoped:Scoped生命周期的服务是每次web请求被创建,局部单例对象,在某个局部内是同一个对象(作用域单例,本质是容器单例);一次请求内是一个单例对象,多次请求则多个不同的单例对象

Singleton:Singleton生命周期服务在第一次请求时创建,在后续的每个请求都会使用同一个实例。

25、如何理解同步请求与异步请求?

同步:提交请求—>等到服务器处理—>处理完毕返回    这个期间客户端浏览器不能干任何事

异步:请求通过事件触发—>服务器处理(这时浏览器任然可以作其他事情)—>处理完毕

异步请求可以使得浏览器局部刷新,而不是同步整体刷新。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值