zoukankan      html  css  js  c++  java
  • C# 基础面试问题

    常问问题

      1. C#中值类型和引用类型分别有哪些?              值类型:int , float , double,  bool 和 struct, 引用类型 class 和 string
      2. C#中值类型和引用类型的区别                        值类型是直接存储一个数值,而引用类型是存储对值的引用
      3. 谈谈你对EF的理解                                          EF提供多数据库支持,省去了SQL语句,使开发人员更专注功能,节省了时间,但是EF在处理复杂SQL逻辑时,显得性能不如原生SQL好。
      4. 字段和属性有什么区别                                    字段是提供外部访问的,属性里的get,set访问器可以对字段提供一些安全保护,
      5. 抽象方法和虚方法的区别                                抽象方法使用abstract声明且只能声明在抽象类中,子类必须重写父类抽象方法,虚方法使用 virtual关键字
      6. new的几种用法                                              1.实例化对象 2. 作为修饰符,显示隐藏继承于基类的继承成员3.在泛型中添加类型的约束
      7. 什么叫做泛型                                                 泛型可以是任何类型,是在使用时确定下来的类型
      8. 什么叫做类                                                    类是具有相同属性和服务的一组对象的集合
      9. 接口是否可继承接口?抽象类是否可实现(implements)接口                         接口可以继承接口,抽象类可以实现implements接口
      10. 启动一个线程是用run()还是start()?                 start()
      11. GC是什么?为什么要有GC                              垃圾回收机制,自动回收内存,有效使用内存
      12. GC如何工作?                                                  GC会将已经不再被应用程序或者别的对象所引用的对象(即已经死亡的对象)进行回收
      13. 什么是Web Service?                                      WebService就是一个应用程序,它向外界暴露出一个能够通过Web进行调用的API  
      14. C#语言中,结构体和类的区别?                     1. 定义类使用关键字class 定义结构使用关键字struct,2. 在结构体中可以声明字段,但是声明字段的时候是不能给初始值
      15. BS与CS的联系和区别                                     1. BS建立在浏览器,CS建立与Windows平台,2. BS 不需要专门的软件可以在任何地方操作,3.CS则需要安装,BS升级扩展方便快速
      16. POST、GET的区别                                         1.GET请求Url中参数可见,POST不可见,2.Post请求的数据量比GET请求大 3.POST请求比GET请求安全
      17. 常用的调用WebService的方法有哪些              添加Web引用
      18. try{}里面有一个return语句,那么紧跟在这个try后的finally{}里的code会不会执行,什么时候被执行,在return前还是后                会执行,在return 后执行
      19. 如何处理几十万条并发数据                            1.使用异步方法2.加锁,数据库增加事务3.增加服务器集群 4.高效利用缓存 5.数据库更新时使用Guid作为更新行唯一标识
      20. 堆和栈的区别                                                
      21. stringbuilder和 string 的区别                      string本身不可变,每赋值一次内容就会改变,生成一个新对象,而stringbuilder每次操作,则是会扩充内容,不会生成新对象      
      22. 请说明在.net中常用的几种页面间传递参数的方法,并说出他们的优缺点                              QueryString、表单提交、URL传值、Session、Cookie、Application
      23. 向服务器发送请求有几种方式                       POST 、GET、PUT、DELETE
      24. float f=-123.567f;int i = (int)f; i的值现在是                        -123
      25. 什么委托,声明的关键字是                                      Delegate 
      26. 事件是不是一种委托                                        事件是一种委托
      27. &和&&的区别                                              &和&&都是逻辑与运算符,&&具有短路功能,如果第一个表达式的结果成立,则不会计算第二个
      28. .Net常用的中间件有哪些                                 任务调度:Quartz.NET   日志记录: Log4Net    IOC: Autofac   ORM:  Dapper, Entity Framework MQ: RabbitMQ, ActivityMQ
      29. 说说对MVC的了解                                        MVC是一种设计模式,他将应用程序的展示和处理分离,分层明确,有强大的路由功能,也可以作为WebApi使用
      30. MVC的优点                                                  分层明确,互不干扰,有利于开发的分工合作和重用
      31. MVC的不足                                                  使得系统结构和实现复杂化,模型对视图提供的数据不是很灵活
      32. MVC的工作原理                                              客户端发送请求-->控制器接受请求-->数据库模型交互,返回定义好的model-->数据库查询-->返回数据集转换为model-->将model数据集返回给控制器-->视图封装js,css-->客户端接收后渲染html
      33. Jquery如何取同级,父级,子级元素                 siblings  parent  children
      34. MVC的生命周期 

    一、请求处理过程(Request)

    1:路由(Routing)
    客户端请求第一个环节就是路由,根据URL和注册的路由规则进行匹配,当找到一个匹配的路由后,MVC路由引擎会把该请求交给MvcHandler。如果未找到匹配的路由规则,则返回404错误。路由注册在MVC启动程序Global. asax中注册。
    2:处理组件(MvcHandler)
    路由匹配规则成功后交给该处理组件响应客户端的请求。MvcHandler实现了接口IHttpHandler中的虚方法ProcessRequest来创建请求对应的Controller, 找到对应的控制器后将RequestContext传入Controller。
    3:控制器(Controller)
    控制器属于MVC的核心组件,我们可以把它看成视图与模型的桥梁。由Action返回视图和数据。
    在MvcHandler中创建并调用对应的控制器。那对应的控制器是怎么创建并调用到匹配的控制器的呢?我们来了解两个东西:IController和IControllerFactory。在MvcHandler中通过调用内部方法ProcessRequestInit方法,改方法使用输出参数返回IContorller和IControllerFactory,然后执行IController中Execute方法把RrequestContext(请求上下文对象)传进去,最后由IControllerFactory对象调用ReleaseController方法传入IController对象来创建和初始化请求对应的控制器。
    4:Action Execution--Action方法
    Controller创建并初始化后开始有核心组件ActionInvoker来判断客户端请求的是哪个方法。在Action方法中我们进行逻辑处理并把数据Model返回给相应视图。

    二、响应请求(Response)

    1:视图结果(View Result)
    在Action中接受请求数据并进行处理并准备响应请求返回一个View Result类型,如:ViewResult, RedirectToRouteResult, RedirectResult, ContentResult, JsonResult, FileResult, EmptyResult等。
    2:视图引擎(View Engine)
    当Action返回数据后,视图引擎就开始工作,有视图引擎来决定需要返回哪个视图。视图引擎继承自接口IViewEngine,并提供了两个实现WebForm和razor。
    3:视图(View)
    View视图相当于模板,它把Action传过来的数据绑定到视图中,展现在用户面前。

     抽象类与接口的区别

    1. 抽象类 

     

    (1) 抽象方法只作声明,而不包含实现,可以看成是没有实现体的虚方法

     

    (2) 抽象类不能被实例化

     

    (3) 抽象类可以但不是必须有抽象属性和抽象方法,但是一旦有了抽象方法,就一定要把这个类声明为抽象类

     

    (4) 具体派生类必须覆盖基类的抽象方法

     

    (5) 抽象派生类可以覆盖基类的抽象方法,也可以不覆盖。如果不覆盖,则其具体派生类必须覆盖它们。

     

    2. 接 口

     

    (1) 接口不能被实例化

     

    (2) 接口只能包含方法声明

     

    (3) 接口的成员包括方法、属性、索引器、事件

     

    (4) 接口中不能包含常量、字段(域)、构造函数、析构函数、静态成员。
     
     

     

     

     

      什么是内存泄露?

    内存泄漏指由于疏忽或错误造成程序不能释放或不能及时释放已经不再使用的内存的情况,是应用程序分配某段内存后,由于设计错误,失去了对该段内存的控制,因而造成了内存不能回收和不能及时回收。当程序不能释放的内存越来越多是就会造成程序的性能下降或出现内存溢出的错误。

    什么是内存溢出?

    内存溢出指程序在运行的过程中,程序对内存的需求超过了超过了计算机分配给程序的内存,从而造成“Out of memory”之类的错误,使程序不能正常运行。

     

  • 相关阅读:
    去除百度搜索结果中的广告的 js 代码
    js获取url参数
    奇淫技巧
    js生成hash序列
    Maven中可以被继承的POM元素
    多线程
    IO在Socket中的应用
    关于IO的整理
    finalize方法的使用
    复合赋值和简单复制的区别
  • 原文地址:https://www.cnblogs.com/opts/p/14158918.html
Copyright © 2011-2022 走看看