腾讯实习生招聘笔试题.docx

上传人:b****6 文档编号:16514388 上传时间:2023-07-14 格式:DOCX 页数:24 大小:47.83KB
下载 相关 举报
腾讯实习生招聘笔试题.docx_第1页
第1页 / 共24页
腾讯实习生招聘笔试题.docx_第2页
第2页 / 共24页
腾讯实习生招聘笔试题.docx_第3页
第3页 / 共24页
腾讯实习生招聘笔试题.docx_第4页
第4页 / 共24页
腾讯实习生招聘笔试题.docx_第5页
第5页 / 共24页
腾讯实习生招聘笔试题.docx_第6页
第6页 / 共24页
腾讯实习生招聘笔试题.docx_第7页
第7页 / 共24页
腾讯实习生招聘笔试题.docx_第8页
第8页 / 共24页
腾讯实习生招聘笔试题.docx_第9页
第9页 / 共24页
腾讯实习生招聘笔试题.docx_第10页
第10页 / 共24页
腾讯实习生招聘笔试题.docx_第11页
第11页 / 共24页
腾讯实习生招聘笔试题.docx_第12页
第12页 / 共24页
腾讯实习生招聘笔试题.docx_第13页
第13页 / 共24页
腾讯实习生招聘笔试题.docx_第14页
第14页 / 共24页
腾讯实习生招聘笔试题.docx_第15页
第15页 / 共24页
腾讯实习生招聘笔试题.docx_第16页
第16页 / 共24页
腾讯实习生招聘笔试题.docx_第17页
第17页 / 共24页
腾讯实习生招聘笔试题.docx_第18页
第18页 / 共24页
腾讯实习生招聘笔试题.docx_第19页
第19页 / 共24页
腾讯实习生招聘笔试题.docx_第20页
第20页 / 共24页
亲,该文档总共24页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

腾讯实习生招聘笔试题.docx

《腾讯实习生招聘笔试题.docx》由会员分享,可在线阅读,更多相关《腾讯实习生招聘笔试题.docx(24页珍藏版)》请在冰点文库上搜索。

腾讯实习生招聘笔试题.docx

腾讯实习生招聘笔试题

1、进程间通讯方式有哪些?

UNIX中有如下的通信方式,我是摘抄的XX词条里面的,仅供参考:

1)文件和记录锁定。

为避免两个进程间同时要求访问同一共享资源而引起访问和操作的混乱,在进程对

共享资源进行访问前必须对其进行锁定,该进程访问完后再释放。

这是UNIX为共享

资源提供的互斥性保障。

2)管道。

管道一般用于两个不同进程之间的通信。

当一个进程创建一个管道,并调用fork创

建自己的一个子进程后,父进程关闭读管道端,子进程关闭写管道端,这样提供了

两个进程之间数据流动的一种方式。

3)FIFO。

FIFO是一种先进先出的队列。

它类似于一个管道,只允许数据的单向流动。

每个

FIFO都有一个名字,允许不相关的进程访问同一个FIFO。

因此也成为命名管。

4)消息队列。

UNIX下不同进程之间可实现共享资源的一种机制;UNIX允许不同进程将格式化的数

据流以消息形式发送给任意

进程。

对消息队列具有操作权限的进程都可以使用msget完成对消息队列的操作控制

通过使用消息类型,进程可以按任何顺序读消息,或为消息安排优先级顺序。

5)信号灯。

作为进程间通讯的一种方法,它不是用于交换大批数据,而用于多进程之间的同步

(协调对共享存储段的存取)。

6)共享内存。

通过信号灯实现存储共享(类似“红灯停、绿灯行”)

2、网络协议的三要素?

协议是用来描述进程之间信息交换数据时的规则术语。

在计算机网络中,两个相互

通信的实体处在不同的地理位置,其上的两个进程相互通信,需要通过交换信息来

协调它们的动作和达到同步,而信息的交换必须按照预先共同约定好的过程进行。

例如,网络中一个微机用户和一个大型主机的操作员进行通信,由于这两个数据终

端所用字符集不同,因此操作员所输入的命令彼此不认识。

为了能进行通信,规定

每个终端都要将各自字符集中的字符先变换为标准字符集的字符后,才进入网络传

送,到达目的终端之后,再变换为该终端字符集的字符。

当然,对于不相容终端,

除了需变换字符集字符外。

其他特性,如显示格式、行长、行数、屏幕滚动方式等

也需作相应的变换。

这样的协议通常称为虚拟终端协议。

又如,通信双方常常需要

约定何时开始通信和如何通信,这也是一种协议。

所以协议是通信双方为了实现通

信所进行的约定或对话规则。

计算机网络的协议主要由语义、语法和交换规则三部分组成,即协议三要素:

语义:

规定通信双方彼此“讲什么”,即确定协议元素的类型,如规定通信双方要发出什么控制信息,执行的动作和返回的应答。

语法:

规定通信双方彼此“如何讲”,即确定协议元素的格式,如数据和控制信息的格式。

交换规则:

规定了信息交流的次序。

3、http,telnet,ftp的端口是?

使用TCP协议的常见端口主要有以下几种:

(1)FTP:

定义了文件传输协议,使用21端口。

常说某某计算机开了FTP服务便是

启动了文件传输服务。

下载文件,上传主页,都要用到FTP服务。

(2)

Telnet:

它是一种用于远程登陆的端口,用户可以以自己的身份远程连接到计算机上,通过这种端口可以提供一种基于DOS模式下的通信服务。

如以前的BBS是纯字符界面的,支持BBS的服务器将23端口打开,对外提供服务。

(3)

SMTP:

定义了简单邮件传送协议,现在很多邮件服务器都用的是这个协议,用于发送邮件。

如常见的免费邮件服务中用的就是这个邮件服务端口,所以在电子邮件设置中常看到有这么SMTP端口设置这个栏,服务器开放的是25号端口。

(4)

POP3:

它是和SMTP对应,POP3用于接收邮件。

通常情况下,POP3协议所用的是110端口。

也是说,只要你有相应的使用POP3协议的程序(例如Foxmail或Outlook),就可以不以Web方式登陆进邮箱界面,直接用邮件程序就可以收到邮件(如是163邮箱就没有必要先进入网易网站,再进入自己的邮箱来收信)。

使用UDP协议端口常见的有:

(1)

HTTP:

这是大家用得最多的协议,它就是常说的"超文本传输协议"。

上网浏览网页时,就得在提供网页资源的计算机上打开80号端口以提供服务。

常说"WWW服务"、"Web服务器"用的就是这个端口。

(2)DNS:

用于域名解析服务,这种服务在WindowsNT系统中用得最多的。

因特网上的每一台计算机都有一个网络地址与之对应,这个地址是常说的IP地址,它以纯数字+"."的形式表示。

然而这却不便记忆,于是出现了域名,访问计算机的时候只需要知道域名,域名和IP地址之间的变换由DNS服务器来完成。

DNS用的是53号端口。

(3)SNMP:

简单网络管理协议,使用161号端口,是用来管理网络设备的。

由于网络设备很多,无连接的服务就体现出其优势。

(4)

OICQ:

OICQ程序既接受服务,又提供服务,这样两个聊天的人才是平等的。

OICQ用

的是无连接的协议,也是说它用的是UDP协议。

OICQ服务器是使用8000号端口,侦听是否有信息到来,客户端使用4000号端口,向外发送信息。

如果上述两个端口正在使用(有很多人同时和几个好友聊天),就顺序往上加。

在计算机的6万多个端口,通常把端口号为1024以内的称之为常用端口,这些常用端口所对应的服务通常情况下是固定的。

表1所列的都是服务器默认的端口,不允许改变,一般通信过程都主要用到这些端口。

表1

服务类型默认端口服务类型默认端口

Echo7Daytime13

FTP21Telnet23

SMTP25Time37

Whois43DNS53

Gopher70Finger79

WWW80POP3110

NNTP119IRC194

另外代理服务器常用以下端口:

(1).HTTP协议代理服务器常用端口号:

80/8080/3128/8081/9080

(2).SOCKS代理协议服务器常用端口号:

1080

(3).FTP协议代理服务器常用端口号:

21

(4).Telnet协议代理服务器常用端口:

23

4、Unix系统包括:

硬件,unix内核,应用程序还有什么?

UNIX系统由内核、shell、文件系统和应用程序等4部分组成。

UNIX是一个通用、交互型分时操作系统,1969年,它由美国电报电话公司贝尔实验室在DEC公司的小型系列机PDP-7上开发成功。

自1974年问世以来,迅速地在世界范围内推广。

UNIX取得成功的最重要的原因是系统的开放性和公开源代码,用户可以方便地向UNIX系统中逐步添加新功能和工具,这样可以使UNIX越来越完善,能够提供更多的服务,成为有效的程序开发的支撑平台。

它是目前唯一可以安装和运行在包括微型机、工作站、大型机和巨型机上的操作系统。

UNIX系统由内核、shell、文件系统和应用程序等4部分组成。

UNIX系统组成结构如

 1.UNIX的特点

    UNIX系统除了具有文件管理、程序管理和用户界面等所有操作系统共有的传统特征外,又增加了另外两个特性:

一是与其他操作系统的内部实现不同,UNIX是一个多用户、多任务系统;二是与其他操作系统的用户界面不同,具有充分的灵活性。

作为一个多任务系统,用户可以请求系统同时执行多个任务。

在运行一个作业的时候,可以同时运行其他作业。

例如,在打印文件的同时可以编辑文件,而不必等待打印文件完毕再编辑文件。

作为多用户系统,多个人可以同时使用该系统。

几个用户可以同时登录到系统上,每人都可以通过自己的终端与系统交互。

    起初UNIX是为科研人员设计的操作系统,主要目标就是生成一个系统以支持科研人员不断变化的需求。

为了实现这一点,汤普逊将系统设计成能够处理很多不同种类的任务。

所以灵活性则变得比硬件效率更为重要。

虽然像UNIX这样灵活的系统并不一定比那些更加灵活的与硬件相捆绑的系统快,但是UNIX能够处理用户所能遇到的各种任务。

    这种灵活性使UNIX成为用户可用的操作系统,用户不只限于和操作系统进行有限的固定交互,相反可以为用户提供一套强大的工具,而且用户可以配置并对系统编程以满足特殊需求。

从这个意义上说,UNIX是一个面向用户的操作系统。

 2.UNIX系统的组成

    UNIX系统由内核、shell、文件系统和应用程序等4部分组成。

UNIX系统组成结构如图所示。

    

    由上图可以看出用户与计算机之间的层次结构。

最底层是计算机本身,包括打印机、磁盘驱动器和其他的外部设备。

内核控制着硬件、程序的运行以及文件存储。

shell与内核交互,把从用户接受的命令发送给内核。

用户只需要与shell通信,而不直接与内核通信,利用shell,用户可以运行不同的应用程序,如编辑器或通信程序。

    

(1)内核

      在UNIX系统中,进行硬件管理和进程控制的部分称为内核,是用C语言开发的。

内核是控制计算机硬件的核心程序,它也实现了UNIX的多用户、多任务机制。

除了提供内核来完成传统操作系统的功能外,UNIX还为用户提供了一组系统库和标准应用。

这一标准的界面不仅可以使应用程序方便地移植,还可以让用户方便地使用。

标准界面的优点是可移植性,即一个应用程序可以不加修改地运行在不同硬件结构的各种机器上。

  

(2)shell

      shell提供一个内核与用户之间的界面。

可以把它描述成一个解释器,它首先解释用户输入的命令,然后发送给内核。

可以把它看成是命令翻译成内核操作格式的语言处理器。

    

 

(3)文件结构

      在UNIX系统中,把一切资源都看作是文件,包括硬件设备。

UNIX系统把每个硬件都看成是一个文件,通常称为设备文件,这样用户就可以用读写文件的方式实现对硬件的访问。

把一系列文件组织成目录,所以说,整个UNIX文件系统就是一个互相关联的目录集合,每个目录又包含文件。

用户可以为自己的文件生成目录,并且可以把文件从一个目录移向另外一个目录。

目录是一种组织和控制文件访问的很好的方式,用户可以为目录设置权限以允许其他人访问目录中的文件或只允许自己访问。

    每个用户的目录最终都是与其他用户相连的。

目录被组织成一种层次型的树型结构,以一个根目录开始,所有的其他目录最终都是从根目录开始。

用户可以遍历整个系统并进入任何一个目录,这种文件结构的互相关联使共享数据相当容易,从而使多个用户可以访问相同的文件。

    

(4)应用程序

      在UNIX系统中包含大量的应用程序,其中有些是很简单的操作,有些则是非常复杂的程序并且拥有自己的命令集。

这些应用程序可以分为编辑器、过滤器和通信程序三类,同时还有执行文件操作和程序管理的应用程序。

    UNIX系统提供几种标准的编辑器,vi是典型的全屏幕编辑器,类似于Windows中的记事本。

    过滤器从用户、文件或者其他数据源读取输入,然后检查并处理数据,最后输出结果。

过滤器的输入不一定是一个文件,也可以是用户的键盘输入,甚至可以是另外一个过滤器的输出。

过滤器可以互相连接,一个过滤器的输出成为另一个的输入。

用户也可以编写自己的过滤器。

    UNIX还拥有一套通信应用程序,通过这些程序可以与本系统或其他系统上的用户通信。

作为一个多用户系统,UNIX必须与所有用户保持联系并对他们进行跟踪。

基本的监视需求和基本的文件结构互连可以很容易地实现一个电子邮件系统,通过该系统用户可以从其他用户那里收到或向他们发送消息,甚至可以同时向几个用户广播一个消息,或者与另外一个用户直接连接以建立一个实时会话。

用户也可以通过网络与其他UNIX系统上的用户通信,还可以远程登录到其他系统上并直接通过网络传输文件。

在UNIX系统中包含大量的应用程序,其中有些是很简单的操作,有些则是非常复杂的程序并且拥有自己的命令集。

这些应用程序可以分为编辑器、过滤器和通信程序三类,同时还有执行文件操作和程序管理的应用程序。

    UNIX系统提供几种标准的编辑器,vi是典型的全屏幕编辑器,类似于Windows中的记事本。

    过滤器从用户、文件或者其他数据源读取输入,然后检查并处理数据,最后输出结果。

过滤器的输入不一定是一个文件,也可以是用户的键盘输入,甚至可以是另外一个过滤器的输出。

过滤器可以互相连接,一个过滤器的输出成为另一个的输入。

用户也可以编写自己的过滤器。

    UNIX还拥有一套通信应用程序,通过这些程序可以与本系统或其他系统上的用户通信。

作为一个多用户系统,UNIX必须与所有用户保持联系并对他们进行跟踪。

基本的监视需求和基本的文件结构互连可以很容易地实现一个电子邮件系统,通过该系统用户可以从其他用户那里收到或向他们发送消息,甚至可以同时向几个用户广播一个消息,或者与另外一个用户直接连接以建立一个实时会话。

用户也可以通过网络与其他UNIX系统上的用户通信,还可以远程登录到其他系统上并直接通过网络传输文件。

5、子网问题?

你一定对IP地址有所了解吧?

我们知道在INTERNET中广泛使用的TCP/IP协议就是利用IP地址来区别不同的主机的。

如果你曾经进行过TCP/IP协议设置,那么你一定会遇到子网掩码(Subnetmask)这一名词,那么你知道什么是子网掩码吗?

它有什么作用呢?

我们知道IP地址是一个4字节(共32bit)的数字,被分为4段,每段8位,段与段之间用句点分隔。

为了便于表达和识别,IP地址是以十进制形式表示的如210.52.207.2,每段所能表示的十进制数最大不超过255。

IP地址由两部分组成,即网络号(NetgworkID)和主机号(HostID)。

网络号标识的是Internet上的一个子网,而主机号标识的是子网中的某台主机。

网际地址分解成两个域后,带来了一个重要的优点:

IP数据包从网际上的一个网络到达另一个网络时,选择路径可以基于网络而不是主机。

在大型的网际中,这一点优势特别明显,因为路由表中只存储网络信息而不是主机信息,这样可以大大简化路由表。

IP地址根据网络号和主机号的数量而分为A、B、C三类:

A类IP地址:

用7位(bit)来标识网络号,24位标识主机号,最前面一位为"0",即A类地址的第一段取值介于1~126之间。

A类地址通常为大型网络而提供,全世界总共只有126个只可能的A类网络,每个A类网络最多可以连接16777214台主机。

B类IP地址:

用14位来标识网络号,16位标识主机号,前面两位是"10"。

B类地址的第一段取值介于128~191之间,第一段和第二段合在一起表示网络号。

B类地址适用于中等规模的网络,全世界大约有16000个B类网络,每个B类网络最多可以连接65534台主机。

C类IP地址:

用21位来标识网络号,8位标识主机号,前面三位是"110"。

C类地址的第一段取值介于192~223之间,第一段、第二段、第三段合在一起表示网络号。

最后一段标识网络上的主机号。

C类地址适用于校园网等小型网络,每个C类网络最多可以有254台主机。

从上面的介绍我们知道,IP地址是以网络号和主机号来标示网络上的主机的,只有在一个网络号下的计算机之间才能"直接"互通,不同网络号的计算机要通过网关(Gateway)才能互通。

但这样的划分在某些情况下显得并十分不灵活。

为此IP网络还允许划分成更小的网络,称为子网(Subnet),这样就产生了子网掩码。

子网掩码的作用就是用来判断任意两个IP地址是否属于同一子网络,这时只有在同一子网的计算机才能"直接"互通。

那么怎样确定子网掩码呢?

前面讲到IP地址分网络号和主机号,要将一个网络划分为多个子网,因此网络号将要占用原来的主机位,如对于一个C类地址,它用21位来标识网络号,要将其划分为2个子网则需要占用1位原来的主机标识位。

此时网络号位变为22位为主机标示变为7位。

同理借用2个主机位则可以将一个C类网络划分为4个子网……那计算机是怎样才知道这一网络是否划分了子网呢?

这就可以从子网掩码中看出。

子网掩码和IP地址一样有32bit,确定子网掩码的方法是其与IP地址中标识网络号的所有对应位都用"1",而与主机号对应的位都是"0"。

如分为2个子网的C类IP地址用22位来标识网络号,则其子网掩码为:

11111111111111111111111110000000即255.255.255.128。

于是我们可以知道,A类地址的缺省子网掩码为255.0.0.0,B类为255.255.0.0,C类为255.255.255.0。

下表是C类地址子网划分及相关子网掩码:

子网位数子网掩码主机数可用主机数

1255.255.255.128128126

2255.255.255.1926462

3255.255.255.2243230

4255.255.255.2401614

5255.255.255.24886

6255.255.255.25242

你可能注意到上表分了主机数和可用主机数两项,这是为什么呢?

因为但当地址的所有主机位都为"0"时,这一地址为线路(或子网)地址,而当所有主机位都为"1"时为广播地址。

同时我们还可以使用可变长掩码(VLSM)就是指一个网络可以用不同的掩码进行配置。

这样做的目的是为了使把一个网络划分成多个子网更加方便。

在没有VLSM的情况下,一个网络只能使用一种子网掩码,这就限制了在给定的子网数目条件下主机的数目。

例如你被分配了一个C类地址,网络号为192.168.10.0,而你现在需要将其划分为三个子网,其中一个子网有100台主机,其余的两个子网有50台主机。

我们知道一个C类地址有254个可用地址,那么你如何选择子网掩码呢?

从上表中我们发现,当我们在所有子网中都使用一个子网掩码时这一问题是无法解决的。

此时VLSM就派上了用场,我们可以在100个主机的子网使用255.255.255.128这一掩码,它可以使用192.168.10.0到192.168.10.127这128个IP地址,其中可用主机号为126个。

我们再把剩下的192.168.10.128到192.168.10.255这128个IP地址分成两个子网,子网掩码为255.255.255.192。

其中一个子网的地址从192.168.10.128到192.168.10.191,另一子网的地址从192.168.10.192到192.168.10.255。

子网掩码为255.255.255.192每个子网的可用主机地址都为62个,这样就达到了要求。

可以看出合理使用子网掩码,可以使IP地址更加便于管理和控制。

6、P/V问题?

在操作系统理论中有一个非常重要的概念叫做P,V原语。

在我们研究进程间的互斥的时候经常会引入这个概念,将P,V操作方法与加锁的方法相比较,来解决进程间的互斥问题。

实际上,他的应用范围很广,他不但可以解决进程管理当中的互斥问题,而且我们还可以利用此方法解决进程同步与进程通信的问题。

[一]P,V原语理论

阐述P,V原语的理论不得不提到的一个人便是赫赫有名的荷兰科学家E.W.Dijkstra。

如果你对这位科学家没有什么印象的话,提起解决图论中最短路径问题的Dijkstra算法应当是我们再熟悉不过的了。

P,V原语的概念以及P,V操作当中需要使用到的信号量的概念都是由他在1965年提出的。

信号量是最早出现的用来解决进程同步与互斥问题的机制,包括一个称为信号量的变量及对它进行的两个原语操作。

信号量为一个整数,我们设这个信号量为:

sem。

很显然,我们规定在sem大于等于零的时候代表可供并发进程使用的资源实体数,sem小于零的时候,表示正在等待使用临界区的进程的个数。

根据这个原则,在给信号量附初值的时候,我们显然就要设初值大于零。

p操作和v操作是不可中断的程序段,称为原语。

P,V原语中P是荷兰语的Passeren,相当于英文的pass, V是荷兰语的Verhoog,相当于英文中的incremnet。

  P原语操作的动作是:

(1)       sem减1;

(2)       若sem减1后仍大于或等于零,则进程继续执行;

(3)       若sem减1后小于零,则该进程被阻塞后进入与该信号相对应的队列中,然后转进程调度。

V原语操作的动作是:

(1)       sem加1;

(2)       若相加结果大于零,则进程继续执行;

(3)       若相加结果小于或等于零,则从该信号的等待队列中唤醒一等待进程,然后再返回原进程继续执行或转进程调度。

需要提醒大家一点就是P,V操作对于每一个进程来说,都只能进行一次。

而且必须成对使用。

且在P,V愿语执行期间不允许有中断的发生。

对于具体的实现,方法非常多,可以用硬件实现,也可以用软件实现。

我们采用如下的定义:

   procedure p(var s:

samephore); 

     { 

       s.value=s.value-1;

       if (s.value<0) asleep(s.queue); 

     } 

  procedure v(var s:

samephore); 

     { 

       s.value=s.value+1;

       if (s.value<=0) wakeup(s.queue); 

     } 

其中用到两个标准过程:

 asleep(s.queue);执行此操作的进程控制块进入s.queue尾部,进程变成等待状态

 wakeup(s.queue);将s.queue头进程唤醒插入就绪队列

对于这个过程,s.value初值为1时,用来实现进程的互斥。

虽软说信号量机制毕加锁方法要好得多,但是也不是说它没有任何的缺陷。

由此我们也可以清晰地看到,这种信号量机制必须有公共内存,不能用于分布式操作系统,这是它最大的弱点。

[二]P,V原语的应用

正如我们在文中最开始的时候提到的,P,V原语不但可以解决进程管理当中的互斥问题,而且我们还可以利用此方法解决进程同步与进程通信的问题。

(1)用P V原语实现进程互斥

把临界区置于P(sem) 和V(sem)之间。

当一个进程想要进入临界区时,它必须先执行P原语操作以将信号量sem减1,在进程完成对临界区的操作后,它必须执行V原语操作以释放它所占用的临界区。

从而就实现了进程的互斥:

具体的过程我们可以简单的描述如下:

PA:

P(sem)

;

V(sem)

PB:

P(sem)

;

V(sem)

(2) 用P V原语实现进程同步

进程同步问题的解决同样可以采用这种操作来解决,我们假设两个进程需要同步进行,一个进程是计算进程,另一个进程是打印进程,那么这个时候两个进程的定义可以表示为:

PC(表示计算进程)

A:

 local buf

     repeat 

buf=buf

     until buf=空

     计算

      得到计算结果

      buf=计算结果

      goto A 

PP:

(表示打印进程)

B:

 local pri

     repeat

     pri=buf

     until pri!

=空

     打印buf中的数据

     清除buf中的数据

     goto B

相应用P,V原语的实现过程为:

PA:

 deposit(data)

Begin local x

P(bufempty)

按FIFO方式选择一个空缓冲区buf(x)

buf(x)=data

buf(x)置满标记

展开阅读全文
相关搜索
资源标签

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2