首页 > 编程知识 正文

华为2022秋招offer发放,华为社招面试经验

时间:2023-05-04 12:22:12 阅读:120157 作者:2742

问题120分钟,分数=100 200 300。 必须自己处理输入。

华为是谁?

华为是世界领先的信息通信技术(ICT )解决方案提供商,专注于ICT领域,稳定

健康经营、持续创新、开放合作,在电信运营商、企业、终端、云计算等领域构建了端到端

的解决方案优势为职业客户、企业客户和消费者提供具有竞争力的ICT解决方案和产品

致力于提供服务,使未来的信息社会成为可能,构建更好的全联结世界。 目前华为有17万多个

员工姓名、业务遍布全球170多个国家和地区,服务于全球三分之一以上的人口。

我们给世界带来了什么?

为客户带来价值。 华为与运营商一起,在全球建设了1,500多个网络,全球

三分之一的人口实现联结。 华为与企业客户一起,在开放的云计算和敏捷的企业网络中

在力平安城市、金融、交通、能源等领域实现高效运营和敏捷创新。 华为智能终端和智能手机

机器帮助人们享受高质量的数字工作、生活和娱乐体验。

促进行业健康发展。 华为主张开放、合作、共赢,与上下游合作伙伴和友好商携手创新,

扩大产业价值,形成健康健康的产业生态系统。 华为与300多个标准化团体、产业联盟

开源社区,累计提案4.3万件。 面向云计算、NFV/SDN、5G等新热点领域、产业

合作伙伴携手,推动行业持续健康发展。

促进经济增长。 华为不仅对所在国家产生直接纳税、促进就业、拉动产业链的效应,

更重要的是,通过创新的ICT解决方案构建数字化引擎,推动所有行业的数字化转型,促进经济

经济增长,将提高人们的生活质量和福利。

促进社会可持续发展。 作为负责任的企业公民,华为致力于消除全球数字鸿沟; 在西边

我知道埃博拉以外的疫区、日本的海啸放射能泄露、中国的汶川大地震等重大灾害现场,在灾害面前是相通的

书信的重要性在于,我们选择了坚守,我们在世界上开展了“未来种子”项目,为各国青年学生

来中国培训实习的机会。

最大绝对值之差

树。 找到节点,将该节点与parent分离,使其成为新树的根。 目标是使两棵树之间的差距最大化。 返回要断开的节点,如果发生平局,则返回索引小的节点。

第一行的输入为n,表示共有多少个节点。 第二行是所有节点的值。 之后是节点的关系,【parent,child】。 input:

4

4 9 -7 -8

0 1

0 3

1 2

output: 3

请注意,在关系中,左child一定会先于右child出现。

公共类主{ staticintlargestgap=0; 静态int RES=100000; publicstaticvoidmain (字符串[ ] args ) scannersc=newscanner ) system.in ); int n=sc.nextInt (; Node[] nodes=new Node[n]; 布尔[ ] not root=new boolean [ n ]; for(intI=0; i n; I () { int v=sc.nextInt ); 节点[ I ]=新节点(I,v ); }while(sc.Hasnextint () ) { int p=sc.nextInt ); int c=sc.nextInt (; 节点par=nodes [ p ]; 节点池=nodes [ c ]; 非根[ c ]=true; if(par.left==null ) par.left=child; else par.right=child; }节点根=空; for(intI=0; i n; I ) if (! notroot[I]}{root=nodes[I]; 布雷克; } subtree sum (根); 查找gap (根,0 ); system.out.println(RES; }私有路由查找(node root,int parVal ) if )根路由==空)返回; int left=0; int right=0; //system.out.printf(findgap )、root.id=%d,

largestGap=%d, res=%dn", root.idx, largestGap,// res); if (root.left != null) { left = root.left.sum; int leftgap = Math.abs(root.sum + parVal - 2 * left);// System.out.printf("left=%d, leftgap=%dn", left, leftgap); if (leftgap > largestGap) { largestGap = leftgap; res = root.left.idx; } else if (leftgap == largestGap && root.left.idx < res) { res = root.left.idx; } } if (root.right != null) { right = root.right.sum; int rightgap = Math.abs(root.sum + parVal - 2 * right);// System.out.printf("right=%d, rightgap=%dn", right, rightgap); if (rightgap > largestGap) { largestGap = rightgap; res = root.right.idx; } else if (rightgap == largestGap && root.right.idx < res) { res = root.right.idx; } }// System.out.printf("largestGap=%d, res=%dn", largestGap, res); findGap(root.left, parVal + root.val + right); findGap(root.right, parVal + root.val + left); } private static int subtreeSum(Node root) { if (root == null) return 0; int left = subtreeSum(root.left); int right = subtreeSum(root.right); int s = left + right + root.val; root.sum = s; return s; }}class Node { int idx; int val; int sum; Node left; Node right; public Node(int i, int v) { idx = i; val = v; sum = 0; left = null; right = null; }} 梅花桩
bbdlb表示可跳跃的步数。第一行是m,n,表示棋盘的大小。求到达最右下角最少的步数。如果无法到达,返回-1。 public class Main { public static void main(String[] args) { final int INF = 100*100*10+1; Scanner sc = new Scanner(System.in); String[] input = sc.nextLine().split(","); int m = Integer.parseInt(input[0]); if (m <= 0) { System.out.println("-1"); return; } int n = Integer.parseInt(input[1]); if (n <= 0) { System.out.println("-1"); return; } int[][] grid = new int[m][n]; int[][] dp = new int[m][n]; for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { grid[i][j] = sc.nextInt(); dp[i][j] = INF; } } dp[0][0] = 0; for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { if (grid[i][j] == 0) continue; // jump to right for (int k = 1; k <= grid[i][j]; k++) { if (j+k >= n) break; if (grid[i][j+k] == 0) continue; dp[i][j+k] = Math.min(dp[i][j+k], dp[i][j]+1); } // jump to bottom for (int k = 1; k <= grid[i][j]; k++) { if (i+k >= m) break; if (grid[i+k][j] == 0) continue; dp[i+k][j] = Math.min(dp[i+k][j], dp[i][j]+1); } } } if (dp[m-1][n-1] >= INF) { System.out.println("-1"); return; } System.out.println(dp[m-1][n-1]); } private static void print2d(int[][] arr) { int m = arr.length; for (int i = 0; i < m; i++) System.out.println(Arrays.toString(arr[i])); System.out.println(); }} 最短编译时间
只过5%的test case,时间来不及。
不同项目需要不同的依赖。第一行是目标项目。之后每一行表示一个项目所依赖的项目和编译时间,格式为[项目名称,编译时间,*依赖项目]。依赖的项目必须要先做完。
input:
module3
module1,10
module2,5
module3,10,module1,module2

output: 20

input:
module2
module2,10,module1

output: -1

input:
module2
module2,10,module1
module1,10,module2

output: -1

public class Main { static boolean valid = true; public static void main(String[] args) { Scanner sc = new Scanner(System.in); String goal = sc.nextLine().trim(); Map<String, Integer> duration = new HashMap(); Map<String, Set<String>> prereqs = new HashMap(); while (sc.hasNextLine()) { String[] input = sc.nextLine().split(","); int d = Integer.parseInt(input[1]); duration.put(input[0], d); Set<String> pre = new HashSet(); for (int i = 2; i < input.length; i++) pre.add(input[i]); prereqs.put(input[0], pre); } int res = getTime(goal, duration, prereqs, new HashSet()); if (!valid) System.out.println("-1"); else System.out.println(res); } private static int getTime(String cur, Map<String, Integer> duration, Map<String, Set<String>> prereqs, Set<String> seen) { if (!valid) return -1; if (!prereqs.containsKey(cur) || seen.contains(cur)) { valid = false; return -1; } seen.add(cur); Set<String> pres = prereqs.get(cur); int t = duration.get(cur); int front = 0; for (String pre: pres) { front = Math.max(front, getTime(pre, duration, prereqs, seen)); } // 这行是考完之后才加的,忘记backtrack seen.remove(cur); return t+front; }}

如果不加上最后有一行代码(有注释那行),假设两个模块同时依赖一个模块,会出问题。可惜当时没有想到这种情况,测试平台所有测试用例是用户不可见的(只能自测)。
特别感谢Oscar哥帮忙debug。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。