题型和一些注意点
1、同学反馈总体的感觉:
难度比预想的小挺多,练习题有些很难的,涉及算法啥的,实际没有考到。做是能做出来的,最后一道题测试用例有些没通过,应该是场景考虑不够全面。
2、题型:
考试时长150分钟。三道应用编程题,生活中的问题,用程序解决
华为校招机考的题型:
编程:软件测试工程师,算法,OD岗,三道编程题不限语言【C++,Python,Java】
校招:600分 120分钟,100/200/300
社招:400分 150分钟, 100/100/200
前两道相对简单点,第三道可能会涉及到比较准的算法。可以自由选择编程语言,例如C,C++,Java,Python等,没有sql.
3、计分逻辑(个人猜测) :
考完后思考了一下,分数的计算逻辑应该是按照测试用例的通过比例来算的,例如: 最后一道题总分200分,测试用例通过率50%,那么你的得分就是100分。
4、规则:邮件发送考试链接和规则,附有练习地址,7天内考完即可,错过了半年内无法再考,作整则以后没机会参与华为项目。可以在浏览器上编辑调试测试代码,也可以在本地IDE写好粘贴上去,但不允许使用现有代码。
熏要自己处理输入输出,可能会涉及多行输入输出问题,还可能给你个数组格式的字符串,需要自己处理成真正的数组,比较麻烦的可能是多行输入的同时还有矩阵,不过考试时有提供处理的案例,不用担心。
1、批量初始化次数
某部门在开发一个代码分析工具,需要分析代码模块之间的依赖关系,用来确定模块的初始化顺序、是否有循环依赖等问题。"批量初始化“是指一次可以初始化一个或多个模块,例如模块1依赖模块2、模块3也依赖模块2,但模块1和3没有依赖关系。则必须先”批量初始化“模块2,再“批量初始化”模块1和3。现给定一组模块间的依赖关系请计算需要”批星初始化”的次数。
输入
(1)第1行只有一个数字表示模块总数N。
2)随后的N行依次表示模块1到N的依赖数据。每行的第1个数据表示依赖的模块数量(不会超过N),之后的数字表示当前模块依赖的模块ID序列,该序列不会重复出现相同的数字模块ID的取值一定在[1,N]之内3)模块总数N取值范国1<=N<=1000
(4)每一行里面的数字按1个空格分隔
输出
输出”批量初始化次数”,若有循环依赖无法完成初始化,则输出-1
样例
输入:
5
3 2 34
15
15
15
输出:
3
解释:共5个模块。模块1依赖模块2、3、4;模块2依赖模块5;模块3依赖模块5;模块4依赖模块5;模块5没有依赖任何模块。
批量初始化顺序为{5}->{2,3,43-,共需"批量初始化"3次。
# include <bits/stdc++.h>
using namespace std;
typedef long long 11;
const int N=10004;
vector<int>g[N];
int in[N],n,m,x,d[N];
int topoO
queue<int>q;
for(int 1=1;1<mn;1++)(
if(in[1]==0)q.push(i).d[1]=1;
int c=0;
while(!q.emptyO)(
int u=q.frontO;q-popO;
++C;
for(int v:g[u])
d[v]=max(d[v],d[u]+1);
if(--in[v]==0)q.push(v);
if(c!=n) return -1;
else return *max_element(d+1,d+n+1);
int mainO{
scanf("%d",&n);
for(int i=1;11++)
scanf("%d",&m);
in[i]=m;
for(int j=1;j<=m;j++)(
scanf("%d",&x);
g[x].push_back(1);
L
int ans-topo();
printf("xd)n",ans);