1、[单选题]
内存页式管理方式中,首先淘汰在内存中空闲(未被修改或读取)时间最长的帧,这种替换策略是_____.()
A. 先进先出(FIFO)
B. 最近最少使用法(LRU)
C. 优先级调度
D. 轮转法
选B
2、[单选题]
进程P1使用资源情况:申请资源S1..•申请资源S2,…释放资源S1;进程P2使用资源情况:申请资源S2,…申请资源S1,…释放资源S2,系统并发执行进程P1,P2,系统将()
A 必定产生死锁
B 可能产生死锁
C 不会产生死锁
D 无法确定是否会产生死锁
选B
3、[单选题]
引用和指针,下面说法不正确的是:()
A 引用和指针在声明后都有自己的内存空间
B 引用必须在声明时初始化,而指针不用
C 引用声明后,引用的对象不可改变,对象的值可以改变,指针可以随时改变指向的对象以及对象的值
D 空值NULL不能引用,而指针可以指向NULL。
选A
引用没有自己的内存空间,但指针有自己的内存空间
4、[单选题]
关于排序,下面说法不正确的是
A 快排时间复杂度为O(N*logN),空间复杂度为O(logN)
B 归并排序是一种稳定的排序,堆排序和快排均不稳定
C 序列基本有序时,快排退化成冒泡排序,直接插入排序最快
D 归并排序空间复杂度为O(N),堆排序空间复杂度的为O(logN)
选D
归并排序和堆排序的空间复杂度均为O(1),归并排序时间复杂度为O(1)
5、[单选题]
用二进制来编码字符串“abcdabeaa”,需要能够根据编码,解码回原来的字符串,最少需要多长的二进制字符串?
A 17
B 18
C 19
D 29
选C
按照哈夫曼编码做
6、[单选题]
TCP关闭过程中,主动关闭方不可能处于的状态是()
A FIN_WAIT_1
B FIN_WAIT_2
C CLOSE_WAIT
D TIME_WAIT
选C
7、[单选题]
已知二叉树的前序序列为BCDEFAG,中序序列为DCFAEGB,请问后序序列为___
A DAFEGCB
B DAEGFCB
C DAFGECB
D DAEFGCB
选C
8、[?][单选题]
请写出下面程序的输出:
#include <iostream> using namespace std; unsigned intGetTestNum(){ static unsigned inta= 0; staticunsigned int b= 1; int c= a + b; a = b; b = c; return c; } int main(int argc, char* argv[]) { for(int i= 0; i < 9; i++) { GetTestNum(); } cout << GetTestNum()<< endl; }
A 1
B 144
C 89
D 55
选C
static修饰的值在运行期间只有一个副本
9、[单选题]
如下函数,在32 bit系统foo(2^31-3)的值是:
int foo(int x) { return x&-x; }
A 0
B 1
C 2
D 4
选C
2与31异或,10与11111异或后得11101,3为11,11101-11=11010
-11010相当于11010取反加1为00110
11010&00110=10,结果为2
10、[?][单选题]
本流程图描述了某子程序的处理流程,现要求用白盒测试法对子程序进行测试。根据白盒测试常用的以下几种方式:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、多重条件覆盖(条件组合覆盖)、路径覆盖六种覆盖标准,从供选择的答案中分别找出满足相应覆盖标准的最小的测试数据组并简述各种测试方法。
流程图:
条件覆盖 ,是指选择足够的测试用例,使得运行这些测试用例时,判定中的每个条件的所有可能结果至少出现一次;请选择能够满足条件覆盖的选择项
A x=3 y=3 z=0;x=1 y=2 z=1
B x=1 y=2 z=0;x=2 y=1 z=1
C x=4 y=2 z=0;x=3 y=3 z=0; x=2 y=1 z=0; x=1 y=1 z=1
D x=4 y=2 z=0;x=1 y=2 z=1; x=2 y=1 z=0; x=1 y=1 z=1
E x=4 y=2 z=0
F x=4 y=2 z=0;x=1 y=1 z=1
选B
别人的解析:最少的选择就是是否和否是结合,就可以达到目的
我觉得就算按照解析也应该选A啊,这个题目答案错了?
11、[单选题]
int func(int x){ int countx= 0; while(x) { countx++; x= x&(x-1); //1 } return countx; }
如果x=254,函数返回值为:
A 6
B 7
C 8
D 0
选B
解析:
1处是x = x&(x-1);为求x的二进制表达式有多少个1
改成x =x|(x-1);为求x的二进制表达式有多少个0
12、[单选题]
在进程状态转换时,下列哪一种状态是不可能发生的:
A 等待态->运行态
B 运行态->就绪态
C 运行态->等待态
D 就绪态->运行态
选A
解析:正在运行的进程遇到io请求就会阻塞(等待),阻塞(等待)的进程得到io设备就会转成就绪状态,就绪状态的进程在cpu调度下,会给该进程分配时间片,分配到时间片段后就会执行,对于正在执行的进程,如果它的时间片段用完了的话,就会转化成就绪状态。
13、[单选题]
如果i=5;那么a=(++i)--;之后,a和i的值各是多少?
A a=6.i=6
B a=5.i=6
C a=6.i=5
D a=5.i=5
选C
解析:(++i)的值为6,i的值变为6
(++i)--的值为6(先幅值再减1),i的值变为5
14、[单选题]
DNS协议位于OSI模型中的哪一层:
A 应用层
B 网络层
C 传输层
D 会话层
选A
15、[单选题]
下列算法中不属于稳定排序的是:
A 插入排序
B 冒泡排序
C 快速排序
D 归并排序
选C
16、[单选题]
二叉树的根节点计为第1层结点,则第9层最多有多少个结点?
A 18
B 256
C 128
D 64
选B
解析:满二叉树,节点个数是2^(k-1),所以就是2^8=256
17、[单选题]
下列描述,正确的一共有多少个?
1)const char *p,这是一个常量指针,p的值不可修改
2)在64位机上,char*p= “abcdefghijk”; sizeof(p)大小为12
3)inline会检查函数参数,所以调用开销显著大于宏
4)重载是编译时确定的,虚函数是运行时绑定的;
A 1
B 2
C 3
D 4
选A
A 应该是p指向的值不可修改,p是指针可以修改
B 32位编译器:32位系统下指针占用4字节
char :1个字节
char*(即指针变量): 4个字节(32位的寻址空间是2^32, 即32个bit,也就是4个字节。同理64位编译器)
short int : 2个字节
int: 4个字节
unsigned int : 4个字节
float: 4个字节
double: 8个字节
long: 4个字节
long long: 8个字节
unsigned long: 4个字节
64位编译器:64位系统下指针占用8字节
char :1个字节
char*(即指针变量): 8个字节
short int : 2个字节
int: 4个字节
unsigned int : 4个字节
float: 4个字节
double: 8个字节
long: 8个字节
long long: 8个字节
unsigned long: 8个字节
只有第四个是正确的
18、[单选题]
下面关于linux文件系统的软链接文件和硬链接文件,描述不正确的是
A 软链接文件可以指向另外一个文件系统的文件
B 硬链接文件会增加被指向文件的引用计数
C 删除被指向文件时,对应的软链接文件会失效
D 删除被指向文件时,对应的硬链接文件会失效
选D
19、下列描述,错误的是:
A 文件系统IO自带缓冲,以减小对磁盘文件的访问,提高系统性能
B 通过select和epoll能同时监听处理多个IO事件
C 使用linuxIPC中的pipe机制,生产者写入数据到消费者消费数据,依次要经过如下拷贝:生产者用户空间到生产者内核控件的拷贝,生产者内核空间到消费者内核空间的拷贝,消费者内核空间到消费者用户空间的拷贝。
D C标准IO库自带缓冲,以减小fread或fwrite等带来的系统开销。
选C
20、有以下函数,其作用是什么?
int func(int num, int i) { int tmp = ~((1 << (i + 1)) -1); return num & tmp; }
A 检查num的i位是否为0
B 将num的倍数据取反
C 将num最高位到i位(含)清零
D 将num的i位到0位(含)清零
选D
位运算:把1从最右边的一位向左移动 i+1 位,然后再减 1 ,这时最右边的 第 i 到第 0 位都变成1,其余位都为0.然后取反,也就是从右边第 i 位到第0位都变成0,其余位为1,与num做&运算,如果num从第 i 位到第 0 位都为0
21、[单选题]
关于epoll和select,以下说法哪个是错误的:
A select单个进程可监视的fd数量受到限制
B epoll和select都可以实现同时监听多个I/O事件的状态
C epoll基于轮训机制,select基于操作系统支持的I/O通知机制
D epoll支持水平触发和边沿触发两种模式
选C
c说反了,select是轮询
22、[单选题]
下列不属于标准冯诺依曼计算机体系结构部件的是
A 输入与输出设备
B 控制器
C 寄存器
D 运算器
选C
冯·诺依曼体系结构计算机必须具备五大基本组成部件,包括:输人数据和程序的输入设备、记忆程序和数据的存储器、完成数据加工处理的运算器、控制程序执行的控制器、输出处理结果的输出设备。
23、[单选题]
n个节点的二叉树,最多可以有多少层?
A n/2
B log(n)
C n-1
D n
选D
假定根节点层次为1,一层一个节点,则有n层
24、[单选题]
如下那一段代码不能给地址0xaae0275c赋值为1?
A volatile int*p = (int *) 0xaae0275c; *p=1;
B volatile int*p = (int *) 0xaae0275c; p[0] = 1;
C *(volatileint *) 0xaae0275c = 1;
D (volatileint *) 0xaae0275c[0] = 1;
选D
A、B选项都是定义一个指针p指向0xaae0275c这个地址,解引用后再赋值;
C选项把0xaae0275c转换成指针,再加*解引用后赋值
25、[单选题]
下面关于二叉树的说法正确的是:
A 满二叉树是完全二叉树
B 满二叉树中有可能存在度数为1的节点
C 完全二叉树是满二叉树
D 完全二叉树中某个节点可以没有左孩子,只有右孩子
选A
A 对
B 满二叉树无度为1的节点
C 完全二叉树不是满二叉树,满二叉树一定是完全二叉树
D 完全二叉树中度为1的节点肯定是只有左孩子没有右孩子
26、[单选题]
已知二叉树的前序序列为BCDEFAG,中序序列为DCFAEGB,请问后序序列为___
A DAFEGCB
B DAEGFCB
C DAFGECB
D DAEFGCB
选C
27、[单选题]
下列描述,错误的是
A 函数参数传值,相比传指针,很多时候开销会更大
B 函数使用引用做形参时,无法对该引用形参赋值为NULL
C 函数返回指针时,要避免指针指向内部临时变量
D 函数传值时,如果函数体内对形参值做修改,同样会影响到实参的值
选D
在函数体内修改形参是不会影响实参值的
28、[?][单选题]
关于可重入和线程安全,下面描述不准确的是:
A 可重入函数一定线程安全,而线程安全函数不一定可重入
B 单线程环境中,使用不可重入函数并不会引发问题
C 使用互斥变量,确保非线程函数被串行调用,并不会引发问题。
D 函数最好别使用全局变量,以便保证线程可安全或可重入。
选B
可重入函数可以在任意时刻被中断,稍后再继续运行,不会丢失数据。不可重入(non-reentrant)函数不能由超过一个任务所共享,除非能确保函数的互斥
可重入的函数并非是安全的。
线程安全的肯定是可重入的
不可重入的函数一定不是线程安全的
按照这个解释不是应该选A吗?(黑人问号....)
29、[问答题]
题目描述
每天有千万级的用户在使用滴滴出行,来改善他们的出行体验。同时,也给我们的许多后台系统带来了大量的请求,后台系统每秒承受着数万级的请求数,为了减轻大量请求带来的压力,我们通常采用的是缓存技术。
下图有一个典型的采用了分布式缓存技术的系统A,A提供了一个毫秒级的数据查询的功能,数据内容大约1T,缓存在分布式cache系统中,上游其他系统,通过内部协议请求系统A中的server获取数据。系统A的数据内容,每天凌晨进行一次全量更新。
请针对系统A,给出一个测试设计,至少包括以下内容:1、对被测对象的系统架构分析;2、枚举所有测试点以及测试方法的简单设计;3、指出该系统存在的隐患及改进方向;
30、[问答题]
滴滴出行平台的出租车、快车、专车等业务都是基于地理位置的服务,乘客发出订单后,附近的司机很快能够收到订单;下面是一张简化版的分单模型设计图,以及简要介绍:
(1) 乘客创建订单时,会将订单信息写入订单池,取消订单则删除,司机出车时,将司机信息写入司机池,收车时删除;
(2) 订单分配模块会拉取到订单和司机的信息,其中包含地理位置信息,根据位置进行匹配,最终为司机分配1个5公里范围内的订单;
请根据以上的信息,回答如下问题:
1.分析该系统各模块的功能及特点;
2.对该系统做出功能和性能的测试设计;
1.分析如下:
(1)订单池:功能:a.包含用户的基本信息,比如用户名,用户电话,所在位置,可选车的类型(出租车、私家车或其他车型)
b.允许多用户同时登录,互不影响
c.创建订单需要填写上车的位置,目的地地址,预约的时间以及车型,在规定时间内可删除订单
d.订单创建好后,将信息传递给订单分配模块,若成功删除订单,则订单池中的订单信息被删除
特点:允许多用户同时登陆,具有数据录入,删除和传递功能
(2)司机池:
功能:
a.包含司机的基本信息,比如 司机名, 司机电话,所在位置,所开车的类型(出租车、私家车或其他车型)和车牌号,是否空车
b.允许多用户同时登录,互不影响
c.接受订单后,在司机池录入出车信息;订单完成后,在司机池录入收车信息
特点:允许多用户同时登陆,具有数据录入,删除和传递功能,与订单池类似
(3)订单分配模块:
功能: 拉取到订单和司机的信息,其中包含地理位置信息,根据位置进行匹配,最终为司机分配1个5公里范围内的订单
特点:是订单池和司机池的控制和分配中心,负责两者信息的匹配与调度
2.(1)功能测试:
登陆模块测试:
a.用户和司机的登陆测试,对输入(账号和密码)进行等价类和边界值分析相结合的用例测试,检测能否成功登陆
b.测试登陆界面的风格与整体是否相融合,有无错别字
c.鼠标点击文本框,能成功选中,并且鼠标由箭头转换为在相应文本框中开始位置的竖线光标
订单模块 :
a.订单界面包含所有需求说明书上的功能按钮,且链接正常,可成功转到相应界面
b.输入用户的上车位置信息是由GPS定位选择还是自己手动输入
c.填写完所有信息后,订单创建按钮变高亮,点击后出现订单已创建成功,正等待司机接收的提示信息
d.司机接收订单后会弹出相应提示,告知用户司机的一些基本信息,比如司机当前所在位置,到达所需时间等。
e.订单提交后,能在司机接收前删除订单。
司机模块:
a.登陆后可选择出车或收车状态
b.可以成功接收订单,接收订单后可获得用户的一些基本信息,比如名字,电话,所在位置以及目的地
订单分配模块:
a.可以获取订单池和司机池的订单和出车信息
b.可以对两边的信息,根据位置进行匹配,并给司机分配订单
c.订单被司机接收之后,向用户反馈司机的信息。
(2)性能测试:
a.由登陆界面进入系统要多久
b.订单池最多能容纳多少个用户的订单,司机池最多能容纳多少个司机的信息
c.在同一时刻,最多能允许多少个用户登陆
b.用户登陆后,能在系统呆多长时间
e.是否支持网页登陆
31、[问答题]
随着滴滴的业务压力急剧增加,保持服务稳定性成了滴滴工程师的重中之重。为了能够以最小的风险完成上线,工程师们希望在上线过程中能够将一个城市的流量引到特定机器进行观察。为此,工程师小A对现有的上线流程进行了改造,架构图变化如下:
其中,router流量转发模块需要承接所有的外部流量,根据下游的服务器规模平均分配流量, 确保下游机器的压力是均衡的。在本次改造中,router模块将新增一个上游流量解析函数,该函数读取特定的城市配置文件,并且解析上游的流量(url),提取city参数值,然后对city值进行判断;如果city在配置文件中有配置,那么将流量转发到小流量机器,否则,仍然按照原有的逻辑分发流量。
而为了能够控制小流量的城市,小A开发了一个配置系统,该系统可以实时修改城市配置文件。
测试工程师小B拿到测试任务后,进行了简单的分析,他意识到router承载了巨大的流量,新增函数会对整体性能产生很大的影响,同时该模块对全系统的稳定性有决定性作用,为此需要对测试方案进行精心设计。
现在,请帮助小B给出一个完整的测试方案,至少包括以下内容:
1、对被测对象进行风险分析
2、列举所有的测试点以及测试方法的简单设计