收藏 分享(赏)

武汉光迅笔试题.doc

上传人:weiwoduzun 文档编号:2620564 上传时间:2018-09-23 格式:DOC 页数:5 大小:46.50KB
下载 相关 举报
武汉光迅笔试题.doc_第1页
第1页 / 共5页
武汉光迅笔试题.doc_第2页
第2页 / 共5页
武汉光迅笔试题.doc_第3页
第3页 / 共5页
武汉光迅笔试题.doc_第4页
第4页 / 共5页
武汉光迅笔试题.doc_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

1、1. Linux 进程间的通信有哪几种?请简要概述一管道(pipe)管道是 Linux 支持的最初 IPC 方式,管道可分为无名管道,有名管道等。(一)无名管道,它具有几个特点:1) 管道是半双工的,只能支持数据的单向流动;两进程间需要通信时需要建立起两个管道;2) 无名管道使用 pipe()函数创建,只能用于父子进程或者兄弟进程之间;3) 管道对于通信的两端进程而言,实质上是一种独立的文件,只存在于内存中;4) 数据的读写操作:一个进程向管道中写数据,所写的数据添加在管道缓冲区的尾部;另一个进程在管道中缓冲区的头部读数据。 (二)有名管道有名管道也是半双工的,不过它允许没有亲缘关系的进程间进

2、行通信。具体点说就是,有名管道提供了一个路径名与之进行关联,以 FIFO(先进先出)的形式存在于文件系统中。这样即使是不相干的进程也可以通过 FIFO 相互通信,只要他们能访问已经提供的路径。值得注意的是,只有在管道有读端时,往管道中写数据才有意义。否则,向管道写数据的进程会接收到内核发出来的 SIGPIPE 信号;应用程序可以自定义该信号处理函数,或者直接忽略该信号。二信号量(semophore)信号量是一种计数器,可以控制进程间多个线程或者多个进程对资源的同步访问,它常实现为一种锁机制。实质上,信号量是一个被保护的变量,并且只能通过初始化和两个标准的原子操作(P/V)来访问。 (P,V 操

3、作也常称为 wait(s),signal(s)) 三信号(Signal)信号是 Unix 系统中使用的最古老的进程间通信的方法之一。操作系统通过信号来通知某一进程发生了某一种预定好的事件;接收到信号的进程可以选择不同的方式处理该信号,一是可以采用默认处理机制进程中断或退出,一是忽略该信号,还有就是自定义该信号的处理函数,执行相应的动作。内核为进程生产信号,来响应不同的事件,这些事件就是信号源。信号源可以是:异常,其他进程,终端的中断(Ctrl-C,Ctrl+等) ,作业的控制(前台,后台进程的管理等),分配额问题(cpu 超时或文件过大等) ,内核通知(例如 I/O 就绪等) ,报警(计时器)

4、。四消息队列(Message Queue)消息队列就是消息的一个链表,它允许一个或者多个进程向它写消息,一个或多个进程向它读消息。Linux 维护了一个消息队列向量表:msgque,来表示系统中所有的消息队列。消息队列克服了信号传递信息少,管道只能支持无格式字节流和缓冲区受限的缺点。 五共享内存(shared memory)共享内存映射为一段可以被其他进程访问的内存。该共享内存由一个进程所创建,然后其他进程可以挂载到该共享内存中。共享内存是最快的 IPC 机制,但由于 linux 本身不能实现对其同步控制,需要用户程序进行并发访问控制,因此它一般结合了其他通信机制实现了进程间的通信,例如信号量

5、。六套接字(socket)socket 也是一种进程间的通信机制,不过它与其他通信方式主要的区别是:它可以实现不同主机间的进程通信。一个套接口可以看做是进程间通信的端点(endpoint) ,每个套接口的名字是唯一的;其他进程可以访问,连接和进行数据通信。2. 用 C 语言写 atol 的函数的实现#include#include/isspace() isdigital() 的头文件1.long _cdecl atol( 2. const char *nptr 3. ) /1.const 修饰 4. 5. int c; /* current char */ 6. long total; /*

6、current total */ 7. int sign; /* if -, then negative, otherwise positive */ 8. 9. /* skip whitespace */ 10. /char ,signed char 、unsigned char 类型的数据具有相同的特性然而当你把一个单字节的数赋给一个整型数时,便会看到它们在符号扩展上的差异。 11. /ascii 码当赋给整形数时要转为 unsigned char 再转为 int 12. while ( isspace(int)(unsigned char)*nptr) ) /2.去掉首部的空格 13.

7、+nptr; 14. 15. c = (int)(unsigned char)*nptr+; /取得第一个非空格的字符 16. sign = c; /* save sign indication */ 17. if (c = - | c = +) /如果第一个非空格字符为符号 18. c = (int)(unsigned char)*nptr+; /* skip sign */ /跳过符号,将符号后的那个字符给 c 19. 20. total = 0; /结果置为 0 21. 22. while (isdigit(c) /3.如果碰到非法字符则停止 23. total = 10 * total

8、 + (c - 0); /* accumulate digit */ 24. c = (int)(unsigned char)*nptr+; /* get next char */ 25. 26. 27. if (sign = -) 28. return -total; 29. else 30. return total; /* return result, negated if necessary */ 31. 3. 删除单链表的某个节点4. TCP 分哪五层?IP 协议属于哪一层?各层的作用?物理层:数据链路层:网络层:网际协议(IP)传输层:如传输控制协议(transparet cont

9、rol prototal ,TCP) 、用户数据报协议(user datagram protocol ,UDP) 应用层:文件传输协议(FTP) 、网络远程访问协议(Telnet)简单邮件传输协议(Simple Mail Transfer Protocol, SMTP)5. 运算符重载与方法重写(覆盖)?运算符重载:ostream 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)

10、;*(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);cout“The array has benn inverted:n“;for(i=0;i10;i+)coutai“ “;coutendl;成员函数被重载的特征(1)相同的范围(在同一个类中) ;(2)函数名字相同;(3)参数不同;(4)virtual 关键字可有可无。覆盖是指派生类函数覆盖基类函数,

11、特征是(1)不同的范围(分别位于派生类与基类) ;(2)函数名字相同;(3)参数相同;(4)基类函数必须有 virtual 关键字。“隐藏”是指派生类的函数屏蔽了与其同名的基类函数,规则如下(1)如果派生类的函数与基类的函数同名,但是参数不同。此时,不论有无 virtual关键字,基类的函数将被隐藏(注意别与重载混淆) 。(2)如果派生类的函数与基类的函数同名,并且参数也相同,但是基类函数没有virtual 关键字。此时,基类的函数被隐藏(注意别与覆盖混淆)6. 自我介绍您好我叫韩玉龙(慢) ,2012 年 06 毕业于、 、学校、 、专业。我的特长、 、 、 ,我应聘的岗位是 C+工程师。

12、(此时要谈定,看面试官的额头)7. 一群人开舞会,每人头上都戴着一顶帽子。帽子只有黑白两种,黑的至少有一顶。每个人都能看到其他人帽子的颜色,却看不到自己的。主持人先让大家看看别人头上戴的是什么帽子,然后关灯,如果有人认为自己戴的是黑帽子,就打自己一个耳光。第一次关灯,没有声音。于是再开灯,大家再看一遍,关灯时仍然鸦雀无声。一直到第三次关灯,才有劈劈啪啪打耳光的声音响起。问有多少人戴着黑帽子?答案:假设戴黑帽子的是 A、B、C 三人,以 A 的角度思考, A 看到 B、C戴黑帽子,A 认为:第一次关灯时 B 看到 C 戴黑帽子,已满足“黑的至少有一顶”,所以 B 不能确定自己是否黑帽子,不会拍手

13、,并且如果只有 C 戴黑帽子,第一次关灯时 C 就会拍手。但第一次关灯时 C 没拍手,这代表 C 也在等别人拍手,B 就知道自己也戴了黑帽子,第二次关灯时 B、C 就都会拍手。但第二次关灯时也没拍手,这代表 B、C 也各自看到 2 顶黑帽子,A 由此推出自己带了黑帽子。B、C 逻辑推理也是如此,其他戴白帽子的人都是如此推理,在第三次关灯时会等着 A、B、C 拍手,于是第三次关灯时有且仅有三个人会拍手。8计算机程序,进程与线程的区别与联系?1、进程是系统进行资源分配和调度的一个独立单位. 线程是进程的一个实体,是 CPU 调度和分派的基本单位 ,它是比进程更小的能独立运行的基本单位.线程自己基本

14、上不拥有系统资源 ,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源. 一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执行 2、进程和线程的区别在于: 简而言之,一个程序至少有一个进程,一个进程至少有一个线程. 线程的划分尺度小于进程,使得多线程程序的并发性高。 另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。 线程在执行过程中与进程还是有区别的。每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。 从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配。这就是进程和线程的重要区别。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 中等教育 > 试题课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报