其中 alert 两次输出结果为() hello world报错
原因:bar是局部变量 此函数是一个匿名自执行函数,会先调用并执行一次,即alert (foo+bar)的字符串拼接; var bar=”World”是函数内部声明的局部变量,外部无法调用,所以外部的alert(foo+bar)会报错。
下列程序数据结果是多少(大 A 的 ascii 码是 65 )?
#include <stdio.h> enum etest{ eparam1, eparam2, eparam3=10, eparam4, eparam5='a', eparam6 }epr; int main() { printf(“%d,%d”,eparam4,eparam6); return 0; }答案: eparam4 = 11 eparam6 = 98 在默认情况下,将整数值赋值给枚举量,从0开始,后面没有被初始化的枚举量的值比前面的枚举量大1。可以创造多个值相同的枚举量。 注意:枚举量只有赋值的运算符,所以++这种运算符是不允许出现的
在Linux上,对于多进程,子进程继承了父进程的下列哪些?’
共享内存 信号掩码 已打开的文件描述符
经过fork()以后,父进程和子进程拥有相同内容的代码段、数据段和用户堆栈,就像父进程把自己克隆了一遍。事实上,父进程只复制了自己的PCB块。而代码段,数据段和用户堆栈内存空间并没有复制一份,而是与子进程共享。只有当子进程在运行中出现写操作时,才会产生中断,并为子进程分配内存空间。由于父进程的PCB和子进程的一样,所以在PCB中断中所记录的父进程占有的资源,也是与子进程共享使用的。这里的“共享”一词意味着“竞争”
进程地址空间 上图来自
信号掩码 信号掩码在POSIX下,每个进程有一个信号掩码(signalmask)。简单地说,信号掩码是一个“位图”,其中每一位都对应着一种信号。如果位图中的某一位为1,就表示在执行当前信号的处理程序期间相应的信号暂时被“屏蔽”,使得在执行的过程中不会嵌套地响应那种信号。
文件描述符 文件描述符是由无符号整数表示的句柄,进程使用它来标识打开的文件。文件描述符与包括相关信息(如文件的打开模式、文件的位置类型、文件的初始类型等)的文件对象相关联,这些信息被称作文件的上下文。
子进程继承父进程
用户号UIDs和用户组号GIDs 环境Environment 堆栈 共享内存 打开文件的描述符 执行时关闭(Close-on-exec)标志 信号(Signal)控制设定 进程组号 当前工作目录 根目录 文件方式创建屏蔽字 资源限制 控制终端 子进程独有 进程号PID 不同的父进程号 自己的文件描述符和目录流的拷贝 子进程不继承父进程的进程正文(text),数据和其他锁定内存(memory locks) 不继承异步输入和输出 父进程和子进程拥有独立的地址空间和PID参数。 子进程从父进程继承了用户号和用户组号,用户信息,目录信息,环境(表),打开的文件描述符,堆栈,(共享)内存等。
以上内容来自牛客网评论
文件系统管理的最小磁盘空间单位是(簇)
微软操作系统(DOS、WINDOWS等)中磁盘文件存储管理的最小单位叫做“簇” 扇区:硬盘不是一次读写一个字节而是一次读写一个扇区(512个字节) 簇:系统读读写文件的基本单位,一般为2的n次方个扇区(由文件系统决定) 块可以包含若干页,页可以包含若干簇,簇可以包含若干扇区
文件系统 NTFS、FAT32、FAT16
字节对齐 数组 :按照基本数据类型对齐,第一个对齐了后面的自然也就对齐了。 联合 :按其包含的长度最大的数据类型对齐。 结构体: 结构体中每个数据类型都要对齐。
struct stu{ char sex; int length; char name[10]; }; struct stu my_stu;由于在x86下,GCC默认按4字节对齐,它会在sex后面跟name后面分别填充三个和两个字节使length和整个结构体对齐。于是我们sizeof(my_stu)会得到长度为20,而不是15.如果把char name[10]的10改成13,则总长度为24。
struct test { char x1; short x2; float x3; char x4; };结构的第一个成员x1,其偏移地址为0,占据了第1个字节。第二个成员x2为short类型,其起始地址必须2字节对界,因此,编译器在x2和x1之间填充了一个空字节。结构的第三个成员x3和第四个成员x4恰好落在其自然边界地址上,在它们前面不需要额外的填充字节。在test结构中,成员x3要求4字节对界,是该结构所有成员中要求的最大边界单元,因而test结构的自然对界条件为4字节,编译器在成员x4后面填充了3个空字节。整个结构所占据空间为12字节。
struct test { char x1; }; struct test2 { char x1; short x2; };test大小为1,test2大小为4,如果test2大小为3的话就不能对齐了,所以验证一下只有一个short,发现是2,然后两个short,发现是4,所以只要能保证字节对齐就好啦 结构体的总大小为结构体最宽基本类型成员大小的整数倍,如有需要编译器会 在最末一个成员之后加上填充字节。
下面关于DNS说法正确的是(BC)
A.DNS的作用是域名和IP地址的相互映射(应该是翻译) B.DNS协议运行在UDP协议之上 C.DNS协议端口号为53 D.DNS的默认缓存时间为1小时
假设就绪队列中有10个线程,系统将时间片设置为200ms,CPU进行线程切换要花费10ms。则系统开销所占的比例约为(0.05)
时钟中断 时钟中断 |-操作系统调度10ms->|—-任务执行(200-10)ms—->|-…. 操作系统调度耗时本身要算到时钟的时间片里的。
因为操作系统的调度逻辑是:发生中断->处理调度->发生中断->处理调度…
一个时间片长度就是两次中断的时间长度。 以上回答来自知乎
(int ()[N/M])就是(int ()[5]),就是把a从(int ()[10])强制转换成(int ()[5])
输出就是21436587109
在C++语言中,以下说法正确的是(AD) A.多态是通过虚表实现的 B.构造函数可以声明为虚函数 C.析构函数不可以声明为虚函数 D.抽象类中至少包含一个纯虚函数
对C++ 了解的人都应该知道虚函数(Virtual Function)是通过一张虚函数表(Virtual Table)来实现的。简称为V-Table。 在这个表中,主要是一个类的虚函数的地址表,这张表解决了继承、覆盖的问题,保证其容真实反应实际的函数。这样,在有虚函数的类的实例中这个表被分配在了这个实例的内存中,所以,当我们用父类的指针来操作一个子类的时候,这张虚函数表就显得由为重要了,它就像一个地图一样,指明了实际所应该调用的函数。 这里我们着重看一下这张虚函数表。在C++的标准规格说明书中说到,编译器必需要保证虚函数表的指针存在于对象实例中最前面的位置(这是为了保证正确取到虚函数的偏移量)。 这意味着我们通过对象实例的地址得到这张虚函数表,然后就可以遍历其中函数指针,并调用相应的函数。
PPP 协议是 (数据链路层) 的协议。 (1)Point-to-Point Protocal; PPP点到点 (2) Ethernet; 以太网 (3) High-Level Data Link Control Protocal;HDLC高级链路控制协议 (4) Frame Relay; 帧中继 (5) Asynchronous Transfer Mode;ATM
