• 深信服2021秋招笔试题


    深信服的笔试跟大厂不太一样,除了编程题,还有选择题、填空题,额外考察离散数学、C语言、数据结构、算法等知识点。编程题比较简单(虽然调了很久...
     

    选择题

    • 双向链表删除节点操作
    • lowbit()代码补全:x&(-x)
      用来判断2次幂的整数:x&(-x) == x
    • 复杂度分析
    for (int i=0;i<n;i++) {
          int j=1;
          while (j<i) {
                int k = j+3;
                j += k;
          }
    }
    
    • 命题逻辑,A、B、C三个人的话只有一个是真话,简单推导一下
    • 小学奥数称球问题

    填空题

    • 根据二叉树先序、中序序列,求后序
    • C语言union、struct字节对齐 (答错了,回头再看看)
    union DATE{
        long l;
        char c[10];
        int i;
    };
    
    struct st {
        int i;
        union DATE date;
        double d;
    };
    
    // 求 sizeof(struct st) + sizeof(union DATE)
    
    • 考察C语言传值与传指针
      写出代码运行结果
    • 考察C语言数组、数组指针
      array表示数组的首地址,与&array指向同样内存地址
      前者加一移动元素地址大小,后者则是移动整个数组内存大小,有点类似多维指针
      例如:
      char ch[3][16]; char (*p)[16] =ch; p++; //p++后,p指向ch[1][0];

    p++跳转的单位是其指向的数据类型,如果指针指向一般数据类型,则++跳转到下一地址;如果指针指向多维数组的一行,++则跳转到下一行

    int array[5] = {1, 2, 3, 4, 5};
    int *p = (int *)(array + 1);
    int *q = (int *)(array + 1);
    int *r = (int *)(&array + 1);
    printf("%d %d %d
    ", *p, *(q+1), *(r-1));
    
    // 输出:2 3 5
    
    • 剩下忘了

    编程题

    • 对数组元素操作,该元素不变,其他元素+1,问最少进行多少次操作后,所有元素相同
      思路:相当于对操作的元素减1,全部都减到跟最小元素相同即可
    • 替换数字序列中的数字,题目没说明是(0~9)
      原始序列s (1<=len(s)<=1000000)
      n次操作a b,把数字a替换为b (1<=n<=1000000)
      思路:弄清楚0~9分别最后被替换成哪些数字即可

    编程题都A了,问题应该不大 _

  • 相关阅读:
    distributed caching for .net applications
    Linux_18/ mysql
    找到一本不错的Linux电子书,附《Linux就该这么学》章节目录。
    LinuxProbe/ 疑问ABC
    Linux_15/ autofs, DNS
    Linux_14/ SAMBA, NFS
    Linux_13/ 虚拟网站主机功能,Vsftpd
    Linux_12/ Apache, SELinux
    Linux_11/ firewalld-config, SSH, bounding
    Linux_10/ iptables & firewalld
  • 原文地址:https://www.cnblogs.com/izcat/p/13562709.html
Copyright © 2020-2023  润新知