《华为C++笔试题.doc》由会员分享,可在线阅读,更多相关《华为C++笔试题.doc(28页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、#+1.static有什么用途?(请至少说明两种) 1)在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。 2) 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。 3) 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用2.引用与指针有什么区别? 1) 引用必须被初始化,指针不必。 2) 引用初始化以后不能被改变,指针可以改变所指的对象。 3) 不存在指向空值的引用,但是存在指向空值的指针。3.描述实时系统的基本特性 在特定时间内完成
2、特定的任务,实时性与可靠性。4.全局变量和局部变量在内存中是否有区别?如果有,是什么区别? 全局变量储存在静态数据库,局部变量在堆栈。5.什么是平衡二叉树? 左右子树都是平衡二叉树 且左右子树的深度差值的绝对值不大于1。6.堆栈溢出一般是由什么原因导致的? 没有回收垃圾资源。7.什么函数不能声明为虚函数? constructor函数不能声明为虚函数。8.冒泡排序算法的时间复杂度是什么? 时间复杂度是O(n2)。9.写出float x 与“零值”比较的if语句。 if(x0.000001&x-0.000001)10.Internet采用哪种网络协议?该协议的主要层次结构? Tcp/Ip协议 主要
3、层次结构为: 应用层/传输层/网络层/数据链路层/物理层。11.Internet物理地址和IP地址转换采用什么协议? ARP (Address Resolution Protocol)(地址解析協議)12.IP地址的编码分为哪俩部分? IP地址由两部分组成,网络号和主机号。不过是要和“子网掩码”按位与上之后才能区分哪些是网络位哪些是主机位。13.用户输入M,N值,从1至N开始顺序循环数数,每数到M输出该数值,直至全部输出。写出C程序。 循环链表,用取余操作做14.不能做switch()的参数类型是: switch的参数不能为实型。1. 以下三条输出语句分别输出什么?C易char str1 =
4、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; / 输出什么?文章出自http:/ 非C+内建型别 A 和 B,在哪几种情况下B能隐式转化为A?C+中等答:a. class B : pu
5、blic 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; isizeof(str)/siz
6、eof(str0); +I ) if( a=stri & stri=z ) stri -= (a-A );char str = aBcDe;cout str字符长度为: sizeof(str)/sizeof(str0) endl;UpperCase( str );cout str 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; istrlen(str); +I ) char2Hex( stri );cout e
7、ndl;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) 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
8、obj.m_i endl;9. C+中的空类,默认产生哪些类成员函数?C+易答:class Emptypublic: 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
9、(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 ) =0; -I ) / 反向遍历array数组 cout arrayi endl;12. 以下代码有什么问题?STL易typedef vector IntArray;IntArray array;array.push_back( 1 );array.push_back( 2 );array.push_ba
10、ck( 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( dest ); const char* psrc = stati
11、c_cast( src ); if( pdestpsrc & pdestpsrc+cout ) 能考虑到这种情况就行了 for( size_t i=count-1; i!=-1; -I ) pdesti = psrci; else for( size_t i=0; icount; +I ) pdesti = psrci; return dest;int main( void ) char str = 0123456789; mymemcpy( str+1, str+0, 9 ); cout str = - EPSINON) & (x =”或“next = NULL; p=h; for(i=0;
12、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 reco
13、rd 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 %dn,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
14、);printf(Please input the age:n);scanf(%d,&age);deletelist(s,age);display(s); return 0;2、实现一个函数,把一个字符串中的字符从小写转为大写。 程序代码I nclude stdio.hI nclude conio.hvoid 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 ss20; printf(Please i
15、nput a string:n); scanf(%s,ss); s = ss; uppers(s,us); printf(The result is:n%sn,us); getch();1进程和线程的差别。2.测试方法 3Heap与stack的差别。4Windows下的内存是如何管理的?5介绍.Net和.Net的安全性。6客户端如何访问.Net组件实现Web Service?7C/C+编译器中虚表是如何完成的?8谈谈COM的线程模型。然后讨论进程内/外组件的差别。9谈谈IA32下的分页机制10给两个变量,如何找出一个带环单链表中是什么地方出现环的?11在IA32中一共有多少种办法从用户态跳到内核态?12如果只想让程序有一个实例运行,不能运行两个。像winamp一样,只能开一个窗口,怎样实现?13如何截取键盘的响应,让所有的a变成b?14Apartment在COM中有什么用?为什么要引入?15存储过程是什么?有什么用?有什么优点?16Template有什么特点?什么时候用?17谈谈Windows DNA结构的特点和优点。18.网络编程中设计并发服务器,使用多进程与多线程 ,请问有什么区别?