深信服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\n", *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了,問題應該不大 _


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM