深信服02

一,六道选择题 (可以多选)

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\0在常量区,p3在栈上。

static int c =0; 全局(静态)初始化区

p1 = (char *)malloc(10);

p2 = (char *)malloc(20);

分配得来得10和20字节的区域就在堆区。

strcpy(p1, "123456"); 123456\0放在常量区,编译器可能会将它与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]·

ount-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;

}

到a[c

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格式、%后面必须跟一个格式字符

*******************************************************************/ bool zykPrintf(const char * format,...)

{

//定义一个可用于指向参数的指针(实为char *),

va_list argPtr;

//把函数的第一个参数format的地址传给argPtr

va_start(argPtr,format);

const int size = strlen(format)+1;

char *tmp = new char[size];

memset(tmp, 0, size);

  • ·

{ while (*format != 0)

int i;

for (i=0; i<size && *format!=‘%‘ && *format!=0; i++)

{

tmp[i]=*format++;

}

tmp[i] = 0; //在有效的字符串末尾作0值防护

printf("%s",tmp);

if (*format == 0)

return true;

switch(*++format)

{

//按指定类型读取下一个参数,并打印

case ‘d‘: { printf("%d", va_arg(argPtr, int)); break;}

case ‘s‘: { printf("%s", va_arg(argPtr, char *)); break; }

case ‘c‘: { printf("%c", va_arg(argPtr, char)); break;}

case ‘f‘: { printf("%f", va_arg(argPtr, float)); break;}

//对%%的处理

case ‘%‘: { printf("%%"); break; }

//格式错误

default : { printf(" Error Ocurr!Please Check the Format!"); return false;}

}

++format;

}

delete[] tmp;

return true;

}

int main(int argc,char * argv[])

{

zykPrintf("%zyk"); //error

zykPrintf("zyk%"); //error

zykPrintf("%%zyk%%zyk%%"); //OUTPUT: %zyk%zyk%

zykPrintf("\nzyk is a pretty boy! His age is %d and %s",5,"I love zyk^_^!");

getch();

return 0;

}

4是一道逻辑题,有的数是2,3,5的倍数,在三位数中出去可整除这三个数的和·

第4/8页

( 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?

4使用异步socket编程,通常因为网络拥塞send不出数据,会获得什么样的错误码(windows下举例),通常如何处理这种情况?

(核心太与用户太的区别,x86如何转换。)

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++,要求对底层有一定的了解开发类的笔试题目比较晕,共五页纸,要求两个钟头完成(我的简历没有通过筛选,我是去霸王笔的-_-)好像考的内容都跟网上流传的差不多,题目内容大致如下:希望对参加深信服笔试和面试的同学有所帮助:)

1.选择题:6题 第一题是考变量和值的存储位置(堆/栈/代码段/数据段等) 最后一题是Unix系统的启动顺序,其他几题比较简单。

2.填空题:4/5题 考sizeof、指针、数制转换、排序等,看过高质量C/C++应该都没有问题。

3.改错题:3题 有道题跟高质量C/C++中一道指针题类似,不过那题中没有错,原本不需要修改,却反倒被我改错了,汗...另外两题比较简单。

4.编程题: 4/5题 判断链表有没有环(要求用两种方法); 实现C中的printf

第5/8页

深圳某公司几个vc/mfc笔试题目(含参考答案)

1:Release版本下如何解决memory leak 以及非法操作的BUG。(搞不清什么非法操作)

2: 在异步socket时,为什么有时send不出数据,会报什么错误(分windows/linux下),你一般怎么处理?

下面是几个编程的

3:实现strstr模型 (我晕,我写了个函数,只是不是strstr,而是strchr)

4: 实现printf类似的函数, void myprintf(char *str,...)

(用console API吗?好像在哪书上看到可用那些API实现,嘿,我就写了个std::cout<<) 5: 删除文本文件中出现频率最小的单词,(文件里以空格表示间隔一个单词)

void func(char *pTxt)

1、strstr的实现原型。

char *my_strstr(const char *str, const char *strSearch)

{

while (*str != ‘\0‘)

{

char *p = (char *)str;

char *ps = (char *)strSearch;

while ( ps && *p == *ps )

p , ps ;

if (‘\0‘ == *ps)

return (char *)str;

str ;

}

return NULL;

}

2、从指定文本中删除出现频率最少的单词,如果有多个,则都删除。实现void func(char* pTxt)函数。

... 看 单词处理, 论坛中很多都有涉及

3、printf的实现。

int printf(const char *format, ...)

{

va_list arglist;

int buffing;

第6/8页

int retval;

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);

#ifdef _MT

}

__finally {

_unlock_str2(1, stdout);

}

#endif /* _MT */

return(retval);

}

4、VC中有哪些方法避免C编译头文件重复。(除了#ifndef/#define/#endif外,就想不出来了)

#pragma once

5、extern "C"的用法。

用于 提供 C 接口, 如使用 C 命名方式 等 .

6、异步socket编程中,send不出数据的错误码是什么,(举Linux或Windows为例),你是怎么处理的?

非阻塞SOCKET,SEND不出数据的原因有2个吧,TCP下连接断开了和该SOCKET处在阻塞状态(也就是说在发送数据中)。UPD发不出只有TCP后面的情况。

处理的办法就是记录下该SOCKET的状态,当状态为阻塞的时间,放入缓冲,当该SOCKET再次可写时,发送。

7、异步IO和同步IO有什么区别?举例说明有几种(如read)?

第7/8页

异步IO当函数返回时不一定就完成了IO操作,而同步IO已经完成了。所以异步IO需要有一个事件,当IO完成时会设置此事件,调用者在事件上等待。

8、32位系统中,出现结构字节对齐的问题和大小端的问题的避免?

#pragma pack(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: If you send a message in the range below WM_USER to the asynchronous message functions (PostMessage, SendNotifyMessage, and SendMessageCallback), its message parameters can not include pointers. Otherwise, the operation will fail.

如果发送的消息码在WM_USER之下(非自定义消息)且消息参数中带有指针,那么PostMessage,SendNotifyMessage,SendMessageCallback这些异步消息发送函数将会调用失败。 最好不要用PostMessage发送带有指针参数的消息。

PostMessage 和SendMessage的区别主要在于是否等待其他程序消息处理。PostMessage只是把消息放入队列,不管其他程序是否处理都返回,然后继续执行;而SendMessage必须等待其他程序处理消息后才返回,继续执行。这两个函数的返回值也不同,PostMessage的返回值表示PostMessage函数执行是否正确,而SendMessage的返回值表示其他程序处理消息后的返回值。

时间: 2024-10-06 23:26:10

深信服02的相关文章

深信服asv授权管理

和vmware一样,深信服作为国产的一款服务器虚拟化软件,属于商业版,同样需要license的授权,在此,我将带领大家对授权操作,进行简单的操作,以便大家后期学习使用. 1.在系统首页,右上角系统激活 2.输入注册的邮箱,激活码,点击立即激活 3.用手机微信扫描二维码,输入验证码,点击离线激活 4.激活成功

深信服NGAF 虚拟网线模式部署案例

NGAF  虚拟网线模式部署案例 1.1NGAF  虚拟网线部署介绍 虚拟网线部署与透明部署类似,但是应用场景有所不同.虚拟网线主要应用于多网桥的情况下.当客户需要利用多网桥来部署 NGAF 设备,建议使用虚拟网线,而不用透明部署.主要是由于多网桥下容易出现 MAC 表错乱问题,虚拟网线设置后,不需要查找 MAC 表,数据从一个口进来,直接从虚拟网线设置的另外一个口转发. 客户环境与需求:某客户网络环境如下图所示,出口为艾泰路由器,内网两个三层交 换机,H3C-A划分出5个网段VLAN10到50

深信服春招专项备战内容

深信服春招专项备战内容:理解,记忆,掌握,升华 一:<小小黑客之路>全书 二:<深入理解计算机系统>第五章,第八章,第十一章,第十二章

深信服虚拟化asv体验

伴随着国产化的推进,我今日研究了深信服的avs,特别写下该文档,方便大家学习.我将使用vmwareworkstation模拟平台搭建. 1.打开新建虚拟机向导 2.选择安装客户机的操作系统,我们选择稍后安装操作系统 3.在选择客户机操作系统页面,选择Linux,centos64位 4.命名虚拟机,并选择虚拟机工作目录文件 5.指定磁盘容量大小 6.完成虚拟机新建过程. 7.开机在启动页面,我们选择安装超融合基础架构管理平台(HCI) 8.选择格式化安装 9.同意软件许可及服务协议 10.系统对硬

深信服模式(先做减法,必须拜访客户三次、研究需求方向,把产品的问题控制住,快速反应,在未来十年,绝大部分业务都会搬到Internet上来,实现All on Internet)good

深圳市盛凯信息科技有限公司与深信服合作多年,可以说是看着深信服“飞速”长大的.盛凯的总经理邓渊在采访中笑言:“他们(深信服)发展得太快,而我们发展得太慢.” 深信服的产品线已从最初只有VPN一条,到目前包括上网行为管理.广域网优化.应用交付.下一代防火墙.应用性能管理和虚拟化等多条产品线.根据IDC的报告,在中国的网络安全市场上,深信服已经进入前三甲.而这只是深信服其中内容安全管理和VPN两条产品线的成绩. 对复杂市场的精准定位:对需求趋势的精准解读:对客户及合作伙伴的深度沟通:对创新意识的极度

专访CEO何朝曦:深信服高速成长的秘诀

在深信服公司深圳总部的办公室里,要迅速找到几位高管的工位远远不如找一位女员工的座位那样容易. 深信服CEO何朝曦先生 公司里虽然女孩很少,但几乎每位女员工的工位上都有一盆绿植.相比之下,从公司CEO何朝曦,到熊武.王力强.张开翼等几位副总,工位和其他普通员工一样分布在开放的办公间内.如果不是他们主动站起来,你很难发现管理层的办公地点到底在哪里. 简单,平等——这一企业风格已经体现在了深信服的诸多细节之中.比如大部分的研发部门和其对应的测试部门的办公间只是隔着两层玻璃.一条走廊,沟通有时甚至只需要

数安时代(GDCA)与深信服携手合作,签订战略合作协议

8月22日上午,国内信息安全服务商数安时代(GDCA)与国内网络安全厂商深信服在数安时代广州分公司成悦大厦正式签订战略合作协,以统一的资源整合优势结成长期共同发展联盟.其中,数安时代(GDCA)副总经理魏一才.国际电子认证事业部总监区景安代表数安时代出席签约活动. 本次数安时代(GDCA)与深信服强强联手,双方充分发挥各自领域专长,将提升相关产品的技术实力与市场竞争力等,加强国内互联网安全解决方案.双方将在产品.解决方案融合,渠道资源联合拓展及客户资源共享方面达成合作.数安时代(GDCA)将旗下

乾颐盾之深信服防火墙 -----AD域集成

乾颐盾之深信服防火墙 -----AD域集成 在生活的环境中,或者是企业环境中,都会有一个微软的AD域的环境,那么我们深信服的下一代防火墙也有认证系统,要是为这个设备单独的做认证用户的话就比较的麻烦,对于用户来说有可能会有不同的密码,就会产生很多的麻烦.深信服可以集成系统的域环境,这样就可以让用户直接的使用自己原先在域中的用户名和密码. 下面我们简单的看下试验环境 实验环境也比较的简单,让设备能够连接到AD域,并且DNS也做好,指向域服务器.我们来看下简单实际的操作. 一:添加角色(AD域) 二:

深信服VPN及备份

最近由于公司新上ERP项目,而ERP厂家没有包含做VPN及备份,所以这两部分得自己公司的运维部门做.就相当于要把这两个项目当一个项目做.那我就来记录一下整个过程. 1,询价 首先是询价,询价得找厂商,因为没有渠道,就只有在网上找官网的客服,问相关的售前咨询.一般售前都会要你的电话,然后给你电话联系.这里选择的是深信服的VPN,通过了解才知道,深信服的是必须你找了一家做,另外的代理什么的都不能做了,所以再找其他代理询价,别人不会给你报价的. 备份比较复杂,因为备份的厂商比较多,有Symantec的