没有合适的资源?快使用搜索试试~ 我知道了~
深信服历年大部分笔试题目
4星 · 超过85%的资源 需积分: 46 223 下载量 196 浏览量
2008-11-20
13:31:27
上传
评论 4
收藏 105KB DOC 举报
温馨提示
试读
11页
深信服部分笔试题目希望对大家有帮助。 1 所有资料来自网络(主要是CSDN),本人只是收集和转发。 2 所有问题解答(尤其是代码)只是参考,不保证正确。
资源推荐
资源详情
资源评论
一,六道选择题 (可以多选)
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"; 123456 在常量区,p3
在栈上。
static int c =0; 全局(静态)初始化区
p1 = (char *)malloc(10);
p2 = (char *)malloc(20);
分配得来得 10 和 20 字节的区域就在堆区。
strcpy(p1, "123456"); 123456 放在常量区,编
译器可能会将它与 p3 所指向的"123456"
优化成一个地方。
} 不知道是那个高人怎么想的和我一样,
我估计中间应该有错误)
2 % & . && <= = 那个优先级别最高
. & % <= && =
3
4 以下哪些通信方式是可靠的通讯方式
1 信号 2 管道 3 消息 4tcp 5udp 6 串口 I/O
5 是(M)?(a++):( a--),此处的 M 等于
我选 C
A,M==O,B,M==1,C,M!=O,D,M!=1
6 是 Unix 的启动顺序排序。(6 个选项)
二
1 是数制转换 151 转 2 进制和九进制。10010111
177
2 已知 0 的 ASCII 码为 0x40,那么 int 120;在内存
中的表示形式是 0x__ 78(0 的 ASCII 码为 0x40,
应该为 0x30)
3 1、在 linux 下,查看目录大小的命令是:
2、修改文件属性的命令是:
3、切换为其他用户身份的命令是:
4 还有一道指针交换数值 int i=0,j=10,int* p=&i,
int* q=&j,
int fun (**a,*b)
{
int* temp=a;
*a*=10;
*b*=10;
a=b;
b=temp;
}最后问调用 fun(&p,q)问 i、j、p、q 的最终值(具
体形式大概如此,但中间指针肯定记的错误)
此题主要考察指针指向一个整数,然后利用指针
改变变量,最后交换指针
5 有道填插入排序的算法。有一个数组
a[0] 到 a[i-1]为从小到大排序,a[i] 到 a[count-1]
没有排序,请您添加 3 条语句使它们按照从小到
大排序
int insert_sort(int a[],int count)
{
for(int i=1;i<count;++i)
{
int j,t;
t=a[i];
(j=i-1;)
while(j>=0&&t<a[j])
{
(a[j+1]=a[j];)
j--;
}
(a[j+1]=t;)
}
return 0;
}
三,编程与逻辑题
1 自己写一个 strstr
(单链表判断有无环,)
char* strstr(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<stdio.h>
#include<stdarg.h>//定义 av_list、av_start、av_arg
等宏
3 实现一个与 printf 功能相似的函数
#include<iostream>
#include<conio.h>
#include<stdio.h>
#include<stdarg.h>//定义 av_list、av_start、av_arg
等宏
/*******************************************
************************
此函数的作用:
实现一个参数个数可变的函数,此函数的功能
与 printf 类似,
但在格式处理上,不如 printf 丰富
无异常,返回一个 true,否则返回 false
format 字符串的合法情况如下:
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 argPtr;//把函数的第一个参数 format 的
地址传给 argPtr
va_start(argPtr,format);
constintsize=strlen(format)+1;
char*tmp=newchar[size];
memset(tmp,0,size);
while(*format!=0)
{
inti;
for(i=0;i<size&&*format!='%'&&*format!
=0;i++)
{
tmp[i]=*format++;
}
tmp[i]=0;//在有效的字符串末尾作 0 值防护
printf("%s",tmp);
if(*format==0)
returntrue;
switch(*++format)
{
//按指定类型读取下一个参数,并打印
case'd':{printf("%d",va_arg(argPtr,int));break
;}
case's':{printf("%s",va_arg(argPtr,char*));br
eak;}
case'c':{printf("%c",va_arg(argPtr,char));bre
ak;}
case'f':{printf("%f",va_arg(argPtr,float));brea
k;}
//对%%的处理
case'%':{printf("%%");break;}//格式错
误
default:{printf(" ErrorOcurr!
PleaseChecktheFormat!");returnfalse;}
}
++format;}
delete[]tmp;
returntrue;
}
intmain(intargc,char*argv[])
{zykPrintf("%zyk");//error
zykPrintf("zyk%");//error
zykPrintf("%%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 !!!!
#def !!!!
#endif
2 在 C++中 extern c 的作用
(按键转换,比如点击 p 输出 q)
作为 extern 是 C/C++语言中表明函数和全局变量
作用范围(可见性)的关键字,该关键字告诉编
译器,其声明的函数和变量可以在本模块或其它
模块中使用。
extern "C"是连接申明(linkage declaration),被 extern
"C"修饰的变量和函数是按照 C 语言方式编译和连
接的
3 编程中异步 IO 和同步 IO 有什么区别?说说你可
知道的几种 IO?
异步 IO 当函数返回时不一定就完成了 IO 操作,
而同步 IO 已经完成了。所以异步 IO 需要有一个
事件,当 IO 完成时会设置此事件,调用者在事件
上等待。
4 使用异步 socket 编程,通常因为网络拥塞 send
不出数据,会获得什么样的错误码(windows 下举
例),通常如何处理这种情况?
SOCKET_ERROR 。用 GetLastError(),如果是
WSAEWOULDBLOCK 的话,不是有错,而是发
生阻塞,你可以及时处理,如重发、忽略
非阻塞 SOCKET,SEND 不出数据的原因有 2 个
吧,TCP 下连接断开了和该 SOCKET 处在阻塞状
态(也就是说在发送数据中)。UPD 发不出只有
TCP 后面的情况。
处理的办法就是记录下该 SOCKET 的状态,当状
态为阻塞的时间,放入缓冲,当该 SOCKET 再次
可写时,发送。(核心太与用户太的区别,x86 如
何转换。)
5 将程序移植到不同的 32 位 cpu 中,经常出现结
构字节对齐和大小端的问题,有哪能些方法避免?
#pragma pack(4)
(是子网源码的判断,计算,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++,要求对底层有一定的
了解开发类的笔试题目比较晕,共五页纸,要求
两个钟头完成(我的简历没有通过筛选,我是去
霸王笔的-_-)好像考的内容都跟网上流传的差不
多,题目内容大致如下:希望对参加深信服笔试和
面试的同学有所帮助:)
1.选择题:6 题 第一题是考变量和值的存储位置
剩余10页未读,继续阅读
happyzmj66
- 粉丝: 0
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
前往页