CC程序员应聘常见面试题_第1页
CC程序员应聘常见面试题_第2页
CC程序员应聘常见面试题_第3页
CC程序员应聘常见面试题_第4页
CC程序员应聘常见面试题_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C/C C/C程序员支持一般面对面程序员支持常见问题解答:宋宝华上市时间:2006-2-20 1333369333336961 |字体:大中型 1。写介绍信的目的不是为C/C程序员提供求职面试指导,而是从技术上分析面试问题的意义。文章中,大部分面对面问题来自各论坛,部分问题解决也参考了网民的意见。试题看起来很简单,但为了给出完美的答案,需要很深的基本功。企业要求面试官写下最简单的strcpy函数之一,这样就可以知道面试官在技术上到达了什么程度。我们真的可以写strcpy函数吗?我想我们都可以,但是我们写的strcpy在10分中只能得2分。在这篇文章中,您可以查看strcpy函数的2-10分钟回答示例,以确定自己所属的级别。还有考试面试官敏捷的思维能力。分析这些面条问题,本身就包含了强烈的兴趣。作为研究人员,通过对这些面对面文件的深入分析,可以进一步加强自己的内功。2.问题1:void test1() char string10;Char * str1= 0123456789Strcpy(string,str 1);考试问题2: void test2 () char string 10,ST R110;int I;for(I=0);I10I) ST R1I=a; strcpy(string,str 1);考试问题3:void test3(char * str 1) char string10;if(str len(str 1)=10 str cpy(string,str 1);答案:问题1字符串str1需要11字节才能存档(结束“对于试题2,如果面试官指出文字阵列str1不能在阵列内结束,可以给3分。如果面试官显示通过调用strcpy(string,str1)从str1内存复制到string内存的字节数不确定,则可以给出7分,以此为基础表示库函数strcpy工作方式的10分。对于考试问题,请输入3,if(strlen(str1)=10表示if(strlen(str 1)=-epson)size of(p)=?答案:sizeof(str)=4 sizeof (p)=4剖析:在Func (char str100)函数中,阵列名称用作函数常值时,在函数中,阵列名称会失去其本身的意义,而只是一个指标。失去其意义的话,常数特性也就消失了,可以进行自我增加、自我减少等操作,也可以修改。数组名称的本质是:(1)数组名表示作为数组的数据结构。范例:char str10;cout size of(str)endl;输出结果为10,str表示数据结构char10。(2)数组名可以转换为指向实体的指针,不能执行自增、自减等操作,也不能修改的指针常量。char str10;Str/编译错误,提示str为左值(3)阵列名称不是函数常值时,做为一般指标。在Windows NT 32位平台上,指针的长度(占用内存的大小)为4字节,因此sizeof(str)、sizeof (p)都为4。问题3:请填写“标准”宏MIN。该宏输入两个参数,然后返回一个较小的参数。此外,如果写以下代码,会发生什么情况?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)防止宏的副作用。宏定义#define MIN(A,B) (A)=(B)?(A) : (B)对MIN(*p,B)的影响是(*p)=(b)?(*p) : (*p)此表达式可能产生副作用,指针p执行三次自增长操作。此外,需要宣告零点的另一个答案是#define MIN(A,B) (A)=(B)?(A) : (B)这个答案在宏定义之后是“;”另外,作者的宏观概念模糊,只能被无意中判零分,退出面试官。问题4:为什么标准头文件具有以下结构?# ifndef _ _ incvxworksh # define _ _ incvxworksh # ifdef _ _ cplusplus exetern c # endif/*.*/# ifdef _ _ cplusplus # endif # endif/* _ _ incvxworksh */回答:头文件中的编译宏# ifndef _ _ incvxworkshc支持以面向对象的语言重载函数,而c不通过程序语言c支持。编译为c后,symbol库中函数的名称与c语言不同。例如,假设函数的基本体是void foo(int x,int y)。c编译器编译的函数在symbol库中命名为_foo,c编译器生成诸如_foo_int_int的名称。名称(例如_ foo _ int _ int _ int)包含函数名称、函数参数数和类类型信息,c为函数重载测试此机制。为了c和c的混合编程,c提供了c连接交换指定符号exeten c ,以解决名称匹配问题。在函数声明之前加上exeten c ,编译器将根据c语言将该函数编译为_foo,以便c中的函数可以从c语言调用。问题5:编写一个函数,该函数将由char组成的字符串向右移动n次。例如,如果原始为“abcdefghi”,n=2,则移位必须是“hiabcdefgh”函数标头。/pStr是指向以0结尾的字符串的指针/steps,请填充需要移动的n void LoopMove (char * pStr,Int steps) /.答案:正确答案1: void loop move (char * pstr,int steps) intn=strlen(pstr)-steps;char tmpMAX _ LEN;Strcpy (tmp,pstn);Strcpy (tmp steps,pStr);*(tmp str len(pStr)= 0;Strcpy(pStr,tmp);正确答案2: void loop move (char * pstr,int steps) intn=strlen(pstr)-steps;char tmpMAX _ LEN;Memcpy (tmp、pstn、steps);Memcpy(pStr steps,pStr,n);Memcpy(pStr、tmp、steps);分析:这个考试问题主要测试面试官对标准库功能的熟练程度,必要时参考库功能,可以大大简化程序编写的工作量。最常用的库函数包括:(1) strcpy (2) memcpy (memcpy和memmove()是c语言的库函数,用于复制头文件string.h中指定长度的内存内容。原型如下:void * memcpy (void * dst、const void * src、size _ t计数);Void * memmove (void * dst、const void * src、size _ t计数);他们的作用是一样的。唯一的区别是,当内存部分嵌套时,memmove保证副本的结果是正确的,memcpy保证副本的结果是正确的。在第一种情况下,复制副本重叠的区域没有问题,并且内容可以正确复制。第二种情况下,问题出现在右边的2字节,这两个小节的原始内容先被复盖,不存储。所以复制贝的时候已经覆盖的内容,显然是有问题的。实际上,memcpy只是memmove的子集。(3) memset问题6:已知的WAV文件格式如下表所示。打开WAV文件,以适当的数据结构组织WAV文件头,并查看WAV格式的信息。WAVE文件格式说明表偏移地址字节数数据类型内部容量文件标题00H4CharRIFF 标志04H4int32文件长度08H4CharWAVE 标志0CH4Charfmt 标志10H4转换字节(无限)14H2int16格式类别16H2int16UIN32 nFileLenchar cwave flag4;char cFmtFlag4;char cTransition4;UIN16 nFormatTagUIN16 nChannelsUIN16 nSamplesPerSecUIN32 nAvgBytesperSecUIN16 nBlockAlignUIN16 nBitNumPerSamplechar CDATA flag4;UIN16 nAudioLength WAVEFORMAT假设在读取WAV文件内容后,指针buffer存储在启动它的内存单元格内,则分析文件格式的代码如下所示:WAVEFORMAT waveFormatMemcpy(通过直接访问WAVeFormat中的成员,可以获取特定wav文件的各种格式信息。分析:问题6面试官组织数据结构的能力,熟练的程序员将整个数据成员组织成一个结构。使用指针类型转换,可以将函数(如memcpy、memset等)直接用于接头地址,以执行结构的完全操作。通过这个问题可以知道面试官的编程经验是否丰富。问题7:编写类String的构造函数、析构函数和赋值函数。已知类String的原型为class String public : String(constchar * str=null);/一般建构函式String(const String /复制建构函式 String(void);/析构函数String /赋值函数private: char * m _ data/用于存储字符串;答案:/一般建构函式string 3303603360 string(constchar * str) if(str=null) m _ data=new char1/评分点:自动申请空字符串的存储终止标志0 NULL/加分:m_data加NULL以确定* m _ data= 0; else int length=strlen(str);m _ data=new charlength 1;/如果可以添加空判断,则strcpy(m_data,str)更好。 /String的析构函数String 33603360 String(void) deletem _ data;/或delete m _ data/构造函数string 3363603360 string(const string m _ data=new charlength 1);/加分:将空值添加到m_data,以确认strcpy(m_data,other.m_data)。/指定函数String deletem _ data;/得分点:释放原始内存资源int length=strlen(other . m _ data);m _ data=new charlength 1;/加分:将空值添加到m_data,以确认strcpy(m_data,other.m_da

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论