.net 面试总结

1、MVC的工作原理:

首先通过路由确定控制层和所对应的Action以及Action对应的视图,通过控制层里面的逻辑代码,让模型层里填充数据,再确定视图层所呈现的模型,把ActionResult返回给视图层。然后填充了数据的视图层就会以最终的结果呈现给我们。 一次MVC的生命周期就走完了。

 2、多线程和异步编程异同点:

 相同点:多线程和异步操作两者都可以达到避免调用线程阻塞的目的,从而提高软件的可响应性。

不同点:

    ①为异步操作无须额外的线程负担,并且使用回调的方式进行处理,在设计良好的情况下,处理函数可以不必使用共享变量(即使无法完全不用,最起码可以减少共享变量的数量),减少了死锁的可能。当然异步操作也并非完美无暇。编写异步操作的复杂程度较高,程序主要使用回调方式进行处理,与普通人的思维方式有些初入,而且难以调试。

    ②多线程消耗大量CPU,但处理顺序是有序的,会存在死锁现象。

  使用场景: 异步适用于I/O操作,数据的增删改查,多线程适用于长时间运算,比如算法和图形处理

3、大数据高并发如何回答

  首先应该定位问题,而不是上来就是索索说一通,看看是不是 服务器问题,网络问题,CPU 硬盘等等。有针对性的给你问题。 redis 队列,nginx,

 

1.1  IOC理论产生的背景

讨论控制反转之前,先看看软件系统提出控制反转的前世今生。
一个完整精密的软件系统,组件之间就像齿轮,协同工作,相互耦合。

  • 一个零件不正常,整个系统就崩溃了。
  • 系统对象之间耦合关系无法避免,在项目规模和复杂度变大的情况下,管理类之间的依赖关系将会很复杂。
  • 对象之间耦合度很高的系统,架构师和开发人员对于系统的修改,必然会出现牵一发而动全身的情形。
  • 对象之间耦合性依赖,单元测试很复杂。

1.2 IOC理论

软件专家为此提出IOC理论,用来实现对象之间的解耦。
再来看看,控制反转(IOC)到底为什么要起这么个名字?我们来对比一下:

      1. 软件系统在没有引入IOC容器之前,对象A依赖于对象B,那么对象A在初始化或者运行到某一点的时候,自己必须主动去创建对象B或者使用已经创建的对象B。无论是创建还是使用对象B,控制权都在自己手上。
      2. 软件系统在引入IOC容器之后,这种情形就完全改变了,由于IOC容器的加入,对象A与对象B之间失去了直接联系,所以,当对象A运行到需要对象B的时候,IOC容器会主动创建一个对象B注入到对象A需要的地方。
      3.                

 

          1. 通过前后对比,我们不难看出:
            对象A获得依赖对象B的过程,由主动变为了被动行为,控制权颠倒过来,这就是“控制反转”的由来。

1.3 控制反转 和 依赖注入

有些人会把控制反转和依赖注入等同,实际上有本质区别:
控制反转是一种思想;依赖注入是一种设计模式
依赖注入是实现控制反转的一种方式,但是控制反转还有其他实现方式,例如说ServiceLocator(服务定位器、依赖查找),所以不能将控制反转和依赖注入等同。

 

 

 

 

持续更新中。。。

posted @ 2019-05-17 22:45  幽冥狂_七  阅读(541)  评论(0编辑  收藏  举报