面试题目
- 面向对象和面向过程:
面向过程:过程就类似于函数,是对一段功能代码的封装,然后面向过程侧重于怎么做,把完成某一个需求的所有步骤按照顺序从头到尾逐步实现。
根据开发需求,将功能独立的代码封装成多个函数,最后按照顺序执行这些函数
特点:注重步骤与过程,不注重分工;需求越复杂,代码也就越复杂。
面向对象:侧重于谁来做?根据职责在一个对象中封装方法,根据不同的职责,在不同的对象中封装不同的方法,最后让不同对象调用不同的方法。
面向对象:
三个特征:封装,继承和多态。
封装:就是把一类属性和方法封装到一个抽象类中,类不能直接使用,需要将类实例化为对象。对象调用类中的方法,对象方法的实现细节在类内部。
继承:子类继承父类,实现代码的重用,避免一些代码重复写。子类继承父类的属性和方法,同时子类也可以自定义自己的属性和方法。子类也可以重写父类的方法从而隐藏父类的方法。
重写时,子类方法的名字、参数个数、参数的类型和父类方法完全相同。
多态:有两种多态:重载和重写。
重写:与继承有关的多态。C++中通过虚函数实现。从而实现”一个接口,多种方法“。
重载:是在类中多个方法具有相同的名字,但是方法的参数不同。从而实现”功能多态性“。向功能传递不同的消息,让对象根据消息内容产生对应行为。
以上所说的继承,可以有以下两种说法,意思是一样的
说法1:Cat类是Animal类的子类,Animal类是Cat类的父类,Cat从Animal类继承
说法2:Cat类是Animal类的派生类,Animal类是Cat类的基类,Cat类从Animal类派生
- 虚函数必须要重写吗?
- sleep和wait的区
- 进程是资源分配的基本单位,线程是资源调度的基本单位。进程的5种基本状态:创建态、就绪态、运行态、阻塞态和终止态。
- 运行态->就绪态:运行的时间片用完,不得不让出处理机;运行态->阻塞态:进程请求某一资源的使用和分配或等待某一事件的发生;阻塞态->就绪态:进程等待的时间到来时,如I/O操作结束或中断结束
- sleep和wait都会暂停当前线程让出cpu的时间,但不同的是,wai会释放当前持有的对象的锁资源,调用notify方法,之前的线程解除wait状态,线程可以参与cpu的调度;sleep(time)是指在未来的time时间内,是不回去争夺cpu资源,但是不会释放所持有对象的锁资源。当time时间到,则会加入就绪态。
- 函数重写,虚函数,纯虚函数:http://t.csdn.cn/NCE9O
- 函数重写:
浙公网安备 33010602011771号