华为ODJava面经
2020年毕业,本硕土木工程,在学校因课题原因接触过编程,工作了一段时间,后来转行学了Java,简历推到了华为OD,面试经验分享。
机考:
机考共三道题,前面两道各100分的简单题,最后一道200分,至少中等难度,甚至困难,看运气。机考平台牛客网,ACM模式。可以先刷刷牛客的题,为保障拿下最后一题,可以刷刷力扣的专题。
- 第一题:停车场最少停车数量。给定一个字符串,0、1组成,1表示有车,0表示没有,小车占一个1,货车占两个1,卡车三个1。解题思路:从卡车开始,遍历字符串,我用了StringBuilder,有连续三个1则删除这三个1,卡车车位增加1,然后再货车到小车。
- 第二题:这个记不太清楚了,也是字符串好像,因为很少时间就做出来了,代码也就十行左右吧,所以印象不深,比上一题简单,属于刷了牛客简单类就能拿下。
- 第三题:10人篮球,随机给出每个人的战力值,使得5V5分队后两队总战力值差最小,并求该差值。解题思路:可以用动态规划来做,我是判断10人战力平均值位于哪两个战力值中间来分组的,但是用例没有完全通过,所以又用了个最无脑的多层循环嵌套来做。以上题目都可以网上查出来,都有多种解法。机考结果会在第二天出来。
心理测试: 100多道题目,好好看看超负责的OD人事栗栗发的注意事项,就没问题了,按照华为的文化来,团队积极乐观狼性,尽量前后一致。
1、ABC三个线程交替打印ABCABC...
2、给定一个经过编码的字符串,返回它解码后的字符串。
编码规则为: k[encoded_string],表示其中方括号内部的encoded_string正好重复k次。注意k保证为正整数。
你可以认为输入字符串总是有效的;输入字符串中没有额外的空格,且输入的方括号总是符合格式要求的。
此外,你可以认为原始数据不包含数字,所有的数字只表示重复的次数k,例如不会出现像 3a 或 2[4] 的输入。
示例1:
输入:s = "3[a]2[bc]"
输出:"aaabcbc"
示例2:
输入:s = "3[a2[c]]"
输出:"accaccacc"
示例3:
输入:s = "2[abc]3[cd]ef"
输出:"abcabccdcdcdef"
示例4:
输入:s = "abc3[cd]xyz"
输出:"abccdcdcdxyz"
* 给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的连续子数组。
* 如果不存在符合条件的连续子数组,返回 0。示例:
* 输入: s = 7, nums = [2,3,1,2,4,3]
* 输出: 2
* 解释: 子数组 [4,3] 是该条件下的长度最小的连续子数组。
*/
综面:主管面试。也是先做了自我介绍。然后开问:对代码的质量如何把控;你觉得要达到怎样的完成度才能交付项目;对加班的看法,最后问了之前的薪资以及现在的期望薪资。我答得不好,基本没和面试官聊到一个点上去,然后他就开始说怎么写好代码,聊需求的完成度之类的..... 面试中要理解面试官表达的意思,再顺着他的观念想法回答后面的问题。