c语言面试题Word格式.docx
- 文档编号:19422179
- 上传时间:2023-01-06
- 格式:DOCX
- 页数:53
- 大小:47.58KB
c语言面试题Word格式.docx
《c语言面试题Word格式.docx》由会员分享,可在线阅读,更多相关《c语言面试题Word格式.docx(53页珍藏版)》请在冰豆网上搜索。
区别struct与union.(一般假定在32位机器上)
DATE是一个union,变量公用空间.里面最大的变量类型是int[5],占用20个字节.
所以它的大小是20.data是一个struct,每个变量分开占用空间.依次为int4+DATE20+
double8=32.所以结果是20+32=52.当然...在某些16位编辑器下,int可能是2
字节,那么结果是int2+DATE10+double8=20
5、写出下列代码的输出内容
intinc(inta)
{return(++a);
}
intmulti(int*a,int*b,int*c)
{return(*c=*a**b);
typedefint(FUNC1)(intin);
typedefint(FUNC2)(int*,int*,int*);
voidshow(FUNC2fun,intarg1,int*arg2)
FUNC1p=&
inc;
inttemp=p(arg1);
fun(&
temp,&
arg1,arg2);
%dn"
*arg2);
main()
inta;
//局部变量a为0;
show(multi,10,&
a);
110
6、请找出下面代码中的所有错误(题目不错,值得一看)
说明:
以下代码是把一个字符串倒序,如“abcd”倒序后变为“dcba”
#include"
string.h"
char*src="
hello,world"
;
char*dest=NULL;
intlen=strlen(src);
dest=(char*)malloc(len);
char*d=dest;
char*s=src[len];
while(len--!
=0)
d++=s--;
%s"
dest);
一共有4个错误;
intmain()
char*src="
intlen=strlen(src);
char*dest=(char*)malloc(len+1);
//要为分配一个空间char*d=dest;
char*s=&
src[len-1];
//指向最后一个字符
while(len--!
=0)
*d++=*s--;
*d=0;
//尾部要加’\0’
%sn"
free(dest);
//使用完,应当释放空间,以免造成内存汇泄露
dest=NULL;
//防止产生野指针
7.对于一个频繁使用的短小函数,在C语言中应用什么实现,在C++中应用什么实现?
c用宏定义,c++用inline
8.直接链接两个信令点的一组链路称作什么?
PPP点到点连接
13.接入网用的是什么接口?
V5接口
14.voip都用了那些协议?
H.323协议簇、SIP协议、Skype协议、H.248和MGCP协议
9.软件测试都有那些种类?
黑盒:
针对系统功能的测试
白盒:
测试函数功能,各函数接口
16.确定模块的功能和模块的接口是在软件设计的那个队段完成的?
概要设计阶段
10unsignedchar*p1;
unsignedlong*p2;
p1=(unsignedchar*)0x801000;
p2=(unsignedlong*)0x810000;
请问p1+5=;
p2+5=;
答案:
0x801005(相当于加上5位)0x810014(相当于加上20位);
选择题:
11Ethternet链接到Internet用到以下那个协议?
D
A.HDLC;
B.ARP;
C.UDP;
D.TCP;
E.ID
12.属于网络层协议的是:
(BC)
A.TCP;
B.IP;
C.ICMP;
D.X.25
13.Windows消息调度机制是:
(C)
A.指令队列;
B.指令堆栈;
C.消息队列;
D.消息堆栈;
找错题:
25.请问下面程序有什么错误?
inta[60][250][1000],i,j,k;
for(k=0;
kMax_GT_Length)
{returnGT_Length_ERROR;
}.......}
答:
死循环//
问答题:
14.IPPhone的原理是什么?
IP电话(又称IPPHONE或VoIP)是建立在IP技术上的分组化、数字化传输技术,其基
本原理是:
通过语音压缩算法对语音数据进行压缩编码处理,然后把这些语音数据按IP等相
关协议进行打包,经过IP网络把数据包传输到接收地,再把这些语音数据包串起来,经过解
码解压处理后,恢复成原来的语音信号,从而达到由IP网络传送语音的目的。
15TCP/IP通信建立的过程怎样,端口有什么作用?
三次握手,确定是哪个应用程序使用该协议
16、1号信令和7号信令有什么区别,我国某前广泛使用的是那一种?
1号信令接续慢,但是稳定,可靠。
7号信令的特点是:
信令速度快,具有提供大量信令的潜力,具有改变和增加信令的灵活
性,便于开放新业务,在通话时可以随意处理信令,成本低。
目前得到广泛应用。
32.列举5种以上的电话新业务
如“闹钟服务”、“免干扰服务”、“热线服务”、“转移呼叫”、“遇忙回叫”、“缺席
用户服务”、“追查恶意呼叫”、“三方通话”、“会议电话”、“呼出限制”、“来电显
示”、“虚拟网电话”等
四.找错题:
1.请问下面程序有什么错误?
k<
=1000;
k++)
for(j=0;
j<
250;
j++)
for(i=0;
i<
60;
i++)
a[i][j][k]=0;
把循环语句内外换一下
2.#defineMax_CB500
voidLmiQueryCSmd(StructMSgCB*pmsg)
unsignedcharucCmdNum;
......
for(ucCmdNum=0;
ucCmdNum<
Max_CB;
ucCmdNum++)
......;
死循环,unsignedint的取值范围是0~255
3.以下是求一个数的平方的程序,请找出错误:
#defineSQUARE(a)((a)*(a))
inta=5;
intb;
b=SQUARE(a++);
结果与编译器相关,得到的可能不是平方值.
微软亚洲技术中心的面试题!
!
1.进程和线程的差别。
线程是指进程内的一个执行单元,也是进程内的可调度实体.
与进程的区别:
(1)调度:
线程作为调度和分配的基本单位,进程作为拥有资源的基本单位
(2)并发性:
不仅进程之间可以并发执行,同一个进程的多个线程之间也可并发执行
(3)拥有资源:
进程是拥有资源的一个独立单位,线程不拥有系统资源,但可以访问隶属于
进程的资源.
(4)系统开销:
在创建或撤消进程时,由于系统都要为之分配和回收资源,导致系统的开销
明显大于创建或撤消线程时的开销。
2.测试方法
人工测试:
个人复查、抽查和会审
机器测试:
黑盒测试和白盒测试
3.Heap与stack的差别。
Heap是堆,stack是栈。
Stack的空间由操作系统自动分配/释放,Heap上的空间手动分配/释放。
Stack空间有限,Heap是很大的自由存储区
C中的malloc函数分配的内存空间即在堆上,C++中对应的是new操作符。
程序在编译期对变量和函数分配内存都在栈上进行,且程序运行过程中函数调用时参数的传
递也在栈上进行
4.Windows下的内存是如何管理的?
分页管理
8.谈谈IA32下的分页机制
小页(4K)两级分页模式,大页(4M)一级
9.给两个变量,如何找出一个带环单链表中是什么地方出现环的?
一个递增一,一个递增二,他们指向同一个接点时就是环出现的地方
10.在IA32中一共有多少种办法从用户态跳到内核态?
通过调用门,从ring3到ring0,中断从ring3到ring0,进入vm86等等
11.如果只想让程序有一个实例运行,不能运行两个。
像winamp一样,只能开一个窗口,
怎样实现?
用内存映射或全局原子(互斥变量)、查找窗口句柄..
FindWindow,互斥,写标志到文件或注册表,共享内存。
.
12.如何截取键盘的响应,让所有的'
a’变成'
b’?
键盘钩子SetWindowsHookEx
14.存储过程是什么?
有什么用?
有什么优点?
我的理解就是一堆sql的集合,可以建立非常复杂的查询,编译运行,所以运行一次后,
以后再运行速度比单独执行SQL快很多
15.Template有什么特点?
什么时候用?
Template可以独立于任何特定的类型编写代码,是泛型编程的基础.
当我们编写的类和函数能够多态的用于跨越编译时不相关的类型时,用Template.
模板主要用于STL中的容器,算法,迭代器等以及模板元编程.
(C++的template是实现在库设计和嵌入式设计中的关键。
template能实现抽象和效率的结合;
同时template还能有效地防止代码膨胀)
16.谈谈WindowsDNA结构的特点和优点。
WindowsDistributedinterNetApplicationArchitecture(Windows分布式应用结构,
简称WindowsDNA)是微软创建新一代高适应性商业解决方案的框架,它使公司能够充分地
挖掘数字神经系统的优点。
WindowsDNA是第一个将Internet、客户/服务器、和用于计算
的PC模型结合并集成在一起的为新一类分布式计算方案而设计的应用软件体系结构
17.网络编程中设计并发服务器,使用多进程与多线程,请问有什么区别?
1)进程:
子进程是父进程的复制品。
子进程获得父进程数据空间、堆和栈的复制品。
2)线程:
相对与进程而言,线程是一个更加接近与执行体的概念,它可以与同进程的其
他线程共享数据,但拥有自己的栈空间,拥有独立的执行序列。
两者都可以提高程序的并发度,提高程序运行效率和响应时间。
线程和进程在使用上各有优缺点:
线程执行开销小,但不利于资源管理和保护;
而进程正相
反。
同时,线程适合于在SMP机器上运行,而进程则可以跨机器迁移。
思科
1.用宏定义写出swap(x,y)
答#defineswap(x,y)
x=x+y;
y=x-y;
x=x-y;
2.数组a[N],存放了1至N-1个数,其中某个数重复一次。
写一个函数,找出被重复的数
字.时间复杂度必须为o(N)函数原型:
intdo_dup(inta[],intN)
intdo_dup(inta[],intN)//未经调试
intsun=0;
intsum2;
for(inti=0;
N;
++i)
Sum+=a[i];
Sum2=(1+N-1)*N/2;
Return(sum-sum2);
3一语句实现x是否为2的若干次幂的判断
方法1)inti=512;
cout<
<
boolalpha<
((i&
(i-1))?
false:
true)<
endl;
//位与为0,则表示是
2的若干次幂
2)return(x>
>
N==1);
4.unsignedintintvert(unsignedintx,intp,intn)实现对x的进行转换,p为起始转
化位,n为需要转换的长度,假设起始点在右边.如x=0b00010001,p=4,n=3转换后x=0b0110
0001
unsignedintintvert(unsignedintx,intp,intn)//假定p=4,n=3
unsignedint_t=0;
unsignedint_a=1;
for(inti=0;
i<
n;
++i)//循环的目的主要是-t
_t|=_a;
//位或
_a=_a<
1;
_t=_t<
p;
//转换后_t变为1110000
x^=_t;
/异或,将原来的位取反
returnx;
1、写一个“标准”宏,这个宏输入两个参数并返回较小的一个。
#defineMin(X,Y)((X)>
(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)函数指针数组,每个指针指向一个intfunc(intparam)的函数。
1.有以下表达式:
inta=248;
b=4;
intconstc=21;
constint*d=&
a;
int*conste=&
b;
intconst*fconst=&
请问下列表达式哪些会被编译器禁止?
为什么?
*c=32;
d=&
*d=43;
e=34;
e=&
f=0x321f;
*c这是个什么东东,禁止
*d说了是const,禁止
e=&
a说了是const禁止
const*fconst=&
禁止
2.交换两个变量的值,不使用第三个变量。
即a=3,b=5,交换之后a=5,b=3;
有两种解法,一种用算术算法,一种用^(异或)
a=a+b;
b=a-b;
a=a-b;
or
a=a^b;
//只能对int,char..
b=a^b;
a^=b^=a;
3.c和c++中的struct有什么不同?
c和c++中struct的主要区别是c中的struct不可以含有成员函数,而c++中的struct
可以。
c++中struct和class的主要区别在于默认的存取权限不同,struct默认为public,
而class默认为private.
4.#include<
stdlib.h>
voidgetmemory(char*p)
p=(char*)malloc(100);
intmain()
char*str=NULL;
getmemory(str);
strcpy(p,"
helloworld"
);
%s/n"
str);
free(str);
程序崩溃,getmemory中的malloc不能返回动态内存,free()对str操作很危险
5.charszstr[10];
strcpy(szstr,"
0123456789"
产生什么结果?
答;
正常输出,长度不一样,会造成非法的OS,覆盖别的内容.
6.列举几种进程的同步机制,并比较其优缺点。
原子操作
信号量机制
自旋锁
管程,会合,分布式系统
7.进程之间通信的途径
答共享存储系统
消息传递系统
管道:
以文件系统为基础
————即使你是个编程高手,你在面试前也应该要看看这套题,她也许会给你带来好运,
否则你有可能后悔当初为什么没有看而跳楼自杀,这样我会很内疚的。
这套题看似简单,但
你未必能得高分,即使你看不懂也要把她背下来!
欢迎转载此文,转载时请注明文章来源:
文斯测试技术研究中心
1编程基础
1.1基本概念
1.const的理解:
constchar*,charconst*,char*const的区别问题几乎是C++面试中
每次都会有的题目。
事实上这个概念谁都有只是三种声明方式非常相似很容易记混。
Bjarne在他的TheC++ProgrammingLanguage里面给出过一个助记的方法:
把一个声明
从右向左读。
char*constcp;
(*读成pointerto)
cpisaconstpointertochar
constchar*p;
pisapointertoconstchar;
charconst*p;
同上因为C++里面没有const*的运算符,所以const只能属于前面的类型。
2.c指针
int*p[n];
-----指针数组,每个元素均为指向整型数据的指针。
int(*p)[n];
------p为指向一维数组的指针,这个一维数组有n个整型数据。
int*p();
----------函数带回指针,指针指向返回的值。
int(*p)();
------p为指向函数的指针。
3.数组越界问题(这个题目还是有点小险的)
下面这个程序执行后会有什么错误或者效果:
#defineMAX255
unsignedcharA[MAX],i;
for(i=0;
=MAX;
A[i]=i;
解答:
MAX=255,数组A的下标范围为:
0..MAX-1,这是其一,其二当i循环到255时,循环内
执行:
A[255]=255;
这句本身没有问题,但是返回for(i=0;
i++)语句时,由于
unsignedchar的取值范围在(0..255),i++以后i又为0了..无限循环下去.
注:
char类型为一个字节,取值范围是[-128,127],unsignedchar[0,255]
4.C++:
memset,memcpy和strcpy的根本区别?
#include"
memory.h"
memset用来对一段内存空间全部设置为某个字符,一般用在对定义的字符串进行初始化为'
'
或'
;
例:
chara[100];
memset(a,'
sizeof(a));
memcpy用来做内存拷贝,你可以拿它拷贝任何数据类型的对象,可以指定拷贝的数据长度;
例:
chara[100],b[50];
memcpy(b,a,sizeof(b));
注意如用sizeof(a),会造成b的内
存地址溢出。
strcpy就只能拷贝字符串了,它遇到'
\0'
就结束拷贝;
例:
chara[100],b[50];
strcpy(a,b);
如用strcpy(b,a),要注意a中的字符串长度(第一个'
之前)是否超过50位,如超过,
则会造成b的内存地址溢出。
strcpy
原型:
externchar*strcpy(char*dest,char*src);
ASSERT((dest!
=NULL)&
&
(src!
=NULL));
Char*address=dest;
While((*dest++=*src++)!
=’\0’)
Continue;
Returndest;
用法:
string.h>
功能:
把src所指由NULL结束的字符串复制到dest所指的数组中。
src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。
返回指向dest的指针。
memcpy
externvoid*memcpy(void*dest,void*src,unsignedintcount);
ASSERT((dest>
src+count)||(src>
dest+count));
//防止内存重叠,也可以用
restrict修饰指针
Byte
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 试题
![提示](https://static.bdocx.com/images/bang_tan.gif)