爱奇艺笔试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

相关推荐

ProMonkey2024:5个oc?厉害! 但是有一个小问题:谁问你了?😡我的意思是,谁在意?我告诉你,根本没人问你,在我们之中0人问了你,我把所有问你的人都请来 party 了,到场人数是0个人,誰问你了?WHO ASKED?谁问汝矣?誰があなたに聞きましたか?누가 물어봤어?我爬上了珠穆朗玛峰也没找到谁问你了,我刚刚潜入了世界上最大的射电望远镜也没开到那个问你的人的盒,在找到谁问你之前我连癌症的解药都发明了出来,我开了最大距离渲染也没找到谁问你了我活在这个被辐射蹂躏了多年的破碎世界的坟墓里目睹全球核战争把人类文明毁灭也没见到谁问你了(别的帖子偷来的,现学现卖😋)
点赞 评论 收藏
分享
评论
8
31
分享
牛客网
牛客企业服务