360 2015测试笔试题总结

为3/7日360笔试做准备,意外发现没有编程题
1.下面代码会输出什么

int main(int argc,char**argv){
    int a[4]={1,2,3,4};
    int*ptr=(int*)(&a+1);
    printf(%d”,*(ptr-1));
}

=> 4
解释:a的类型是int*, &a的类型是int**,&a+1指向了下一个存储单元(4的下一个位置),所以*(ptr - 1)为4
2.假设寄存器为8位,用补码形式存储机器数,包括一位符号位,那么十进制数-25在寄存器表示为
=> E7H
解释:正数的原码,反码和补码相同,负数的补码符号为是1,其他位取反,最后加1。-25的原码为1001 0011 。补码为1110 1101。最后的H代表16进制
3.智力题 4 2 12 28 80
=> 216
解释:12 = (4 + 2)× 2
28 = (2 + 12 )× 2…
4.在因特网中,下列哪个不是IP层所解决的问题
解释:IP层是网络层啊。。。有点懵了,网络层负责流量控制路径选择,寻址,分段和重新组装,流量控制是传输层的
5.下列关于C/C++的宏定义的说法正确

  • 宏的嵌套定义过多会影响程序的可读性,而且很容易出错
  • 相对于函数调用,宏定义可以提高程序的运行效率
  • 宏定义不检查参数正确性,这样会有安全隐患
    6.哪种介质访问机制不能完全避免冲突
    => CSMA/CD
    解释:局域网中目前采取两种介质访问控制方法。
  • 争用型介质访问控制(随机型):CSMA/CD 可以发现冲突,在一定时间后继续检测冲突
  • 确定型介质访问控制(有序型):token
    7.请问下面的程序最后会产生多少个进程:
#include<stdio.h>
#include<unistd.h>
Int main( )
{
    int i;
    for(i = 0; i<5;i++){
        int pid = fork();
        if(pid == 0){
            //do something
        } else {
            //do something
        }
    }
// do somthing,sleep
return 0;
}

=>32
解释:i=0时产生两个进程
i = 1时两个进程又分别产生两个进程…
8.哪种C/C++ 分配内存的方法会将分配的空间初始化为0
=>calloc()
解释

  • void* malloc(unsigned int size)
    在内存的动态分配区中分配一个长度为size的连续空间,如果分配成功则返回首地址,失败为null。内存 不会初始化
  • void *calloc(unsigned int num, unsigned int size)
    分配num×size的连续空间,自动初始化为0
  • void *realloc(void *ptr, unsigned int size)
    动态分配一个长度为size的内存空间,并把内存空间的首地址赋给ptr。不会初始化
  • new
    自动计算分配的空间,分配时调用类的初始化函数完成初始化。
    9.虚拟内存大小不受物理内存大小的限制
    10.深拷贝会拷贝动态分配的成员对象
    类的静态成员是所有类的实例共有的,存储在全局(静态)区,只此一份,不管继承、实例化还是拷贝都是一份。
    11.HTTP协议中,如果要告知所请求的网页已经永久跳转到了另一个地址,应该返回哪个状态码:
    =>301
    解释
  • 1×× 临时相应
  • 2×× 成功
  • 3×× 已重定向
    • 301 永久重定向
    • 302 临时重定向
  • 4×× 请求错误
    • 404 找不到网页
    • 403 已禁止
    • 401 未授权
    • 400 请求失败,服务器不理解请求语法
      12.在Linux 系统中,在运行一个程序时,程序中未初始化的全局变量会被加载到以下哪个内存段中?
      =>BSS
      解释
  • BSS(block started by symbol):用来存放程序中未初始化的全局变量和静态变量。可读写,在程序执行前自动清0.
  • 数据段:存放程序中已初始化的全局变量。静态内存分配。
  • 代码段:存放程序执行代码。程序运行前确定,只读。
  • 堆:存放进程运行中被动态分配的内存段,大小不固定。malloc/free
  • 栈:存放程序临时创建的局部变量
    13.32位的机器上,如果要用位图来保存65536个不重复的无符号整型值,最小需要为位图分配多大的内存
    =>8 K byte
    解释: 1 byte = 23 bit
    (216 / 23) byte = 8 K byte
    14.TCP三次握手
  • 第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;
  • 第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
  • 第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。

猜你喜欢

转载自blog.csdn.net/qq_40769893/article/details/88094645
360
今日推荐