阿里测开实习笔经+面经+求OC

写在前面:牛客暂时还不支持生成目录,以下内容包括笔试和三次面试的记录,希望对各位牛友有一定的帮助,同时祈愿能收到实习offer ヾ(✿゚▽゚)ノ

笔试

2020.4.20 19:00-20:00

题目一

英雄打怪游戏。英雄和怪都有能力值,英雄只能打能力值小于自己能力值的怪,每打完一只怪获得一个金币,任意时刻可以用一个金币换取 1 点能力值,但金币数不能为负(初始为0)。问:英雄可以以随意顺序打怪,问拥有金币数的最大值,怪物可以不用打完。

>> 输入
1 3
2 2 1

  • 说明:第一行第一个数表示英雄的初始能力值,第二个数表示怪物总数;第二行表示每个怪物的能力值

>> 输出
2

  • 说明:英雄先打了能力值为 1 的怪物,把获得的 1 金币换成 1 点能力值,则现在有 2 点能力值,把剩下的怪物打完,总共获得 2 金币

做题结果: AC

思路:
1. 先对所有怪兽的能力值数组进行排序,保证从弱的开始打
2. 遍历排序后的所有怪兽,如果能力值够打就打完拿 1 金币,如果当前金币+能力值够打就打完拿 1 金币(金币和能力值进行更新)
3. 用一个值记录最大金币,每次用金币补贴之前先更新最大值
4. return 时再更新一次最大金币数

题目二

有 n 个城市,每个城市有一个等级值,这 n 个城市之间有 n-1 条边,每条边的时间权重都为 1,构成树结构。问:从任意城市到达另一个等级相同的城市,路径中不能有重复边,最小的时间是多少?(如果没有符合要求的路径,就返回 -1)

>> 输入
3
1 2 1
1 2
2 3

  • 说明:第一行的数代表城市数 n,第二行代表每个城市的等级值,接下来的 n-1 行代表每条边的连接情况

>> 输出
2

  • 说明:从城市 1 到城市 3,等级都为 1,经过时间是 2

做题情况: Fail

思路:
1. 不知道怎样处理输入,浪费了很多时间,题没写完
2. 网上找了博客,可以用结点数组来储存结点!!

代码

import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        TreeNode[] level = new TreeNode[n]; //先存储输入结点,再构建树
        for(int i = 0; i < n; i++) {
            level[i] = new TreeNode(in.nextInt());
        }
        for(int i = 0; i < n - 1; i++) {
            int j = in.nextInt() - 1;
            if(level[j].left == null) {
                level[j].left = level[in.nextInt() - 1];
            }
            else
                level[j].right = level[in.nextInt() - 1];
        }

        if(n == 0)
            System.out.println(-1);
        else {
            Main test = new Main();
            int time = -1;
            Queue help = new LinkedList(); //辅助队列实现层序遍历
            help.add(level[0]);
            while(!help.isEmpty()) {
                TreeNode curr = help.poll();
                int tmp = test.Find(curr, curr.val, 0);
                if(curr.left != null)
                    help.add(curr.left);
                if(curr.right != null)
                    help.add(curr.right);
                if(time == -1 && tmp != -1)
                    time = tmp;
                else if(tmp != -1)
                    time = time < tmp ? time : tmp;
            }
            System.out.println(time);
        }
    }

    public int Find(TreeNode root, int level, int time) {
        if( time != 0 && root.val == level)
            return time;
        else {
            int left = -1;
            int right = -1;
            if(root.left != null) 
                left = Find(root.left, level, time + 1);
            if(root.right != null)
                right = Find(root.right, level, time + 1);
            if(left == -1)
                return right;
            if(right == -1)
                return left;
            return left < right ? left : right;
        }
    }
}

总结
1. 要多练习测试用例输入
2. 阿里笔试要监控屏幕,监控手机,可以用本地 IDE 编写粘贴

一面

2020.5.9 16:17-17:10
突击电话面试,面试官声音听起来心情很好很放松的感觉,跟我互动开玩笑,很有耐心听我说,体验非常好

1. 你为什么想做测开而不是测试或者是开发
2. 介绍项目
3. 测试的依据(哪些功能需要进行测试)
4. 支付宝登录功能,怎样测试
5. (我项目中用到了spring boot)Spring boot 怎样与前端建立映射关系
6. hashmap 底层结构

二面

2020.5.9 18:46-19:11, 25分钟
依然是电话突击面试,面试官声音非常理性专业,态度非常谦和,体验很好

1. 毕设的课题是什么,会用到什么技术栈,会对数据库进行怎样的使用,毕设是论文还是工程实践
2. 项目中有实践过多线程吗,介绍一下线程和进程
3. 项目中用到什么框架
4. 为什么本科成绩和研究生成绩差距有点大,是评分制度不同还是别的原因
5. 介绍数据库内联结,左联结,右连接,外联结
6. 什么情况下要用左联结或者右连接
7. count( * ) 和 count( 1 ) 的区别
8. 用过数据库索引吗,什么时候要用索引

三面

2020.5.10 19:50-20:15
以为周天休息,周一才会发起面试,没想到竟然是周天晚上 7:50 打的电话,而且第一个电话被标记成广告推销,加上对方声音特别特别小,我有点粗鲁地挂掉了,后面换了个号码又来电才发现是 HR,聊天中通话质量不太好,经常听不清对方的问题,HR 说可能是网络电话的问题,就改用私人电话打了。是一位小姐姐,非常客气,非常温柔 : D

1. 自我介绍
2. 介绍一下项目
3. 这个项目是老师完全负责,还是有其他合作方
4. 怎样判断项目达到甲方需求(我回答有签订具体合同,有数据规定)
5. 你觉得在项目中最大的困难是什么
6. 你未来 1-3 年的职业规划
7. 什么时候能开始实习,能实习多久
8. 你春招还投递了哪些公司
9. 你投递的都是些什么岗位
10. 工作城市有什么偏好吗,我们有北京、上海、杭州
11. 是考研还是保研

反问:
1. 如果这一轮面试通过的话,后续会有什么安排呢
A:面试的结果会在月底以邮件的形式告知,大概15天左右

#阿里实习##实习##面经##阿里巴巴##测试开发工程师#
全部评论
祝老哥早日oc  忽然发现居然还是校友emm  沾沾老哥好运  两面技术真的羡慕了
点赞 回复
分享
发布于 2020-05-13 21:48
两面技术爽啊
点赞 回复
分享
发布于 2020-05-13 23:10
联易融
校招火热招聘中
官网直投

相关推荐

点赞 28 评论
分享
牛客网
牛客企业服务