没有合适的资源?快使用搜索试试~ 我知道了~
it公司面试题答案.docx
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 154 浏览量
2022-11-01
20:36:35
上传
评论
收藏 73KB DOCX 举报
温馨提示
试读
15页
。。。
资源推荐
资源详情
资源评论
it 公司面试题答案
【篇一:it 公司面试题总结(三)】
小的一个。另外,当你写下面的代码时会发生什么事?
least= min(*p++,b);
解答: #define min(a,b) ((a)=(b)?(a):(b))
min(*p++,b)会产生宏的副作用
剖析:这个面试题主要考查面试者对宏定义的使用,宏定义可以实
现类似于函数的功能,但是它终归不是函数,而宏定义中括弧中的
“参数”也不是真的参数,在宏展开的时候对“参数”进行的是一对一
的替换。程序员对宏定义的使用要非常小心,特别要注意两个问题:
(1)谨慎地将宏定义中的“参数”和整个宏用用括弧括起来。所以,严
格地讲,下述解答: #define min(a,b) (a)=(b)?(a):(b)
#define min(a,b) (a=b?a:b)都应判 0 分;
(2)防止宏的副作用。
宏定义#definemin(a,b)((a)=(b)?(a):(b))对 min(*p++,b)的作用结果
是:((*p++)=(b)?(*p++):(b))这个表达式会产生副作用,指针 p 会作
两次++自增操作。除此之外,另一个应该判 0 分的解答是:#define
min(a,b) ((a)=(b)?(a):(b));
这个解答在宏定义的后面加“” ,显示编写者对宏的概念模糊不清,
只能被无情地判 0 分并被面试官淘汰。
试题 4:为什么标准头文件都有类似以下的结构?
#ifndef __incvxworksh
#define __incvxworksh
#ifdef__cplusplus
externc{
#endif
/**/
#ifdef __cplusplus
}
#endif
#endif /*__incvxworksh*/
解答:
头文件中的编译宏
#ifndef __incvxworksh
#define __incvxworksh #endif
的作用是防止被重复引用。
作为一种面向对象的语言,c++支持函数重载,而过程式语言 c 则
不支持。函数被 c++编译后在 symbol 库中的名字与 c 语言的不同。
例如,假设某个函数的原型为:voidfoo(intx,inty); 该函数被 c 编译
器编译后在 symbol 库中的名字为_foo,而 c++编译器则会产生像
_foo_int_int 之类的名字。_foo_int_int 这样的名字包含了函数名和
函数参数数量及类型信息,c++就是考这种机制来实现函数重载的。
试题 5:编写一个函数,作用是把一个 char 组成的字符串循环右移
n 个。比如原来是“abcdefghi”如果 n=2,移位后应该是
“hiabcdefgh”
函数头是这样的:
//pstr 是指向以\0 结尾的字符串的指针 //steps 是要求移动的 n
voidloopmove(char*pstr,intsteps) { //请填充... }
解答:
正确解答 1: void loopmove(char* pstr,int steps) { int
n=strlen(pstr)-steps; char tmp[max_len]; strcpy(tmp,pstr+n);
strcpy(tmp+steps,pstr);
*(tmp+strlen(pstr))=\0;
strcpy(pstr,tmp);
}
正确解答 2: voidloopmove(char*pstr,intsteps)
{ int n=strlen(pstr)-steps; char tmp[max_len];
memcpy(tmp,pstr+n,steps);
memcpy(pstr+steps,pstr,n);
memcpy(pstr,tmp,steps);
}
剖析:
这个试题主要考查面试者对标准库函数的熟练程度,在需要的时候
引用库函数可以很大程度上简化程序编写的工作量。
最频繁被使用的库函数包括:
(1)strcpy
(2)memcpy (3)memset
试题 6:已知 wav 文件格式如下表,打开一个 wav 文件,以适当的
数据结构组织 wav 文件头并解析 wav 格式的各项信息。
wave 文件格式说明表
偏移地址字节数数据类型内容
文件头
00h 4 char riff 标志
04h 4 int32 文件长度
08h 4 char wave 标志
0ch 4 char fmt 标志
10h 4 过渡字节(不定)
14h 2 int16 格式类别
16h 2 int16 通道数
18h 2 int16 采样率(每秒样本数),表示每个通道的播放速度
1ch 4 int32 波形音频数据传送速率
20h 2 int16 数据块的调整数(按字节算的)
22h 2 每样本的数据位数
24h 4 char 数据标记符"data"
28h 4 int32 语音数据的长度
解答:
正确答案:
将 wav 文件格式定义为结构体
waveformat:
typedef struct tagwaveformat
{
char criffflag[4];
uin32 nfilelen;
char cwaveflag[4];
char cfmtflag[4];
char ctransition[4];
uin16 nformattag ;
uin16 nchannels; uin16 nsamplespersec; uin32
navgbytespersec;
uin16 nblockalign; uin16 nbitnumpersample;
char cdataflag[4]; uin16 naudiolength; } waveformat;
假设 wav 文件内容读出后存放在指针 buffer
开始的内存单元内,则分析文件格式的代码很简
单,为:
waveformat waveformat; memcpy( waveformat,
buffer,sizeof( waveformat ) ); 直接通过访问 waveformat 的成员,
就可以获得特定 wav 文件的各项格式信息。 剖析:
试题 6 考查面试者组织数据结构的能力,有经验的程序设计者将属
于一个整体的数据成员组织为一个结构体,利用指针类型转换,可
剩余14页未读,继续阅读
资源评论
G11176593
- 粉丝: 6677
- 资源: 3万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功