本站首页    管理页面    写新日志    退出


«October 2020»
123
45678910
11121314151617
18192021222324
25262728293031


公告

Work is not about right or wrong, it is about success or failure.


我的分类(专题)

日志更新

最新评论

留言板

链接

Blog信息
blog名称:ilife8
日志总数:151
评论数量:182
留言数量:7
访问次数:835015
建立时间:2007年9月12日




[面试问题]C/C++笔试题
软件技术,  职业生涯

Tintin 发表于 2007/9/22 19:08:21

1. 以下三条输出语句分别输出什么?[C易]char str1[] = "abc";char str2[] = "abc";const char str3[] = "abc"; const char str4[] = "abc"; const char* str5 = "abc";const char* str6 = "abc";cout << boolalpha << ( str1==str2 ) << endl; // 输出什么?cout << boolalpha << ( str3==str4 ) << endl; // 输出什么?cout << boolalpha << ( str5==str6 ) << endl; // 输出什么? 2. 非C++内建型别 A 和 B,在哪几种情况下B能隐式转化为A?[C++中等试题]答:a. class B : public A { ……} // B公有继承自A,可以是间接继承的b. class B { operator A( ); } // B实现了隐式转化为A的转化c. class A { A( const B& ); } // A实现了non-explicit的参数为B(可以有其他带默认值的参数)构造函数d. A& operator= ( const A& ); // 赋值操作,虽不是正宗的隐式类型转换,但也可以勉强算一个 3. 以下代码中的两个sizeof用法有问题吗?[C易]void UpperCase( char str[] ) // 将 str 中的小写字母转换成大写字母{for( size_t i=0; i<sizeof(str)/sizeof(str[0]); ++i )if( 'a'<=str[i] && str[i]<='z' )str[i] -= ('a'-'A' );}char str[] = "aBcDe";cout << "str字符长度为: " << sizeof(str)/sizeof(str[0]) << endl;UpperCase( str );cout << str << endl; 4. 以下代码有什么问题?[C难]void char2Hex( char c ) // 将字符以16进制表示{char ch = c/0x10 + '0'; if( ch > '9' ) ch += ('A'-'9'-1);char cl = c%0x10 + '0'; if( cl > '9' ) cl += ('A'-'9'-1);cout << ch << cl << ' ';}char str[] = "I love 中国";for( size_t i=0; i<strlen(str); ++i )char2Hex( str[i] );cout << endl; 5. 以下代码有什么问题?[C++易]struct Test{Test( int ) {}Test() {}void fun() {}};void main( void ){Test a(1);a.fun();Test b();b.fun();} 6. 以下代码有什么问题?[C++易]cout << (true?1:"1") << endl; 7. 以下代码能够编译通过吗,为什么?[C++易]unsigned int const size1 = 2;char str1[ size1 ];unsigned int temp = 0;cin >> temp;unsigned int const size2 = temp;char str2[ size2 ]; 8. 以下代码中的输出语句输出0吗,为什么?[C++易]struct CLS{int m_i;CLS( int i ) : m_i(i) {}CLS(){CLS(0);}};CLS obj;cout << obj.m_i << endl; 9. C++中的空类,默认产生哪些类成员函数?[C++易]答:class Empty{public:Empty(); // 缺省构造函数Empty( const Empty& ); // 拷贝构造函数~Empty(); // 析构函数Empty& operator=( const Empty& ); // 赋值运算符Empty* operator&(); // 取址运算符const Empty* operator&() const; // 取址运算符 const}; 10. 以下两条输出语句分别输出什么?[C++难]float a = 1.0f;cout << (int)a << endl;cout << (int&)a << endl;cout << boolalpha << ( (int)a == (int&)a ) << endl; // 输出什么?float b = 0.0f;cout << (int)b << endl;cout << (int&)b << endl;cout << boolalpha << ( (int)b == (int&)b ) << endl; // 输出什么? 11. 以下反向遍历array数组的方法有什么错误?[STL易]vector array;array.push_back( 1 );array.push_back( 2 );array.push_back( 3 );for( vector::size_type i=array.size()-1; i>=0; --i ) // 反向遍历array数组{cout << array[i] << endl;} 12. 以下代码有什么问题?[STL易]typedef vector IntArray;IntArray array;array.push_back( 1 );array.push_back( 2 );array.push_back( 2 );array.push_back( 3 );// 删除array数组中所有的2for( IntArray::iterator itor=array.begin(); itor!=array.end(); ++itor ){if( 2 == *itor ) array.erase( itor );} 13. 写一个函数,完成内存之间的拷贝。[考虑问题是否全面]答:void* mymemcpy( void *dest, const void *src, size_t count ){char* pdest = static_cast<char*>( dest );const char* psrc = static_cast<const char*>( src );if( pdest>psrc && pdest<psrc+cout ) 能考虑到这种情况就行了{for( size_t i=count-1; i!=-1; --i )pdest[i] = psrc[i];}else{for( size_t i=0; i<count; ++i )pdest[i] = psrc[i];}return dest;}int main( void ){char str[] = "0123456789";mymemcpy( str+1, str+0, 9 );cout << str << endl; system( "Pause" );return 0;}   本试题仅用于考查C++/C程序员的基本编程技能。内容限于C++/C常用语法,不涉及数据结构、算法以及深奥的语法。考试成绩能反映出考生的编程质量以及对C++/C的理解程度,但不能反映考生的智力和软件开发能力。笔试时间90分钟。请考生认真答题,切勿轻视。 一、请填写BOOL , float, 指针变量 与“零值”比较的 if 语句。(10分) 提示:这里“零值”可以是0, 0.0 , FALSE或者“空指针”。例如 int 变量 n 与“零值”比较的 if 语句为: if ( n == 0 )if ( n != 0 )以此类推。 请写出 BOOL flag 与“零值”比较的 if 语句:请写出 float x 与“零值”比较的 if 语句:请写出 char *p 与“零值”比较的 if 语句: 二、以下为Windows NT下的32位C++程序,请计算sizeof的值(10分)char str[] = “Hello” ;char *p = str ;int n = 10;请计算sizeof (str ) = sizeof ( p ) = sizeof ( n ) =void Func ( char str[100]){请计算sizeof( str ) = } void *p = malloc( 100 );请计算sizeof ( p ) = 三、简答题(25分)1、头文件中的 ifndef/define/endif 干什么用?2、#include 和 #include “filename.h” 有什么区别?3、const 有什么用途?(请至少说明两种)4、在C++ 程序中调用被 C编译器编译后的函数,为什么要加 extern “C”声明?5、请简述以下两个for循环的优缺点// 第一个for (i=0; i++;){if (condition)DoSomething();elseDoOtherthing();}// 第二个 if (condition){for (i=0; i++;)DoSomething();}else{for (i=0; i++;)DoOtherthing();} 优点:缺点:优点:缺点: 四、有关内存的思考题(20分)void GetMemory(char *p){p = (char *)malloc(100);} void Test(void) {char *str = NULL;GetMemory(str); strcpy(str, "hello world");printf(str);} 请问运行Test函数会有什么样的结果? 答:char *GetMemory(void){ char p[] = "hello world";return p;} void Test(void){char *str = NULL;str = GetMemory(); printf(str);} 请问运行Test函数会有什么样的结果?答:Void GetMemory2(char **p, int num){*p = (char *)malloc(num);} void Test(void){char *str = NULL;GetMemory(&str, 100);strcpy(str, "hello"); printf(str); } 请问运行Test函数会有什么样的结果? 答:void Test(void){char *str = (char *) malloc(100);strcpy(str, “hello”);free(str); if(str != NULL){strcpy(str, “world”); printf(str);}} 请问运行Test函数会有什么样的结果? 答: 五、编写strcpy函数(10分)已知strcpy函数的原型是char *strcpy(char *strDest, const char *strSrc);其中strDest是目的字符串,strSrc是源字符串。(1)不调用C++/C的字符串库函数,请编写函数 strcpy(2)strcpy能把strSrc的内容复制到strDest,为什么还要char * 类型的返回值? 六、编写类String的构造函数、析构函数和赋值函数(25分)已知类String的原型为:class String{public:String(const char *str = NULL); // 普通构造函数String(const String &other); // 拷贝构造函数~ String(void); // 析构函数String & operate =(const String &other); // 赋值函数 private:char *m_data; // 用于保存字符串}; 请编写String的上述4个函数。 附录C :C++/C试题的答案与评分标准一、请填写BOOL , float, 指针变量 与“零值”比较的 if 语句。(10分) 请写出 BOOL flag 与“零值”比较的 if 语句。(3分) 标准答案:if ( flag )if ( !flag )如下写法均属不良风格,不得分。 if (flag == TRUE) if (flag == 1 ) if (flag == FALSE) if (flag == 0) 请写出 float x 与“零值”比较的 if 语句。(4分) 标准答案示例: const float EPSINON = 0.00001;if ((x >= - EPSINON) && (x <= EPSINON)不可将浮点变量用“==”或“!=”与数字比较,应该设法转化成“>=”或“<=”此类形式。 如下是错误的写法,不得分。 if (x == 0.0) if (x != 0.0)   请写出 char *p 与“零值”比较的 if 语句。(3分) 标准答案: if (p == NULL)if (p != NULL)如下写法均属不良风格,不得分。 if (p == 0) if (p != 0) if (p) if (!) 二、以下为Windows NT下的32位C++程序,请计算sizeof的值(10分)char str[] = “Hello” ;char *p = str ;int n = 10;请计算sizeof (str ) = 6 (2分) sizeof ( p ) = 4 (2分)sizeof ( n ) = 4 (2分)void Func ( char str[100]){请计算sizeof( str ) = 4 (2分)} void *p = malloc( 100 );请计算sizeof ( p ) = 4 (2分) 三、简答题(25分)1、头文件中的 ifndef/define/endif 干什么用?(5分)答:防止该头文件被重复引用。 2、#include 和 #include “filename.h” 有什么区别?(5分)   华为的C\C++面试题 : Q1:请你分别划划OSI的七层网络结构图,和TCP/IP的五层结构图? : Q2:请你详细的解释一下IP协议的定义,在哪个层上面,主要有什么作用? : TCP与UDP呢? : 总得来说前面两道题目还是比较简单的! : Q3:请问交换机和路由器分别的实现原理是什么?分别在哪个层次上面实 : 现的? : Q4:请问C++的类和C里面的struct有什么区别? : Q5:请讲一讲析构函数和虚函数的用法和作用? : Q6:全局变量和局部变量有什么区别?实怎么实现的?操作系统和编译器 : 是怎么知道的? : Q7:一些寄存器的题目,我忘记了具体实什么题目,主要好像是寻址和内 : 存管理等一些知识,不记得了。 : Q8:8086是多少尉的系统?在数据总线上是怎么实现的?还有一些硬件方 : 面的知识我既不清楚了。 : 一般建议参加华为的研发面试的同学先要准备一下相关的知识,软件的主要 : 是看看C和数据结构方面的,硬件模电,数电和微机原理 两道c面试题 1、一个学生的信息是:姓名,学号,性别,年龄等信息,用一个链表,把这些学生信息连在一起, 给出一个age, 在些链表中删除学生年龄等于age的学生信息。 程序代码 #i nclude "stdio.h"#i nclude "conio.h" struct stu{char name[20];char sex;int no;int age;struct stu * next;}*linklist;struct stu *creatlist(int n){int i;//h为头结点,p为前一结点,s为当前结点struct stu *h,*p,*s;h = (struct stu *)malloc(sizeof(struct stu));h->next = NULL;p=h;for(i=0;i<n;i++){ s = (struct stu *)malloc(sizeof(struct stu));p->next = s;printf("Please input the information of the student: name sex no age \n");scanf("%s %c %d %d",s->name,&s->sex,&s->no,&s->age);s->next = NULL;p = s;}printf("Create successful!");return(h);}void deletelist(struct stu *s,int a){struct stu *p;while(s->age!=a){p = s;s = s->next;}if(s==NULL)printf("The record is not exist.");else{p->next = s->next;printf("Delete successful!");}}void display(struct stu *s){s = s->next;while(s!=NULL){printf("%s %c %d %d\n",s->name,s->sex,s->no,s->age);s = s->next;}}int main(){struct stu *s;int n,age;printf("Please input the length of seqlist:\n");scanf("%d",&n);s = creatlist(n);display(s);printf("Please input the age:\n");scanf("%d",&age);deletelist(s,age);display(s);return 0;} 2、实现一个函数,把一个字符串中的字符从小写转为大写。  程序代码#i nclude "stdio.h"#i nclude "conio.h" void uppers(char *s,char *us){for(;*s!='\0';s++,us++){if(*s>='a'&&*s<='z')*us = *s-32;else*us = *s;}*us = '\0';}int main(){char *s,*us;char ss[20];printf("Please input a string:\n");scanf("%s",ss);s = ss;uppers(s,us);printf("The result is:\n%s\n",us);getch();} C/C++面试题大汇总之微软亚洲技术中心面试题1.进程和线程的差别。2.测试方法 3.Heap与stack的差别。4.Windows下的内存是如何管理的?5.介绍.Net和.Net的安全性。6.客户端如何访问.Net组件实现Web Service?7.C/C++编译器中虚表是如何完成的?8.谈谈COM的线程模型。然后讨论进程内/外组件的差别。9.谈谈IA32下的分页机制10.给两个变量,如何找出一个带环单链表中是什么地方出现环的?11.在IA32中一共有多少种办法从用户态跳到内核态?12.如果只想让程序有一个实例运行,不能运行两个。像winamp一样,只能开一个窗口,怎样实现?13.如何截取键盘的响应,让所有的'a’变成'b’?14.Apartment在COM中有什么用?为什么要引入?15.存储过程是什么?有什么用?有什么优点?16.Template有什么特点?什么时候用?17.谈谈Windows DNA结构的特点和优点。18.网络编程中设计并发服务器,使用多进程与多线程 ,请问有什么区别? 软件外企C++面试题 C\C++面试题集1.What is achieved by prefixing the 'static' keyword to a file-level function or file-level variable declaration? 2.Describe the difference between the “IS A” and “HAS A” object relationships. Which is the stronger relationship and why? 3.Java & C# support interfaces directly with the “interface” keyword.C++ does not have an “interface” keyword.How do you create an interface in C++?Where/when is the use of interfaces especially helpful? 4.If a program requires a large number of execution contexts what can be done to minimise thread scheduling overhead?5. What does it mean to say that a function is reentrant? What are some of the ways of achieving re-entrancy? c语言面试题2道(华为) C++面试题更新1、一个学生的信息是:姓名,学号,性别,年龄等信息,用一个链表,把这些学生信息连在一起, 给出一个age, 在些链表中删除学生年龄等于age的学生信息。#include "stdio.h"#include "conio.h"struct stu{char name[20];char sex;int no;int age;struct stu * next;}*linklist;struct stu *creatlist(int n){int i;//h为头结点,p为前一结点,s为当前结点struct stu *h,*p,*s;h = (struct stu *)malloc(sizeof(struct stu));h->next = NULL;p=h;for(i=0;inext = s;printf("Please input the information of the student: name sex no age \n");scanf("%s %c %d %d",s->name,&s->sex,&s->no,&s->age);s->next = NULL;p = s;}printf("Create successful!");return(h);}void deletelist(struct stu *s,int a){struct stu *p;while(s->age!=a){p = s;s = s->next;}if(s==NULL)printf("The record is not exist.");else{p->next = s->next;printf("Delete successful!");}}void display(struct stu *s){s = s->next;while(s!=NULL){printf("%s %c %d %d\n",s->name,s->sex,s->no,s->age);s = s->next;}}int main(){struct stu *s;int n,age;printf("Please input the length of seqlist:\n");scanf("%d",&n);s = creatlist(n);display(s);printf("Please input the age:\n");scanf("%d",&age);deletelist(s,age);display(s);return 0;}2、实现一个函数,把一个字符串中的字符从小写转为大写。#include "stdio.h"#include "conio.h"void uppers(char *s,char *us){for(;*s!='\0';s++,us++){if(*s>='a'&&*s<='z')*us = *s-32;else*us = *s;}*us = '\0';}int main(){char *s,*us;char ss[20];printf("Please input a string:\n");scanf("%s",ss);s = ss;uppers(s,us);printf("The result is:\n%s\n",us);getch();} 一道C语言的面试题 unsigned long val;char a=0x96;char b=0x81; val= b<<8 | a; 问val=___? 0x8196或0xffffff96。取决于编译器把char默认为无符号还是有符号。字节作移位或算术一般定义为unsigned char 摩托罗拉部分C++面试题我大体记得这些,有些问题是我回答之后引出的,北京这边各个部门不同会有差异,但大体这个意思1.介绍一下STL,详细说明STL如何实现vector。2.如果用VC开发程序,常见这么几个错误,C2001,c2005,c2011,这些错误的原因是什么。3.继承和委派有什么分别,在决定使用继承或者委派的时候需要考虑什么。4.指针和引用有什么分别;如果传引用比传指针安全,为什么?如果我使用常量指针难道不行吗?5.参数传递有几种方式;实现多态参数传递采用什么方式,如果没有使用某种方式原因是什么;6.结合一个项目说明你怎样应用设计模式的理念。7.介绍一下你对设计模式的理解。(这个过程中有很多很细节的问题随机问的)8.C++和C定义结构的分别是什么。9.构造函数可否是虚汗数,为什么?析构函数呢,可否是纯虚的呢?10,拷贝构造函数相关问题,深拷贝,浅拷贝,临时对象等。11.结合1个你认为比较能体现OOP思想的项目,用UML来描述。(最好这个项目继承,多态,虚函数都有体现)这个问题大概会占面试时间的一半,并且会问很多问题,一不小心可能会被问住)。12。基类的有1个虚函数,子类还需要申明为virtual吗?为什么。13.C也可以通过精心封装某些函数功能实现重用,那C++的类有什么优点吗,难道仅仅是为实现重用。14.C++特点是什么,如何实现多态?画出基类和子类在内存中的相互关系。15.为什么要引入抽象基类和纯虚函数?16.介绍一下模板和包容器。如何实现?(也许会让你当场举例实现)17.你如何理解MVC。简单举例来说明其应用。18,多重继承如何消除向上继承的二义性。


阅读全文(3536) | 回复(1) | 编辑 | 精华
 


回复:C/C++笔试题
软件技术,  职业生涯

11(游客)发表评论于2007/10/22 9:34:41

hao 


个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除
 


» 1 »

发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)



站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.047 second(s), page refreshed 144474424 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号