<input id="suquq"><acronym id="suquq"></acronym></input>
  • <input id="suquq"></input>
    <input id="suquq"></input>
  • <menu id="suquq"><u id="suquq"></u></menu>
    <object id="suquq"><acronym id="suquq"></acronym></object>
  • <input id="suquq"></input>
  • <menu id="suquq"></menu>
    <menu id="suquq"></menu>
  • <input id="suquq"><u id="suquq"></u></input>
    <menu id="suquq"><tt id="suquq"></tt></menu>

    人人 2021 研发岗面试题

    小编:管理员 932阅读 2021.10.11

    第1题:

     以下排序中时间复杂度最差的是

       

    A  归并排序

    B  选择排序

    C  希尔排序

    D  堆排序



     B



    第2题:

     当参数*x==1, *y==1, *z==1时,下列不可能是函数add的返回值的( )?


    int add(int *x, int *y, int *z){

        *x += *x;

        *y += *x;

        *z += *y;

        return *z;

     }

         

    A  4

    B  5

    C  6

    D  7




     D

    开始不知道啥意思,后经牛客网的大神指点才知道这题要考虑的是,x,y,z三个参数是否指向同一地址(或者说调用该函数时是否实参相同),如:当a=b=c=1时,add(&a,&a,&a),add(&a,&b,&c)。

    通过写程序测试得出结果,不可能得到答案7。



    第3题:

     体育课的铃声响了,同学们都陆续地奔向操场,按老师的要求从高到矮站成一排。每个同学按顺序来到操场时,都从排尾走向排头,找到第一个比自己高的同学,并站到他的后面,这种站队的方法类似下列哪种算法?

      

    A  快速排序

    B  插入排序

    C  冒泡排序

    D  归并排序



     B



    第4题:

     下面关于inode描述错误的是?

     

    A  inode和文件是一一对应的

    B  inode能描述文件占用的块数

    C  inode描述了文件大小和指向数据块的指针

    D  通过inode实现文件的逻辑结构和物理结构的转换



     A



    第5题:

     设有一个栈,元素依次进栈的顺序是A,B,C,D,E。下列不可能的出栈顺序有?

             

    A  ABCDE

    B  BCDEA

    C  EABCD

    D  EDCBA



     C

    进一个出一个的序列为A

    AB进栈B出栈C进栈出栈D进栈出栈E进栈出栈A出栈的序列为B

    全部进栈再出栈的序列为D,栈为先进后出的数据结构,无论如何都不会出现C的情况,故选C



    第6题:

     某二叉树结点的中序序列为A、B、C、D、E、F、G、H,后序序列为B、D、C、A、F、G、H、E。该二叉树对应的树林结点的层次次序序列为?

      

    A  E、G、H、F、A、C、D、B

    B  E、A、H、C、G、B、D、F

    C  E、A、G、H、C、F、B、D

    D  E、G、A、C、H、D、F、B



     B

    由后序序列知E为根节点,再由中序遍历知左子树为ABCD,右子树为FGH

    由后序遍历BDCA知,A为BDC父节点,BDC为右子树,其中C为BD父节点,B为C的左孩子,D为C右孩子,该树左半部分完成

    由中序序列和后序序列知FGH序列不变,则H的左孩子为G,G的左孩子为F,H为E的右孩子,该树可知其层次次序序列为EAHCGBDF,故选B



    第7题:

     假设平均每个人人用户有300个好友,则一个人人用户的3跳好友数的数量级是?

       

    A  十万级

    B  百万级

    C  千万级

    D  亿级



     C

    300的3次方,27000000,如果包含相互好友、共同好友的话还会比这个少。



    第8题:

     下列哪些因素不会限制Linux服务器并发连接数?

     

    A  系统内存大小

    B  系统网卡数量

    C  系统最大文件句柄数量

    D  系统IP地址数量



     B

    网卡数量。选择B


    第一个,就是ip地址数,系统ip数越多,建立连接数越多。


    第二个,内存。从配置文件角度说吧

    用vim打开配置文件:#vim  /etc/sysctl.conf

    net.ipv4.tcp_mem[0]:低于此值,TCP没有内存压力。

    net.ipv4.tcp_mem[1]:在此值下,进入内存压力阶段。

    net.ipv4.tcp_mem[2]:高于此值,TCP拒绝分配socket。

    上述内存单位是页,而不是字节。内存大小影响网络  


    第三个。其他,句柄最大数影响network 在vfs操作的上限。



    最后。这么高大上的问题,我们先来看一个故事吧:


    100万并发连接服务器笔记之Erlang完成1M并发连接目标

    100万并发连接服务器笔记之1M并发连接目标达成

    100万并发连接服务器笔记之测试端就绪

    100万并发连接服务器笔记之处理端口数量受限问题

    100万并发连接服务器笔记之准备篇




    第9题:

     二、填空题

    在区间[-1, 1]随意取两个数,它们的和大于1的概率是_________。(分数表示)



     1/8



    第10题:

     n从1开始,每个操作可以对n加1或加倍,如果要使n是2021,最少需要________ 个操作。



     18

    int minimum_step(int n) {

        vector<int> dp(n + 1);

        dp[1] = 0;

        for (int i = 2; i <= 2021; i++) {

            dp[i] = dp[i - 1] + 1;

            if (i % 2 == 0) {

                dp[i] = min(dp[i], dp[i / 2] + 1);

            }

        }

        return dp[2021];

    }



    第11题:

     三、问答题

    给出二叉树接口为


    class node

    {

        node *get_left();

        node *get_right();

        int get_data();

    }

       

    找出值为val的最浅节点所在层数。

    int find(node *root, int val).




     

    int find(node * root, int val) {

        int ret = 1;

     

        if (root->get_data() == val) {

            return ret;

        } else {

            int  ret1 = 1 + find(root->get_left(), val);

            int  ret2 = 1 + find(root->get_right(), val);

            if (ret1 > ret2)

                ret = ret2;

            else

                ret = ret1;

     

            return ret;

        }

    }



    第12题:

     计算机中处理乘法的指令要比加法复杂的多, 因为在一些关键系统中我们常常会考虑如何尽可能减少乘法的运算。

    现在有如下的表达式

    y= anxn+an-1xn-1 +…..+a1x +a0

    其中an, an-1, ….a1, a0是常数, 给一个x, 要求尽快算出y的值。请尝试写出这样的一个函数。



     思路: 

    F0=an;

    F1=anx+an-1
    Fn=xF(n-1)+an-1

    代码:    

    function sum(int a[], int n, int x){

        s=a[n]

        for(int i=1; i<=n; i++){

            s += x*s + a[n-i]

        }

        return s;

    }


    关联标签:
    微彩