zoukankan      html  css  js  c++  java
  • 各互联网名企面试题汇总(2)

    一、迅雷2016研发工程师笔试题(快速排序)

    已知关键字序列为(51、22、83、46、75、18、68、30),按关键码字51进行一趟快速排序,完成后的序列为(A)

    A:(30、22、18、46、51、75、68、83)

    B:(30、18、22、46、51、75、83、68)

    C:(30、18、22、46、51、75、68、83)

    D:(18、22、30、46、51、68、75、83)

    解释:这道题看快排算法如何写:有两种解法

    1.双路快排:

         起始序列:51,22,83,46,75,18,68,30

      以51为基准:51,22,30,46,7518,68,83

                  :51,22,30,46,18,75,68,83

           出现了交叉:18,22,30,46,51,75,68,83   为答案,发现选项里并没有

    2.单路快排:

      起始序列:51,22,83,46,75,18,68,30

      以51为基准:30,22,83,46,75,18,68,51

              :30,22,51,46,75,18,68,83

                :30,22,18,46,7551,68,83

           :30,22,18,46,51,75,68,83    为最终答案,选 A

    二、2016英特尔软件研发类笔试题(堆排序)

    初始序列为 1 8 6 2 5 4 7 3 一组数采用堆排序,当建堆(小根堆)完毕时,堆所对应的二叉树中序遍历序列为:(A ) 

    A. 8 3 2 5 1 6 4 7
    B. 3 2 8 5 1 4 6 7
    C. 3 8 2 5 1 6 7 4
    D. 8 2 3 5 1 4 7 6

    解释:最小堆,是一种经过排序的完全二叉树,其中任一非终端节点的数据值均不大于其左孩子和右孩子节点的值。根据题意画出对应的完全二叉树,图左边为初始完全二叉树,图右边为经过堆排序之后的完全二叉树。

    所以对应的中序遍历结果为:中序,左根右,8,3,2,5,1,6,4,7,所以选A

    三、迅雷2016研发工程师笔试题(顺序表插入)

    顺序表含有127个元素,向其插入一个新元素并保持原来顺序不变,平均要移动____个元素()

    A:63.5

    B:8

    C:32

    D:7

    解释:共有128个位置可以插入,每个位置上要移动的元素个数为127,126,125,...1,0,假设每个位置都是等可能的,平均移动元素即为数学期望,求得为63.5个

    四、2016腾讯软件开发部分试题

    1.已知一棵二叉树,如果先序遍历的节点顺序是: ADCEFGHB ,中序遍历是: CDFEGHAB ,则后序遍历结果为:( D)

    A. CFHGEBDA
    B. CDFEGHBA
    C. FGHCDEBA
    D. CFHGEDBA

    解答:先序遍历:根左右。先访问根结点,再先序遍历左子树,再先序遍历右子树

         中序遍历:左根右。中序遍历左子树,访问根结点,中序遍历右子树。

         后序遍历:左右根。后序遍历左子树,后序遍历右子树,访问根结点。

    根据先序遍历和中序遍历结果,可以得出后序遍历结果为:CFHGEDBA,所以选D

    2.下列哪两个数据结构,同时具有较高的查找和删除性能?( CD)

    A. 有序数组
    B. 有序链表
    C. AVL 树
    D. Hash 表

    解释:这个无需多说,直接上图。

    根据表可知:选CD,选择平衡二叉树和哈希表

    3、下列排序算法中,哪些时间复杂度不会超过 nlogn?( BC)

    A. 快速排序
    B. 堆排序
    C. 归并排序
    D. 冒泡排序

    解释:考察排序,直接上图。

    所以,根据性能,选择最坏情况下的时间复杂度,满足要求的是堆排序和归并排序,选BC

    4.当 n = 5 时,下列函数的返回值是:(A )

    int foo(int n)
    {
      if(n<2)
        return n;
      return foo(n-1)+foo(n-2);
    }

    A.5
    B.7
    C.8
    D.1

    解释:递归的调用,画出图,一目了然,选A

    5.下列程序的输出是:( D)

    #define add(a+b) a+b  
    int main()  
    {  
        printf(“%dn”,5*add(3+4));  
        return ;  
    }

    A、23

    B、35

    C、16

    D、19

    解释:#define本质是代换,用 add(a+b)替换 a+b ,所以输出的是:5 * 3 + 4 = 19 ,选 D

    6.Unix系统中,哪些可以用于进程间的通信?( ABCD)

    A.Socket
    B.共享内存
    C.消息队列
    D.信号量

    解释:

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

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

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

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

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

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

    7.静态变量通常存储在进程哪个区?( C)

    A: 栈区

    B: 堆区

    C: 全局区

    D: 代码区

    解释:静态变量的修饰关键字:static,又称静态全局变量。故最后选择的结果为: C

    8.IP地址131.153.12.71是一个(B)类IP地址。

    A.A
    B.B
    C.C
    D.D

    解释:这个考察IP地址的基本概念,如下图所示:

    故将 131 转为二进制 :10000011,因此为 B 类 IP 地址,结果选 B

     五、迅雷2016研发工程师笔试题(双向循环链表)

    在带头结点的双向循环链表中插入一个新结点,需要修改的指针域数量是( D )

    A:2个

    B:6个

    C:3个

    D:4个

    解释:双向循环链表,每个结构体都有指向自己前驱和后继的两个指针。假设待插入的结构体的两个指向指针目前都指向null,那么要修改4个,被插入位置的前一个结构体的后继指针(1),被插入结构体前驱指针(2)和后继指针(3),被插入位置后一个结构体的前驱指针(4),所以选择 D

    个人能力有限,欢迎各位博友批评指正!!!

  • 相关阅读:
    python读写excel利器:xlwings 从入门到精通
    认识--类 ( Class ) 面向对象技术
    python 平均值/MAX/MIN值 计算从入门到精通
    python读写word文档 -- python-docx从入门到精通
    【模板】KMP算法
    【模板】主席树
    C语言第一次博客作业
    C语言--第0次作业
    Chapter5:语句
    Chapter4:表达式
  • 原文地址:https://www.cnblogs.com/lxt1105/p/6512014.html
Copyright © 2011-2022 走看看