Bootstrap

大厂笔试题总结(持续更新中)

目录

一、百度

1、判断当前机器的字节序(两种方法) 

二、字节跳动

三、网易

四、腾讯

五、阿里

六、华为


一、百度

1、判断当前机器的字节序(两种方法) 

大小端介绍

大端字节序:

把数据的低位字节序的内容存放在高地址处,高位字节序的内容存放在低地址处

小端字节序:

把数据的低位字节序的内容存放在低地址处,高位字节序的内容存放在高地址处

Example

int a=0x11223344;

//前面是高位字节序,越往后字节序越低

//地址的存放是由低到高,前面低,后面高

如果是11 22 33 44 这样存放,11是高字节序,存放在低地址处,即为大端字节序

如果是44 33 22 11 这样存放,44是低字节序,存放在低地址处,即为小端字节序

Solution 1

指针法

//判断机器是大端字节序还是小端字节序
#include <stdio.h>

int main()
{
    int a=1;//   1小端是01 00 00 00,大端是00 00 00 01 
    char*p=(char*)&a;//取a的地址应该是int *,所以类型转换
    if(*p==1)
    {
        printf("小端\n");
    } 
     else
    {
         printf("大端\n");
    }
    return 0;
 } 

Solution 2

联合体法

#include <stdio.h>

int check_sys()
{
    union U
    {
        char c;
        int i;
    }u;
    u.i=1;
    return u.c;
    //返回1 就是小端 
    //返回0 就是大端 
}


int main()
{
    int ret=check_sys();
    if(ret==1)
    {
        printf("小端\n");
    }
    if(ret==0)
    {
        printf("大端\n");
    }
    return 0;
 } 

二、字节跳动

三、网易

四、腾讯

五、阿里

六、华为

;