ASP.NET理论知识及⾯试题
  哎,⼯作是⽼夫永远的痛废话不多说,最近整理了⼀些企业常问道的理论题⽬,如下:
  1. C#中值类型和引⽤类型分别有哪些? 
    值类型:结构体(数值类型,bool型,⽤户定义的结构体),枚举,可空类型。
    引⽤类型:数组,⽤户定义的类、接⼝、委托,object,字符串。
  2. 谈谈你对EF的理解
    这个可以谈很多,⽐如说EF实现机制,最核⼼的是对象关系映射机制和LINQ To EF Provider,在此基础上的缓存机制、延迟加载、对象状态跟踪、事务等等,从对开发者的影响上来说,EF是微软官⽅的ORM框架,结束了之前各种第三⽅ORM混战的局⾯,统⼀了API,这⽆疑是开发者的福⾳。EF拥有⾮常优雅的,基于C#/VB语⾔优化的API,⽐如原⽣的LINQ查询,⾃然的Code First的对数据结构的定义,Fluent API⽅式的数据库和关系的定义等等。VS完美⽀持EF并且提供了多种数据库的适配。
  3. 字段和属性有什么区别
    如果你编写⼀些控件给别的开发者⽤,⽽需要给他们提供“数据绑定”这种傻⽠化的机制,那么使⽤属性才可以做到。
属性是⽅法⽽字段不是,当你⽤反射去掉⽤的时候,它们有各⾃的API。因为属性是⽅法,所以它可以和⽅法那样定义在接⼝中,或者被继承和重写,重写属性被ORM/AOP等框架⽤来注⼊代码。
  4. 抽象⽅法和虚⽅法的区别
    抽象⽅法⼀定是虚⽅法,虚⽅法未必是抽象⽅法。虚⽅法是指可以被继承类重写的⽅法,⽽抽象⽅法是指,基类是抽象类,没有实现它,因此必须被继承类重写的⽅法。
  5. new的⼏种⽤法
    除了作为创建对象实例的关键字以外,new还有个罕见的⽤法,就是在派⽣类定义⼀个重名的同函数签名的⽅法,隐藏掉基类的⽅法。另外就是泛型约束定义构造函数约束的时候⽤。
  6. 什么叫做泛型
    从编程的⾓度说是在定义类或者⽅法的时候省去具体的类型,由调⽤者来指定,类型+泛型类型合成得到真正的类型。从实现机制上说,泛型是CLR在运⾏时动态根据泛型类型创建的匿名类型。从OO设
计的⾓度说,泛型体现了多态性。泛型使得程序员可以复⽤数据结构和算法,并且适应不同的类型,享有编译期间的强类型检查和语法提⽰。
    ⼀些经典的FCL提供的泛型类型和接⼝:  List<T>、Dictionary<T1, T2>这个属于复⽤数据结构   IComparer<T>、IEnumerable<T>这个属于复⽤算法
  7. 什么叫做类
    就C#⽽⾔,类是对象的模板,对象是类的实例。C#是强类型语⾔,⼀切皆需要类型,除了内置的简单类型,那些其实例为引⽤对象的都叫做类。C#也允许定义抽象类和密封类,以及两者的叠加——静态类,它们都⽆法实例化,其实这是编译器的限制,本质上它们和⼀般的类没有区别,是特殊情况
  8. 请说明在中常⽤的⼏种页⾯间传递参数的⽅法,并说出他们的优缺点。
    1.QueryString  传递⼀个或多个安全性要求不⾼或是结构简单的数值。但是对于传递数组或对象的话,就不能⽤这个⽅法了
    2.session(viewstate) 简单,但易丢失作⽤于⽤户个⼈,过量的存储会导致服务器内存资源的耗尽。
    3.application 对象的作⽤范围是整个全局,也就是说对所有⽤户都有效。其常⽤的⽅法⽤Lock和UnLock
    4.cookie 简单,但可能不⽀持,可能被伪造 Cookie是存放在客户端的,⽽session是存放在服务器端的。⽽且Cookie的使⽤要配合ASP.NET 内置对象Request来使⽤
    5.input ttype="hidden" 简单,可能被伪造
    6.url参数简单,显⽰于地址栏,长度有限
  9. 接⼝是否可继承接⼝? 抽象类是否可实现(implements)接⼝? 抽象类是否可继承实体类(concrete class)?
    接⼝可以继承接⼝。抽象类可以实现(implements)接⼝,抽象类是否可继承实体类,但前提是实体类必须有明确的构造函数。
  10. 启动⼀个线程是⽤run()还是start()?
    启动⼀个线程是调⽤start()⽅法,使线程所代表的虚拟处理机处于可运⾏状态,这意味着它可以由JVM调度并执⾏。这并不意味着线程就会⽴即运⾏。run()⽅法可以产⽣必须退出的标志来停⽌⼀个线程。
  11. GC是什么? 为什么要有GC? 
    GC是垃圾收集器。程序员不⽤担⼼内存管理,因为垃圾收集器会⾃动进⾏管理。要请求垃圾收集,可以调⽤下⾯的⽅法之⼀:
<()        Runtime().gc()
  12. 什么是Web Service?
    Web Service便是基于⽹络的、分布式的模块化组件,它执⾏特定的任务,遵守具体的技术规范,这些规范使得Web Service能与其他兼容的组件进⾏互操作。
  13. c#中值类型和引⽤类型的区别
    1.值类型的数据存储在内存的栈中;引⽤类型的数据存储在内存的堆中,⽽内存单元中只存放堆中对象的地址。
    2.值类型存取速度快,引⽤类型存取速度慢。
    3.值类型表⽰实际数据,引⽤类型表⽰指向存储在内存堆中的数据的指针或引⽤
    4.值类型继承⾃System.ValueType,引⽤类型继承⾃System.Object
    5.栈的内存分配是⾃动释放;⽽堆在.NET中会有GC来释放
  14. c#语⾔中,结构体和类的区别? 
    1.结构是实值类型(Value Types),⽽类则是引⽤类型(Reference Types)。
    2.结构使⽤栈存储(Stack Allocation),⽽类使⽤堆存储(Heap Allocation)。
    3.所有结构成员默认都是Public,⽽类的变量和常量数则默认位Private,不过其他类成员默认都是Public。
    4.结构成员不能被声明位Protected,⽽类成员可以。
  15. BS与CS的联系与区别。   
    1.C/S是客户端需要安装专⽤的客户端软件,B/S是客户机上只要安装⼀个浏览器
    2.C/S ⼀般建⽴在专⽤的⽹络上,C/S更强的适应范围,
    3.C/S⽐B/S更安全。
    4.C/S可以控制本机的其他程序、可以读写本地磁盘⽂件、可以与硬件交互。
    5.B/S很难和本地硬件、程序、⽂件进⾏交互
  16. post、get的区别   
    1.post的参数不会显⽰在浏览器地址栏中,get的参数会显⽰在浏览器地址栏中
    2.⽤post可提交较⼤的数据量,get提交的数据量则⾮常⼩(2k)
    3.⽤post可进⾏⽂件的提交,⽽⽤get则不可以
  17. 常⽤的调⽤WebService的⽅法有哪些?   
    1.使⽤命令⾏⼯具。
    2.使⽤VS.NET中的Add Web Reference菜单选项
  18. try{}⾥有⼀个return语句,那么紧跟在这个try后的finally {}⾥的code会不会被执⾏,什么时候被执⾏,在return前还是后?
    会执⾏,在return前执⾏。
  19. 如何处理⼏⼗万条并发数据?
mvc实例    ⽤存储过程或事务。取得最⼤标识的时候同时更新..注意主键不是⾃增量⽅式这种⽅法并发的时候是不会有重复主键的..取得最⼤标识要有⼀个存储过程来获取.
  20. 堆和栈的区别?
    堆:⼀般由程序员分配释放。⽤new、malloc等分配内存函数分配得到的就是在堆上
    栈:由编译器⾃动分配、释放。在函数体中定义的变量通常在栈上。
  21. StringBuilder 和 String 的区别?
    1.StringBuilder 是可扩展的,在⼤量字符串拼接时使⽤
    2.String 在进⾏运算时会产⽣⼀个新的实例
  22. 请说明在中常⽤的⼏种页⾯间传递参数的⽅法,并说出他们的优缺点。
    1.session(viewstate) 简单,但易丢失application 全局
    2.cookie 简单,但可能不⽀持,可能被伪造
    3.input type="hidden" 简单,可能被伪造
    4.url参数简单,显⽰于地址栏,长度有限
    5.数据库稳定,安全,但性能相对弱
  23.  向服务器发送请求有⼏种⽅式?
    get,post。get⼀般为链接⽅式,post⼀般为按钮⽅式
  24.  float f=-123.567F; int i=(int)f;i的值现在是_____?
    -123。
  25. 委托声明的关键字是______?
    delegate
  26. &和&&的区别。
    &是位运算符,表⽰按位与运算,&&是逻辑运算符,表⽰逻辑与(and)
  27. MVC模式
    MVC(Model-View-Controller)把交互系统的组成分解成模型、视图、控制器三种部件
  28. mvc的优点:
    1.通过把项⽬分成model view和controller,使得复杂项⽬更加容易维护。
    2.没有使⽤view state和服务器表单控件,可以更⽅便的控制应⽤程序的⾏为
    3.应⽤程序通过controller来控制程序请求,可以提供丰富的url重写。
    4.对单元测试的⽀持更加出⾊
    5.在团队开发模式下表现更出众
  29. MVC的不⾜:
    (1)增加了系统结构和实现的复杂性。对于简单的界⾯,严格遵循MVC,使模型、视图与控制器分离,会增加结构的复杂性,并可能产⽣过多的更新操作,降低运⾏效率。
    (2)视图与控制器间的过于紧密的连接。视图与控制器是相互分离,但确实联系紧密的部件,视图没有控制器的存在,其应⽤是很有限的,反之亦然,这样就妨碍了他们的独⽴重⽤。
    (3)视图对模型数据的低效率访问。依据模型操作接⼝的不同,视图可能需要多次调⽤才能获得⾜够的显⽰数据。对未变化数据的不必要的频繁访问,也将损害操作性能。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。