《往年的深信服笔试题齐全》由会员分享,可在线阅读,更多相关《往年的深信服笔试题齐全(8页珍藏版)》请在金锄头文库上搜索。
1、 一,六道选择题 (可以多选) 1 char *p = hello world; p存储在()指向 /堆栈 char p = hello world; p存储在()指向 全局变量 /数据段 static变量 /数据段 分别在哪个地方? 1数据段 2代码段 3堆 4堆栈 (此题可以配合同文件夹下的char.cpp)(二、例子程序 这是一个前辈写的,非常详细 /main.cpp int a = 0; 全局初始化区 char *p1; 全局未初始化区 main() int b; 栈 char s = abc; 栈 char *p2; 栈 char *p3 = 123456; 1234560在常量区,
2、p3在栈上。 static int c =0; 全局(静态)初始化区 p1 = (char *)malloc(10); p2 = (char *)malloc(20); 分配得来得10和20字节的区域就在堆区。 strcpy(p1, 123456); 1234560放在常量区,编译器可能会将它与p3所指向的123456 优化成一个地方。 不知道是那个高人怎么想的和我一样,我估计中间应该有错误)2 % & . & = = 那个优先级别最高. & % = & =34以下哪些通信方式是可靠的通讯方式 1信号2管道3消息4tcp 5udp 6串口I/O 5是(M)?(a+):( a-),此处的M等于
3、我选CA,M=O,B,M=1,C,M!=O,D,M!=16是Unix的启动顺序排序。(6个选项)二1是数制转换151转2进制和九进制。10010111 1772已知0的ASCII码为0x40,那么int 120;在内存中的表示形式是0x_ 78(0的ASCII码为0x40,应该为0x30)31、在linux下,查看目录大小的命令是:du sh dirname2、修改文件属性的命令是:chomd/chgrp 3、切换为其他用户身份的命令是:su4还有一道指针交换数值 int i=0,j=10,int* p=&i, int* q=&j,int fun (*a,*b)int* temp=a;*a*=
4、10;*b*=10;a=b;b=temp;最后问调用fun(&p,q)问i、j、p、q的最终值(具体形式大概如此,但中间指针肯定记的错误)此题主要考察指针指向一个整数,然后利用指针改变变量,最后交换指针 5有道填插入排序的算法。有一个数组a0 到 ai-1为从小到大排序,ai 到acount-1没有排序,请您添加3条语句使它们按照从小到大排序int insert_sort(int a,int count) for(int i=1;i=0&taj) (aj+1=aj;) j-; (aj+1=t;) return 0;三,编程与逻辑题1自己写一个strstr(单链表判断有无环,)char* str
5、str(char* buf, char* sub)char* bp;char* sp;If(!*sub)return buf;while(*buf)bf=buf;sp=sub;do if(!*sp)return buf;while(*bp+=*sp+)buf+=1;return 0;2遍历文本找单词并删掉出现频率最少的单词,fun (char* pText)#include#include/定义av_list、av_start、av_arg等宏 3实现一个与printf功能相似的函数 #include#include#include#include/定义av_list、av_start、av_
6、arg等宏/*此函数的作用:实现一个参数个数可变的函数,此函数的功能与printf类似,但在格式处理上,不如printf丰富无异常,返回一个true,否则返回falseformat字符串的合法情况如下:1.%zyk%zyk%,OUTPUT:%zyk%zyk%2.%dzyk%fzyk%s,OUTPUT:(int)zyk(float)zyk(string)3.zyk,OUTPUT:zyk非法情况如下:1.%zyk%ERROR:不存在%z格式、%后面必须跟一个格式字符*/boolzykPrintf(constchar*format,.)/定义一个可用于指向参数的指针(实为char*),va_list
7、argPtr;/把函数的第一个参数format的地址传给argPtrva_start(argPtr,format);constintsize=strlen(format)+1;char*tmp=newcharsize;memset(tmp,0,size); while(*format!=0)inti;for(i=0;isize&*format!=%&*format!=0;i+)tmpi=*format+;tmpi=0;/在有效的字符串末尾作0值防护printf(%s,tmp);if(*format=0)returntrue;switch(*+format)/按指定类型读取下一个参数,并打印ca
8、sed:printf(%d,va_arg(argPtr,int);break;cases:printf(%s,va_arg(argPtr,char*);break;casec:printf(%c,va_arg(argPtr,char);break;casef:printf(%f,va_arg(argPtr,float);break;/对%的处理case%:printf(%);break;/格式错误default:printf( ErrorOcurr!PleaseChecktheFormat!);returnfalse;+format;deletetmp;returntrue;intmain(i
9、ntargc,char*argv)zykPrintf(%zyk);/errorzykPrintf(zyk%);/errorzykPrintf(%zyk%zyk%);/OUTPUT:%zyk%zyk%zykPrintf(nzykisaprettyboy!Hisageis%dand%s,5,Ilovezyk_!);getch();return0; 文章引用自: 4是一道逻辑题,有的数是2,3,5的倍数,在三位数中出去可整除这三个数的和 ( 5升和3升桶量4升水) 四,改错题三道1tozero算法2比较简单3是高质量里的一道题 五,问答题1VC中有哪些方法避免C编程中的头文件重复包含:#ifndef
10、 !#def !#endif2在C+中extern c的作用(按键转换,比如点击p输出q)作为extern是C/C+语言中表明函数和全局变量作用范围(可见性)的关键字,该关键字告诉编译器,其声明的函数和变量可以在本模块或其它模块中使用。extern C是连接申明(linkage declaration),被extern C修饰的变量和函数是按照C语言方式编译和连接的3编程中异步IO和同步IO有什么区别?说说你可知道的几种IO?4使用异步socket编程,通常因为网络拥塞send不出数据,会获得什么样的错误码(windows下举例),通常如何处理这种情况?(核心太与用户太的区别,x86如何转换。
11、)5将程序移植到不同的32位cpu中,经常出现结构字节对齐和大小端的问题,有哪能些方法避免?(是子网源码的判断,计算,ABCDE网络的区别,DE网络的用途,)6怎样解决在vc中内存泄漏的问题(release版本)(1)放置关键字assert()(2)生成map文件。它并不往exe文件中添加任何东西,仅仅只是把编译连接时的所有函数入口地址记录在后缀为.map文件。程序崩溃的时候,可以得到一个崩溃时的EIP地址,通过地址可以很容易的查到崩溃所在的函数。(在vc setting下有个link按钮选上generate mapfile)(3)Release版本也是可以设置断点的,在希望设置断点处加入_asm int 3(4)熟悉汇编,通过编译时的汇编看出(5)使用第三方调试器。(6)关掉发行版中的一些优化选项,生成调试信息。(是p2p软件在nat用户里实现数据互传的原理开发类笔试全部是C/C+,要求对底层有一定的了解