2018校园迅雷招聘C++笔试A卷

编程入门 行业动态 更新时间:2024-10-23 07:26:50

2018校园<a href=https://www.elefans.com/category/jswz/34/1757699.html style=迅雷招聘C++笔试A卷"/>

2018校园迅雷招聘C++笔试A卷

                       2018校园迅雷招聘C++笔试A卷



对于一个整数N(512 <= N <= 1024),计算2的N次方并在屏幕显示十进制结果。

输入描述:

输入一个整数N(512 <= N <= 1024)

输出描述:

2的N次方的十进制结果

示例1

输入

512

输出

13407807929942597099574024998205846127479365820592393377723561443721764030073546976801874298166903427690031858186486050853753882811946569946433649006084096code:
import java.util.Scanner;
import java.math.BigInteger;
public class Main{public static void main(String[] args) {Scanner in = new Scanner(System.in);BigInteger a = new BigInteger("2");BigInteger b = new BigInteger("2");int n = in.nextInt();for(int i = 0; i < n-1; i++) {a = a.multiply(b);}System.out.println(a.toString());}
}


TCP主动关闭一方进入最后的一个状态是
CLOSE_WAIT
SYN_SENT
TIME_WAIT
LAST_ACK
 

正确答案

C

答案解析

(1)应用层调用close函数发起关闭连接请求

(2)发送FIN到对端,关闭写通道,自己进入FIN_WAIT1状态

(3)等待对端的确认ACK到来,接受到ACK后进入FIN_WAIT2状态;如果在超时时间内没有收到确认ACK直接进入CLOSED状态

(4)如果在FIN_WAIT1状态时收到了对端的FIN则进入CLOSING状态

(5)在FIN_WAIT2接受到了对端FIN后进入TIME_WAIT状态;如果在超时时间内没有收这个FIN则直接进入CLOSED状态

(6)在TIME_WAIT状态等待2个MSL后进入CLOSED状态

关于UDP的说法正确的是


UDP的包大小没有限制
UDP不会进行错误重传
UDP跟TCP一样提供可靠的数据报协议
UDP有简单的流控制
 

正确答案

B

答案解析

TCP:面向连接,提供可靠的服务,有流量控制,拥塞控制,无重复、无丢失、无差错,面向字节流(把应用层传下来的报文看成字节流,把字节流组织成大小不等的数据块),只能是点对点,首部 20 字节,全双工。

UDP:无连接,尽最大努力交付,没有拥塞控制,面向报文(对于应用程序传下来的报文不合并也不拆分,只是添加 UDP 首部),支持一对一、一对多、多对多,首部 8 字节。

参考以下代码,在大端字节机器中x.c的值为

union A {
short c;
char buf[4];
} x = {0x01, 0x02, 0x03, 0x04}

0x102
0x201
0x304
0x403
答案:A

所谓大端就是指高位值在内存中放低位地址,所谓小端是指低位值在内存中放低位地址。

比如0x11223344在大端机上是11223344,在小端机上是44332211。

以下哪个变量是分配在BSS段

char s1[100];
int s2 = 0;
static int s3 = 0;

void main() {
char s4[100];
}


s1
s2
s3
s4
正确答案: A 
 

BSS段:通常是指用来存放程序中未初始化全局变量的一块内存区域;

数据段:通常是指用来存放程序中 已初始化  全局变量 的一块内存区域,static意味着在数据段中存放变量;

代码段:通常是指用来存放 程序执行代码 的一块内存区域;

堆:存放进程运行中被动态分配的内存段,它的大小并不固定,可动态扩张或缩减,这一块在程序运行前就已经确定了;

栈:栈又称堆栈, 存放程序的 局部变量 (不包括static声明的变量)。除此以外,在函数被调用时,栈用来传递参数和返回值。
 

下列关于linux文件系统的说法不正确的有?
 

全部磁盘块由四个部分组成,分别为引导块 、专用块 、 节点表块 和数据存储块。
索引节点包含文件的所有信息,包括磁盘上数据的地址和文件类型。每一个文件都包含一个索引节点。
超级块中包含了关于该硬盘或分区上的文件系统的整体信息,如文件系统的大小等
数据块是真正存储文件内容的位置
正确答案: B
Linux每个文件都被赋予一个唯一的数值,而这个数值被称作为索引节点,索引节点存储在一个称为索引节点表(Node Table)中,该表在磁盘格式化时被分配。每个实际的磁盘或分区都有其自己的索引节点表。一个索引节点包含文件的所有信息,包括磁盘上数据的地址和文件类型;struct T {},sizeof(struct T)的值为4
1
0
编译或运行期错误
正确答案: B 
若结构体为空,其大小为1;若不为空,结构体的存储比较复杂,需要考虑内存存储的字节对齐。以下序列构造的Haffman树带权路径长度为
9,7,3,545
46
47
48答案:C

首先排序:3579; 

然后将最小的两个数组成一个子树(3,5) 

子树的和为子树的根(3,5)8 

将根放到数组里面:879 

重复二步骤,最小的两个组成树(7,8) 

子树的和为根(7,8)15 

最后数组为:9 15 组成树(9,15)24 

最后整个树为(9,(7,(3,5)8)15)24

最将叶子进行权值相加: 3*3+5*3+7*2+9*1=47

32位机器上,以下代码的输出是

char c = -1;
int i0 = c;
int i1 = (unsigned char)c;
printf("%d, %d\n", i0, i1);

255,255
-1,-1
-1,255
255,-1
正确答案: C  
char类型有符号,所以-1可以表示,uchar类型无符号(范围是0-255),-1是1000 0001,转换成补码是1111 1111,uchar无符号位,所以最高位的1也计算到值里,为1+2+4+...+128=255

以下属于传输层协议的是

TCP
UDP
HTTP
ARP
ICMP
正确答案: A B  

AB

答案解析

传输层协议:TCP UDP

应用层协议:HTTP

网络层:ARP ICMP

以下哪些是属于TCP协议的特性

滑动窗口
多播和广播
超时重传
分片传输
正确答案: A C D  
 

超时重传,原理是在发送某一个数据以后就开启一个计时器,在一定时间内如果没有得到发送的数据报的ACK报文,那么就重新发送数据,直到发送成功为止。

滑动窗口作用:1、提供TCP的可靠性;2、提供TCP的流控特性。TCP的滑动窗口的可靠性也是建立在“确认重传”基础上的。

TCP报文段如果很长的话,会在发送时发生分段,在接受时进行重组,同样IP数据报在长度超过一定值时也会发生分片,在接收端再将分片重组。


给定一个正整数n,求出0到n中有几个数满足其二进制表示不包含连续的1。1<=n<=10^9。
样例:
输入:5, 输出:5。
由于0到5的二进制表示分别为: 0; 1; 10; 11; 100; 101。 这六个数中,只有3的二进制表示包含有连续的1,故答案为5。
问题:
若输入为6144,则输出为
980
364
377
610
题解:D
6144=>1100000000000,后面11个0。需要判断小于6144而不重复的1的元素的个数,故把最高位分为三种情况:00,01,10。由此可知00的个数与10的个数一样————转为后面11位不连续出现1的情况,考虑1出现的个数得到结果为:C_11^0+C_11^1+C_10^2+C_9^3+C_8^4+C_7^5+C_6^6=233;而01情况————转为后面10位不连续出现1的情况,考虑1出现的个数得到结果为:C_10^0+C_10^1+C_9^2+C_8^3+C_7^4+C_6^5=144。
最终结果为:233+233+144=610

在32位大端模式处理器上变量b等于?
unsigned int a= 0x1234; 
unsigned char b=*(unsigned char *)&a;

0x00

答案:A
unsigned int 是四个字节

0x1234 才两个字节

因为0x1234=0x00001234

且为大端模式(高字节放在低地址)

所以获得的为0x00

在32位系统中以下函数的返回值
int fun(void)
{
int *p, j, i=10;
p = &j;
*p = i++;
i += sizeof(i) + sizeof(*p) + sizeof(p);
return i;
}

22
23
25
其他结果都不对
答案:C
解析:

*p = i++;所以*p = 10, i = 11;

int型4个字节 所以sizeof(i)和sizeof(*p) 都为4

系统是32位  所以sizeof(p)为32位4个字节;

所以i = i + 4 + 4 + 4 = 23


用x,y表示一个整数范围区间,现在输入一组这样的范围区间(用空格隔开),请输出这些区间的合并。

解析:先排序(重点),先按首排,当首相等,再按尾排,从低到高。
遍历时,两个区间(a,b) 和(c,d)比较,
当他们首相等(a == c)时,保存长尾 (a, d)
else 当  c < b,  判断b和 d的大小,这里涉及到包容和交叉的情况,包容(b > d)直接跳过,  交叉保留长尾(a, d)
 else 当 c > b, 可以保留前面的区间(a,b)了,并赋值a = c , b = d
  else 当 c == b   保留长尾(a,d)
 
code:

import java.util.Scanner;
import java.util.List;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.Collections;
public class Main{public static void main(String[] args) {Scanner in = new Scanner(System.in);String str = in.nextLine();String strs[] = str.split(" ");int len = strs.length;int min = 0,max = 0;List<Node> list = new ArrayList<Node>();for(int i = 0; i < len; i++){String tem[] = strs[i].split(",");list.add(new Node( Integer.parseInt(tem[0]), Integer.parseInt(tem[1])));}Collections.sort(list, new Comparator<Node>(){public int compare(Node o1, Node o2){if(o1.min == o2.min){return o1.max - o2.max;}else {return o1.min - o2.min;}}});int len1 = list.size();StringBuffer sb = new StringBuffer();int a = list.get(0).min;int b = list.get(0).max;for(int i = 1; i < len1; i++) {min = list.get(i).min;max = list.get(i).max;if(min == a) {b = max;}else if(min > b) {sb.append(a + "," + b + " ");a = min;b = max;}else if(min < b) {if(max < b) {continue;}else {b = max;}}else if(min == b) {b = max;}}sb.append(a + "," + b);System.out.println(sb.toString());}
}
class Node{public Node( Integer min, Integer max){this.min = min;this.max = max;}Integer min;Integer max;
}

 

更多推荐

2018校园迅雷招聘C++笔试A卷

本文发布于:2024-02-17 19:23:28,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1695206.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:迅雷   笔试   校园

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!