腾讯笔试感受


     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将结果收集整理。


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



原文地址:https://www.cnblogs.com/yangykaifa/p/6874510.html