• 2013网易校园招聘笔试题


    1、假设进栈次序是e1, e2, e3, e4,那可能的出栈次序是()
    A、e2, e4, e3, e1
    B、e2, e3, e4, e1
    C、e3, e2, e4, e1
    D、e1, e2, e4, e3

    给定入栈顺序,求出可能的出栈顺序。(点评:老得掉渣得题目了,只要小心点都没有问题)

    2、表达式X=A+B*(C-D)/E的后缀表示形式可以是()
    A、XAB+CDE/-*=
    B、XA+BC-DE/*=
    C、XABCD-*E/+=
    D、XABCDE+*/=

    分析:XABCD-*E/+=
    3.四叉树中包含地空指针数量有多少?假设每个节点含有四个指向其孩子的指针,那么给定n个节点,其4n个指针有多少指向空?(比较简单的题目,n个节点使用了的指针有n-1,所以最后的答案位4n-(n-1)=3n+1)

    分析:或者举例说明也行。。
    4.那个排序算法是非稳定的?选择,冒泡、希尔,堆排序,快速等 (也是比较基础的题目)

    A、冒泡排序      B、归并排序       C、快速排序         D、堆排序      E、希尔排序

    分析:凡是O(n^2)的全部是稳定排序,O(nlogn)的全部是非稳定排序。。


    5.根据函数,赋予参数值,写输出。。请问func(0x7f530829)的返回值是()

    int func(unsigned int i)
    {
        unsigned int temp = i;
        temp = (temp & 0x55555555) + ((temp & 0xaaaaaaaa)>>1);
        temp = (temp & 0x33333333) + ((temp & 0xcccccccc)>>2);
        temp = (temp & 0x0f0f0f0f) + ((temp & 0xf0f0f0f0)>>4);
        temp = (temp & 0xff00ff) + ((temp & 0xff00ff00)>>8);
        temp = (temp & 0xffff) + ((temp & 0xffff0000)>>16);
        return temp;
    }

    A、15           B、16            C、17           D、18

    分析:函数实现的是求二进制表示的时候,1的个数,一共15个
    最开始把每一个位看做一个节点,相邻节点值相加,结果用两个位表示。。。
    然后每两个位看做一个节点,相邻节点值相加,结果用四个位表示。。。
    以此类推,直到只剩下一个节点。。。

    6.进程与线程的区别:系统调度是对进程还是线程,线程与进程共享的内存空间、公共地址空间等;

    A.操作系统只调度进程,不调度线程

    B.线程共享内存地址空间,进程不共享

    C.线程间可共享内存数据,但进程不可以

    D.进程可以通过IPC通信,但线程不可以
    7.内存管理:段页式管理,地址映射表是?(操作系统方面的知识也不能掉以轻心呀)

    A. 每个作业或进程一张段表,一张页表

    B. 每个作业或进程的每个段一张段表,一张页表

    C. 每个作业或进程一张段表,每个段一张页表

    D. 每个作业一张页表,每个段一张段表

    8、关于TCP协议,下面哪种说法是错误的()
    A、TCP关闭连接过程中,两端的socket都会经过TIME_WAIT状态
    B、对一个Established状态的TCP连接,调用shutdown函数可以让主动调用的一方进入半关闭状态
    C、TCP协议默认保证了当TCP的一端发生意外崩溃(当机、网线断开或路由器故障),另一端能自动检测到连接失效
    D、在成功建立连接的TCP上,只有在Established状态才能收发数据,其他状态都不可以。

    分析:tcp/ip协议的实际使用过程中的问题:例如单方面断开后,另一端出于哪种状态,还有

    9、关于主键Primary Key和索引index的说法哪些是错误的?()
    A、唯一索引的列允许为NULL值
    B、一个关系表中的外键必定是另一表中的主键
    C、一个表中只能有一个唯一性索引

    D、索引主要影响查询过程,对数据的插入影响不大
    分析:数据库方面的知识:主键和索引的基本定义及其性质,例如主键在表中是否唯一,索引的速度以及对表的改变的影响;无论是唯一索引还是非唯一索引,索引列都允许取NULL值

    10、数据库的事务隔离级别一般分为4个级别,其中可能发生“不可重复读”的事物级别有()
    A、SERIALIZABLE 
    B、READ COMMITTED
    C、READ UNCOMMITTED

    D、REPEATABLE READ
    分析数据库:数据库的不可重复访问异常,四种事务隔离级别中哪些可以避免该类异常?

    各隔离级别对各种异常的控制能力 

      LU丢失更新 DR脏读 NRR非重复读 SLU二类丢失更新 PR幻像读
    未提交读 RU Y Y Y Y Y
    提交读 RC N N Y Y Y
    可重复读 RR N N N N Y
    串行读 S N N N N Y

    11、如果F(n)为该数列的第n项,那么这句话可以写成如下形式:
    F(1)=1,F(2)=1,F(n)=F(n-1)+F(n-2) (n>=3)
    请实现该函数F(n)的求解,并给出算法复杂度,要求算法复杂度小于O(n^2)。
    思路:使用滚动数组可以保存以前保存的结果,加快速度,减少空间复杂度。

    int Fib(int index)
    {
          if(index<1)
          {
                return-1;
          }
          int a1=1,a2=1,a3=1;
          for(int i=0;i<index-2;i++)
          {
                a3=a1+a2;
                a1=a2;
                a2=a3;
           }
           return a3;
    }

    详见:菲波那切数列七种解法:http://www.cnblogs.com/hlxs/archive/2011/07/15/2107389.html

     第二 部分(必做):程序设计
    1、下面的程序的输出是什么?

    #include<stdio.h>
    int main(void)
    {
        int n;
        char y[10] = "ntse";
        char *x = y;
        n = strlen(x);
        *x = x[n];
        x++;
        printf("x=%s
    ",x);
        printf("y=%s
    ",y);
        return 0;
    }

    输出:
    x=tse
    y=
    因为n=4,则*x = x[n];  的功能是将x指向的第一个字符n修改为,这样y字符串就结束了,所以第二输出为空,x++操作后,x指向第二个字符t,所以第一个输出为:tse。

    2、请给出下面程序的输出结果,并说明原因。

    #include<iostream>
    #include<vector>
    using namespace std;
    template<class t>
    class array
    {
    public:
        array(int size);
        size_t getVectorSize()
        {
            return _data.size();
        }
        size_t getSize()
        {
            return _size;
        }
    public:
        vector<t> _data;
        size_t _size;
    };
    
    template<class t>
    array<t>::array(int size) : _size(size) , _data(_size)
    {    }
    
    int main(void)
    {
        array<int> *arr = new array<int>(3);
        cout<<arr->getVectorSize()<<endl;
        cout<<arr->getSize()<<endl;
        return 0;
    }

    12.写一个程序来确定系统是大端模式还是小端模式;

    13.编程实现采用位操作来实现整数的加法操作。

    14. 图的矩阵表示法,图的深度优先遍历,算法思路及其实现。

    15.CAS(compare and swap)操作实现:(具体原理可以参考)

    16.fork函数的用法。具体题目为:

    #include <stdio.h>
    #include <sys/types.h>
    #include <unistd.h>
     
    int main(void)
    {
       int i;
       for(i=0; i<2; i++){
          fork();
          printf("-");
          fflush(stdout);
       }
     
       return 0;
    }

    6个-

    详见:http://coolshell.cn/articles/7965.html

    17.spin lock原理:
    先来一些代码吧!

    void initlock(volatile int* lock_status)
    {
        *lock_status = 0;                       
    }
    void lockvolatile int* lock_status)
    {
        while(test_and_set(lock_status = =1);                       
    }
    void unlock(volatile int* lock_status)
    {
        *lock_status = 0;
    }

    问题:volatile的作用?lock函数优化(针对在多cpu上提高cpu cache)?上面的缺陷(内存模式上的)?

    volatile的作用: 作为指令关键字,确保本条指令不会因编译器的优化而省略,且要求每次直接读值。如果没有volatile,基本上会导致这样的结果:要么无法编写多线程程序,要么编译器失去大量优化的机会。

    18.给定一个巨大的文件,如何从中选出k行,随处输出k行到文件中。要求每一行出现的概率都相等。设计算法、说明思路,算法复杂度。

    19.win32中WM_Quit的作用是什么?

    20.比较mutex和临街区之间的区别,并说明其使用场景。

    21.多线程编程,如何安全退出线程。

    还有网易数据挖掘方面的题目,这次数据挖掘的题目比较新奇,都是简答题。如下:

    1,简述你对数据与处理的认识;
    2,简述你对中文分词的理解,说明主要难点和常用算法;
    3,常见的分类算法有哪些;
    4,简述K-MEANS算法;
    5,设计一个智能的商品推荐系统;
    6,简述你对观点挖掘的认识

    网易游戏笔试的人太少,因此可提供的笔试题目都不全,只是听说特别的难。还有好多是数学方面的智力题。例如:

    1、英雄升级,从0级升到1级,概率100%。

    从1级升到2级,有1/3的可能成功;1/3的可能停留原级;1/3的可能下降到0级;
    从2级升到3级,有1/9的可能成功;4/9的可能停留原级;4/9的可能下降到1级。
    每次升级要花费一个宝石,不管成功还是停留还是降级。
    求英雄从0级升到3级平均花费的宝石数目。

  • 相关阅读:
    [JS11] 状态栏滚动
    [JS10] 获取时间
    [JS9] document's bgColor改变背景颜色
    [JS8] 显示从(0,0)到(0,0)的坐标
    [JS7] 显示从0到99的100个数字
    使用StringBuilder或StringBuffer简单优化
    启动一个线程的三种方法
    设置IE浏览器指定的功能
    jquery 判断元素是否存在于数组中
    Hibernate validator验证
  • 原文地址:https://www.cnblogs.com/sooner/p/3279358.html
Copyright © 2020-2023  润新知