字节跳动2017秋招

1


a+b=0xFFFFFFFFFFFFFFFF,十六进制的F对应十进制的15,再转换成二进制则为1111。

所以a+b得1111 1111 1111 1111,二进制的首尾为符号位,1位负数,0则为正数,这里为1所以a+b的结果是负数。

负数在内存中存储以补码的形式,所以求原码的步骤为:

1.补码-1得反码(变为1111 1111 1111 1110)

2.反码按位取反得原码(1000 0000 0000 0001)

3.转换成二进制结果为-1

2



第二次握手:Server收到Client的SYN=1之后,知道客户端请求建立连接,将自己的SYN置1,ACK(确认字符Acknowledge Character)置1,产生一个acknowledge number=sequence number+1,并随机产生一个自己的初始序列号,发送给客户端;进入SYN_RCVD状态;

3


在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态 存储区和常量存储区。       

栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量 的存储区。里面的变量通常是局部变量、函数参数等。      

堆,就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应 用程序去控制,一般一个new就要对应一个delete。如果程序员没有释放掉, 那么在程序结束后,操作系统会自动回收。

4

8086处理器(CPU)内的寄存器都是16位的,地址线上的地址由CPU提供。CPU用两个16位的值合成一个20位的值:将一个16位的值乘以16(相当于这个16位的值保存在20位寄存器的低16位中,然后将低16位往高位移动了4位)再加上另一个16位的值。将这个由2个16位合成的值提供给20根地址线作为访问内存的地址值。被乘以16的那个值被称为段基址,没有被乘以16的那个值被称为偏移地址。

你可能感兴趣的:(字节跳动2017秋招)