1.1 阿里巴巴求职攻略-理工科版本
1.1.1 校园招聘时间流程
网申 |
机考 |
面试 |
offer |
7月-10月 |
8月-10月 |
9月-12月 |
11月-1月 |
1.1.2 薪资爆料
岗位 |
地点 |
学历 |
薪资范围(年薪) |
实习|淘天集团|Java后端|杭州 |
杭州 |
本科 |
20-35K * 12薪 |
后台开发工程师 |
广州 |
本科 |
11-21K * 12薪 |
前端工程师 25届校招 |
杭州 |
本科 |
10-30K * 12薪 |
Java校招 |
杭州 |
本科 |
20-30K * 16薪 |
研发工程师 |
广州 |
本科 |
8-10K * 12薪 |
阿里巴巴25届校招-软件开发 |
杭州 |
本科 |
20-30K * 16薪 |
lazada研发工程师 |
深圳 |
本科 |
20-25K * 13薪 |
Java |
杭州 |
本科 |
20-35K * 12薪 |
阿里云-java开发(实习) |
杭州 |
本科 |
400-500元/天 |
*数据来源 牛客用户,更多详细信息可到牛客查询
1.1.3 面试真题
1、树上最短链
【题目描述】
在一个地区有n个城市以及n-1条无向边,每条边的时间边权都是1,并且这些城市是联通的,即这个地区形成了一个树状结构。每个城市有一个等级。
现在小强想从一个城市走到另一个不同的城市,并且每条边经过至多一次,同时他还有一个要求,起点和终点城市可以任意选择,但是等级必须是相同的。
但是小强不喜欢走特别远的道路,所以他想知道时间花费最小是多少。
输入描述:
第一行一个正整数n,含义如题面所述。
第二行n个正整数Ai,代表每个城市的等级。
接下来n-1行每行两个正整数u,v代表一条无向边。
保证给出的图是一棵树。
1≤n≤5000
1≤u,v≤n
1≤Ai≤109
输出描述:
仅一行一个整数代表答案,如果无法满足要求,输出 -1 。
输入样例:
3
1 2 1
1 2
2 3
输出样例:
2
【解题思路】
数据量比较小,直接dfs即可。
【参考代码】
#include <bits/stdc++.h>
typedef long long ll;
using namespace std;
int n, a[5005], root, ans = 1e9;
vector<int> e[5005];
void dfs(int r, int f, int deep) {
if (r != root && a[r] == a[root])
ans = min(ans, deep);
for (int i = 0; i < e[r].size(); i++)
if (e[r][i] != f)
dfs(e[r][i], r, deep + 1);
}
int main() {
ios::sync_with_stdio(0), cin.tie(0);
int i, j, x, y;
cin >> n;
for (i = 1; i <= n; i++)
cin >> a[i];
for (i = 1; i < n; i++) {
cin >> x >> y;
e[x].push_back(y);
e[y].push_back(x);
}
for (i = 1; i <= n; i++) {
root = i;
dfs(i, 0, 0);
}
cout << (ans == 1e9 ? -1 : ans);
return 0;
}
2、对称飞行器
【题目描述】
小强在玩一个走迷宫的游戏,他操控的人物现在位于迷宫的起点,他的目标是尽快的到达终点。
每一次他可以选择花费一个时间单位向上或向下或向左或向右走一格,或是使用自己的对称飞行器花费一个时间单位瞬移到关于当前自己点中心对称的格子,且每一次移动的目的地不能存在障碍物。
具体来说,设当前迷宫有n行m列,如果当前小强操控的人物位于点A(x,y),那么关于点 A 中心对称的格子B(x',y') 满足x+x'=n+1且y+y'=m+1。
需要注意的是,对称飞行器最多使用5次。
输入描述:
第一行两个空格分隔的正整数n,m分别代表迷宫的行数和列数。
接下来n行 每行一个长度为m的字符串来描述这个迷宫。
其中
. 代表通路。
# 代表障碍。
S 代表起点
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
牛客独家出品,理工科求职必备攻略,适合岗位: 软件开发、数据库分析、软件测试、前端后端开发