5、请简述面向对象的多态的特性及意义答:简单来说,多态是具有表现多种形态的能力特征,在OO中是指,语言根据对象的类型的不同,以不同的方式处理。特别是重载方法和继承类这种形式的能力。多态被认为是面向对象语言的必备特性。面向对象的语言使用虚方法表达多态。这意味着派生类可以有和父类具有同样签名的方法,并且父类可以调用派生类的方法。
在C#中,必须使用virtual关键字才能使方法被父类调用。
7、什么是装箱(inboxing)和拆箱(unboxing)。答:装箱:将一个值类型隐式地转换成一个object类型,或把这个值类型转换成一个被该值类型应用的接口类型,把一个值类型的值装箱,就是创建一个object实例并将值复制给这个object拆箱:和装箱相反,拆箱转换是指将一个对象类型显式地转换成一个值类型,或将一个接口类型显式地转换成一个执行该接口的值类型。object obj = null;obj = 1;//装箱,把值类型包装成引用类型。int num = (int)obj;// 拆箱,显示类型转换。8、如何理解三层架构。答:三层架构就是将整个业务应用划为:表现层、业务逻辑层、数据访问层。区分层次的目的即为了“高内聚,低耦合”的思想。表现层:通俗讲就是展现给用户的界面,即用户在使用一个系统的时候的所见所得。业务逻辑层:针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理。数据访问层:该层所做事务直接操作数据库,针对数据的增删改查等。每层之间是一种垂直关系。三层架构是N层架构的一种,一般来说,层次之间是向下依赖的,下层代码未确定其接口前,上层代码是无法开发的,下层代码接口的变化将使上层的代码一起变化。优点:分工明确,条理清晰,易于调试,而且具有扩展性。缺点:增加系统复杂度,增加成本。9、写一个冒泡排序(从小到大)。
10、数据库三范式是什么?答:1NF,确保每列保持原子性2NF,确保表中的每列都和主键相关3NF,确保每列都和主键列直接相关,而不是间接相关
11、能用foreach遍历访问的对象有什么要求?答:需要实现IEnumerable接口或声明GetEnumerator方法的类型。12、GC是什么?为什么要有GC?答:GC是垃圾收集器。程序员不用担心内存管理,因为垃圾收集器会自动进行管理。GC只能处理托管内存资源的释放,对于非托管资源则不能使用GC回收内存,必须由程序员手工回收。13、说出五个集合类。答:List、Dictionary、Stack、Queue、Tree等14、不用JQuery等库,原生JS使用AJAX实现登陆。
15、你觉得如何才能提高代码的效率和性能(可以列举多种思路,越多越好)?答:可以根据业务流程、业务数据的特点进行优化,比如可以采用缓存、索引等来提高代码的效率和性能。同时不要进行无意义的代码优化,重点优化系统的性能瓶颈。按照设计模式去编写代码,彻底的面向对象编程,多用委托事件。尽量做到方法的每一个实现代码只写一遍。
21、是否可以从一个static方法内部发出对非static方法的调用?答:不可以。因为非static方法与对象相关联,必须创建一个对象后,才可以在该对象上进行方法调用,而static方法调用时不需要创建对象,可以直接调用。也就是说,当一个static方法被调用时,可能还没有创建任何实例对象,如果从一个static方法中调用一个static方法,那么非static方法没有关联的对象,所以不可以。22、说出一些常用类、接口,请各列举5个。答:类:StreamReader、StringBuilder、SqlConnection、FileStream、File、Regex接口:IDisposable、IEnumerable、IComparable、ICollection、IList23、C#支持多重继承么?答:类之间不支持,接口之间支持。类对接口叫做实现,不叫继承。类是爹、接口是能力,能力可以有多个,但不能有多个爹。24、简单说明数据库建立索引的优缺点。答:优点,使用索引可以加快数据的查询速度。缺点,插入数据过程中会建立索引,所以会降低数据的插入、更新速度,还会占用磁盘。如果一个表查询比写入频繁可以建立索引,如果写入比查询频繁,就不建议建立索引。25、SQL注入漏洞产生的原因?如何防止。答:程序开发过程中不注意书写sql语句和对特殊字符进行过滤,导致客户端可以提交一些sql语句正常执行。