下载  >  考试认证  >  其它  > 深信服笔试试题大全

深信服笔试试题大全 评分

深信服历年笔试试题!想应聘深信服的同学建议看看,深信服笔试题有一定难度,如果平时学习成绩不太好的同学得多下功夫!
else return false 9能识别正则表达式的命令有: grep egrep 10.VC中有哪些方法避免C编译头文件重复。 #ifndef #define #endif #pragma once 1 L extern"C"的用法。 用于提供C接口,如使用C命名方式等 作为 extern是C/C+语言中表明函数和全局变量作用范围(可见性)的关键字,该关键字告诉编译器,其声明的函数 和变量可以在本模块或其它模块中使用。 extern"C"是连接申明( linkage declaration),被 extern"C"修饰的变量和函数是按照C语言方式编译和连接的 12.异步 socket编程中,send不出数据的错误码是什么,(举Liux或 Windows为例),你是怎么处理的? 非阻塞 SOCKET,SEND不岀数据的原因,TCP下连接断开了和该 SOCKET处在阻塞状态(也貮是说在发送数据中)。 UPD发不出可能是 SOCKET处于阻塞状态。 处理的办法就是记录下该 SOCKET的状态,当状态为阻塞的时间,放入缓冲,当该 SOCKET再次可写时,发送 13.函数前的 static和 volatile变量中关键字的作用 (I)auto 这个这个关键宇用于声明变量的生存期为自动,即将不在任何类、结构、枚举、联合和函数中定义的变量视为全 局变量,而在函数中定义的变量视为局部变量。这个关键字不怎么多写,因为所有的变量默认就是auto的 (2)register 这个关键字命令编译器尽可能的将变量存在CPU内部寄存器中而不是通过内存寻址访问以提高效率 (3)static 常见的两种用途 1>统计函数被调用的次数; 2>减少局部数组建立和赋值的开销变量的建立和赋值是需要一定的处理器开销的,特别是数组等含有较多元 素的存储类型。在一些含有较多的变量并且被经常调用的函数中,可以将一些数组声明为 static类型,以减少建立或者 初始化这些变量的开销. 详细说明: 1>、变量会被放在程序的全局存储区中,这样可以在下一次调用的时候还可以保持原来的赋值。这一点是它 与堆栈变量和堆变量的区别 2>、变量用stic眚知编译器,自己仅仅在变量的作用范围内可见。这一点是它与全局变量的区别。 3>当 static用来修饰全局变量时,它就改变了全局变量的作用域,使其不能被别的程序 exteri,限制在了当前 文件里,但是没有改变其存放位置,还是在全局静态储存区。 (4)const 被coηst修饰的东西都受到强制保护,可以预防意外的变动,能提髙程序的健壮性。它可以修饰函数的参数、返冋值, 甚至函数的定义体。 作用 1>修饰输入参数 a.对于非内部数据类型的输入参数,应该将“值传递”的方式改为“ const引用传递”,目的是提高效率。例 如将 void Func(Aa)改为 void func( const A&a b对于内部数据类型的输入参数,不要将“值传递”的方式改为“ const引用传递”。否则既达不到提高效率 的目的,又降低了函数的可理解性。例如 void Func(int x)不应该改为 void func( const int&x)。 2>用 const修饰函数的返回值 a.如果给以“指针传递”方式的函数返回值加 const修饰,那么函数返回值(即指针)的内容不能被修改, 该返回值只能被赋给加 const修饰的冋类型指针。 如对于: const char i GetString(void) 如下语句将出现编译错误: char str= Getstringo //cannot convert from const char*to ' char * 正确的用法是: const char >str= GietStringo b如果函数返回值釆用“值传递方式”,由于函数会把返回值复制到外部临时的存储单元中,加 const修饰 没有任何价值。如不要把函数 int GetIn(oid)写成 const int getInt(void)。 3> const成员函数的声明中,cons关键宇只能放在函数声明的尾部,表示该类成员不修改对象. 说明: const type n;∥修饰m为不可改变 示例 typedef char*pSr;∥新的类型pSr; char string[4j const char pI= string; pl++;∥确,上边修饰的是*p1p1可变 const pStr p2=string p2++;∥错误,上边修饰的是p2,p2不可变,*p2可变 同理, const修饰指针时用此原则判断就不会混淆了。 const int " value;/ value不可变,vlue可变 int* const value;/ value不可变,* value可变 const(nt*) value;//int*是一种tpe, value不可变, value可变 〃逻辑上这样理解,编译不能通过,需要 tydef int'* New Type; const int* const value;/ value value都不可变 ()volatile 表明某个变量的值可能在外部被改变,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不 是使用保存在寄存器里的备份。它可以适用于基础类型如:int; char long…也适用于C的结构和C+的类。当对结构或 者类对象使用 volatile修饰的时候,结构或者类的所有成员都会被视为 volatile 14.7、异步IO和同步IO有什么区别?举例说明有几种(如read)? 异步IO当函数返回时不一定就完成了IO操作,而同步I0已经完成了。所以异步IO需要有一个事件,当IO完成时 会设置此事件,调用者在事件上等待。一般说来,异步WO是和同步DO相比较来说的,如果是同步IO,当一个IO操作 执行时,应用程序必须等待,直到此ⅣO执行完.相反,异步IO操作在后台运行,JO操作和应用程序可以同时运行提高了 系统性能;使用异步ⅳo会提高Io流量,如果应用是对裸设备进行操作,这科优势更加明显 ,因此象数据库,文件服务器等应用往往会利用异步IO,使得多个ⅣO操作同时执行. 8、32位系统中,吕现结构字节对齐的问题和大小端的问题的避免? 指定对齐值:# pragma pack(value)时指定的对齐 value 写一个函数判断系统是大端还是小端。若处理器是Big_ endian的,则返回0:若是 Little endian的,则返回1 大端格式:在这种格式中,字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中 小端格式:与大端存储格式相反,在小端存储格式中,低地址中存放的是字数据的低字节,高地址存放的是字数据的 高宁节 联合体 union的存放顺序是所有成员都从低地址开始存放 Int checkCPU Union w Int a: Char b ca=1 return(c b==1); 14如何在 Release版本中查找以下问题, a内存泄漏b段错误导致非法操作c程序CPU占用100% 9、如何査出内存泄漏和非法操作的BUG(在 Release版本下)? 检查 window( release)下的内存泄漏 1、放置关键字 assert() 2、生成map文件。它并不往可执行文件exe中添加任何东西,只是在编译的时候将各个函数入口地址记录在后缀 为map的文件中,程序崩溃的时候可以得到一个E|P地址,通过地址知道崩溵所在函数 3、可以设置断点,在希望设置断点的地方加入 ASM int3 4、可以通过编译时的汇编程序看出 5、采用第三方工具 查找段错误导致的非法操作用 ptrace系统调用跟踪调试运行中的进程(tπus、 strace或 ltrace p的原理都是根据 ptrace系统调用跟踪调试运行中的进程) 用tus跟踪 clint的系统调用来找岀错误, clint:是c艹+静态源码分析工具。通过pors安装好之后利用调试工具trus即可。 核小太与用户太的区别,x86如何转换。中断调用,从mng3转到rngo 现代的操作系统一般都有核心模式和用户模式之分,操作系统核心代码运行在核心模式下,只有较高的运行级别,具 有较高的运行效率和较强的底层控制权力,系统硬件为其提供了尽可能多的内存保护以及其他措施,而用户进程则一 般运行在用户模式下,其运行级别较低 在κ86平台下,核心态和用户态的区分主要是通过段选择子确定的,具体来说,在Linuⅹ环境下,核心态的代码段选 择了为ωx10,数据段选择了为0x18:而用户态的代码段选择子为0x23,数据段选择了为0x2B,因此核心态程序工作 在ring0,而用户态程序工作在ring3。在用户模式下只能访问用户空间而在核心模式下可以访问系统空间和用户空间 从用户态进入核心态的最常用的方法是在寄存器eax填一个功能码,然后执行it2ε。这有点像DOS时代的DOS和BIOS 系统调用。在NT架构中这种机制被称作 system service Unⅸx的启动顺序排序。 第一步:通过/boou/m进行启动 vmlinuz 第二步:init/ etc/inittab 第三步:启动相应的脚本,并且打开终端 It rcd(里面的脚本) rc. local 第四步:启动gin脊录界面 login 第五步在用户登录的时候执行$脚本的顺序:每次登录的时候都会完全执行的 /etc/profile. d/file /etc/profile /etc/bashrc /root bashrc /root/ bash profile 对比平衡二叉树AVL和红黑树。哈希表 平衡二叉树和哈希表,哈希表的査找比较快,而且时间复杂度为O(1),但是它所占的空间比较大,而且插入和删除 操作不够灵活,没有动态性。 红黑树算法的时间复杂度和AVL相同,但统计性能比AVL树更高 由于红黑树也是二叉査找树,它们当中每一个节点的比较值都必须大于或等于在它的左子树中的所有节点,并且小于 或等于在它的右子树中的所有节点。这确保红黑树运作时能够快速的在树中査找给定的值。 问答 const有什么用途?(请至少说明两种) Const用了定义一个常量, 用在变量前面的时候可以避免变量被修改 2 用在函数声明部分允许 const的类对象成员访问 const成员函数,如果类的成员函数不会对数据成员进行修 改的话最好把该函数定义为 const类型,这样无论是 const的类对象还是非 const的类对象都可以访问该函数 可以用来代替 define, define只是简单的代替,但是 const还会进行类型检査 怎么避免头文件重复包含 #ifndef H HEADFILENAME #define H HEADFILENAME 文件内容 #endif #pragma once C++拷贝构造函数和赋值运算符有那些不同和相同点。 同:都可以对对象的成员进行赋值 异 拷贝构造函数首先是一个构造函数,它调用的时候产生一个对象,是通过参数传进来的那个对象来初始化,产生的对 象 赋值是把一个对象赋值给一个原有的对象,而且还要检查一下两个对象是不是同一个对象,如果是的话就不做任何操 作 Spinlock(白旋锁), mutex,(互斥) semaphore(信号量),ⅶ itical section( critical section)的作用与区别? 都是操作系统中内核同步实现数据访问,资源共享的作用 日旋锁是在cpu之间,只能运行一个对象,自旋锁可以在任何时刻防止多于一个的内核任务(进程)同时进入临界区 因此这种锁可有效地避免多处理器上并发运行的内核任务竞争共享资源。 互斥只能运行一个对象,可以使一个进程下的线程间同步。也可以是不同进程间同步,互斥能保证公共资源不会同时 被多个线程访问。互斥不仅能实现同一应用程序的公共资源安全共享,还能实现不同应用程序的公共资源安全共享 信号量可以运行多个对象,但是为线程间同步亡允许多个线程在同一时刻访问同一资源,但是需要限制在同一时刻访 问此资源的最大线程数目 临界区同一个进程下的线程间同步,只能运行一个对象。保证在某一个时间只有一个线程可以访问数据的方法 事件:通过通知操作的方式来保持线程的同步,还可以方使实现对多个线程的优先级比较的操作 正则表达式字符吕匹配问题。 比较哈希表和平衡二叉树的特点,它们分别如用那些场合 哈希表和平衡二叉树的适用场合 哈希表:哈希表査找速度比较快,可以时间复杂度为○(1)的情况下找到实现査找。但是要耗比较多的内存。所以比 较适用于对査找速度要求比较高、且内存空间足够的时候 屮衡二叉树:如果想在以后用二分法査找的时候查找速度比较快的话用建立平衡二叉树的方法()平衡二又树支持动 态的插入和査找,保证操作在O( height)时间,这就是完成了哈希表不便完成的工作,动态性。平衡二叉树红黑树就是 为了将查找的时间复杂度保证在OogN)范围内。所以如果输入结合确定,所需要的仅仅是查询,则可以考虑使用哈希 表,如果输入集合不确定,则考虑使用屮衡二叉树度红黑树,保证达到最大效率。 recv函数如何在阻塞模式下没有收到数据就返回 Rev(buff, sizeof(buff), flag) 可以将rev的标志位定义为无需等待返回,不管其是否收到数据都立即返回,也可以定义为等待时间,如果超过等待 时间还没有接受到数据就立即返回, 用锁效率低,有那些方法可以避免或减少锁的使用? 将表建立表级锁,减少锁数量的使用 Man函数中两个参数的作用 第一个形参argc是一个整型变量,第二个形参arg是一个指针数组,其元素指向字符型 数据。用带爹数的main函数可以直接从命令行得到參数值(这些值是宁符串),在程序运行 时,可以根据输入的命令行中的不同情况进行相应的处理。利用man函数中的参数可以使 程序从系统得到所需的数据,增加了处理问题的灵活性。 进程的几个基本状态: 1.匹配"[10:ddd"和"[9]: abcdegf"但不匹配"[a]:xfdf"的正则表达式。\b\wI\b精确匹配只有11个字符的字符 5c++中虚函数如何定义,使用时应该注意什么? 虚函数是在类中被声明为 virtua的成员函数,虚函数的作用,用专业术语来解释就是实现多态性( Polymorphisn),多 态性是将接口与实现进行分离;用形象的语言来解释就是实现以共同的方法,但因个体差异而采用不同的策略。 多态指同一个方法根据其所属的不同对象可以有不同的行为(根据自己理解,不知这么说是否严谨)。 8.有红、绿、蓝三竺球分别3,2,1个。取任意两个不冋颜色的球都会使它们变成第三种颜色的两个球。问最少取多少次, 可使这些球都变成同一种颜色? 答:无论多少次,都不可以使这些球变成同一种颜色, 分析: 、对于(R,R,R,G,G,B)即(3,2,1),有: (R,G)—>(B,B,B,R,R,G)即(3,2,1) ii.(R,B)->(G,G,G,G,R,R)即(4,2) i.(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)这种情况。 6用CC++编程,从1到100中取出10个不同的数,要求打印出所有可能的组合 #include iostream h> int source[100] int dest[ 10]=101 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 destl int index_dest, int k) if(100-index source==k) for(i=0; i<index_dest; i++) cout<<dest<< for(i=index source; i<100; i++) cout<ssource<< cout<sendI return if(index_source<100&&k==1) for(i=index source; i<100; i++) for(j=0; j<index_dest; j++) cout<<desti]<< cout<ssource<send return compositioni source, index_source+1, dest, index_dest, k) destindex dest++]=sourcelindex source] compositionisource, index_ source+1, dest, index dest, k-1); void main( for(int i=0 i<100; i ++ source=l compositionisource, 0, dest, 0, 10); 8如何判断两个单向链表是否有相交,并找出交点。 给出两个链表的头指针 hEad1和 head2,写一个函数判断两条链表有没交叉点 Node* checkLink(Node pHead1, Node* pHead2) Node* p1=pHead1, p2-pHead2 nt=1】=1; if(p1==NULL I p2==NULL return null. fp1==p2) return p1: while(p1->pNext!=NULL p1=p1-→> pNext; while(p2->pNext!=NULL p2=p2>pNext if(pl==pa 2 return NULL. else for(int k=0; k<fabs(a-b): k++) f(:]) p1=pl->pNext; else p2=p2→> pNext; while(p1I=p2) p1=p1->pNext p2=p2->pLex return p1: 有1001个球,两个人轮流拿球,且每次只能拿1、2、4个球,规定拿到最后一个球的人为输。如果让你先拿,你是否 有必胜的把握。如果有,该如何操作? 解:先拿4个,然后每轮保证两个人所拿球数之和为3或6。 【编程】用最简单的函数实现功能:判断一个int数据是否是2的x次幂(不能使用循环)。 bool Juge(int dat, int x) return (dat &-(1<<x); 【编程】对于一个给定的整形数组 int array]。编程实现:将数组中所有小于或等于O的元素都放在数组前面,大于O 的元素放在数组后面。要求时间复杂度为o(n) void Divide(int array, int n) int i=0 for (intj=0; j<n;j++) if(array<0 temp=arraylil arrayli]= array[j]: arriv temp: 【简答】用一个程序示意常见的错误能够导致栈破坏,如何凎査? #include "iostream. h" #include"string h void main( char str5: cout<< input: I cin>>str thile(strlen(str)>5 cout<<" too long! "<<endl cin>>str coutssstr<send 如果系统堆栈很小,不能处理超过4级的函数调用,如何解决八阜后问题 #include <iostream> #include <math. h> #include <malloc. h> using namespace std; int* position;∥放置的位置 Int queen;∥后数目 It count,∥第N种可能性〃判断第n行是否放置皇后 bool Sign Point(int n) for (int i=0; i<n; i ++ if(°( position+i)==*( position+n)∥该列已经放置过皇后了 return false if(abs(*( position+i)-*( position+n))==n-i)∥对角线已经放置过了 return false: return true: ∥置呈后 void SetQueen(int n=0) if (queen==n) ∥)处可以改成自己想要的显示方式 printf("NO. od: " ++count printf("\n) for (int 1=0; i<queen; 1++) for (int j=0; j<queen: 1++) if gj==position[i]) printf("ak else printf("0") printf("\n"); printf("\n") return for(int 1=0; i<queen; i++) position[n]=i; if(SignPointi(n)∥如果该位置放置皇后正确的话,则到下一行 SetQueen (n+1) Jint main(int argc,_TCHAR= argv) cout<<"请输入皇后的总数:<<cndl; Ci>>queen position=(int")malloc(sizeof(int) SetQ cOut<<"摆放完毕"<<end; cin,geto) cin.geto return 0 % &<==那个优先级别最高 8%<=88 【知识点】数据类型占字节数(32位机) Sizeof(long)=4; (*) Sizeof(int)= 4 Sizeof(short)=2 Sizeof(char)=l Sizeof(double)=8 Sizeof(float)=4;

...展开详情
所需积分/C币:18 上传时间:2012-09-23 资源大小:11.21MB
举报 举报 收藏 收藏 (6)
分享 分享

评论 下载该资源后可以进行评论 24

weixin_38377196 不要下,不是你想要的东西,被坑了
2017-04-18
回复
bjdx611 感觉比较常见的题,参考意义不是太大
2013-11-19
回复
zwjwszwjws 可以拿来自测,就是有些题目跟楼上的说的一样,没有答案或者不完整。
2013-10-14
回复
liqingmei1 可以参考下,还是挺好的
2013-09-05
回复
xumajesty 内容丰富,涉及面广!
2013-07-10
回复
深信服历年大部分笔试题目

深信服部分笔试题目希望对大家有帮助。 1 所有资料来自网络(主要是CSDN),本人只是收集和转发。 2 所有问题解答(尤其是代码)只是参考,不保证正确。

立即下载
深信服scsa考试带答案(修正版)

深信服SCSA题库试题全套,整套题库,亲测可用。。。。

立即下载
深信服技术笔试题及答案

深信服笔试题 有些题目有难度需仔细考虑,准备找工作的人要加油。

立即下载
深信服笔试题目(C语言和C++)

毕业班的同学,可能很需要这份材料,这是深信服的笔试题目,自己研究出来做出来的,希望对大家有帮助,好好研究,绝对没问题

立即下载
深信服SCSA题库试题全套

深信服SCSA题库试题全套,一整套题库,下载考试必过。。。。

立即下载
深信服2017年软件开发(C语言)笔试题

深信服2017年3月春招的软件开发C/C++的笔试题,附带选择题答案和一些测试方向的题

立即下载
深信服笔试题(含答案)

深信服笔试题,有完整题目及正确答案分析。职位:软件开发人员

立即下载