阿里2015在线研发工程师笔试题(部分)

今天lz去阿里的在线笔试打了一把酱油,由于lz的水平有限,时间太他么紧张了。下面把记下来的题给大家分享一下。选择题总共20道,前十题截了图,后面感觉太费时就没有再截了,凭记忆记下了两道。附加题都记录下来了。

选择题

第1题:

第2题:

第3题:

第4题

第5题:

第6题:

第7题:

第8题:

第9题:

第10题:

回忆起来的题(11-20中的某2道)

1.       一个博物馆,以每分钟20人的速度进入,平均每人待20分钟,问博物馆最少需要容纳多少人?

A.100 B.200  C.300  D.400 E.500(可能还有一个以上都不是的答案,记不清楚了)

2.       有一个二叉树,(具体题目记不清楚了,主要是说有先序和中序,求后序)

问答题

第一题

给定一个query和一个text,均由小写字母组成。要求在text中找出以同样的顺序连续出现在query中的最长连续字母序列的长度。例如, query为“acbac”,text为“acaccbabb”,那么text中的“cba”为最长的连续出现在query中的字母序列,因此,返回结果应该为其长度3。请注意程序效率。(答案只是考试时候的答案)

package com.wj;

public class aLiTest {
    public static voidmain(String[] args) {
        String query ="acbac";
        String text ="acaccbabb";
        //调用findCLS方法计算text中最长的连续出现在query中的字母序列及其长度
       findLCS(query.toCharArray(), text.toCharArray());
    }

    public static voidfindLCS(char[] query, char[] text) {
        String result =""; //接收结果字符串
        int m =query.length;
        int n = text.length;
        int[][] c = newint[m][n];
        int max = 0;
        int maxPosX = 0;

        for (int i = 0; i< m; i++) {
            for (int j = 0;j < n; j++) {
                if (query[i] == text[j]) {
                    if ((i== 0) || (j == 0)) {
                       c[i][j] = 1;
                    } else {
                       c[i][j] = c[i - 1][j - 1] + 1;
                    }

                    if(c[i][j] > max) {
                        max= c[i][j];
                       maxPosX = i;
                    }
                } else {
                    c[i][j]= 0;
                }
            }
        }

        for (int i = maxPosX- max + 1; i <= maxPosX; i++) {
            result +=query[i];
        }

       System.out.println("最长序列为:" + result); //输出序列
       System.out.println("最长的序列长度为:" + max); //输出序列的长度
    }
}

第二题

写一个函数,输入一个二叉树,树中每个节点存放了一个整数值,函数返回这棵二叉树中相差最大的两个节点间的差值绝对值。请注意程序效率。(答案只是考试时候的答案)

int absMax(BinaryTree root){
    Queue<BinaryTree> btree = new Queue<BinaryTree>();
    BinaryTree p = new BinaryTree();
    BinaryTree q = new BinaryTree();
    btree.add(root);//元素入队
    int max = btree.peek().getdata();//max和min初始化
    int min = btree.peek().getdata();

    while(!btree.isempty()){

        p = btree.poll();//元素出队
        if(!p.isLChild()) //isLChild()判断左孩子是否存在,如果存在就入队列
            btree.add(p.getLChild());
        if(!p.isRChild())
            btree.add(p.getRChild());

        if(btree.isempty()){ //如果队列中不存在元素,就直接与max和min比较,然后返回
            int temp = p.getdata();//取得节点的值
            if(max<temp)
                max = temp;
            elseif(min > temp)
                min = temp;
            return abs(max-min);
        }

        q = btree.poll(); //队列中还存在值就出队,把孩子节点放入队列
        if(!q.isLChild()) //isLChild()判断左孩子是否存在,如果存在就入队列
            btree.add(q.getLChild());
        if(!p.isRChild())
            btree.add(q.getRChild());

        if(q.getdata() >= p.getdata() ){ //先q节点的值与p节点的值比较,大值和max在比较,小的和min比较,以减少比较次数
            if( max < q.getdata())
                max = q.getdata();
        }
        else{
            if(min > p.getdata()){
                min = p.getdata();
            }
        }
    }
    return abs(max-min);//返回max和min之差的绝对值
    }

第三题

java中的wait()方法和sleep()方法的区别是什么?

时间: 2024-10-22 18:32:38

阿里2015在线研发工程师笔试题(部分)的相关文章

最长连续字母序列的长度(阿里2015在线研发工程师笔试题)

给定一个query和一个text,均由小写字母组成.要求在text中找出以同样的顺序连续出现在query中的最长连续字母序列的长度.例如, query为“acbac”,text为“acaccbabb”,那么text中的“cba”为最长的连续出现在query中的字母序列,因此,返回结果应该为其长度3.请注意程序效率. 直接暴力,时间复杂度:m*n*n int Solve(char qu[],int n,char te[],int m) { int i,j; int k,p; int Max; in

2015阿里校招研发工程师笔试题

1.C++内存分配中说法错误的是() A 对于栈来说,生长方向是向上的,也就是向着内存地址增加的方向 //错,对于堆来讲,生长方向是向上的,也就是向着内存地址增加的方向:对于栈来讲,它的生长方向是向下的,是向着内存地址减小的方向增长. B 对于堆 ,大量的new/delete操作会造成内存空间不连续 //对,对于堆来讲,频繁的new/delete势必会造成内存空间的不连续,从而造成大量的碎片,使程序效率降低.对于栈来讲,则不会存在这个问题,因为 //栈是先进后出的队列,他们是如此的一一对应,以至

阿里巴巴2015研发工程师笔试题,带答案

欢迎对本文提出补充建议,可以在以下平台上我留言. 个人博客站点:www.anycodex.com/blog/ Csdn博客站点:http://my.csdn.net/?ref=toolbar 微博:http://weibo.com/1958069172/profile?topnav=1&wvr=5&user=1 1.int main(){ fork()||fork(); }共创建几个进程? 答:3个. [知识点] ? 一个现有进程可以调用fork函数创建一个新进程.由fork创建的新进程被

2015百度校招用户行为分析研发工程师笔试题

一,简答题(本题共30分) 1. 当前计算机系统一般会采用层次结构来存储数据,请介绍下典型的计算机存储系统一般分为哪几个层次,为什么采用分层存储数据能有效提高程序的执行效率?(10分) 所谓存储系统的层次结构,就是把各种不同存储容量.存取速度和价格的存储器按层次结构组成多层存储器,并通过管理软件和辅助硬件有机组合成统一的整体,使所 存放的程序和数据按层次分布在各种存储器中.目前,在计算机系统中通常采用三级层次结构来构成存储系统,主要由高速缓冲存储器Cache.主存储器和辅助 存储器组成.    

百世集团2015暑期实习研发工程师笔试题

1 linux打包文件夹 2 简单数据结构 3 写一条SQL语句,找出表中登陆次数超过1次的用户user_id 4 cashe机制 5 hash异常 6 进程.线程 7 有10G大小的文件,每行记录一条运单信息,机器大小是500M,求出出现次数最多的 前1000条运单号,给出思路. 8 一个CString字符串,里面是小写字母"abddlldk....."(可重复),写出程序,求出 最大的没有重复字符的子串. 9 说说校园快递的情况,给出意见和建议.

滴滴出行2016研发工程师笔试题(亮灯问题)

2015盏灯,一开始全部熄灭,序号分别是1-2015,先把1的倍数序号的灯的开关全部按一次,然后把2的倍数的灯的开关全部按一次,然后把3的倍数的开关按一次,以此类推,最后把2015的倍数灯的开关按一次.问最后亮着的灯有多少盏? 43 44 45 46 问题分析: 初始:全是灭的 1:全部亮 2:1,3,5 ,7,9,11,13... 3:1亮,6亮,12亮. 4:1,4,6,8...亮 ---------------------------------- 可以发现1是一直亮着的后面的倍数都是比1

阿里巴巴2016研发工程师笔试题

本题实则考察进制转换,可以设为x进制,但是x进制有一个问题,即我们无法对x进制直接进行加减乘除,故转化为我们常见的10进制. 78=7*x+8,123=1*x2+2*x+3:然后解方程即可.答案为13进制. 本题考察的是装箱与拆箱,==比较的是值,同样equals也是比较值.故选择true,true. equals源码如下: public boolean equals(Object obj) { if (obj instanceof Integer) { return value == ((In

九宫格----记网易游戏2015年研发类笔试题

最近一直在找工作,昨天参加了网易游戏的研发类笔试,题量比较大,大题有6个. 1.最小字典序字符串, 2.递归绘图函数转非递归 3.游戏编程中常用的数据结构4叉树,有三问,一问是写出如何判断点在矩形中和判断两矩形是否相交,第二问是写创建四叉树的实现,第三问是如何根据已知的矩形块,在四叉树中寻找包含的物体. 4.KD树,英文题,没怎么看,第一问问给出的一个算法的复杂度,并分析:第二问是自己实现算法(没怎么看) 5.求带权二叉树的最长路径,权值可以为负值 6.九宫格,就是手机手势密码.有三问,一问是如

美团2016研发工程师笔试题(绑鞋带问题)

由A地到B地,中间有一段扶梯,总路程和扶梯长度是固定的,为赶时间全程都在行走(包含扶梯上),中途发现鞋带松了,需要停下来绑鞋带.请问在扶梯上绑鞋带和在路上绑鞋带两种方式比较(  ) 路上绑鞋带,全程用时短 扶梯上绑鞋带,全程用时短 用时一样 和扶梯长度,绑鞋带具体用时有关 答案是(2) 解答步骤: