參加了深信服2018屆實習生的筆試,面試,順利拿到offer,下面記錄一下自己在這次筆試和面試的一下問題,題目很基礎,但是是多選題,非常容易出錯,及其考驗基本功。
1下面**能輸出hell的是:
a.char buf[4]="hell";
b.char buf="hell";
c.char buf[8]=0;memcpy(buf,"hello",strlen("hell"));
d.char buf[4];strcpy(buf,"hell");
//答案bc,因為ad的記憶體分配不過,出現錯誤
2.簡單略。
3 .下面**的執行結果:
這裡注意乙個巨集定義的函式功能,他傳進去的arr是陣列的指標,因此此題有解,而不是執行錯誤,本題答案為2。
#include
using
namespace
std;
#define add(arr,cnt) \
do \
}while(0) //只會執行一次迴圈
int main();
//cout << arr[1][1] << arr[1][0] << endl;
int i, ret = 0;
for (i = 0; i < 2; i++)
add(arr[i], 2);
printf("%d", ret);
}
4.下**執行結果
因此錯誤
1.struct t = ;printf("%d", t.a/t.b);
//a為初始化,錯誤
2.void func()
//靜態區域性變化自動初始化為0,
3.void func()
//全域性變數初始化為0
4.int a;
void func()
5.下面**輸出結果
#include
using
namespace
std;
int main()
解析:i1為負數,i2為正數,c中的右移為算數右移,因此i1應為oxf80000,i2為0x78000000。
6.過於簡單略
7.下面**輸出結果是:
#include
using
namespace
std;
int main()
解析:有符號的char型別十六進製制0xff,轉成int要進行符號擴充套件成0xffffffff,因此為-1。宣告成無符號-1,0xff,轉成255,轉成int後為255,i3=4,很簡單。
8.簡單略。
9.下面**輸出結果是:
#include
using namespace std;
int main();
int*p = a[1];
//cout
<< *(p++) << endl; //
3 //cout << *p++ << endl; //
3int(*q)[2] = &a[1];
printf("%d,%d,%d", *++p, q[0][0], q[1][2]);
}
解析:依次輸出4,3,7,int(*q)[2] = &a[1];
比較疑惑q[1][2]=7,本來以為會出錯的,這裡注意q是乙個陣列指標。
11.32位x86,下面輸出結果為:
#include
using
namespace
std;
int main()
分別輸出為4,3,6。
注意什麼時候陣列會退化成指標,比如如果將陣列作為形參傳入乙個函式是,其將退化成指標。
12.下面**輸出結果:
#include
using
namespace
std;
int get(int val)
int main()
解析:*1. 注意到宣告的型別為static,因此編譯器會自動的初始化s1=0,2. s1的值只宣告一次,一旦被修改其不會重新賦值為0,因此本題一次輸出:1,3,3
*。
13. 在32位x86平台,下面**輸出結果:
#include
using
namespace
std;
struct a = ;
int main()
解析:這裡a是全域性的變數,因此a.val1=1,a.val2=0,而p指向的是a.val1,因此分別輸出2,0
.
14:32位x86,4位元組對齊,下面**的輸出結果為:
#include
#pragma pack(4)
using
namespace
std;
union uni s1;
structs2;
};int main()
解析:首先要明白的是共用體的特性,這裡sizeof(u)=8
,指標p指向的是共用體的初始位址,這個位址可以使s1.n3或者s2.n4,因此如果改變了p所指向位址的值,那麼將會同時改變,他們兩個的值。
因此本題,輸出的結果為:4,4,3
15. 下面哪些演算法不能保證得到最優解(當存在解的時候):
a.digikstra演算法此題,眾所周知貪婪不一定得到最優解的,經查閱資料認為,遺傳演算法也不一定能得到最優解,因此,我個人認為此題應為cd(如有錯誤,歡迎指正).b.floyd演算法
c.貪婪演算法
d.遺傳演算法
16. 有一顆二叉樹,其前序遍歷為abcdefg,可能的中序遍歷有:
a. abcdefg解析:此題不難,需要注意的是兩種遍歷之間的關係,此題選擇abdb. gfedcba
c. gabcdef
d. cdefbag
深信服實習生筆試題 20190315
好久沒寫程式設計題了,手生的厲害,記錄一下。首先做的第二題,比較簡單,ac。題目要求 比較簡單,用結構體記錄前後數字區間,按照start排序,當start相同時,按照end排序。然後迴圈合併即可。測試用例 438 3746 7953 8374 6791000 110040 13710 1189 vi...
深信服2008校園招聘筆試題
1 變數和值的儲存位置 堆 棧 段 資料段等 2 sizeof struct d sizeof d 為什麼在不同的平台上得到的值不一樣?3 找規律 21 2 1 1 1 2 3 1 1 2 1 3 1 1 2 問下一行應該填什麼?為什麼?4 linux redhat 的啟動順序?5 c 中虛函式如何...
記深信服2018秋季校園招聘 技術服務工程師
筆者本科就讀於山東某一本院校,考研期間閒來無事,在2018年9月23日 24兩天參加並通過了深信服的校園招聘,所投崗位是技術服務工程師。因為之前參加了深信服的比賽拿了綠卡,所以免除了筆試環節。不過聽說深信服的筆試題難度不小,但是刷人不多,基本都可以過。9.23日上午群面,9.30的場次一共十個人,分...