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、委托类型的实例将用来存储事件处理器

 

posted on 2023-02-14 14:22  漂乎兮乎  阅读(30)  评论(0)    收藏  举报