华为od面经(java)
笔试
1.输入一个英文文章语句, 翻转指定区间的单词顺序, 例如输入字符串 "The sky is blue" 区间[0,2]则输出 "is sky The blue"
eg:
输入,第一行输入要反转的语句,第二行是起始索引,第三行结束索引:
The sky is blue
0
2
输出:is sky The blue
类似的题:https://leetcode.cn/problems/reverse-words-in-a-string-iii/
2.给定一个长度为n的整型数组,表示一个选手在n轮内可选择的牌面分数。选手基于规则选牌,请计算所有轮结束后其可以获得的最高总分数。选择规则如下: 1、在每轮里选手可以选择获取该轮牌面,则其总分数加上该轮牌面分数,为其新的总分数。 2、选手也可不选择本轮牌面直接跳到下一轮,此时将当前总分数还原为3轮前的总分数,若当前轮次小于等于3(即在第1、2、3轮选择跳过轮次),则总分数置为0。 3、选手的初始总分数为0,且必须依次参加每一轮。
eg1:
输入:
1,-5,-6,4,3,6,-2
输出:
11
分析:
总共有7轮牌面。
第一轮选择该轮牌面,总分数为1。
第二轮不选择该轮牌面,总分数还原为0。
第三轮不选择该轮牌面,总分数还原为0。
第四轮选择该轮牌面,总分数为4。
第五轮选择该轮牌面,总分数为7。
第六轮选择该轮牌面,总分数为13。
第七轮如果不选择该轮牌面,则总分数还原到3轮1前分数,即第四轮的总分数4,如果选择该轮牌面,总分数为11,所以选择该轮牌面。
最终的最高总分为11。
eg2:
输入:
5,-9,1,3,6,-5
输出:
6
3.牛客题库TOP101里面的BM40 +BM26 ,只不过不是给前序跟中序,而是给了中序跟后序,求层序遍历的结果
一面:具体问题都忘了,看着简历来的,简历上写什么就问什么,基本问的问题比较浅,比较广。网上很多,略过
算法题是手撕归并排序
二面:
1.自我介绍
2.有参与需求分析吗?怎么分析的,怎么设计的?
3.项目遇到的问题,怎么解决?项目中有没有碰到什么性能优化,你怎么排查怎么优化的?能否从代码层面直接排查?
4.项目中用了redis,redis用来做什么了?
剩下项目相关的省略...想不起来了
5.Java八股文
6.list,map,set存取操作的区别
7.spring中用了哪些设计模式
8.设计模式6大原则讲一下
9.hashmap底层实现讲一下,扩容机制也讲一下
10.mysql索引用到了吗?讲一下
11.java多线程常用的api讲一下,是否有用到,讲一下怎么用的wait和notify,sleep和yield
12.jvm垃圾回收算法讲一下
13.你们项目用的是什么操作系统?
14.讲一下linux里面的常用命令,如何查看进程占用的内存?如何进到进程里面查看线程占用的内存?假如我在a窗口打开了一个文件,在b窗口把文件删除了,a窗口的文件能继续读写吗?
15.来一道算法题吧:leetcode-300改版,解题思想一样
主管面:
- 项目中的重难点,怎么解决的?
- 为什么要来深圳
HR面:谈薪资
#华为OD面试#