爱奇艺笔试2021/8/1 总结结

爱奇艺笔试

由于爱奇艺发送的邮件中说明了不让随意传播试题内容,所以我只说一下非常粗略的题型吧。

第一部分

选择题:python,Java基础语法,基础知识。操作系统,网络等基础知识

第二部分

第一题

SQL题非常简单,我的答案:

select demand_id, count(id) as count
from Task
group by demand_id
having count > 1;

第二题

一个数组,一个滑动窗口,求额,,,算了不多说了,给一下我的代码,只过了66%,想看完整题目的私信我吧唉,,
我的错误,是k,k不一定是3,但是我只初始化了3个值,以下是我的错误代码。

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String s = sc.nextLine();
        String[] split = s.split(",");
        String[] last = split[split.length - 1].split(":");
        int[] arr = new int[split.length];
        int k = Integer.valueOf(last[1]);
        for (int i = 0; i < split.length-1; i++) {
            arr[i] = Integer.valueOf(split[i]);
        }
        arr[split.length - 1] = Integer.valueOf(last[0]);

        maxP(arr, k);

    }

    private static void maxP(int[] arr, int k) {
        double maxRes = 0;
        double sum = arr[0] + arr[1] + arr[2];
        double prejun = sum / k;
        double curjun = 0;
        for (int i = 3; i < arr.length; i++) {
            sum = sum + arr[i] - arr[i-k];
            curjun = sum / k;
            if ((curjun - prejun) / prejun > maxRes) {
                maxRes = (curjun - prejun) / prejun;
            }
            prejun = curjun;
        }
        maxRes *= 100;
        DecimalFormat df = new DecimalFormat("#.00");
        String res = df.format(maxRes);
        System.out.println(res+"%");
    }

2021/8/3更新,根据评论区大家的指导重新写了maxP方法 :smile:

    private static void maxP(int[] arr, int k) {
        double maxRes = 0;
        double sum = 0;
        // 先初始化前k个
        for (int i = 0; i < k; i++) {
            sum += arr[i];
        }
        double preSum = sum;
        double curSum = 0;
        // 从第k个开始,遍历到结尾,计算平均增幅取最大放到maxRes
        // 评论区说可以不用算均值,意思是:当前均值 = 当前和/k  前一个均值 = 前一个和/k
        // 平均值增幅 = (当前均值 - 前一个均值)/前一个均值 = (当前和 - 前一个和)/前一个和
        for (int i = k; i < arr.length; i++) {
            sum = sum + arr[i] - arr[i-k];
            curSum = sum;
            maxRes = Math.max(maxRes, (curSum - preSum) / preSum);
            preSum = curSum;
        }
        maxRes *= 100;
        DecimalFormat df = new DecimalFormat("#.00");
        String res = df.format(maxRes);
        System.out.println(res+"%");
    }

第三题

这题提示说是贪心,但我觉我我写的没啥问题,只过了50%,详细我不说了,想要题目的私信我吧,,

public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String s = sc.nextLine();
        String[] strings = s.split(",");
        int[] rains = new int[strings.length];
        rains[0]=Integer.valueOf(strings[0].charAt(1)-'0');
        for (int i = 1; i < strings.length-1; i++) {
            rains[i] = Integer.valueOf(strings[i]);
        }
        rains[strings.length - 1] = Integer.valueOf(strings[strings.length - 1].charAt(0) - '0');
//        System.out.println(Arrays.toString(rains));
        int[] ans = new int[rains.length];
        process(rains, ans);
        System.out.println(Arrays.toString(ans));
    }

    private static void process(int[] rains, int[] ans) {
        HashSet<Integer> rained = new HashSet<>();
        for (int i = 0; i < rains.length; i++) {
            if (rains[i] != 0) {
                if (rained.contains(rains[i])) {
                    ans = new int[rains.length];
                    return;
                }
                ans[i] = -1;
                rained.add(rains[i]);
            } else {
                for (int j = i+1; j < rains.length; j++) {
                    if (rains[j] != 0 && rained.contains(rains[j])) {
                        ans[i] = rains[j];
                        rained.remove(rains[j]);
                        break;
                    }
                }
            }
        }
    }

2021/8/3 更新process方法,新添加了一个判断

    private static void process(int[] rains, int[] ans) {
        Set<Integer> rained = new HashSet<>();
        for (int i = 0; i < rains.length; i++) {
            if (rains[i] != 0) {
                if (rained.contains(rains[i])) {
                    ans = new int[0];
                    return;
                }
                ans[i] = -1;
                rained.add(rains[i]);
            } else {
                // 遍历一边发现最近能够能够引发洪水的一个湖泊,抽干他!
                for (int j = i+1; j < rains.length; j++) {
                    if (rains[j] != 0 && rained.contains(rains[j])) {
                        ans[i] = rains[j];
                        rained.remove(rains[j]);
                        break;
                    }
                }
                // 如果遍历了一遍,发现没有那种能犯洪水的湖泊了,那就随便从有水的湖泊中抽一个
                if (ans[i] == 0 && !rained.isEmpty()) {
                    ans[i] = rained.iterator().next();
                    rained.remove(ans[i]);
                }
            }
        }
    }

第四题

哇,最后一题是搞多线程的,而且是异步的,需要我们实现三个方法,来翻译给的字符串,

public static class Job<V> {

    public void newTask(Callable<V> runnable) {
        //待实现
    }


    public void execute(Executor executor) {
        //待实现
    }

    public List<V> get() throws InterruptedException {
        //待实现
    }

}

真不会做呀,详情私信我吧,,,,,

就这样,宝友们,可不兴说我题目不完整,爱奇艺发的邮件说不让瞎传播哈。

有全ac的大佬,求个完美答案!!!!!!!!!!!!!!

#爱奇艺笔试讨论##笔经##爱奇艺#
全部评论
4 回复 分享
发布于 2021-08-01 17:38
第二题为啥取前三个啊,最开始的窗口长度为k。
4 回复 分享
发布于 2021-08-01 17:58
我第二题和你差不多啊,我AC了,我忘了我还有没有再改,本地IDEA里面是这样。
3 回复 分享
发布于 2021-08-01 17:40
最后一题我本地没问题,线上报异常 换了好几种方法我裂开
2 回复 分享
发布于 2021-08-01 17:40
第二题你的sum初值应该是前k个元素的值,不是前3个....
1 回复 分享
发布于 2021-08-01 20:01
多线程会用golang写得
点赞 回复 分享
发布于 2021-08-01 17:35
第二题也是66不知道是哪里有问题
点赞 回复 分享
发布于 2021-08-01 17:35
第二题应该比较绝对值吧
点赞 回复 分享
发布于 2021-08-01 17:47
最后一题我粘贴到本地就报错🤣
点赞 回复 分享
发布于 2021-08-01 17:47
不懂就问,第三题说要返回数组ans是什么意思,直接对ans进行赋值就好?
点赞 回复 分享
发布于 2021-08-01 17:55
第二题不知道为什么,我写了很久只过了33
点赞 回复 分享
发布于 2021-08-01 18:20
第二题我AC了百分百  我不知道有没有再修改 本地是这样的
点赞 回复 分享
发布于 2021-08-01 23:15
我主要用python,结果要我用java写多线程...这怎么下得了手😂
点赞 回复 分享
发布于 2021-08-02 08:58
麻了,神**多线程
点赞 回复 分享
发布于 2021-08-02 09:09
靠 笔试机会都不配的吗
点赞 回复 分享
发布于 2021-08-02 10:27
我除了sql其余那三个都过了
点赞 回复 分享
发布于 2021-08-02 10:28
我真的笑死, 第四题我写的 print(input().strip().upper())
点赞 回复 分享
发布于 2021-08-02 10:46
Python第二题非常简单, 暴力算平均值, 然后算百分比的时候他有点误差, 可以用 decimal 模块解决
点赞 回复 分享
发布于 2021-08-02 10:47
给你发面试时间了吗
点赞 回复 分享
发布于 2021-08-02 16:54
为啥我没笔试直接通知的面试啊?
点赞 回复 分享
发布于 2021-08-03 19:22

相关推荐

11-04 14:10
东南大学 Java
_可乐多加冰_:去市公司包卖卡的
点赞 评论 收藏
分享
8 31 评论
分享
牛客网
牛客企业服务