《2023年深信服科技校园招聘笔试题.doc》由会员分享,可在线阅读,更多相关《2023年深信服科技校园招聘笔试题.doc(14页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、深信服科技2023校园招聘笔试题一、 选择题(单选多选都有,每题2分,时间:120分钟)1. 正则表达式 (a | b) + 0 - 9*c 可匹配下列哪些字符串?( )A. abacB. 90cC. aba10cD. ac2. 已知a, b 都是double类型,下列哪些判断a, b相等的方法是对的的?( )A. a = bB. fabs(a-b) DBL_EPSILONC. fabs(a-b) = FLT_EPSILOND. fabs(a-b) = DBL_EPSILONE. fabs(a-b) pnext;elsephead = plast = prhs;prhs = prhs-pnex
2、t;while(_)if(plhs-val val)plast-pnext = plhs;plast = plhs;plhs = plhs-pnext;elseplast-pnext = prhs;plast = prhs;prhs = prhs-pnext;plast-pnext = _;return _;3. 一个正整数n, 可以分解为多个小于等于n的正整数的和,表达式右部的各个正整数规定都是2的幂,例如给定正整数4、7,它们可以分解得到如下表达式:4 = 1+1+1+17 = 1+1+1+1+1+1+14 = 1+1+27 = 1+1+1+1+1+24 = 2+27 = 1+1+1+2+
3、24 = 47 = 1+1+1+47 = 1+2+2+27 = 1+2+4因此,正整数4、7可以得到的表达式个数分别是4个和6个,下列程序可以计算给定正整数n(0 n 10000) 的和式个数,请补充其中空缺。_int64 calc(int n)int i;int size = _;_int64* w = (_int64*)malloc(size);if(!w)abort():_int64 ret = 0;_;_;for(i=3; i=n; i+)if(i%2)wi = _;elsewi = _;ret = wn;free(w);return ret;四、 问答题(每题5分,共25分)1. 下
4、列代码盼望输出结果是1111,请找出fun1.fun4中存在的问题,并简朴说明因素:1) int* fun1(int a) 问题1:返回局部变量的地址 问题2 第二次调用时将覆盖第一次的结果所以等到的是02) int ret = a;3) Return &ret;4) 5) int* fun2(int a)6) int* p = (int*)malloc(sizeof(int); 可以得到1 但是没有释放在堆中分派的内存7) *p = a;8) return p;9) 10) int* fun3(int a) 等到的是0 由于静态局部变量只在第一次调用时分派空间初始化一 次,以后调用孔用此空间
5、11) static int ret; static int a=5;这个是初始化 a=6这个是赋值12) ret = a;13) return &ret;14) 15) int* fun4(int a)16) return &a;17) 18) int main()19) 20) printf(“%d”, *fun1(2)-*fun1(1);21) printf(“%d”, *fun2(2)-*fun2(1);22) printf(“%d”, *fun3(2)-*fun3(1);23) printf(“%d”, *fun4(2)-*fun4(1);24) return 0;25) 2. 怎么
6、查找产生内存泄漏的代码位置,请至少写出三种不同类型的方法:3. C语言中的main函数的返回值有什么作用?如何通过C代码取得该返回值?main 函数的返回值类型必须是 int ,这样返回值才干传递给操作系统。假如 main 函数的最后没有写 return 语句的话,C99 规定编译器要自动在生成的目的文献中(如 exe 文献)加入 return 0,表达程序正常退出。但是,我还是建议你最佳在 main 函数的最后加上 return 语句,虽然没有这个必要,但这是一个好的习惯。注意,vc6不会在生成的目的文献中加入 return 0 ,大约是由于 vc6 是 98 年的产品,所以才不支持这个特性
7、。现在明白我为什么建议你最佳加上int main()返回整数( 通常和return 0)连用,返回0,告诉系统程序正常终止,返回非零值告诉系统程序异常关闭.打开附件里的“命令提醒符”,在命令行里运营刚才编译好的可执行文献,然后输入“echo%ERRORLEVEL%”,回车,就可以看到程序的返回值为0。假设刚才编译好的文献是a.exe,假如输入“a & dir”,则会列出当前目录下的文献夹和文献。但是假如改成“return -1”,或者别的非0值,重新编译后输入“a & dir”,则dir不会执行。由于&的含义是:假如&前面的程序正常退出,则继续执行&后面的程序,否则不执行。也就是说,运用程序的
8、返回值,我们可以控制要不要执行下一个程序。这就是int main的好处。假如你有爱好,也可以把main函数的返回值类型改成非int类型(如float),重新编译后执行“a & dir”,看看会出现什么情况,想想为什么会出现那样的情况。顺便提一下,假如输入a | dir的话,则表达假如a异常退出,则执行dir4. 汉诺塔问题:有A、B、C三个台子,每个台子上面可放若干个盘子,规定每个盘子下面的盘子都比自己大。现在要从A台移10个盘子到B台,每次只能移动一个盘子,可以借助C台,问:一共要移动几次盘子,请写出计算过程。5. 近来有人声称发明了一类神奇的直角三角形,其每一条边的长度都是互不相等的Fib
9、onacci数, 聪明的你能找到这样的三角形吗?假如能,请写出符合条件的三个数值,假如不能,请写出分析过程,Fibonacci数:满足:f(1) = 1, f(2) = 1, f(n) = f(n-1) + f(n-2)。五、 编程题(20分)1. 编写函数align_n, 将size的低n位(即:0到n-1位)清零,假如size的低n位不为函数原型:unsigned int align_n(unsigned int size, int n)2. 计算a的n次方是许多加密算法的基本操作, 蛮力计算方法的复杂度是O(n),请设计一个时间复杂度小于O(n)的算法,(假设计算结果可以使用long型存储)。(6分)3. 不调用库函数实现split_ext,该函数作用是从WINDOWS格式途径中提取文献的后缀名,函数原型:char* split_ext(const char* pszPath, char* ext)需要对的解决以下格式途径:C:Dlan Findme clientxxxxC:Dlan Findme clienthello.jpg.docC:Dlan Findme clienttest.testhelloC:Dlan Findme clienttest.testhello.c
限制150内