往年的深信服笔试题齐全Word文档下载推荐.docx
- 文档编号:22556401
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:12
- 大小:79.24KB
往年的深信服笔试题齐全Word文档下载推荐.docx
《往年的深信服笔试题齐全Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《往年的深信服笔试题齐全Word文档下载推荐.docx(12页珍藏版)》请在冰豆网上搜索。
栈
s[]
abc"
*p2;
*p3
123456"
123456\0在常量区,p3在栈上。
static
c
=0;
全局(静态)初始化区
p1
(char
*)malloc(10);
p2
*)malloc(20);
分配得来得10和20字节的区域就在堆区。
strcpy(p1,
);
123456\0放在常量区,编译器可能会将它与p3所指向的"
优化成一个地方。
}不知道是那个高人怎么想的和我一样,我估计中间应该有错误)
intj,t;
t=a[i];
(j=i-1;
)
while(j>
=0&
&
t<
a[j])
{
(a[j+1]=a[j];
j--;
}
(a[j+1]=t;
}
return0;
}
三,编程与逻辑题
1自己写一个strstr
(单链表判断有无环,)
char*strstr(char*buf,char*sub)
{
char*bp;
char*sp;
If(!
*sub)
returnbuf;
while(*buf)
{bf=buf;
sp=sub;
do{if(!
*sp)
while(*bp++==*sp++)
buf+=1;
return0;
2遍历文本找单词并删掉出现频率最少的单词,fun(char*pText)
#include
<
stdio.h>
stdarg.h>
//定义av_list、av_start、av_arg等宏
∙3实现一个与printf功能相似的函数
iostream>
conio.h>
/*******************************************************************
此函数的作用:
实现一个参数个数可变的函数,此函数的功能与printf类似,
但在格式处理上,不如printf丰富
无异常,返回一个true,否则返回false
format字符串的合法情况如下:
1."
%%zyk%%zyk%%"
OUTPUT:
%zyk%zyk%
2."
%dzyk%fzyk%s"
(int)zyk(float)zyk(string)
3."
zyk"
OUTPUT:
zyk
非法情况如下:
%zyk%"
ERROR:
不存在%z格式、%后面必须跟一个格式字符
*******************************************************************/
bool
zykPrintf(const
char
*
format,...)
//定义一个可用于指向参数的指针(实为char
*),
va_list
argPtr;
//把函数的第一个参数format的地址传给argPtr
va_start(argPtr,format);
const
int
size
=
strlen(format)+1;
*tmp
new
char[size];
memset(tmp,
0,
size);
∙while
(*format
!
0)
i;
for
(i=0;
i<
*format!
='
%'
=0;
i++)
tmp[i]=*format++;
tmp[i]
0;
//在有效的字符串末尾作0值防护
printf("
%s"
tmp);
if
==
return
true;
switch(*++format)
//按指定类型读取下一个参数,并打印
case
'
d'
:
{
%d"
va_arg(argPtr,
int));
break;
s'
*));
c'
%c"
char));
f'
%f"
float));
//对%%的处理
%%"
//格式错误
default
Error
Ocurr!
Please
Check
the
Format!
"
false;
++format;
delete[]
tmp;
main(int
argc,char
argv[])
zykPrintf("
%zyk"
//error
zyk%"
//OUTPUT:
\nzyk
is
a
pretty
boy!
His
age
%d
and
5,"
I
love
zyk^_^!
getch();
文章引用自:
∙4是一道逻辑题,有的数是2,3,5的倍数,在三位数中出去可整除这三个数的和
(5升和3升桶量4升水)
四,改错题三道
1tozero算法
2比较简单
3是高质量里的一道题
五,问答题
1VC中有哪些方法避免C编程中的头文件重复包含:
#ifndef!
#def!
#endif
2在C++中externc的作用
(按键转换,比如点击p输出q)
作为extern是C/C++语言中表明函数和全局变量作用范围(可见性)的关键字,该关键字告诉编译器,其声明的函数和变量可以在本模块或其它模块中使用。
extern"
C"
是连接申明(linkagedeclaration),被extern"
修饰的变量和函数是按照C语言方式编译和连接的
3编程中异步IO和同步IO有什么区别?
说说你可知道的几种IO?
4使用异步socket编程,通常因为网络拥塞send不出数据,会获得什么样的错误码(windows下举例),通常如何处理这种情况?
(核心太与用户太的区别,x86如何转换。
5将程序移植到不同的32位cpu中,经常出现结构字节对齐和大小端的问题,有哪能些方法避免?
(是子网源码的判断,计算,ABCDE网络的区别,DE网络的用途,)
6怎样解决在vc中内存泄漏的问题(release版本)
(1)放置关键字assert()
(2)生成map文件。
它并不往exe文件中添加任何东西,仅仅只是把编译连接时的所有函数入口地址记录在后缀为.map文件。
程序崩溃的时候,可以得到一个崩溃时的EIP地址,通过地址可以很容易的查到崩溃所在的函数。
(在vcsetting下有个link按钮选上generatemapfile)
(3)Release版本也是可以设置断点的,在希望设置断点处加入_asmint3
(4)熟悉汇编,通过编译时的汇编看出
(5)使用第三方调试器。
(6)关掉发行版中的一些优化选项,生成调试信息。
(是p2p软件在nat用户里实现数据互传的原理
开发类笔试全部是C/C++,要求对底层有一定的了解开发类的笔试题目比较晕,共五页纸,要求两个钟头完成(我的简历没有通过筛选,我是去霸王笔的-_-)好像考的内容都跟网上流传的差不多,题目内容大致如下:
希望对参加深信服笔试和面试的同学有所帮助:
)
1.选择题:
6题
第一题是考变量和值的存储位置(堆/栈/代码段/数据段等)
最后一题是Unix系统的启动顺序,其他几题比较简单。
2.填空题:
4/5题
考sizeof、指针、数制转换、排序等,看过高质量C/C++应该都没有问题。
3.改错题:
3题
有道题跟高质量C/C++中一道指针题类似,不过那题中没有错,原本不需要修改,却反倒被我改错了,汗...另外两题比较简单。
4.编程题:
4/5题
判断链表有没有环(要求用两种方法);
实现C中的printf
深圳某公司几个vc/mfc笔试题目(含参考答案)
1:
Release版本下如何解决memoryleak以及非法操作的BUG。
(搞不清什么非法操作)
2:
在异步socket时,为什么有时send不出数据,会报什么错误(分windows/linux下),你一般怎么处理?
下面是几个编程的
3:
实现strstr模型(我晕,我写了个函数,只是不是strstr,而是strchr)
4:
实现printf类似的函数,voidmyprintf(char*str,...)
(用consoleAPI吗?
好像在哪书上看到可用那些API实现,嘿,我就写了个std:
cout<
5:
删除文本文件中出现频率最小的单词,(文件里以空格表示间隔一个单词)
voidfunc(char*pTxt)
1、strstr的实现原型。
char*my_strstr(constchar*str,constchar*strSearch)
while(*str!
='
\0'
char*p=(char*)str;
char*ps=(char*)strSearch;
while(ps&
*p==*ps)
p,ps;
if('
==*ps)
return(char*)str;
str;
returnNULL;
2、从指定文本中删除出现频率最少的单词,如果有多个,则都删除。
实现voidfunc(char*pTxt)函数。
...看单词处理,论坛中很多都有涉及
3、printf的实现。
intprintf(constchar*format,...)
va_listarglist;
intbuffing;
intretval;
va_start(arglist,format);
_ASSERTE(format!
=NULL);
#ifdef_MT
_lock_str2(1,stdout);
__try{
#endif/*_MT*/
buffing=_stbuf(stdout);
retval=_output(stdout,format,arglist);
_ftbuf(buffing,stdout);
__finally{
_unlock_str2(1,stdout);
return(retval);
4、VC中有哪些方法避免C编译头文件重复。
(除了#ifndef/#define/#endif外,就想不出来了)
#pragmaonce
5、extern"
的用法。
用于提供C接口,如使用C命名方式等.
6、异步socket编程中,send不出数据的错误码是什么,(举Linux或Windows为例),你是怎么处理的?
非阻塞SOCKET,SEND不出数据的原因有2个吧,TCP下连接断开了和该SOCKET处在阻塞状态(也就是说在发送数据中)。
UPD发不出只有TCP后面的情况。
处理的办法就是记录下该SOCKET的状态,当状态为阻塞的时间,放入缓冲,当该SOCKET再次可写时,发送。
7、异步IO和同步IO有什么区别?
举例说明有几种(如read)?
异步IO当函数返回时不一定就完成了IO操作,而同步IO已经完成了。
所以异步IO需要有一个事件,当IO完成时会设置此事件,调用者在事件上等待。
8、32位系统中,出现结构字节对齐的问题和大小端的问题的避免?
#pragmapack(4)
9、如何查出内存泄漏和非法操作的BUG(在Release版本下)?
使用map文件
1,PostMessage只把消息放入队列,不管其他程序是否处理都返回,然后继续执行,这是个异步消息投放函数。
而SendMessage必须等待其他程序处理消息完了之后才返回,继续执行,这是个同步消息投放函数。
而且,PostMessage的返回值表示PostMessage函数执行是否正确;
而SendMessage的返回值表示其他程序处理消息后的返回值。
这点大家应该都明白。
2,如果在同一个线程内,PostMessage发送消息时,消息要先放入线程的消息队列,然后通过消息循环Dispatch到目标窗口。
SendMessage发送消息时,系统直接调用目标窗口的消息处理程序,并将结果返回。
SendMessage在同一线程中发送消息并不入线程消息队列。
如果在不同线程内。
最好用PostThreadMessage代替PostMessage,他工作的很好。
SendMessage发送消息到目标窗口所属的线程的消息队列,然后发送消息的线程等待(事实上,他应该还在做一些监测工作,比如监视QS_SENDMESSAGE标志),直到目标窗口处理完并且结果返回,发送消息的线程才继续运行。
这是SendMessage的一般情况,事实上,处理过程要复杂的多。
比如,当发送消息的线程监测到有别的窗口SendMessage一个消息到来时,他直接调用窗口处理过程(重入),并将处理结果返回(这个过程不需要消息循环中GetMessage等的支持)。
3,msdn:
IfyousendamessageintherangebelowWM_USERtotheasynchronousmessagefunctions(PostMessage,SendNotifyMessage,andSendMessageCallback),itsmessageparameterscannotincludepointers.Otherwise,theoperationwillfail.
如果发送的消息码在WM_USER之下(非自定义消息)且消息参数中带有指针,那么PostMessage,SendNotifyMessage,SendMessageCallback这些异步消息发送函数将会调用失败。
最好不要用PostMessage发送带有指针参数的消息。
PostMessage和SendMessage的区别主要在于是否等待其他程序消息处理。
PostMessage只是把消息放入队列,不管其他程序是否处理都返回,然后继续执行;
而SendMessage必须等待其他程序处理消息后才返回,继续执行。
这两个函数的返回值也不同,PostMessage的返回值表示PostMessage函数执行是否正确,而SendMessage的返回值表示其他程序处理消息后的返回值。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 往年 深信 笔试 齐全