九一二网络面试题(2016年3月)

匿名网友 匿名网友 发布于: 2016-03-09 00:00:00
阅读 129 收藏 0 点赞 0 评论 0

1,简述进程通信的几种方式?

1)管道,是一种半双工通信方式,数据单向流动,只能用于具有亲缘关系的进程(如父子进程)间通信。

2)有名管道,半双工通讯方式,但允许无亲缘关系进程间通信。

3)信号量,是一个计数器,用来控制多进程对共享资源的访问。是一种锁机制,使进程有序的访问资源。

4)信号,用于通知接收进程某个事件已发生。

5)消息队列,是消息的链表,存放在内核中由消息标识符标识。克服了传递信息少,管道只能承载无格式字节流等缺点。

6)共享内存,由一个进程映射的一段内存,其他进程可以访问。是最快的IPC方式,往往配合其他通信方式。

7)socket,可以用于不同机器间的进程进行通信。

2,去除字符串中的重复字符

如果限制使用辅助空间,只能使用一两个辅助变量,则第一步将重复的元素置为“ ”,需要O(n^2)的复杂度。

for( i = 1; i < len; i++) {

for( j = 0; j < i; j++) {

if( str[ j ] == str[ i ] ) {  str[ i ] = ‘ ‘;  }  }  }

如何可以使用与问题复杂度无关的辅助数组,可以建立一个大小为256的数组,存放ASCII码表,在O(n)时间内就可以完成第一步。

接下来就是蛮力移动元素(每次记下从前往后的第一个空字符位置和再次出现非空字符的位置),填补留下的“ ”字符。

3,将字符串语句翻转

评论列表
文章目录