zoukankan      html  css  js  c++  java
  • 腾讯2014实习生4月20日笔试题(分析与解答)

    昨天参加了这次实习生笔试题,感觉考的不算难,但是有点广,数据结构、计算机操作系统、计算机网络等都有涉及。却没有实际编码题目,看样子是面试的时候考察吧。其实基础扎实的话,应该不难。

    答案都是自己解答和小伙伴探讨以及网上查的资料进行分析的,如有错误请留言拍砖! 

    (一)不定项选择题(25*4)

    1.  使用深度优先算法遍历下图,遍历的顺序为()

     

    A ABCDEFG        B ABDCFEG

    C ABDECFG        D  ABCDFEG

     

    2.  输入序列ABCABC经过栈操作变成ABCCBA,下面哪些是可能的栈操作( )

    A.     push pop push pop push pop pushpush push pop pop pop        //ABCCBA

    B.     push push push push push push poppop pop pop pop pop        //CBACBA

    C.     push push push pop pop pop pushpush pop pop push pop       //CBABAC

    D.     push push push push pop pushpop push pop pop pop pop      //ABCCBA

     

     

    3.  下列关键码序列哪些是一个堆( )

    A. 90 31 53 23 16 48                B . 90 48 31 53 16 23 

    C.  16 53 23 90 314                 D.1631 23 90 53 48  

    //48的左子节点为53,而该堆为大堆,违反其父节点都必须大于或等于其对应的子节点性质

    //对于答案C:53右子节点为31,而该堆为小堆,违反其父节点都必须小于或等于其对应的子节点性质

    //堆的性质,符合最大堆或者最小堆都行,如果大堆的话所有父节点都必须大于或等于其对应的子节点,

    如果小堆的话,所有父节点都必须小于或等于其对应的子节点。  

    堆是一棵完全二叉树,从上到下画好,进行对比就可以得到答案。

    4. 稀疏矩阵压缩的存储方法是:()

    A 三元组 B 二维数组 C 散列 D 十字链表
    //自己也忘记了少选了一个十字链表~晕,具体详细讲解可以查看下篇博文(网上搜的)
    矩阵(稀疏矩阵)的压缩存储(一)

    5.  二叉树的后序排列DBEFCA,中序排列DBAECF,那么对其做先序线索化二叉树,节点E的线索化指向节点()

    A  BC        B  AC        C  DF         D CF

    建立线索二叉树,或者说对二叉树线索化,实质上就是遍历一颗二叉树。(网搜)

     //刚开始不明白什么是线索二叉树,凭感觉应该就是遍历二叉树,在遍历过程中,访问结点的操作是检查当前的左,右指针域是否为空,将它们改为指向前驱结点或后续结点的线索。E的前驱是C,后继是F。

    6. 线性结构的是()

    A 串  B 链式存储栈  C顺序存储栈 D 顺序存储二叉树
    常用的线性结构有:线性表,栈,队列,双队列,数组,串。
    关于广义表,是一种非线性的数据结构。
    常见的非线性结构有:二维数组,多维数组,广义表,树(二叉树等),图(网等)。(网搜)
    //意思差不多就是只能是一维的结构,查找的时候只能从前或后两个方向查找(自认)

    7.  Linux命令是哪些()

    A ls   B mkdir     Cmagnify     D man

    //做错咯,对linux的magnify(放大镜实用程序)不敢肯定。但是敲击进去却不可用,不知道是不是老版本可用,新版本不可用,真不知道是不是命令。

     

     

    8. Unix系统中,适合任意两个进程通信的是()

    A FIFO   PIPE  C Message Queue  D  sharememory

     //可以进行进程通信的有:管道、信号、信号量、消息队列、共享内存、套接字(套接字上次的腾讯面试中有提,但是别人答案未选,存在争议,待解答:))

    PS:网友改正,答应应该为ACD,PIPE就是匿名管道的意思,而命名管道的另一种说法就是FIFO。匿名管道只能在父子进程中进行通信。

    园中讲解:进程间通信程序设计1

    9. Windows系统中,不适合进程通讯的是()

    A 临界区 B 互斥量 C 信号量 D 事件
    //这四个选项都是线程同步的实现方法,但互斥量、信号量、事件都可以被跨越进程使用来进行同步数据操作,而临界区只能在进程内部各线程间使用。(网搜)

    10.  下面的内存管理模式中,会产生外零头的是()

    A 页式 B段式C 请求页式 D 请求段式
     //网搜资料     http://cc.sjtu.edu.cn/os/res/res6-5.asp    http://blog.sina.com.cn/s/blog_4c6403ed01000bbb.html(内容介绍) 
    //根据网搜的资料感觉答案为CD,又少选了一个请求段式额,悲催~(这个网搜资料有点乱,也不确定,待大家解答!)

    11.  Linux执行ls,会引起哪些系统调用()

    A nmap B read C execve D fork

    12.  a 是二维数组,a[i][j]的指针访问方式为:()

    A *(a+i+j)   B *(*(a+i)+j)   C *(a+i)+j     D *a+i+j

     

    13 输出以下结果:
      #define add(a,b) a+b;
      Intmain()
    {
       Printf(“”,3*add(4,7));
    }
    A 33 B 19  C  25  D   49     //腾讯笔试好像是去年的原题吧  3*4+7=19

    14 对于以下代码,char * p= newchar[100]

    A p 和 new出来的内存都在栈上
    B p 和 new出来的内存都在堆上
    C p在栈上 new出来的在堆上             
    D p在堆上 new出来的在栈上

    15 进程A读取B进程中的某个变量(非共享内存),可行的方式()

    A 进程向消息队列写入一个包含变量内容的消息,B进程从队列中读出
    B 通过本地环路通信
    C 如果A、B 非亲属,那么A通过命名管道把这个变量的地址发给B进程
    D 如果 B是A 进程,那么B直接读取变量内容即可      
    //不太确定,待解释
    16 使用 send发送大量小的数据包,说法正确的是()

    A 带宽利用率低 B 网卡吞吐很高 C 网卡中断频繁 D 进程上下文切换频繁
    //自己选的ABCD,也不知道对不对,求解释
    17 TCP的握手与分手 可能出现的情形是()

    A 握手需要3次通信 
    B 分手需要进行4次通信 
    C Fin和ACK 在同一包里 
    D ACK 和SYN 在同一包里

    18. 和16题 一样。。。。。。


    19. 新窗口打开网页,以下哪个()

    A _self B _blank C _top D _parent
    参考博文:  http://blog.sina.com.cn/s/blog_8d94fa6a01016q5b.html

    20.二进制数01011011转化为十进制为()

    A 103 B 91 C 171 D 71                      

    21 版本控制软件是哪些()
    A bugzilla B subversion C Git D loadrunner
    Loadrunner: 压力测试工具 
    bugzilla :追踪系统的软件,专门为Unix而定制 
    22 Select A,B from Table1 where A between60 and 100 order by B,下面哪些优化sql性能()
    A 字段A 建立hash索引,字段B btree索引
    B 字段A 建立hash索引,字段B不建立索引
    C字段A 建立btree索引,字段B不建立索引   
    D 字段A 不建立 索引,字段B建立btree索引
    //数据库内部采用的是B-Tree结构方便查询一个区间段的值,适合进行区间索引(自认)
    23 数据索引的正确是()
    A 1个表只能有一个聚族索引,多个非聚族索引
    B 字符串模糊查询不适合索引     //自认为B是对的,但是不确定,待解答
    C 哈希索引有利于查询字段用于大小范围的比较查询
    D 多余的索引字段会降低性能

    24 CPU与外设的传输数据的方式是()

    A 程序方式 B中断 C DMA D 通道方式 
    文章中都说是ABC,但是我记得DMA的传送过程是无需CPU介入的,但是题目给的又是
    CPU与外设的传输数据的方式,所以C到底该不该选,个人觉得甚是纠结
    //参考文章:http://cs.xiyou.edu.cn:84/wjyl/OnlineClass/7.2.html
    http://wenku.baidu.com/view/e2f8690ebb68a98271fefa0c.html

    25 式子7*15=133成立,则用的是几进制()

    A  6      B 7      C 8         D 9   //7*15(转十进制为13)=133(转十进制64+24+3=91)

    (二)填空题

    26. MySQL中表test选择10条到20条记录的语句是()
    select * from test limit 10,10;     //不会MySQL,忘记关键字limit写错了。 
    //多谢xiaozdong指正 
    limit是mysql的语法
    select * from table limit m,n
    其中m是指记录开始的index,从0开始,表示第一条记录
    n是指从第m+1条开始,取n条。
    select * from tablename limit 2,4
    即取出第3条至第6条,4条记录


    27. 若信号S为9,则S经过15次P和14次V,S为()

    8    每P一次减一,没V一次加一。相当于一个容器(S),进去一个(P)容量就少一个,出来一个(V)容量就多一个。
    28. 页面走向:4 3 2 1 4 3 5 4 3 2 1 5 4,当分配的内存物理快数4(开始为装入),采用LRU淘汰算法,产生多少次缺页()
    9    
    LRU:最近最少使用淘汰算法:
    就像排队,被叫到但是队中没有就缺了,被叫到的队中有则不缺,再把其放在队尾,继续叫号。(被叫到的也可以进行加权,按权值来淘汰)
    缺页为:
    4              缺1
    4  3          缺1
    4  3  2      缺1
    4  3  2  1  缺1
    3  2  1  4  不缺
    2  1  4  3  不缺
    1  4  3  5  缺1
    1  3  5  4  不缺
    1  5  4  3  不缺
    5  4  3  2  缺1
    4  3  2  1  缺1
    3  2  1  5  缺1
    2  1  5  4  缺1
     
    29. 评估算法优势,通常从()和()两个方面考察
    时间复杂度   空间复杂度

    30. G是一个邻接表,以V1为起点,深度优先遍历序列V1V2V3V6V5V4,从V1开始的广度优先遍历序列是()


     

    V1 V2 V5 V4 V3 V6
    //以前记得的,现在忘记了,自己做错了,很自然的就写成了V1 2  5 4  6 3
    31.20*20*20的魔法,8000个小正方体,如果剥取最外一层,还剩下多少个方块()
    5832
    //个人见解: 先忽略上下两个面,前后左右四个面的话就是上下全部占用就是20个,左右的话占用一边就是19个,然后前后左右是4个就是:19*20*4
    现在来考虑上下两面,此时四边都被占用了,前后两边减二,左右两边减二就是18*18 ,然后上下两个面就是:18*18*2
    结果为20*20*20-(19*20*4+18*18*2)=8000-2168=5832
    大神给的解答就是18*18*18=5832 ,不明觉厉!

    32. 

    (1)如果A投硬币是正面的,B给A  1美金
    (2)如果A投的是反面,就再投,为正面,B给A 2美金
    (3)如果还是反面,就再投,为为正面,B给A 4 美金
    (4)假设A投的是反面,就投到正面为止,B就给A 的2的(n-1)次方
    如果A、B玩这样的硬币游戏,A至少要给B多少钱B才不会亏钱()
    此题还真不会做,有待大家解答。只明了不管是哪一次停止,按概率算的话,给出的钱都是1/2: 第n次结束的概率为1/2的n方,而给的钱为2的n-1方
    两者相乘就等于1/2


    33.左轮枪,左轮枪,有6个弹巢,两颗子弹放进相邻的弹巢,拨动转轮,然后拿着这把枪朝我自己扣动,但我还活着,现在轮到你了,你有两种选择

    (1)在扣动一次转轮,把枪对准自己,扣动扳机
    (2)不拨动转轮,直接对准自己,扣动扳机
    假设你还不想死,你选择哪种()原因()
    选第二种     概率1/2>1/4 或者1/3>1/4
    经过我和同门小伙伴讨论得出第二种爆头的概率为1/4,文字不好解释额,假设第一个子弹的位置为1,第二个子弹的位置为2则第一个人没有爆头的弹巢就为3、4、5、6 ,
    现在如果为3,则下一弹巢为4不爆头
    现在如果为4,则下一弹巢为5不爆头
    现在如果为5,则下一弹巢为6不爆头
    现在如果为6,则下一弹巢为1爆头
    可知爆头概率为1/4
    第一种的话有两种争论,拨动转轮到底是拨动一格还是拨动一下转n圈,就像电视上面的一样。这两种情况有待商榷,没有抓住出题者的意图。
    假设为第一种转动一格。那么还是按照上面的来分析:
    现在如果为3,再拨动一格则下一弹巢为5不爆头
    现在如果为4,再拨动一格则下一弹巢为6不爆头
    现在如果为5,再拨动一格则下一弹巢为1爆头
    现在如果为6,再拨动一格则下一弹巢为2爆头
    所以这种情况下面爆头概率非常高为1/2
    假设为第二种转动n圈,回到随机位置,这种就比较好考虑了,就是6个里面有两个爆头,概率为1/3


    提交的时候遇到这个问题,是不是有点坑爹啊,呵呵,看来网络环境还是要大家来维系。

    附加题:
    34.描述mapreduce的执行过程,最好用画图的方式表示。

    参考解答:http://liouwei20051000285.blog.163.com/blog/static/252367420116125223809/


    35.数据库A的ID从20120120300001到20120120399999,更新ID从00001到99999,递增加1,不重复,不间断(并保持高并发的性能)
    也不是很清楚当时就写了设置ID为主键,保证其唯一约束。还有就是以日期找到当天是否数据库中已有当天的ID,没有设为00001,
    有的话就找到当天最大的那一个然后加1为对应的主键。保持高并发性,不知道怎么做。还是必须得加锁一条一条插入吧。待大家解答。
     
     
     
  • 相关阅读:
    微信中一些常用的js事件积累
    css 设置圆角
    移动开发可能用到的css单位
    移动端触摸划屏,实现内容滑动
    postman发送get请求
    Jmeter 快速入门初识线程组
    python基础(一)简单入门
    Jmeter 快速入门简单的http压测
    Mac下Git的基础操作
    接口测试基础
  • 原文地址:https://www.cnblogs.com/xxiaoye/p/3677852.html
Copyright © 2011-2022 走看看