zoukankan      html  css  js  c++  java
  • 深信服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了,问题应该不大 _

  • 相关阅读:
    收集邮票
    CF235B Let's Play Osu!
    [SHOI2002]百事世界杯之旅
    路径统计
    fastText 训练和使用
    由最多N个给定数字集组成的数字 Numbers At Most N Given Digit Set
    动态规划-划分数组的最大和 Split Array Largest Sum
    子序列宽度求和 Sum of Subsequence Widths
    Contest 158
    Bert
  • 原文地址:https://www.cnblogs.com/izcat/p/13562709.html
Copyright © 2011-2022 走看看