zoukankan      html  css  js  c++  java
  • H3C笔试题目

    最近这段时间正在找工作,去H3C做了下笔试题,题目出的还不错,比一般公司水平高上一点点,偷偷弄了点回来,分享一下,我把答案和解析全部整理了出来,有需要的可以看看.

     

    1、以下描述正确的有(AD

    A1个字节(byte)由8个比特(bit)组成

    Bsigned char类型的取值范围是-127~128

    C0xFFFFFFFF4字节无符号数中最大的

    Dunsigned char类型的取值范围是0~255

    解析:

    signed char的取值范围是-128~127,为-(2^8)~(2^8-1)

    0xFFFFFFFF是无符号整型的最大值,如果包含浮点数类型,那么他就不是最大的了。

    2、以下代码的运行结果(D

    #define ADD(x, y) (x + y)

    #define SUB(x, y) (x)-(y)

    #define MUL(x, y) (x * y)

     

    Unsigned int uiA

    uiA = MUL(ADD(x, y), SUB(6, 3));

    A、uiA=15 BuiA=33

    CuiA=18 DuiA=63

    解析:预编译后展开的式子:uiA = ((9 + 2) * (6) - (3));

    3、以下代码运行的结果(B

    代码I

    usigned int uiA

    uiA = 0x55 & 0x66) ^ (0x77 | 0x88);

    代码II:

    unsigned int uiB;

    uiB = (0xAA << 3) | (0xBB << 2) | (0xCC << 1) | 0xDD;

    代码I,uiA = 0xAA代码I,uiA = 0xBB

    代码II,uiB=0xFFFFFFFF代码II,uiB=0xAABBCCDD

    4、以下语句中,能够判断uiNum(unsigned int)可以被16整除的有(AC)

    A if(((uiNum / 16) * 16 == uiNum)

    B if((uiNum % 15) == 0)

    C if((uiNum & 0x0F) == 0)

    D if(((uiNum >> 5) << 5) == uiNum)

    解析:B改成if((uiNum%16) == 0

    D改成if(((UiNum >> 4) << 4) == uiNum)

    5、关于以下代码描述正确的有(AB

    代码I:

    const char *pcStr = “abcdefg”;

     

    daimaII:

    void string_sizeof(char szStr1[10])

    {

    char szStr2[10] = “12345”;

    printf(“%u, “, sizeof(szStr1));

    printf(“%u ”, sizeof(szStr2));

    return;

    }

     

    代码III:

    typedef unsigned int *pui_t1;

    #define pui_t2 unsigned int *

    pui_t1 puiA, puiB;

    pui_t2 puiC, puiD;

     

    代码IV:

    unsigned int uiA = 100;

    printf(“%s ”, uiA);

     

    A、代码Iconst修饰符表明pcStr指向的内容不能更改;

    B、代码II,程序运行结果是“4,10”;

    C、代码IIIpuiApuiBpuiCpuiD都是unsigned int *类型的变量;

    D、代码IV,打印unsigned int时不应该使用“%s”,会导致程序访问非法地址。

     

    解析:const char *pcStrchar * const pcStr的区别.

    BszStr1是数组名,相当于通过函数参数的形式传递了一个指针,所以是4;szStr2是局部变量数组,sizeof相当于求数组大小所以是10.

    C中使用define定义的相当于替换所以展开之后unsigned int * puiC, puiD所以很明显puiD不是unsigned int *类型

    D%s需要传递一个地址过来,uiA是个变量值,所以会出错,如果改成&uiA就可以了.

    6、关于结构和联合体的大小,以下描述正确的有(C

    struct A_S

    {

    unsigned short us1;

    unsigned short us2;

    unsigned short us3;

    };

    struct B_S

    {

    unsigned char uc1;

    unsigned int  ui2;

    unsigned short us3;

    };

    union C_U

    {

    unsigned short us1;

    unsigned short us2;

    unsigned short us3;

    };

    union D_U

    {

    unsigned char uc1;

    unsigned int  ui2;

    unsigned short us3;

    };

    A、结构体struct A_S的大小是2

    B、结构体struct B_S的大小是7

    C、联合体union C_U的大小是2

    D、联合体union D_U的大小是7

    解析:结构体的大小在默认情况下需要自然边界对齐。所以A_S大小是6B_S大小12,

    联合体大小是其中类型最大的一个的大小。

    7、关于链表操作以下描述正确的有(ABC

     

    struct SLL

    {

    struct SLL *pstNext; /*下一节点*/

    };

     

    struct DLL

    {

    struct DLL *pstNext; /*下一节点*/

    struct DLL *pstPrev; /*前一节点*/

    };

    A、单链表,以下代码可以删除节点B

    pstA->pstNext = pstA->pstNext->pstNext;

    free(pstA->pstNext);

    B、单链表,以下代码可以删除节点B

    pstA->pstNext = pstB->pstNext;

    free(pstB);

    C、双链表,以下代码可以删除节点B

    pstB->pstPrev->pstNext = pstB->pstNext;

    pstB->pstNext->pstPrev = pstB->pstPrev;

    free(pstB);

    D、双链表,以下代码可以删除节点B

    pstA->pstNext = pstA->pstNext->pstNext;

    pstA->pstNext->pstPrev = pstA;

    free(pstB);

    解析:D改成:

    pstA->pstNext = pstA->pstNext->pstNext;

    pstA->pstNext->pstNext->pstPrev = pstA;

    free(pstB);

    就可以了.

    8、以下代码的运行结果是(B)

    代码I:

    unsigned int uiCount = 0;

    while(uiCount <= 5)

    {

    if (unCount <= 5)

    continue;

    ++uiCount;

    }

    printf(“uiCount=%u ”, uiCount);

     

    代码II:

    unsigned int uiCount = 0;

    do

    {

    uiCount++;

    }while(uiCount >= 5);

    printf(“uiCount=%u ”, uiCount);

     

    代码III:

    unsigned int uiCount = 0;

    switch (unCount)

    {

    case 0:

    uiCount = 5;

    default:

    uiCount = 1;

    }

    printf(“uiCount=%u ”, uiCount);

     

    代码IV:

    unsigned int uiCount = 0;

    for( ; uiCount <= 10; uiCount++)

    if (uiCount == 5)

    breakl

    printf(“uiCount=%u ”, uiCount);

     

    A.代码I, uiCount=5

    B.代码II, uiCount=1

    C.代码III, uiCount=1

    D.代码IV, uiCount=6

    解析:代码I会陷入无限循环,continue会在uiCount<=5时跳过++uiCount,uiCount的值是0,所以没有机会++uiCount

    代码IV,uiCount=5,break之后uiCount++没有机会执行了.

  • 相关阅读:
    hbase 导入导出、hbase shell 基本命令。
    一道java基础面试题
    sqoop2报错
    测试往博客上放音乐
    java 压缩文件
    java 提取目录下所有子目录的文件到指定位置
    3.Git的常用操作
    2.Git客户端安装
    1.Git的由来
    『Spring』IOC创建对象的方式
  • 原文地址:https://www.cnblogs.com/wangluojisuan/p/3443298.html
Copyright © 2011-2022 走看看