武汉光迅笔试题.doc_第1页
武汉光迅笔试题.doc_第2页
武汉光迅笔试题.doc_第3页
武汉光迅笔试题.doc_第4页
武汉光迅笔试题.doc_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1. Linux进程间的通信有哪几种?请简要概述一管道(pipe)管道是Linux支持的最初IPC方式,管道可分为无名管道,有名管道等。(一)无名管道,它具有几个特点:1) 管道是半双工的,只能支持数据的单向流动;两进程间需要通信时需要建立起两个管道;2) 无名管道使用pipe()函数创建,只能用于父子进程或者兄弟进程之间;3) 管道对于通信的两端进程而言,实质上是一种独立的文件,只存在于内存中;4) 数据的读写操作:一个进程向管道中写数据,所写的数据添加在管道缓冲区的尾部;另一个进程在管道中缓冲区的头部读数据。(二)有名管道有名管道也是半双工的,不过它允许没有亲缘关系的进程间进行通信。具体点说就是,有名管道提供了一个路径名与之进行关联,以FIFO(先进先出)的形式存在于文件系统中。这样即使是不相干的进程也可以通过FIFO相互通信,只要他们能访问已经提供的路径。值得注意的是,只有在管道有读端时,往管道中写数据才有意义。否则,向管道写数据的进程会接收到内核发出来的SIGPIPE信号;应用程序可以自定义该信号处理函数,或者直接忽略该信号。二信号量(semophore)信号量是一种计数器,可以控制进程间多个线程或者多个进程对资源的同步访问,它常实现为一种锁机制。实质上,信号量是一个被保护的变量,并且只能通过初始化和两个标准的原子操作(P/V)来访问。(P,V操作也常称为wait(s),signal(s))三信号(Signal)信号是Unix系统中使用的最古老的进程间通信的方法之一。操作系统通过信号来通知某一进程发生了某一种预定好的事件;接收到信号的进程可以选择不同的方式处理该信号,一是可以采用默认处理机制进程中断或退出,一是忽略该信号,还有就是自定义该信号的处理函数,执行相应的动作。内核为进程生产信号,来响应不同的事件,这些事件就是信号源。信号源可以是:异常,其他进程,终端的中断(Ctrl-C,Ctrl+等),作业的控制(前台,后台进程的管理等),分配额问题(cpu超时或文件过大等),内核通知(例如I/O就绪等),报警(计时器)。四消息队列(Message Queue)消息队列就是消息的一个链表,它允许一个或者多个进程向它写消息,一个或多个进程向它读消息。Linux维护了一个消息队列向量表:msgque,来表示系统中所有的消息队列。消息队列克服了信号传递信息少,管道只能支持无格式字节流和缓冲区受限的缺点。五共享内存(shared memory)共享内存映射为一段可以被其他进程访问的内存。该共享内存由一个进程所创建,然后其他进程可以挂载到该共享内存中。共享内存是最快的IPC机制,但由于linux本身不能实现对其同步控制,需要用户程序进行并发访问控制,因此它一般结合了其他通信机制实现了进程间的通信,例如信号量。六套接字(socket)socket也是一种进程间的通信机制,不过它与其他通信方式主要的区别是:它可以实现不同主机间的进程通信。一个套接口可以看做是进程间通信的端点(endpoint),每个套接口的名字是唯一的;其他进程可以访问,连接和进行数据通信。2. 用C语言写atol的函数的实现#include#include/isspace() isdigital() 的头文件1. long_cdeclatol( 2. constchar*nptr 3. ) /1.const修饰 4. 5. intc;/*currentchar*/ 6. longtotal;/*currenttotal*/ 7. intsign;/*if-,thennegative,otherwisepositive*/ 8. 9. /*skipwhitespace*/ 10. /char ,signed char 、unsigned char 类型的数据具有相同的特性然而当你把一个单字节的数赋给一个整型数时,便会看到它们在符号扩展上的差异。 11. /ascii码当赋给整形数时要转为unsigned char再转为int 12. while(isspace(int)(unsignedchar)*nptr) /2.去掉首部的空格 13. +nptr; 14. 15. c=(int)(unsignedchar)*nptr+; /取得第一个非空格的字符 16. sign=c;/*savesignindication*/ 17. if(c=-|c=+) /如果第一个非空格字符为符号 18. c=(int)(unsignedchar)*nptr+;/*skipsign*/ /跳过符号,将符号后的那个字符给c 19. 20. total=0; /结果置为0 21. 22. while(isdigit(c) /3.如果碰到非法字符则停止 23. total=10*total+(c-0);/*accumulatedigit*/ 24. c=(int)(unsignedchar)*nptr+;/*getnextchar*/ 25. 26. 27. if(sign=-) 28. return-total; 29. else 30. returntotal;/*returnresult,negatedifnecessary*/ 31. 3. 删除单链表的某个节点4. TCP分哪五层?IP协议属于哪一层?各层的作用?物理层:数据链路层:网络层:网际协议(IP)传输层:如传输控制协议(transparet control prototal ,TCP)、用户数据报协议(user datagram protocol ,UDP) 应用层:文件传输协议(FTP)、网络远程访问协议(Telnet)简单邮件传输协议(Simple Mail Transfer Protocol, SMTP)5. 运算符重载与方法重写(覆盖)?运算符重载:ostream & operator (ostream &os,const person &p)const osp.id代码如下:istream & operator (istream &ism, person &p); return ism; #include 方法重写:字符串倒序数组指针重写void inv(int *x,int n) for (int i = 0; i n / 2; +i) int temp = *(x + i); *(x + i) = *(x + n - 1 - i); *(x + n - 1 - i) = temp; void main() int i,a10=3, 7, 9, 11, 0, 6, 7, 5, 4, 2; cout The original array:n; for(i=0;i10;i+) coutai ; coutendl; inv(a, 10); coutThe array has benn inverted:n; for(i=0;i10;i+) coutai ; coutendl;成员函数被重载的特征(1)相同的范围(在同一个类中);(2)函数名字相同;(3)参数不同;(4)virtual 关键字可有可无。覆盖是指派生类函数覆盖基类函数,特征是(1)不同的范围(分别位于派生类与基类);(2)函数名字相同;(3)参数相同;(4)基类函数必须有virtual 关键字。“隐藏”是指派生类的函数屏蔽了与其同名的基类函数,规则如下(1)如果派生类的函数与基类的函数同名,但是参数不同。此时,不论有无virtual关键字,基类的函数将被隐藏(注意别与重载混淆)。(2)如果派生类的函数与基类的函数同名,并且参数也相同,但是基类函数没有virtual 关键字。此时,基类的函数被隐藏(注意别与覆盖混淆)6. 自我介绍您好我叫韩玉龙(慢),2012年06毕业于、学校、专业。我的特长、,我应聘的岗位是C+工程师。(此时要谈定,看面试官的额头)7. 一群人开舞会,每人头上都戴着一顶帽子。帽子只有黑白两种,黑的至少有一顶。每个人都能看到其他人帽子的颜色,却看不到自己的。主持人先让大家看看别人头上戴的是什么帽子,然后关灯,如果有人认为自己戴的是黑帽子,就打自己一个耳光。第一次关灯,没有声音。于是再开灯,大家再看一遍,关灯时仍然鸦雀无声。一直到第三次关灯,才有劈劈啪啪打耳光的声音响起。问有多少人戴着黑帽子?答案:假设戴黑帽子的是A、B、C三人,以A的角度思考,A看到B、C戴黑帽子,A认为:第一次关灯时B看到C戴黑帽子,已满足“黑的至少有一顶”,所以B不能确定自己是否黑帽子,不会拍手,并且如果只有C戴黑帽子,第一次关灯时C就会拍手。但第一次关灯时C没拍手,这代表C也在等别人拍手,B就知道自己也戴了黑帽子,第二次关灯时B、C就都会拍手。但第二次关灯时也没拍手,这代表B、C也各自看到2顶黑帽子,A由此推出自己带了黑帽子。B、C逻辑推理也是如此,其他戴白帽子的人都是如此推理,在第三次关灯时会等着A、B、C拍手,于是第三次关灯时有且仅有三个人会拍手。8计算机程序,进程与线程的区别与联系?1、进程是系统进行资源分配和调度的一个独立单位. 线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源. 一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执行 2、进程和线程的区别在于: 简而言之,一个程序至少有一个进程,一个进程至少有一个线程. 线程的划分尺度小于进程,使得多线程程序的并发性高。 另外,进程在执行过程中拥有独立的内存

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论