Skip to main content

 路由器设置 > 新闻资讯 >

腾讯笔试感受

2014-04-23 00:58 浏览:

   2014年腾讯实习生招聘考试安徽片区在科大举行,刚开始拿到试卷觉得试卷好长,题目好多。然后就开始做题,这次考试给我的感觉是腾讯的笔试题考察的范围很广,不仅有语言方面的考察,还有操作系统、计算机网络、数据结构、概率以及Mapreduce都考察了。给我的感觉还是操作系统考察的是最多的。都有:进程通信、内存管理等

1、进程间通信

Linux进程间通信

linux下进程间通信的几种主要手段简介:

a)       管道(Pipe):及有名管道(named pipe):管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信;

b)       信号(Signal):信号是比较复杂的通信方式,用于通知接受进程有某种事件发生,除了用于进程间通信外,进程还可以发送信号给进程本身;linux除了支持Unix早期信号语义函数sigal外,还支持语义符合Posix.1标准的信号函数sigaction(实际上,该函数是基于BSD的,BSD为了实现可靠信号机制,又能够统一对外接口,用sigaction函数重新实现了signal函数);

c)      Message(消息队列):消息队列是消息的链接表,包括Posix消息队列system V消息队列。有足够权限的进程可以向队列中添加消息,被赋予读权限的进程则可以读走队列中的消息。消息队列克服了信号承载信息量少,管道只能承载无格式字节流以及缓冲区大小受限等缺点。

d)       共享内存:使得多个进程可以访问同一块内存空间,是最快的可用IPC形式。是针对其他通信机制运行效率较低而设计的。往往与其它通信机制,如信号量结合使用,来达到进程间的同步及互斥。

e)       信号量(semaphore):主要作为进程间以及同一进程不同线程之间的同步手段。

f)        套接口(Socket):更为一般的进程间通信机制,可用于不同机器之间的进程间通信。起初是由Unix系统的BSD分支开发出来的,但现在一般可以移植到其它类Unix系统上:LinuxSystem V的变种都支持套接字。

Linux线程间通信:互斥体,信号量,条件变量

Windows线程间通信:临界区(Critical Section)、互斥量(Mutex)、信号量(Semaphore)、事件(Event

Windows 进程间通信:管道、内存共享、消息队列、信号量、socket

Windows 进程和线程共同之处:信号量和消息(事件)

临界区(Critical section)与互斥体(Mutex)的区别

1、临界区只能用于对象在同一进程里线程间的互斥访问;互斥体可以用于对象进程间或线程间的互斥访问。

2、临界区是非内核对象,只在用户态进行锁操作,速度快;互斥体是内核对象,在核心态进行锁操作,速度慢。

3、临界区和互斥体在Windows平台都下可用;Linux下只有互斥体可用

Windows线程间通信的区别:

1.互斥量与临界区的作用非常相似,但互斥量是可以命名的,也就是说它可以跨越进程使用。所以创建互斥量需要的资源更多,所以如果只为了在进程内部是用的话使用临界区会带来速度上的优势并能够减少资源占用量。因为互斥量是跨进程的互斥量一旦被创建,就可以通过名字打开它。互斥体不仅能实现同一应用程序的公共资源安全共享,还能实现不同应用程序的公共资源安全共享 .互斥量比临界区复杂

2. 互斥量(Mutex),信号灯(Semaphore),事件(Event)都可以被跨越进程使用来进行同步数据操作,而其他的对象与数据同步操作无关,但对于进程和线程来讲,如果进程和线程在运行状态则为无信号状态,在退出后为有信号状态。所以可以使用WaitForSingleObject来等待进程和线程退出。

2、计算机网络方面

计算机网络方面考察了建立时候的握手情况,以及结束时几次握手以及大量发送数据包对系统的影响。

3、数据结构

数据结构方面考察了桟、堆、图等一些基本结构。

4、内存管理

LRU算法、段页式存储、内部碎片和外部碎片的产生。

补充一下:

5、MapReduce的原理

这个东西之前在blog看过一下,里面的解释是这样的,MapReduce是通过Map和Reduce来操作的。我将其分为3个步骤。

1、将问题划分成独立的小问题。

2、Map进行映射,将问题分配到能够独立解决问题的计算机上面。

3、Reduce将结果收集整理。

 

希望大家补充或我错了的希望大家修改。