三七互娱笔试 逗号表达式

今晚博主做了三七互娱秋招提前批的笔试题目,参加的是web后端工程师方向的笔试
笔试分为30个选择以及两个简答,即编程题,选择题涵盖的点挺多的,包括数据库,C语言,概率论,Linux,计算机的基础知识,计算机网络等。
其中有几个题,我觉得有点意思:

int func(int x, int y){
    return x + y;
}
int main()
{
    // 原题目里面是用abcde五个字母表示,并赋值,这里为了方便查看,我直接把数值代进去
    cout << func((3,5,4),(4,5)) << endl;
    system("pause");
    return 0;
}

这个题的一个考点是C语言里面的一个逗号表达式:

  • 逗号运算符,C语言提供一种特殊的运算符,优先级别最低,它将两个及其以上的式子联接起来,从左往右逐个计算表达式,整个表达式的值为最后一个表达式的值。
  • 因此,这里最后一个表达式,值为9,所以这个函数的输出值为9

还有一个题,考到了冯诺依曼体系,问下面哪一个不属于冯诺依曼体系,考到这题有点懵逼,然后结束后,查了一下:

  • 冯·诺依曼提出的计算机体系结构,计算机由控制器运算器存储器输入设备输出设备五部分组成 奠定了现代计算机的结构理念
  • 而选项中有一个Cache,高速缓存器,因此这题应该选择这个(其他选项记不住了)

还有选择题考到了加密算法的选择,选择哪一个不可逆。(这块博主不太懂)

还有一个二叉树的题目:
若二叉树采用二叉链表存储结构,要交换所有的左、右分支,可以利用__遍历
这里,我个人理解交换左、右结点,就是得到二叉树的镜像,而得到二叉树镜像的过程:先序遍历这棵树的所有节点,如果遍历到的节点有子节点的话,就交换它的两个子节点,当交换完所有非叶子节点的子节点之后,就得到了树的镜像。因此个人认为这里是先序遍历。

对于编程题,一个是N×2的格子用1×2的小木块来放的问题,这个算法题时常会做到,比较容易

而第二个编程题,是判断一个数是否为三七数,题目定义了如果一个数的因子只有3或7就为三七数,如7,21,9等,而6就不是,1定义为三七数,求一个判断函数进行判断。
因为没有提供编译器,只有txt文本那种,博主不能确定自己的方法是否正确

public boolean judgeThreeSeven(int n){  
    if (n == 1) {
        return true;
    } 
    if (n % 2 == 0 || n < 0) {
        return false;
    }
    while (n % 3 == 0) {
        n /= 3;
    }
    while (n % 7 == 0) {
        n /= 7;
    }
    if (n == 1) {
        return true;
    } else {
        return false;
    }
}

但这个函数有个很大的问题就是如果数字过大,判断速度会很慢,我上网找了一下,但是没有能找到很棒的解法,希望有朋友能想到好的办法,然后留言告诉博主~o~大家一起学习学习~o~

猜你喜欢

转载自blog.csdn.net/applying/article/details/80587129