蚂蚁金服 暑期实习生 3面 和 阿里笔试 3.25

昨天电话约了今天的电话面试,11:30,聊了40分钟。
昨天下午做了阿里的线上笔试,晚上做了测评。

笔试

笔试难度不大,在牛客网上完成,2道算法题,LeetCode medium难度。

给3xn的矩阵,每列选择其中的一个数, 形成最后的数组。
使得最后的

最小。
输出最小的这个值。

DP求解即可。

时间复杂度: O(3N),
空间复杂度: O(3).

```cpp
#include <vector>
#include <iostream>
#include <algorithm>

using namespace std;
using ll = long long;

int main() {
    int n;
    cin >> n;
    vector<ll> last_dp(3, 0);
    vector<vector<ll>> matrix(3, vector<ll> (n));
    for (int i = 0; i < 3; ++i) {
        for (int j = 0; j < n; ++j) {
            cin >> matrix[i][j];
        }
    }
    for (int i = 1; i < n; ++i) {
        vector<ll> dp(3);
        for (int dp_index = 0; dp_index < 3; ++dp_index) {
            dp[dp_index] = abs(matrix[dp_index][i] - matrix[0][i-1]) + last_dp[0];
            for (int j = 1; j < 3; ++j) {
                ll new_value = abs(matrix[dp_index][i] - matrix[j][i-1]) + last_dp[j];
                if (new_value < dp[dp_index]) {
                    dp[dp_index] = new_value;
                }
            }
        }
        last_dp = move(dp);
    }
    cout <<  min({last_dp[0], last_dp[1], last_dp[2]}) << endl;
    return 0;
}

一个n x m的矩阵,每列每行都是等差数列,公差为整数。
输入n x m个数,如果为0表示不知道,否则知道。
q个查询,特定位置(下标1开始)的值是否可确定。

递归求解,进行推测即可。可以用一些数组维护:每行/列是否已经被推断、每行/列已知道的数的下标、行列信息。

时间复杂度: O(N * M),
空间复杂度: O(N * M).

#include <vector>
#include <iostream>
#include <algorithm>
#include <functional>

using namespace std;
using ll = long long;
const int INF = 0x3f3f3f3f;

int main() {
    int n, m, q;
    cin >>  n >> m >> q;
    vector<vector<int>> A(n, vector<int> (m, INF));
    vector<int> row(n, -1);
    vector<bool> row_ok(n, false);
    vector<int> col(m, -1);
    vector<bool> col_ok(m, false);
    function<void(int, int, int)> fill = [&](int i, int j, int value) -> void {
        A[i][j] = value;
        if (col_ok[j] && row_ok[i]) {
            return;
        } else {
            if (!col_ok[j]) {
                if (col[j] == -1 || col[j] == i) {
                    col[j] = i;
                } else {
                    col_ok[j] = true;
                    int diff = (A[i][j] - A[col[j]][j]) / (i - col[j]);
                    for (int r = i - 1; r >= 0; --r) {
                        fill(r, j, A[r + 1][j] - diff);
                    }
                    for (int r = i + 1; r < n; ++r) {
                        fill(r, j, A[r - 1][j] + diff);
                    }
                }
            }
            if (!row_ok[i]) {
                if (row[i] == -1 || row[i] == j) {
                    row[i] = j;
                } else {
                    row_ok[i] = true;
                    int diff = (A[i][j] - A[i][row[i]]) / (j - row[i]);
                    for (int c = j - 1; c >= 0; --c) {
                        fill(i, c, A[i][c + 1] - diff);
                    }
                    for (int c = j + 1; c < m; ++c) {
                        fill(i, c, A[i][c - 1] + diff);
                    }
                }
            }
        }
    };
    for (int i = 0; i < n; ++i) {
        for (int j = 0; j < m; ++j) {
            int v;
            cin >> v;
            if (v != 0) {
                fill(i, j, v);
            }
        }
    }
    for (int i = 0; i < q; ++i) {
        int r, c;
        cin >> r >> c;
        --r;
        --c;
        if (A[r][c] == INF) {
            cout << "Unknown" << endl;
        } else {
            cout << A[r][c] << endl;
        }
    }
    return 0;
}

测评

笔试没难倒我,测试却花了我不少时间。
主要是测试

  • 语文:阅读理解、成语使用、归纳和排除 10min
  • 数学:表格、图、经济用语 10min
  • 智商:看图找规律 10min
  • 性格:是否抗压、反社会 30min

全靠高中学习到的知识和技能。智商就天生的呗。
据说和公务员的考试很像,行测。有了解的朋友可以看看。

应该也不会用测评去筛人,又不是考公务员,手撕代码才是王道。

面试

面试官很NICE,还加了我微信进行沟通。
主要聊了项目,还有一些数据处理的知识和Java的了解。

  • 数据预处理,对缺失值的处理
  • 给一个信用评估的数据,如何利用和上线
  • Java了解程度和使用,Spring boot

最后问了英语怎样,口语如何。可能是因为对方是 国际化事业群 吧。

我最后问了面试官所在的组和业务。
面向海外的个人信贷业务,类似花呗和借呗。

#蚂蚁集团##阿里巴巴##实习##Java工程师##面经#
全部评论
大佬 请问面试问的比较少吗,看你的面经 好像问的不多。还是说因为主要是项目,没有写出来
点赞 回复 分享
发布于 2022-09-13 19:14 上海
我也是蚂蚁国际,你接到hr面了吗😁
点赞 回复 分享
发布于 2020-04-07 02:13
不过我大概率去腾讯了
点赞 回复 分享
发布于 2020-04-05 17:59
lz我也是国际化事业部,今天刚面完三面。。
点赞 回复 分享
发布于 2020-04-05 17:59
这位同学很优秀👍。有想来阿里云的同学可以跟我联系。
点赞 回复 分享
发布于 2020-04-03 10:15
请问这是哪一场的题目
点赞 回复 分享
发布于 2020-03-29 13:54
请问楼主投的什么岗位,三次面试,面试官都不一样吗
点赞 回复 分享
发布于 2020-03-27 17:05
请问笔试有什么准备方法吗?牛客上好像没啥题库(小白一枚可能不太会找
点赞 回复 分享
发布于 2020-03-26 14:39
请问lz官网上的面试进度到哪儿了?我3.23做完笔试后现在进度是面试中,但是阿里的人还没有联系我,我也是提前批的
点赞 回复 分享
发布于 2020-03-26 13:50

相关推荐

不愿透露姓名的神秘牛友
07-02 18:35
简历上把1个月实习写成了3个月,会进行背调吗?
码农索隆:一个月有一个月的实习经历,三个月有三个月的实习经历
点赞 评论 收藏
分享
05-11 20:45
门头沟学院 Java
有担当的灰太狼又在摸...:零帧起手查看图片
点赞 评论 收藏
分享
06-13 17:33
门头沟学院 Java
顺序不记了,大致顺序是这样的,有的相同知识点写分开了1.基本数据类型2.基本数据类型和包装类型的区别3.==和equals区别4.ArrayList与LinkedList区别5.hashmap底层原理,put操作时会发生什么6.说出几种树型数据结构7.B树和B+树区别8.jvm加载类机制9.线程池核心参数10.创建线程池的几种方式11.callable与runnable区别12.线程池怎么回收线程13.redis三剑客14.布隆过滤器原理,不要背八股,说说真正使用时遇到了问题没有(我说没有,不知道该怎么回答了)15.堆的内存结构16.自己在写项目时有没有遇见过oom,如何处理,不要背八股,根据真实经验,我说不会17.redis死锁怎么办,watchdog机制如何发现是否锁过期18.如何避免redis红锁19.一个表性别与年龄如何加索引20.自己的项目的QPS怎么测的,有没有真正遇到大数量表21.说一说泛型22.springboot自动装配原理23.springmvc与springboot区别24.aop使用过嘛?动态代理与静态代理区别25.spring循环依赖怎么解决26.你说用过es,es如何分片,怎么存的数据,1000万条数据怎么写入库中27.你说用limit,那么在数据量大之后,如何优化28.rabbitmq如何批次发送,批量读取,答了延迟队列和线程池,都不对29.计网知不知道smtp协议,不知道写了对不对,完全听懵了30.springcloud知道嘛?只是了解反问1.做什么的?短信服务,信息量能到千万级2.对我的建议,基础不错,但是不要只背八股,多去实际开发中理解。面试官人不错,虽然没露脸,但是中间会引导我回答问题,不会的也只是说对我要求没那么高。面完问我在济宁生活有没有困难,最快什么时候到,让人事给我聊薪资了。下午人事打电话,问我27届的会不会跑路,还在想办法如何使我不跑路,不想扣我薪资等。之后我再联系吧,还挺想去的😭,我真不跑路哥😢附一张河科大幽默大专图,科大就是大专罢了
查看30道真题和解析
点赞 评论 收藏
分享
评论
8
35
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务