
C语言面试题大汇总之华为面试题2.doc
6页16.谈谈 Windows DNA结构的特点和优点答:Windows Distributed interNet Application Architecture(Windows 分布式应用结构,简称 Windows DNA)是微软创建新一代高适应性商业解决方案的框架,它使公司能够充分地挖掘数字神经系统的优点Windows DNA 是第一个将 Internet、客户/服务器、和用于计算的 PC模型结合并集成在一起的为新一类分布式计算方案而设计的应用软件体系结构17. 网络编程中设计并发服务器,使用多进程与多线程,请问有什么区别?答:1)进程:子进程是父进程的复制品子进程获得父进程数据空间、堆和栈的复制品2)线程:相对与进程而言,线程是一个更加接近与执行体的概念,它可以与同进程的其他线程共享数据,但拥有自己的栈空间,拥有独立的执行序列两者都可以提高程序的并发度,提高程序运行效率和响应时间线程和进程在使用上各有优缺点:线程执行开销小,但不利于资源管理和保护;而进程正相反同时,线程适合于在 SMP机器上运行,而进程则可以跨机器迁移思科1. 用宏定义写出 swap(x,y)答#define swap(x, y)x = x + y;y = x - y;x = x - y;2.数组 a[N],存放了 1至 N-1个数,其中某个数重复一次。
写一个函数,找出被重复的数字.时间复杂度必须为 o(N)函数原型:int do_dup(int a[],int N)答:int do_dup(int a[],int N) //未经调试{int sun = 0;int sum2;for(int i=0;i>N==1);4.unsigned int intvert(unsigned int x,int p,int n)实现对 x的进行转换,p为起始转化位,n 为需要转换的长度,假设起始点在右边.如 x=0b0001 0001,p=4,n=3转换后 x=0b0110 0001答:unsigned int intvert(unsigned int x,int p,int n) //假定 p=4,n=3{unsigned int _t = 0;unsigned int _a = 1;for(int i = 0; i (Y)?(Y):(X)) //结尾没有;2、嵌入式系统中经常要用到无限循环,你怎么用 C编写死循环答:while(1){}或者 for(;;) //前面那个较好3、关键字 static的作用是什么?答:1)定义静态局部变量,作用域从函数开始到结束.2) 在模块内的 static函数只可被这一模块内的其它函数调用,这个函数的使用范围被限制在声明它的模块内;3) 在类中的 static成员变量属于整个类所拥有,对类的所有对象只有一份拷贝4、关键字 const有什么含意?答 :1)表示常量不可以修改的变量。
2)可以修饰参数,作为输入参数.3)修饰函数,防止以外的改动.4)修饰类的成员函数,不改变类中的数据成员.5、关键字 volatile有什么含意?并举出三个不同的例子?答: 提示编译器对象的值可能在编译器未监测到的情况下改变例子: 硬件时钟;多线程中被多个任务共享的变量等6. int (*s[10])(int) 表示的是什么啊int (*s[10])(int) 函数指针数组,每个指针指向一个 int func(int param)的函数1.有以下表达式:int a=248; b=4;int const c=21;const int *d=&a;int *const e=&b;int const *f const =&a;请问下列表达式哪些会被编译器禁止?为什么?答:*c=32;d=&b;*d=43;e=34;e=&a;f=0x321f;*c 这是个什么东东,禁止*d 说了是 const, 禁止e = &a 说了是 const 禁止const *f const =&a; 禁止2.交换两个变量的值,不使用第三个变量即 a=3,b=5,交换之后 a=5,b=3;答:有两种解法, 一种用算术算法, 一种用^(异或)a = a + b;b = a - b;a = a - b;ora = a^b;// 只能对 int,char..b = a^b;a = a^b;ora ^= b ^= a;3.c和 c++中的 struct有什么不同?答: c 和 c++中 struct的主要区别是 c中的 struct不可以含有成员函数,而 c++中的 struct可以。
c++中 struct和 class的主要区别在于默认的存取权限不同,struct默认为 public,而 class默认为 private.4.#include #include void getmemory(char *p){p=(char *) malloc(100);}int main( ){char *str=NULL;getmemory(str);strcpy(p,"hello world");printf("%s/n",str);free(str);return 0;}答: 程序崩溃,getmemory 中的 malloc 不能返回动态内存, free()对 str操作很危险5.char szstr[10];strcpy(szstr,"0123456789");产生什么结果?为什么?答;正常输出,长度不一样,会造成非法的 OS,覆盖别的内容.6.列举几种进程的同步机制,并比较其优缺点答:原子操作信号量机制自旋锁管程,会合,分布式系统7.进程之间通信的途径答 共享存储系统消息传递系统管道:以文件系统为基础。












