以下为《复试背诵资料》的无排版文字预览,完整格式请下载
下载前请仔细阅读文字预览以及下方图片预览。图片预览是什么样的,下载的文档就是什么样的。
操作系统
操作系统的特点?
– 共享:资源可被多个并发执行的进程使用
– 并发:可以在同一时间间隔处理多个进程,需要硬件支持
– 虚拟:将物理实体映射成为多个虚拟设备
– 异步:进程执行走走停停,每次进程执行速度可能不同,但OS需保证进程每次执行结果相同
进程的三个组成部分?
程序段、数据段、PCB(Process Control Block)
并发与并行区别?
并发:同一间隔 并行:同一时刻
进程切换的过程?
保持处理机上下文 -> 更新PCB -> 把PCB移入相应队列(就绪、阻塞) -> 选择另一个进程并更新其PCB -> 更新内存管理的数据结构 -> 恢复处理机上下文
进程通信
1、低级通信方式
PV操作(信号量机制)。
– P:wait(S)原某某,申请S资源
– V:signal(S)原某某,释放S资源
2、高级通信方式:以较高效率传输大量数据的通信方式
– 共享存储(使用同步互斥工具操作共享空间)
– 消息传递(进程间以格式化的消息进行数据交换,有中间实体,分为直接和间接两种,底层通过发送消息和接收消息两个原某某实现)
– 管道通信(两个进程中间存在一个特殊的管道文件,进程的输入输出都通过管道,半双工通信)
管某某是什么?
由一组数据及对这组数据操作的定义组成的模块。同一时间只能有一个进程使用管某某,即管某某是互斥使用的,进程释放管某某后需唤醒申请管某某资源的等待队列上的进程。进程只有通过进入管某某并使用管某某内部的操作才能访问其中数据。
死锁的必要条件?
– 互斥条件:资源在某一时刻只能被一个进程占有
– 不剥夺条件:进程所持有的资源在主动释放前不能被其他进程强行夺走
– 请求和占用条件:死锁进程必然是既持有资源又在申请资源的
– 循环等待条件:存在等待链,互相申请,互不释放
死锁与饥饿的区别?
– 都是资源分配问题
– 死锁是等待永远不会释放的资源,而饥饿申请的资源会被释放,只是永远不会分配给自己
– 一旦产生死锁,则死锁进程必然是多个,而饥饿进程可以只有一个
– 饥饿的进程可能处于就绪状态,而死锁进程一定是阻塞进程
进程和线程的区别?
线程被称作轻量级进程,在进程中包含线程。进程有独立的内存空间,不同进程间不能直接共享其他进程资源,而同一个进程内的线程共享进程内存空间;相比进程,线程切换对系统开销更小一些;进程是资源分配的最小单位,线程是程序执行的最小单位。
FCB包含什么?
文件指针:上次读写位置。
文件打开数:多少个进程打开了此文件。
文件磁盘位置。
文件的访问权限:创建、只读、读写等。
页面置换算法?
最佳置换算法OPT
先进先出置换算法FIFO
最近最久未使用算法LRU
时钟算法LOCK
改进型时钟算法
批处理作业调度算法?
先来先服务FCFS
最短作业优先SJF
最高响应比优先HRN
多级队列调度算法
进程调度算法?
先进先出FIFO
时间片轮转算法RR
最高优先级算法HPF
多级队列反馈算法
磁盘调度算法?
先来先服务FCFS
最短寻道时间优先SSTF
扫描算法SCAN
循环扫描算法C-SCAN
FAT(File Allocation Table)?
分配给文件的所有盘块号都放在FAT中,记录了文件的物理位置。
中断和系统调用区别?
中断:解决处理器速度和硬件速度不匹配,是多道程序设计的必要条件。中断和系统调用的区别: 中断是由外设产生, 无意的, 被动的 系统调用是由应用程序请求操作系统提供服务产生, 有意的, 主动的。要从用户态通过中断进入内核态。(联系) 中断过程:中断请求 中断响应 断点保护 执行中断服务程序 断点恢复 中断返回 系统调用过程:应用程序在用户态执行时请求系统调用,中断,从用户态进入内核态,在内核态执行相应的内核代码。
C++
指针和引用的区别?
指针是一个存储地址的变量,该地址为内存的一个存储单元;引用是原变量的一个别名;
指针可以为空,而引用不能为空;
指针可以有多级,而引用只能有一级;
指针可以重新赋值,而引用只能初始化一次
sizeof引用得到的是变量大小,而sizeof指针得到的是指针本身大小
将引用作为函数返回值的好处是?
在内存中不会产生被返回值的副本,同时不能返回局部变量的引用,因为随着调用结束局部变量会被销毁。
三种传参方式?
值传递
传递的是实参的一个拷贝,修改形参不会改变实参值。
地址传递
传递的是实参地址的一个拷贝,修改形参会导致改变实参值。
引用传递
传递的是实参的一个别名,修改形参会导致改变实参。
被调用函数的形参只有在被调用时才会临时分配存储单元,一旦调用结束则释放内存。
const作用?
被const修饰符修饰的变量不能被修改。const *x表明x数据是常量,不能修改;*const x表明指针本身是常量,x的指针不能指向其他内存地址,x本身可被修改;*const *x表明x本身数据和地址都不能被修改。
static作用?
被static修饰符修饰的变量在整个文件中都是可见的,而在文件外是不可见的。该变量在全局数据区分配内存。C++中由程序运行new出的动态数据存放在堆区,而函数内部局部变量存放在栈区。
静态局部变量:在函数内部定义static变量,第一次运行到这里初始化,存储到全局数据区,下一次执行到这里不会再重新初始化。
static变量如果没有显式初始化,默认初始值为0。
静态函数不能被其他函数所调用。
面向对象的三个要素(基本特征)?
1、封装:将客观事物封装成类,隐藏实现细节,模块化代码。
2、多态:实现多态的两种方式——覆盖(重写)和重载。
覆盖是子类重新定义父类的虚函数,与多态真正相关。当子类重新定义了父类的虚函数后,父类指针根据赋给它的不同的子类指针,动态的调用属于子类的该函数,这样的函数调用在编译期间是无法确定的(调用的子类的虚函数的地址无法给出)。因此,这样的函数地址是在运行期绑定的(晚绑定)。
重载是存在多个同名函数,但是函数的参数个数不同。这些函数实际上成为了不同的函数,对它们的调用在编译期间就已经确定,属于早绑定,与多态无关。
3、继承:子类继承父类功能,对父类功能进行扩展。
结构体和联合有什么区别?
(1). 结构和联合都是由多个不同的数据类型成员组成, 但在任何同一时刻, 联合中只存放了一个被选中的成员(所有成员共用一块地址空间), 而结构的所有成员都存在(不同成员的存放地址不同)。
(2). 对于联合的不同成员赋值, 将会对其它成员重写, 原来成员的值就不存在了, 而对于结构的不同成员赋值是互不影响的。
C++是不是类型安全的语言?
不是。不同类型间指针可以强制互转。
const与#define区别?
const修饰常量受到强制保护,程序更健壮,而且const修饰的常量有数据类型,有类型安全检查。
基类的析构函数为什么是虚函数?
为了防止派生类析构函数未执行,造成资源泄露。
#include尖括号和双引号区别?
是标准头文件,“”是非系统头文件
为什么有了指针,还要使用引用?
为了支持运算符的重载。更加方便。
如何避免野指针?
声明指针记得初始化,暂时不用就指向NULL;使用malloc分配内存,必须经过显式释放(free),避免内 内容过长,仅展示头部和尾部部分文字预览,全文请查看图片预览。 在海量数据面前,需要实时分析获取需要的信息,处理数据的效率就是组织的生命。
4.Value:数据潜在价值大
在研究和技术开发领域,上述三个特征已经足够表征大数据的特点。但在商业应用领域,第四个特征就显得非常关键!投入如此巨大的研究和技术开发的努力,就是因为大家
都洞察到了大数据的潜在巨大价值。如何通过强大的机器学习和高级分析更迅速地完成数据的价值“提纯”,挖掘出大数据的潜在价值,这是目前大数据应用背景下苛待解决的难题。
大数据发展的瓶颈?
没有成熟的方法采集和处理大数据。
数据涉及到隐私,法律法规还没有完善。
大量不同类别的数据不知道怎么存储。
数据的独占性:有价值的数据别人不一定会分享。
[文章尾部最后300字内容到此结束,中间部分内容请查看底下的图片预览]请点击下方选择您需要的文档下载。
以上为《复试背诵资料》的无排版文字预览,完整格式请下载
下载前请仔细阅读上面文字预览以及下方图片预览。图片预览是什么样的,下载的文档就是什么样的。