
深信服笔试题.doc
9页深信服笔试题(转载) 1. 匹配“[10]:dddddd“和“[9]:abcdegf“但不匹配“[a]:xfdf“的正则表达式 2. int a[5]={1,2,3,4,5};printf(“%d\n“, *((int*)(输出是什么答:4. 分析:(int*)(if(n>1)+(aa=((aa=((aa=((aa=((aif(a==1) return true;else return false;} 简答题: 1. 哪些方法可以避免或减少锁的使用? 2. release 版本的可执行程序为什么非常大? 3. 使用 C++赋值运算符应注意什么地方? 4. strcpy()为什么会造成缓冲区溢出?可用哪个函数替代? 5. 阻塞模式的 recv 在没受到数据的情况下如何返回?(不能将 socket 修改为非阻塞) 8. 有红、绿、蓝三色球分别 3,2,1 个取任意两个不同颜色的球都会使它们变成第三种颜 色的两个球问最少取多少次,可使这些球都变成同一种颜色?答:无论多少次,都不可以使这些球变成同一种颜色,分析:一、对于(R,R,R,G,G,B)即(3,2,1) ,有:i. (R,G) - (B,B,B,R,R,G)即(3,2,1)ii. (R,B) - (G,G,G,G,R,R)即(4,2)iii. (G,B) - (R,R,R,R,R,G)即(5,1)二、对于(G,G,G,G,R,R)即(4,2),有 :i. (R,G) - (G,G,G,B,B,R)即(3,2,1)三、对于(R,R,R,R,R,G)即(5,1)有 :i. (R,G) - (R,R,R,R,B,B)即(4,2)因此,只有三种状态(3,2,1), (4,2)和(5,1),不可能出现(6,0)这种情况。
9. 哪些方法可让一个进程仅有一个实例运行? 10. exit()和_exit() 的区别 11. 红黑树比 AVL 树的优势在哪? 12. 软件开发过程包含哪些阶段?各阶段质量保证措施是什么?深信服深信服 0808 年笔试题年笔试题填空选择类21211123112132112311322 或 1113122112 下一行是什么?有什么规律? ///已解决意思是上面一行有 1 个 1,1 个 3,1 个 2,2 个 1,1 个 2,即 132112(M)?(a++):( a–),A,M==O,B,M==1,C,M!=O,D,M!=1(条件表达式) ? (条件为真时的表达式)条件为假时的表达式) ///已解决4 以下哪些通信方式是可靠的通讯方式1 信号 2 管道 3 消息 4tcp 5udp 6 串口 I/O可靠:信号 管道 tcp可以在不同主机之间的:Unix 的启动顺序排序A) Rc.X (B) Rc.sysinit (C) login (D) initDBAC进程的几个基本状态:就绪、执行、阻塞程序:现有 1000 个球,10 个盒子,问各个盒子内应该分别放入多少个球,才能达到需要 1 至 1000之间任何数量的球,你都可以用若干盒子组合出来(用 C/C++编写程序)1、2、4、8、16、32、64、128、256、489用一个程序示意常见的错误能够导致栈破坏,如何检查?#include “iostream.h”#include “string.h”void main(){char str[5];cout>str;while(strlen(str)>5){cout>str;}cout0;i–){for(int j=0;j{if(A==A[j]){flag=1;break;}}if(flag)break;}if(!flag)//比较是否在对角线上for( i=7;i>0;i–){for(int j=0;j{t=A;tt=A[j];if(tt>t){tt=9-tt;t=9-t;}if(t-i==tt-j){flag=1;break;}}if(flag) break;}if(!flag){//coutpNext!=NULL){p1=p1->pNext;i++;}while(p2->pNext!=NULL){p2=p2->pNext;j++;}if(p1==p2)return NULL;else{for(int k=0;k{if(i>j)p1=p1->pNext;elsep2=p2->pNext;}while(p1!=p2){p1=p1->pNext;p2=p2->pNext;}return p1;}}用 C/C++编程,从 1 到 100 中取出 10 个不同的数,要求打印出所有可能的组合;#includeint source[100];int dest[10]={0};int index_source=0;int index_dest=0;int k=10;int i=0;int j=0;void composition(int source[], int index_source, int dest[], int index_dest, int k){if(100-index_source==k){for(i=0; i{cout<<<” “;}for(i=index_source; i<100; i++){cout<<<” “;}cout 怎么避免头文件重复包含#ifndef H_HEADFILENAME#define H_HEADFILENAME文件内容….#endif拷贝构造函数和赋值号的异同同:都可以对对象的成员进行赋值异:拷贝构造函数首先是一个构造函数,它调用的时候产生一个对象,是通过参数传进来的那个对象来初始化,产生的对象赋值是把一个对象赋值给一个原有的对象,而且还要检查一下两个对象是不是同一个对象,如果是的话就不做任何操作哈希表和平衡二叉树的适用场合哈希表:哈希表查找速度比较快,但是要耗比较多的内存所以比较适用于对查找速度要求比较高、且内存空间足够的时候平衡二叉树:如果想在以后用二分法查找的时候查找速度比较快的话用建立平衡二叉树的方法()recv 函数如何在阻塞模式下没有收到数据就返回检查 window (release)下的内存泄漏1、 放置关键字 assert()2、 生成 map 文件它并不往可执行文件 exe 中添加任何东西,只是在编译的时候将各个函数入口地址记录在后缀为.map 的文件中,程序崩溃的时候可以得到一个 EIP 地址,通过地址知道崩溃所在函数3、 可以设置断点,在希望设置断点的地方加入 _ASM int 34、 可以通过编译时的汇编程序看出5、 采用第三方工具在 C++中 extern c 的作用1、 extern 是 C/C++语言中表明函数和全局变量作用范围(可见性)的关键字,该关键字告诉编译器,其声明的函数和变量可以在本模块或其它模块中使用2、 被 extern “C”修饰的变量和函数是按照 C 语言方式编译和连接的;临界区(Critical Section)、互斥量(Mutex)、信号量(Semaphore)、事件(Event)的区别1、临界区:通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问。 在任意时刻只允许一个线程对共享资源进行访问,如果有多个线程试图访问公共资源,那么在有一个线程进入后,其他试图访问公共资源的线程将被挂起,并一直等到进入临界区的线程离开,临界区在被释放后,其他线程才可以抢占2、互斥量:采用互斥对象机制 只有拥有互斥对象的线程才有访问公共资源的权限,因为互斥对象只有一个,所以能保证公共资源不会同时被多个线程访问互斥不仅能实现同一应用程序的公共资源安全共享,还能实现不同应用程序的公共资源安全共享3、信号量:它允许多个线程在同一时刻访问同一资源,但是需要限制在同一时刻访问此资源的最大线程数目4、事 件: 通过通知操作的方式来保持线程的同步,还可以方便实现对多个线程的优先级比较的操作Main 函数中两个参数的作用第一个形参 argc 是一个整型变量,第二个形参 argv 是一个指针数组,其元素指向字符型数据用带参数的 main 函数可以直接从命令行得到参数值(这些值是字符串),在程序运行时,可以根据输入的命令行中的不同情况进行相应的处理利用 main 函数中的参数可以使程序从系统得到所需的数据,增加了处理问题的灵活性。












