2018浙江大华多媒体开发笔试题

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/VioletHan7/article/details/82869996

1、Linux操作系统中的进程有7种状态
1)R运行状态:并不意味着进程一定在运行中,也可以在运行队列里。
2)S睡眠状态:进程在等待事件完成。浅度睡眠,可以被唤醒
3)D磁盘睡眠状态:不可中断睡眠。深度睡眠,通常在磁盘写入时发生
4)T停止状态:可通过发送SIGSTOP信号给进程来停止进程,可以发送SIGNOT信号让进程继续运行
5)X死亡状态:该状态是返回状态,在任务列表里面看不到
6)Z僵尸状态:子进程退出,父进程还在运行,但是父进程没有读到子进程的退出状态,子进程进入僵尸状态
7)T追踪停止状态

2、Linux进程地址空间
32位机器上Linux进程地址空间大小是4G,其中0-3G是用户空间,3G-4G是内核空间。其实,这个4G地址空间是不存在的,也就是我们所说的虚拟内存空间。

进程使用虚拟内存中的地址,由操作系统协助相关硬件,把它转换成真正的物理地址。虚拟地址通过页表(page table)映射到物理内存。

3、USB2.0的最高传输速率
USB2.0除了拥有USB1.1中规定的1.5Mbps
和12Mbps两个传输模式外,还增加了480Mbps高速数据传输模式(注:第二版USB2.0的传输速率将达800Mbps,最高理想值1600Mbps)。虽然USB2.0的传输速度大大提升了,但其工作原理和模式完全和USB1.1一模一样,而提高到480Mbps的传输速度的最关键技术就是提高单位传输速率:USB1.1的单位数据传输时间是1ms,而USB2.0的单位数据传输时间达到了125微秒。

USB2.0 High Speed:理论速度是480Mbps,对应之前的USB2.0
USB2.0 Full Speed:理论速度是12Mbps,也就是过去的USB1.1

4、系统感知进程的唯一实体是:
A.JCB
B.FCB
C.PCB
D.SJT

C.进程控制块PCB是操作系统用来记录进程详细状态相关信息的基本数据结构,它和进程一一对应,是进程的唯一标识。
进程控制块记录了进程的标识信息/状态信息/控制信息。
1)标识信息:唯一标识一个进程
2)状态信息:记录进程使用处理器时的各种现场信息,主要有CPU通用寄存器的内容,CPU状态寄存器的内容及栈指针
3)控制信息:操作系统对进程进行调度管理时用到的信息。

5、为了确保每个开发过程的质量,防止把软件差错传递到下一个过程,必须进行()
A.质量检验
B.软件容错
C.软件维护
D.系统容错

A

6、实现二分查找(折半查找)时,要求查找表()
A.顺序存储,关键码无序排列
B.顺序存储,关键码有序排列
C.双向链表存储,关键码无序排列
D.双向链表存储,关键码有序排列

B.

7、volatile变量声明的用处
对于volatile类型的变量,系统每次用到他的时候都是直接从对应的内存中提取,而不会利用cache当中的原有数值,以适应它的未知何时会发生的变化,系统对这种变量的处理不会做优化——显然也是因为它的数值随时都可能变化的情况。
如果将变量加上volatile修饰,则编译器保证对此变量的读写操作都不会被优化(肯定执行)。

8、关于类的静态数据成员
A.类的静态方法只能访问该类的静态数据成员
B.静态数据成员可被该类的所有方法访问
C.该类的对象共享其静态数据成员的值
D.该类的静态数据成员的值不可被修改

D.不正确。其余选项都正确。在面向对象开发方法中,静态成员的含义是所修饰的成员是属于类的,而不是属于某对象。静态数据成员对该类只有一份,该类的所有对象共享静态数据成员,可被该类的所有方法访问,其值可以改变,但是不论是通过对象还是类对静态数据成员值的修改,都会反应到整个类。类的静态方法只能访问该类的静态数据成员。

9、在e-r模型中,包含以下基本成分:
A.数据、对象、实体
B.控制、联系、对象
C.实体、联系、属性
D.实体、数据、联系

C.实体-联系(E-R模型)模型是由R.P.Chen于1976年首先提出的。它提供下受任何DBMS约束的面向用户的表达方法,在数据库设计中被广泛应用于数据建模的工具。E-R模型的构成成分是实体集(对象)、属性和联系集。

10、在操作系统中,P、V操作是一种()
A.机器指令
B.系统调用命令
C.作业控制命令
D.低级进程通信原语

D.P、V操作一定是原语,并且进程间的互斥与同步,由于其所交换的信息量少而归结为低级通信。

11、IP数据报头采用()字节序,在此字节序下从地地址到高地址0x1234的表示形式为()
A.big_endian,0x12 0x34 0 0
B.little_endian,0x34 0x12 0 0
C.big_endian,0 0 0x12 0x34
D.little_endian,0 0 0x34 0x12

big_endian,是指低地址存放最高有效字节(MSB),little_endian,是指低地址存放最低有效字节(LSB)。
数字0x12345678在两种不同的字节序CPU中的存储顺序如下所示:
big_endian
低地址 高地址
12 34 56 78

little_endian
低地址 高地址
78 56 34 12

12、CPU采用哈佛结构时,cache采用形式是()
独立的指令cache和数据cache。
目的是减少指令流水线资源冲突,就是指令流水线不会断流,预取过来的都是指令。
哈佛结构和冯诺伊曼结构都是一种存储器结构。哈佛结构是指将指令存储器和数据存储器分开的一种存储器结构;而冯诺伊曼结构是指将指令存储器和数据存储器合在一起的存储器结构。

最大区别是冯诺伊曼结构的计算机采用代码与数据的统一编址,而哈佛结构是独立编址的,代码空间和数据空间完全分开。

与冯诺伊曼结构处理器比较,哈佛结构处理器有两个明显的特点:
1)使用两个独立的存储器模块,分别存储指令和数据,每个存储模块都不允许指令和数据并存;
2)使用独立的两条总线,分别作为CPU与每个存储器之间的专用通信路径,而这两条总线之间毫无关联。

13、malloc/free 与new/delete异同点
相同点:
malloc/free 与 new/delete都可以用于申请动态内存和释放内存,他们申请的空间都分配在堆上。

不同点:
1)操作对象不同。malloc/free是C/C++语言的标准库文件,new/delete是C++的运算符

对非内部数据对象,malloc/free无法满足动态对象要求。对象在创建时要自动执行构造函数,对象消亡之前要自动执行析构函数,而malloc/free是库函数不是运算符,不在编译器控制权限之内,不能将执行构造函数、析构函数强加于malloc/free身上。而由于new/delete是运算符,能够完成动态内存分配和初始化工作,即能够自动执行构造函数和析构函数。

2)用法不同。malloc分配内存空间前需要计算分配的内存大小;而new能够自动分配内存空间。

malloc是底层函数,其函数返回值类型为void*;而new运算符调用无参构造函数,故返回值为对应对象的指针。
malloc函数类型不是安全的,编译器不对其进行类型转换、类型安全的相关检查。malloc申请空间后,不会对其进行初始化,要单独初始化;而new类型是安全的,因为它内置了sizeof、类型转换和类型安全检查功能,且在创建对象时,就能完成初始化工作,一般初始化调用无参构造函数。

free只进行释放空间;而delete则释放空间的同时调用析构函数。此外,delete使用时注意释放数组的方法为delete []数组名。

14、内存碎片产生的原因及处理方法
malloc/free大量使用后会造成内存碎片。内存碎片一般是由于空闲的连续空间比要申请的空间小,导致这些小内存块不能被利用.产生内存碎片的方法很简单,举个例:
假设有一块一共有100个单位的连续空闲内存空间,范围是099.如果你从中申请一块内存,如10个单位,那么申请出来的内存块就为09区间.这时继续申请一块内存,比如说5个单位大,第二块得到的内存块就应该为1014区间.如果把第一块内存块释放,然后再申请一块大于10个单位的内存块,比如说20个单位.因为刚被释放的内存块不能满足新的请求,所以只能从15开始分配出20个单位的内存块.现在整个内存空间的状态是09空闲,1014被占用,1524被占用,2599空闲。其中09就是一个内存碎片了.如果1014一直被占用,而以后申请的空间都大于10个单位,那么09就永远用不上了,造成内存浪费.

new/delete也会产生内存碎片。参考:http://blog.51cto.com/12158490/2057439

15、fork()函数返回次数
fork是实现进程的关键函数之一,很多书上这样描述:fork函数调用一次,返回两次:父进程调用一次fork,子进程和父进程各返回一次,其中子进程返回0,父进程返回子进程pid(非0)。可以以此来判断fork返回后当前是在子进程里还是在父进程里。
准确的说法,应该是“父进程调用一次->父进程返回一次,子进程返回一次”,在各自的进程中,其实都是像普通函数那样返回而已。

16、随机数转换器
https://www.cnblogs.com/youxin/p/3351213.html

17、关于sizeof
https://blog.csdn.net/oktears/article/details/19352577

18、判断两个IP是否属于同一子网
子网掩码是用来判断任意两台计算机的IP地址是否属于同一子网络的根据。
子网掩码与IP地址结构相同,是32位二进制数,其中网络号部分全为“1”和主机号部分全为“0”。利用子网掩码可以判断两台主机是否中同一子网中。若两台主机的IP地址分别与它们的子网掩码相“与”后的结果相同,则说明这两台主机在同一子网中。
1)
I P 地址  192.168.0.1
子网掩码  255.255.255.0
或者可以这样表示 192.168.0.1/24
/24表示前3段属于网络号部分

转化为二进制进行运算:
I P 地址 11010000.10101000.00000000.00000001
子网掩码 11111111.11111111.11111111.00000000

AND运算
    11000000.10101000.00000000.00000000
转化为十进制后为:
    192.168.0.0
2)
I P 地址  192.168.0.254
子网掩码  255.255.255.0
或者可以这样表示 192.168.0.254/24

转化为二进制进行运算:
I P 地址 11010000.10101000.00000000.11111110
子网掩码 11111111.11111111.11111111.00000000

AND运算
     11000000.10101000.00000000.00000000

转化为十进制后为:
     192.168.0.0
通过以上对两台计算机IP地址与子网掩码的AND运算后,我们可以看到它运算结果是一样的。均为192.168.0.0,所以这二台计算机可视为是同一子网络。

19、x=x&(x-1)实现的功能是统计x中二进制中bit 1的个数

20、虚拟内存的好处及多级分页机制的原因

21、#ifndef #define #endif作用

22、图的DFS与BFS的复杂度分析

23、os的特征:并发性、共享性、虚拟性、异步性。最基本的特征是并发性和共享性。

24、TCP 与 UDP的特点

25、假定有4个整数用8位补码分别表示r1=FEH r2=F2H r3=90H r4=F8H,若将运算结果存放在一个8位寄存器中,则下列运算会发生溢出的是()
A.r1xr2
B.r2xr3
C.r1xr4
D.r2xr4

B.定点数运算。用补码表示时8位寄存器所能表示的整数范围为-128~+127
r1=(15x16+14)-256=-2
r2=(15x16+2)-256=-14
r1=(9x16+0)-256=-112
r1=(15x16+8)-256=-8
则r1xr2=28 r2xr3=1568 r1xr4=16 r2xr4=112只有r2xr3结果溢出

26、一个8位二进制整数,若采用补码表示,且由4个1和4个0组成,则最小值为()
A.-120
B.-7
C.-112
D.-121

D.补码负数的特点是数值位对应的真值越小,其绝对值越大,即负的越多。所以由4个1和4个0组成的补码数中,最小的补码表示为10000111,即真值为-121

猜你喜欢

转载自blog.csdn.net/VioletHan7/article/details/82869996