2、趋势科技2017校招开发岗试题

2、趋势科技2017校招开发岗试题,第1张

1、函数宏定义时记得加括号,不加括号就是简单的文本替换,一般使用
#define f(a,b) ((a)+(b)),题目中不带括号,文本替换如下:

#define f(a,b) a+b
#define g(a,b) ab
2
f(3,g(4,5))

g ( 4 , 5 ) → 4 ∗ 5 g(4,5)→4 * 5 g(4,5)45
f ( 3 , g ( 4 , 5 ) ) → 3 + 4 ∗ 5 f(3,g(4,5))→3+4 * 5 f(3,g(4,5))3+45
2 ∗ f ( 3 , g ( 4 , 5 ) ) → 2 ∗ 3 + 4 ∗ 5 2 * f(3,g(4,5))→2 * 3+4 * 5 2f(3,g(4,5))23+45
2 ∗ 3 + 4 ∗ 5 = 26 2 * 3+4 * 5 = 26 23+45=26

2、写出伪代码,实现进程调度,使所有进程(P)可以顺利执行完毕。
程序中参数如下:
P - 进程的集合;
Mp - 进程p的最大的请求资源;
Cp - 进程p当前被分配的资源;
A - 当前可用的资源。

while(n > 0){       // n表示进程数目
	   int i = 0;          // 当前进程号
	   while(i < n) { 
	   if(Cp + A >= Mp){
            进程执行;
             A += Cp;    //释放资源
             n--;        //进程运行结束,进程集合数目减一
       }
       i++;			//运行下一个进程
	   }
	   若n未减小,则发生死锁;
}

如果涉及到进程调度,参考文献: *** 作系统进程调度模拟算法实现(C语言版)

3、 数字签名技术是将摘要用发送者的私钥加密,与原文一起传送给接收者。接收者只有用发送者的公钥才能解密被加密的摘要,然后用Hash函数对收到的原文产生一个摘要,与解密的摘要对比,如果相同,则说明收到的信息是完整的,在传输过程中没有被修改,否则,就是被修改过,不是原信息。同时,也证明发送者发送了信息,防止了发送者的抵赖。
实现数字签名的主要技术是非对称密钥加密技术。
但是,数字签名并不能保证信息在传输过程中不被截获。
参考链接:数字签名-百度百科

4、

  1. 数组内存空间少比链表少,链表不仅存储数据,还要存储下一个节点的地址信息等。
  2. 数组支持随机访问,链表不具有随机访问的特性,数组访问更快。
  3. 插入和删除是链表优于数组,数组需要移动被删除或者插入位置之后的元素,链表插入删除数据更快。

5、IP地址与子网掩码与运算的结果为该网络的网络号,因为他们在同一个子网,因此网络号也必然相同

6、
SMTP(应用层):简单邮件传输协议,是 email 之间传输时使用的协议,传输到终端的时候会采用 POP3 协议。
TCP\UDP(传输层):前一个面向连接,后一个面向无连接的协议。
DNS(应用层):域名解析,将域名转化为ip地址。
ARP(网络层或者数据链路层):地址解析,将 IP 地址转化为相应的 MAC 物理地址。

7、每一个网卡的 MAC 地址是写死的,全球唯一的一个。

8、在Linux中查看ARP缓存记录的命令是:

另外 Linux 常用的命令:27个常用的 Linux 命令

9、LRU(最近最少使用)该算法实现中最常用的是链表这个数据结构,将即将插入存储块的页面P与存储块中页面比较,如果存储块中已经存在页面P,则将链表中的页面P置于表头,不然缺页次数+1,如果这时链表长度达到目标值(存储块满),则去掉链尾的页面(也是最近最少使用的页面),并将页面P插入链表头。
例如存储块长度为3的时候,页面访问顺序为4, 3, 2, 1, 3, 5, 4, 3, 2, 1, 5

访问链表缺页+
441
3341
22341
11231
3(命中)3120
55311
44531
3(命中)3450
22341
11231
55121

命中:即缓存数据被访问,所以当存储块为3时候,最后统计缺页次数为9次。

10、

  1. *** 作系统的一个重要概念是进程,不同的进程所执行的代码一定也不同(×,多个进程运行的程序可能相同也可能不同)
  2. 为了避免发生进程死锁,各进程应逐个申请资源(×,CPU动态分配给线程资源,由程序调度器决定)
  3. *** 作系统用PCB(进程控制块)管理进程,用户进程可能从PCB中读出与本身运行状态相关的信息(×,用户进程不能读取状态信息,系统进程才可以)
  4. 进程同步是指某些进程之间在逻辑上相互制约的关系(√,异步环境下的一组并发进程因直接制约而互相发送消息、进行互相合作、互相等待,使得各进程按一定的速度执行的过程称为进程间的同步)

进程其他知识点:在引入线程的 *** 作系统中,通常都是把进程作为分配资源的基本单位,而把线程作为独立运行和独立调度的基本单位。
参考文献:进程 (一段程序的执行过程)- 百度百科

11、数据库第三范式:第三范式 (Third Normal Form,3rd NF) 就是指表中的所有数据元素不但要能唯一地被主关键字所标识,而且它们之间还必须相互独立,不存在其他的函数关系(传递依赖关系)。
参考文献:三大范式(小白视角,一看就懂)

12、3DES(或称为Triple DES)是三重数据加密算法(TDEA,Triple Data Encryption Algorithm)块密码的通称。它相当于是对每个数据块应用三次 DES 加密算法。由于计算机运算能力的增强,原版 DES 密码的密钥长度变得容易被暴力破解;3DES 即是设计用来提供一种相对简单的方法,即通过增加 DES 的密钥长度来避免类似的攻击,而不是设计一种全新的块密码算法。 而 DES 是对称加密算法,故而 3DES 也是对称加密算法。

13、以下语句编译不通过:

if (x=y) && (x!=0) x+= y; 		//少了括号
if((x=y)&&(x!=0)) x+= y;		//正确情况

注意:这里和 x = y 还是 x == y 没有关系的,因为赋值语句 x = y 也可以放置在 if 判断语句中(C语言中)。

14、防止数值溢出的元素交换方法:

x = x ^ y;
y = x ^ y;
x = x ^ y;

15、
fopen(“foo.txt”, “r”):以只读方式打开文件,该文件必须存在。
fopen(“foo.txt”, “r+”):以读/写方式打开文件,该文件必须存在。
fopen(“foo.txt”, “w”):打开只写文件,若文件存在则文件长度清为零,即该文件内容会消失;若文件不存在则创建该文件。
fopen(“foo.txt”, “w+”):打开可读/写文件,若文件存在则文件长度清为零,即该文件内容会消失;若文件不存在则创建该文件。
fopen(“foo.txt”, “a”):以附加的方式打开只写文件。若文件不存在,则会创建该文件;如果文件存在,则写入的数据会被加到文件尾后,即文件原先的内容会被保留(EOF 符保留)。
参考文献:fopen-百度百科

16、声明语句为 int a[3][4]; 下列表达式中与数组元素 a[2][1] 等价的是?

*(a[2]+1) 	//可以,这里a[2]表示二维数组的第 3 行一维数组
a[9] 		//错误
*(a[1]+2)	//错误,指向了 a[1][2]
*(*(a+2))+1	//如果改成这样就正确了,*(*(a+2)+1)

c 语言中,数组的默认下标从 0 开始,a[2][1] 也就是数组的第 3 行 第 2 列的元素。
指针参考文献,循序渐进学指针用法:

  1. C 指针
  2. C 指针的算术运算
  3. C语言 使用指针遍历数组 - C语言零基础入门教程
  4. C语言二维数组的四种遍历方式

17、
char a[] =“Hello”;(√)
char a[][]={‘H’,‘e’,‘l’,‘l’,‘o’};(❌,二维数组只有第一维的大小可以省略)
char a[5]= “Hello”;(❌,char 数组默认加一个\0作为结束符,所以这里数组大小需要为 6)
char a[2][5]={ “Hello”,“World”};(❌,原因同上,但是如果第二维只有三个字符是可以放置成功的,参考如下文献)

参考文献:二维字符数组的定义,初始化及引用,C语言二位字符数组详解

18、运算符优先级:
单目运算符:+,-,++,–
算数运算符:+,-,*,/,%
移位运算符:<<,>>
关系运算符:>,<,>=,<=,==,!=
位运算符:&,|,~,^,
逻辑运算符:&&,||
三目运算符:表达式1?表达式2:表达式3;
赋值运算符:=等

口诀:淡云一笔安洛三福,单目>算数运算符>移位>比较>按位>逻辑>三目>赋值

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/717225.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-25
下一篇 2022-04-25

发表评论

登录后才能评论

评论列表(0条)

保存