C++笔试.docx
- 文档编号:30720036
- 上传时间:2023-08-19
- 格式:DOCX
- 页数:33
- 大小:31.25KB
C++笔试.docx
《C++笔试.docx》由会员分享,可在线阅读,更多相关《C++笔试.docx(33页珍藏版)》请在冰豆网上搜索。
C++笔试
大唐电信
DTT笔试题
考试时间一小时,第一部分是填空和选择:
1.数列6,10,18,32,“?
”,问“?
”是几?
2.某人出70买进一个x,80卖出,90买回,100卖出,这桩买卖怎么样?
3.月球绕地球一圈,至少要多少时间?
4.7个人用7小时挖了7米的沟,以同样的速度在50小时挖50米的沟要多少人?
5.鱼头长9,鱼尾等于鱼头加半个鱼身,鱼身等于鱼头加鱼尾,问鱼全长多少?
6.一个小姐买了一块手表,回家发现手表比她家的表慢了两分钟,晚上看新闻的时候
又发现她家的表比新闻里的时间慢了两分钟,则。
A手表和新闻里的时间一样
B手表比新闻里的时间慢
C手表比新闻里的时间快
7.王先生看到一则招聘启事,发现两个公司除了以下条件不同外,其他条件都相同
A半年年薪50万,每半年涨5万
B一年年薪100万,每一年涨20万
王先生想去一家待遇比较优厚的公司,他会去哪家?
10.问哪个袋子里有金子?
A袋子上的标签是这样写的:
B袋子上的话是对的,金子在A袋子。
B袋子上的标签是这样写的:
A袋子上的话是错的,金子在A袋子里。
11.3个人住酒店30块钱,经理找回5块钱,服务生从中藏了2块钱,找给每人1块钱,
1)+2=29,问这是怎么回事?
3×(10
12.三篇写作,均为书信形式。
(1)一片中文的祝贺信,祝贺某男当了某公司xx
(2)两篇英文的,一是说有事不能应邀,派别人去;另一篇是讨债的,7天不给钱就
走人(主要考businessletter格式)。
大唐面试试题
1.什么是中断?
中断发生时CPU做什么工作?
CPU工作方法分为中断模式和查询模式.
查询模式就是说CPU轮翻的对外设顺序访问,比方说它先看看键盘有没被按下有的话处理,没的话继续往下看鼠标有没有移动再看看打印机印的怎么样了,再看...等等..显然查询方式的效率低.但稳定可靠.
中断模式时就是说CPU不主动访问这些设备,,只管处理自己的任务,没任务就闲着.也就是说在那等着.如果有设备要与CPU联系,或要CPU处理一些事情,他会给CPU发一个中断请求信号.一种情况是这时CPU就会放下正在进行的工作而去处理这个外设的要求.这叫做响应中断.处理完中断后,CPU返回去继续执行中断以前的工作.还有一种情况如果CPU这时正在做更重要的事情他就会让这个设备先在那等着.有空时响应他.如果同时有好几个设备都要CPU来处理,CPU就会从按重要程度来逐个处理.这就是中断和中断的优先级.
2.CPU在上电后,进入操作系统的main()之前必须做什么工作?
过程如下:
bios自举:
检查硬件等
读取MBR
转到MBR执行它的代码,它会检测活动分区
把活动分区的引导扇区的引导代码装入内存
运行引导代码
引导代码装入该分区的操作系统
也就是进入main()(当然不一定叫main,如linux下叫start_kernel)执行一系列的初始化,然后最终启动登录界面
实现启动过程
3.简述ISOOSI的物理层Layer1,链路层Layer2,网络层Layer3的任务。
4.有线电话和无线电话有何区别?
无线电话特别需要注意的是什么?
63.软件开发五个主要step是什么?
最佳答案
需求分析,系统设计,系统编码。
测试运行,升级维护
17
6.你在开发软件的时候,这5个step分别占用的时间百分比是多少?
7.makefile文件的作用是什么?
8.UNIX显示文件夹中,文件名的命令是什么?
能使文件内容显示在屏幕的命令是什么
?
9.(选做)手机用户在从一个基站漫游到另一个基站的过程中,都会发生什么?
函数名:
memcpy
功能:
从源source中拷贝n个字节到目标destin中
用法:
void*memcpy(void*destin,void*source,unsignedn);
程序例:
#include
#include
intmain(void)
{
charsrc[]="******************************";
chardest[]="abcdefghijlkmnopqrstuvwxyz0123456709";
char*ptr;
printf("destinationbeforememcpy:
%s\n",dest);
ptr=memcpy(dest,src,strlen(src));
if(ptr)
printf("destinationaftermemcpy:
%s\n",dest);
else
printf("memcpyfailed\n");
return0;
}
2原型是externvoid*memset(void*buffer,intc,intcount)
buffer为指针或是数组,c是赋给buffer的值,count是buffer的长度.
这个函数在socket中多用于清空数组.
如:
原型是memset(buffer,0,sizeof(buffer))
3strcpy函数的功能和实现函数
2009-12-2212:
56
原型:
externchar*strcpy(char*dest,char*src);
用法:
#include
功能:
把src所指由NULL结束的字符串复制到dest所指的数组中。
说明:
src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。
返回指向dest的指针。
给一个很经典版本的strcpy函数源码:
char*strcpy(char*strDest,constchar*strSrc);
{
assert((strDest!
=NULL)&&(strSrc!
=NULL));//对源地址和目的的非零断言
char*address=strDest;
while((*strDest++=*strSrc++)!
=‘\0’)
returnaddress;//为了实现链式操作,实现目的地址的返回
}
在拷贝时,要考虑到"\0"字节,这个是字符串结尾字符。
返回值:
what‘sthereason?
char sz0[100] = "liu_feng_fly";
char sz1[100];
char sz2[100];
strcpy(sz2,strcpy(sz1,sz0));
这样连接起来用的时候就需要了
---------------------------------------------------------------
这个是为了方便你是用函数的执行结果作为其他函数的参数或者表达式中的一项。
---------------------------------------------------------------
有很多的返回值是用来判断这个函数执行成功于否
一、Sony公司笔试题
1、打印以下信息
*
*.*.
*..*..*..
*...*...*...*...
*....*....*....*....*....
*.....*.....*.....*.....*.....*.....
*......*......*......*......*......*......*......
*.......*.......*.......*.......*.......*.......*.......*.......
viewplaincopytoclipboardprint?
#include
#defineN8
intmain()
{
inti,j,k;
for(i=0;i { for(j=0;j<=i;j++) { printf("*"); for(k=0;k { printf("."); } } printf("\n"); } return0; } #include #defineN8 intmain() { inti,j,k; for(i=0;i { for(j=0;j<=i;j++) { printf("*"); for(k=0;k { printf("."); } } printf("\n"); } return0; } 2、给出以下数组的逆序排列: intarray[]={45,56,76,234,1,34,23,2,3} viewplaincopytoclipboardprint? #include voidsort(); voidprint();//为本人后面所加函数 intarray[]={45,56,76,234,1,34,23,2,3}; intmain() { sort(); print(); return0; } voidsort() { for(intj=0;j<9;j++) { intmid_value; intmin_value=array[j]; for(inti=0;i<9;i++) { if(array[i] { mid_value=array[i]; array[i]=min_value; min_value=mid_value; } } array[j]=min_value; } } voidprint() { for(inti=0;i<9;i++) { printf("%d",array[i]); } } #include voidsort(); voidprint();//为本人后面所加函数 intarray[]={45,56,76,234,1,34,23,2,3}; intmain() { sort(); print(); return0; } voidsort() { for(intj=0;j<9;j++) { intmid_value; intmin_value=array[j]; for(inti=0;i<9;i++) { if(array[i] { mid_value=array[i]; array[i]=min_value; min_value=mid_value; } } array[j]=min_value; } } voidprint() { for(inti=0;i<9;i++) { printf("%d",array[i]); } } 3.费波那其数列,1,1,2,3,5……编写程序求第十项。 可以用递归,也可以用其他方法,但要说明你选择的理由。 viewplaincopytoclipboardprint? #include intPheponatch(int); intmain() { printf("The10this%d",Pheponatch(10)); printf("\n"); return0; } intPheponatch(intN) { if((N==1)||(N==2)) { return1; } else return(Pheponatch(N-1)+Pheponatch(N-2)); } #include intPheponatch(int); intmain() { printf("The10this%d",Pheponatch(10)); printf("\n"); return0; } intPheponatch(intN) { if((N==1)||(N==2)) { return1; } else return(Pheponatch(N-1)+Pheponatch(N-2)); } 4.下列程序运行时会崩溃,请找出错误并改正,并且说明原因。 注意: 由于测试环境为VC++6.0,所以对原题的语法进行了一定的修改。 viewplaincopytoclipboardprint? #include #include typedefstructnode{ structnode*left; structnode*right; intvalue; }TNode; TNode*root=NULL; voidappend(intN); intmain() { append(63); append(45); append(32); append(77); append(96); append(21); append(17);//Again,数字任意给出 return0; } voidappend(intN) { TNode*NewNode=(TNode*)malloc(sizeof(TNode)); NewNode->value=N; if(root==NULL) { root=NewNode; return; } else { TNode*temp; temp=root; while((N>=temp->value&&temp->left! =NULL)||(N =NULL)) { while(N>=temp->value&&temp->left! =NULL) temp=temp->left; while(N =NULL) temp=temp->right; } if(N>=temp->value) temp->left=NewNode; else temp->right=NewNode; return; } } #include #include typedefstructnode{ structnode*left; structnode*right; intvalue; }TNode; TNode*root=NULL; voidappend(intN); intmain() { append(63); append(45); append(32); append(77); append(96); append(21); append(17);//Again,数字任意给出 return0; } voidappend(intN) { TNode*NewNode=(TNode*)malloc(sizeof(TNode)); NewNode->value=N; if(root==NULL) { root=NewNode; return; } else { TNode*temp; temp=root; while((N>=temp->value&&temp->left! =NULL)||(N =NULL)) { while(N>=temp->value&&temp->left! =NULL) temp=temp->left; while(N =NULL) temp=temp->right; } if(N>=temp->value) temp->left=NewNode; else temp->right=NewNode; return; } } 错误在于: 结构体在使用之前需要清零,否则运行时会崩溃。 修改后的部分代码如下: viewplaincopytoclipboardprint? TNode*NewNode=(TNode*)malloc(sizeof(TNode)); NewNode->value=N; NewNode->left=NULL; NewNode->right=NULL; TNode*NewNode=(TNode*)malloc(sizeof(TNode)); NewNode->value=N; NewNode->left=NULL; NewNode->right=NULL; 二、华为公司笔试题 1、请你分别画出OSI的七层网络结构图和TCP/IP的五层结构图。 7应用层5应用层 6表示层4传输层 5会话层3网络层 4传输层2数据链路层 3网络层1物理层 2数据链路层 1物理层 2.请你详细地解释一下IP协议的定义,在哪个层上面? 主要有什么作用? TCP与UDP呢? IP协议(InternetProtocol)又称互联网协议,是支持网间互连的数据报协议,它与TCP协议(传输控制协议)一起构成了TCP/IP协议族的核心。 它在网络层。 主要是用于路由数据包及主机之间寻址。 TCP与UDP在传输层的协议。 3、请问交换机和路由器各自的实现原理是什么? 分别在哪个层次上面实现的? 交换机(二层交换)的工作原理和网桥一样,它的各个端口都具有桥接功能,每个端口可以连接一个LAN或一台高性能网站或服务器,交换机按每一个包中的MAC地址相对简单地决策信息转发。 路由器转发IP分组时,只根据IP分组目的IP地址的网络号部分,选择合适的端口,把IP分组送出去。 同主机一样,路由器也要判定端口所接的是否是目的子网,如果是,就直接把分组通过端口送到网络上,否则,也要选择下一个路由器来传送分组。 交换机一般用于LAN-WAN的连接,交换机归于网桥,是数据链路层的设备,有些交换机也可实现第三层的交换。 路由器用于LAN-WAN之间的连接,可以解决异性网络之间转发分组,作用于网络层。 4、请问C++的类和C里面的struct有什么区别? (1)C++类中属性默认访问类型为private,而C中的struct没有访问类型 (2)C++类可以有继承,虚函数,多态,而C中struct没有。 (3)C语言struct里面不可以有函数,只能有变量。 C++给C中的struct功能扩展了 5、请讲一讲析构函数和虚函数的用法和作用 (1)析构函数是特殊的类成员函数,它没有返回类型,没有参数,不能随意调用,也没有重载,只有在类对象的生命期结束的时候,由系统自动调用。 主要用途就是自动获取资源,可以完成所需的资源回收,作为类构造函数的补充。 使用方法: 在定义的时候用~标识即可。 (2)虚函数是C++多态的一种表现: 例如: 子类继承了父类的一个函数(方法),而我们把父类的指针指向子类,则必须把父类的该函数(方法)设为virtual(虚函数)。 使用虚函数,我们可以灵活的进行动态绑定,当然是以一定的开销为代价。 使用方法: 使用virtual关键字即可。 6、全局变量和局部变量有什么区别? 是怎么实现的? 操作系统和编译器是怎么知道的? 全局变量和局部变量的区别是在存储器中位置不同,具体说,全局变量存储在数据段中,局部变量都有可能,一般来说在堆栈段;编译器根据语法进行判断。 操作系统可以根据存储位置进行判断。 7、8086是多少位的系统? 在数据总线上是怎么实现的? 8086是16微处理器,内部及对外有16位数据通路,8080/8085只有8位。 8086寻址空间1MB,8080/8085为64KB。 8086有一个初级流水线结构,内部操作与对外操作具有并行性,8085无。 8086是个里程碑。 8086的机器字长是16位,8086使用40个引脚的16个做地址/数据复用引腿来传输数据,一次读写过程由一个基本总线周期完成,它由4个时钟(CLK)周期组成,按时间顺序定义为T1、T2、T3、T4。 在T1期间8086发出访问目的地的地址信号和地址锁存选通信号ALE;T2期间发出读写命令信号RD、WR及其它相关信号;T3期间完成数据的访问;T4结束该总线周期。 可见,地址与数据信号不会同时出现在一个时钟(CLK)周期,二者可以分时复用同一组引线。 三、联想公司笔试题 1、设计函数intatoi(char*s): 字符串转化为数字 viewplaincopytoclipboardprint? #include #include intatoi(char*); intmain() { char*s="43"; printf("%d\n",atoi(s)); return0; } intatoi(chars[]) { inti,n,sign; for(i=0;isspace(s[i]);i++)//跳过空白符 ; sign=(s[i]=='-')? -1: 1; if(s[i]=='+'||s[i]=='-')//跳过符号 i++; for(n=0;isdigit(s[i]);i++) n=10*n+(s[i]-'0');//将数字字符转换成整形数字 returnsign*n; } #include #include intatoi(char*); intmain() { char*s="43"; printf("%d\n",atoi(s)); return0; } intatoi(chars[]) { inti,n,sign;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 笔试