1. 线程产生死锁的原因:系统资源不足;进程运行推进的顺序不合适;资源分配不当等
产生死锁的4个必要条件是:互斥条件,一个资源每次只能被一个进程使用;请求与保持条件,一个进程因请求资源而阻塞时,对已获得的资源保持不放;不可剥夺条件,进程已获得的资源,在未使用完之前,不能强行剥夺;循环等待条件,若干进程之间形成一种头尾相连的循环等待资源关系。
这四个条件时死锁的必要条件,只要系统发生死锁,这些条件必然成立,而只要上述条件之一不满足,就不会发生死锁。
避免死锁的方法:银行家算法。(希望能够得到补充,本人对这些真的是有点头疼)
2. 面向对象三要素:百度了一下,大部分回答是封装、继承、多态。
面向对象设计的五个主要的设计原则:
(1)单一职责原则。就一个类而言,应该仅有一个引起它变化的原因。
(2)开放封闭原则。软件实体对外扩展开放,对修改封闭。
(3)里氏替换原则。子类的实例能够替换父类的实例。
(4)接口分离原则。采用多个专门的接口比使用单一的总接口要好。一个类对另一个类的依赖性建立在最小的接口上。
(5)依赖倒置原则。依赖抽象不要依赖具体实现。
附加:设计模式相关
创建型模式:抽象工厂(Abstract Factory)、生成器(Builder)、工厂方法(Factory Method)、原型模式(Prototype)、单件模式(Singleton)。
结构型模式:适配器(Adapter)、桥接(Bridge)、组合(Composite)、装饰(Decorator)、外观(Facade)、享元(Flyweight)、代理(Proxy)。
行为模式 :职责链(Chain of responsibility)、命令(Commond)、解释器(Interpreter)、迭代器(Iterator)、中介者(Mediator)、备忘录(Memento)、观察者(Observer)、状态(State)、策略(Strategy)、模板方法(Template)、访问者(Visitor)
3. Windows内存管理的几种方式及优缺点。
(1)块式管理。把主存分为一大块、一大块的,当所需的程序片段不在主存时就分配一块主存空间,把程序片段加载到主存,就算所需要的程序片段只有几个字节也只能把这块分配给它。优点:易于管理;缺点:浪费空间。
(2)页式管理。把主存分为一页一页的,每一页的空间要比一块一块的空间小很多,显然这种方式的空间利用率要比块式管理高出很多。
(3)段式管理。把主存分为一段一段的,每一段的空间又要比一页一页的空间小很多,这种方法在空间利用率上比页式管理高出很多,但也有另外一个缺点,一个程序片段可能会被分为几十个段,这样很多时间就会浪费在计算每一段的物理地址上。(I/O操作)
(4)段页式管理。结合了段式管理和页式管理的优点。把主存分为若干页,每一页又分为若干段。
以上内容都有待于补充,以后会慢慢补上,今天就先学习到这里,呵呵...还要准备明天的笔试,腾讯啊!!!