1、什么是面向对象编程?
OOP:面向对象编程
万物皆对象:将现实世界中的事物通过抽象的手法,剥离归纳成计算机语言,来设置事物具有的属性的行为
2、面向对象和面向过程编程有哪些区别?
从字面来看,侧重点分别为对象和过程:
面向对象:是将事物分别独立成一个个对象,分别执行各自的功能,清晰明了。
面向过程:将整个逻辑操作按顺序逐个执行。
优缺点:
面向对象易扩展、易维护、易复用,但由于需要实例化,更耗费资源
面向过程性能高,但是没有面向对象易扩展、易维护、易复用,常见于单片机开发,嵌入式开发
3、装箱与拆箱
装箱和拆箱允许任何值类型与Object类型相互转化
装箱:将值类型转化为引用类型
拆箱:将引用类型转化为值类型
4、几种数据库的选择场景
http://c.biancheng.net/view/7109.html
5、多线程死锁
死锁是指多个线程共享某些资源时,都在等待对方释放资源,从而导致程序停滞不前的情况。
死锁的四个条件:
1.非抢占:资源不能被抢占
2.互斥:至少有一个资源必须处在非共享模式,即一次只能有一个进程使用,如果另一进程申请该资源,那么申请进程必须延迟直到该资源释放为止。
3.占有并等待:一个进程必须占有至少一个资源,并等待另一个资源,而该资源为其他进程所占有。
4.循环等待:有一组进程{P0,P1,…Pn},P0等待的资源被P1占有,P1等待的资源被P2占有,Pn-1等待的资源被Pn占有,Pn等待的资源被P0占有。
形成死锁必须要满足这四个条件。那么违背这几个条件中的任何一个就不会形成死锁,这种方式成为 死锁预防,而死锁避免是动态的检测分配资源的状态是否安全。
避免死锁的发生:
加锁顺序(线程按照一定的顺序加锁)
加锁时限(线程尝试获取锁的时候加上一定的时限,超过时限则放弃对该锁的请求,并释放自己占有的锁)
死锁检测
6、事件与委托的关系和区别
事件是基于委托类型来声明的,不是一种特殊的委托。委托对事件起到包装隐藏的作用,因为事件只能存在于+=,-=两侧,所以安全性得到保证。在定义事件的触发方法时,方法命名一般为OnFuc(),同时为Protected级别,防止被其他类篡改。
事件的简略声明格式看起来确实像委托类型的字段,但完整的声明格式可以看出来并不是这样。
7、为什么要使用委托类型来声明事件?
1、站在事件拥有者的角度来看,可以表明拥有者能对外界传递哪些消息
2、委托作为一种约定,可以约束能够使用什么样的方法响应事件
3、委托类型的实例将用来存储事件处理器
浙公网安备 33010602011771号