1、下面关于继承说法不正确的是( )
A.继承可以使用现有类的所有功能,并在无需重新编写原来类的情况下对这些功能进行扩展
B.继承体系中子类必须要体现出与基类的不同
C.子类对象一定比基类对象大
D.继承呈现了面相对象程序设计的层次结构,体现了有简单到复杂的认知过程
答案:C
解析:
A.这是继承的功能,也是代码复用的体现
B.继承除了吸收基类成员之外,一般还需要扩充自己的数据成员,跟基类有所不一样
C.不一定,有可能子类只是改写父类的方法而已,并没有增加其自身的数据成员,则大小一样,故错误
D.继承体现了一定的层次结构和认知过程
2、关于继承说法正确的是( )
A.所有的类都可以被继承
B.Car(汽车)类和Tire(轮胎)类可以使用继承方式体现
C.继承是实现代码复用的唯一手段
D.狗是一种动物,可以体现出继承的思想
答案:D
解析:
A.final说明的类不能被继承
B.应该使用组合,因为Tire类跟Car类属于Has-a的关系
C.模板也是代码复用的重要手段
D.狗是动物的一种,属于is-a关系,是继承的体现
3、关于同名隐藏的说法正确的是( )
A.同一个类中,不能存在相同名称的成员函数
B.在基类和子类中,可以存在相同名称但参数列表不同的函数,他们形成重载
C.在基类和子类中,不能存在函数原型完全相同的函数,因为编译时会报错
D.成员函数可以同名,只要参数类型不同即可,成员变量不能同名,即使类型不同
答案:D
解析:
A.在同一个类中可以存在同名的函数成员,比如构成函数重载
B.基类与子类函数名字相同,参数不同,形成的是隐藏
C.可以共存
D.成员函数在同一个类里面同名,此时构成了重载,但变量一定不能同名,故正确
4、下面说法正确的是( )
A.派生类构造函数初始化列表的位置必须显式调用基类的构造函数,已完成基类部分成员的初始化
B.派生类构造函数先初始化子类成员,再初始化基类成员
C.派生类析构函数不会自动析构基类部分成员
D.子类构造函数的定义有时需要参考基类构造函数
答案:D
解析:
A.如果父类有默认构造函数,此时就不需要
B.派生类的构造函数先初始化父类,再是子类
C.会调用,并且按照构造的相反顺序进行调用
D.正确,子类构造函数定义的时候需要看父类构造函数是否需要参数子类的,从而你决定子类构造函数的定义
5、关于基类哪些成员被子类继承说法不正确的是( )
A.静态成员函数
B.所有成员变量
C.基类的友元函数
D.静态成员变量在整个继承体系中只有一份
答案:C
解析:
A.静态成员函数也可以被继承
B.成员变量所有的都会被继承,无论公有私有
C.友元函数不能被继承,相当于你爹的朋友不一定是你的朋友
D.静态成员属于整个类,不属于任何对象,所以在整体体系中只有一份
6、关于僵尸进程,以下描述正确的有?
A.僵尸进程必须使用waitpid/wait接口进行等待
B.僵尸进程最终会自动退出
C.僵尸进程可以被kill命令杀死
D.僵尸进程是因为父进程先于子进程退出而产生的
答案:A
解析:
A选项正确,僵尸进程会造成资源泄露,必须使用wait/waitpid接口进行等待处理
B选项错误,僵尸进程不会完全释放资源退出
C选项错误,僵尸进程是已经退出运行的进程,无法被kill杀死
D选项错误,僵尸进程是子进程先于父进程退出。
7、以下关于孤儿进程的描述正确的有
A.父进程先于子进程退出,则子进程成为孤儿进程
B.孤儿进程会产生资源泄漏
C.孤儿进程运行在系统后台
D.孤儿进程没有父进程
答案:AC
解析:
A选项正确:父进程先于子进程退出,子进程就会成为孤儿进程
B选项错误:孤儿进程退出不会成为僵尸进程,因此也不会资源泄露
C选项正确:孤儿进程是运行在后台的
D选项错误:福尔进程也有父进程,父进程是1号进程
8、请问孤儿进程会被以下哪一个系统进程接管?
A.syslogd
B.init
C.sshd
D.vhand
答案:B
解析:
syslogd:系统中的日志服务进程
init:init进程是内核启动的第一个用户级进程,用于完成处理孤儿进程以及其他的一些重要任务。
sshd:远程登录服务进程
vhand:内存置换服务进程
9、以下描述错误的有
A.守护进程:运行在后台的一种特殊进程,独立于控制终端并周期性地执行某些任务。
B.僵尸进程:一个进程 fork 子进程,子进程退出,而父进程没有 `wait`/`waitpid`子进程,那么子进程的进程描述符仍保存在系统中,这样的进程称为僵尸进程。
C.孤儿进程:一个父进程退出,而它的一个或多个子进程还在运行,这些子进程称为孤儿进程。(孤儿进程将由 init 进程收养并对它们完成状态收集工作)
D.精灵进程:精灵进程退出后会成为僵尸进程
答案:D
僵尸进程:子进程先于父进程退出,父进程没有对子进程的退出进行处理,因此子进程会保存自己的退出信息而无法释放所有资源成为僵尸进程导致资源泄露。
孤儿进程:父进程先于子进程退出,子进程成为孤儿进程,运行在后台,父进程成为1号进程(而孤儿进程的退出,会被1号进程负责任的进行处理,因此不会成为僵尸进程)
守护进程&精灵进程:这两种是同一种进程的不同翻译,是特殊的孤儿进程,不但运行在后台,最主要的是脱离了与终端和登录会话的所有联系,也就是默默的运行在后台不想受到任何影响
根据以上理解分析:
- D错误:精灵进程其实和守护进程是一样的,不同的翻译叫法而已,它的父进程是1号进程,退出后不会成为僵尸进程
10、使用shell时,默认的环境变量放在哪里?
A.~/.bash_profile
B.~/.bash
C./etc/profile.d
D.~/bash
答案:A
解析:
A:~/.bash_profile:用户级的环境配置文件,每个用户目录下都会具有各自的,在用户每次登录系统时被读取,里面所有命令都会被shell执行。包括环境变量的配置命令,因此A正确
B、D:~/.bash 以及 ~/bash 在linux的用户目录中默认是没有这两个文件的,因此也就不清楚其作用了,因此B和D都是错误的
C:/etc/progile.d 这是个目录或者说文件夹,其中包含了系统级的环境配置文件,任意用户登录时都会执行这个目录下的环境配置文件完成环境配置,但是要注意这个是目录并不是保存环境变量配置的配置文件,因此D错误
11、以下哪些命令可以查看环境变量 [多选]
A.echo
B.env
C.set
D.export
答案:ABC
解析:
echo 用于输出打印一个变量的内容,包括环境变量
env 用于打印所有环境变量信息
set 用于输出打印所有环境配置以及变量信息,不限于环境变量
export用于设置环境变量
根据题意,选择D,因为D并不是用于查看环境变量的操作。