华为OD面试
1性格测试
选积极向上的选项,注意,性格测试也会挂人,我一个朋友性格测试就没过。
2机试 一道变成题目 1h 用例60%通过即可
任给一个数组,元素有20M,1T,300G之类的,其中1T=1000G,1G=1000M
按从小到大输出结果
例如:输入:3
20M
1T
300G
输出:
20M
300G
1T
我给出的代码如下(已通过100%用例):
[Java]
纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
package
Huawei;
import
java.util.Scanner;
/**
* Created by xuzhenyu on 2020/1/5.
*/
public
class
Test {
public
static
void
main(String[] args) {
Scanner scanner =
new
Scanner(System.in);
int
n = scanner.nextInt();
String[] strings =
new
String[n];
for
(
int
i =
0
; i < n; i++) {
strings[i] = scanner.next();
}
String[] ruslutStrs = sort(strings);
for
(
int
i =
0
; i <ruslutStrs.length ; i++) {
System.out.println(ruslutStrs[i]);
}
}
private
static
String[] sort(String[] strs) {
for
(
int
i =
0
; i < strs.length -
1
; i++) {
for
(
int
j =
0
; j < strs.length - i -
1
; j++) {
// M G T
if
(compare(strs[j], strs[j +
1
])) {
String tem = strs[j];
strs[j] = strs[j+
1
];
strs[j+
1
] = tem;
}
}
}
return
strs;
}
private
static
boolean
compare(String str1, String str2){
int
str1M = turnString(str1);
int
str2M = turnString(str2);
return
str1M>str2M;
}
private
static
int
turnString(String str){
if
(
"M"
.equals(String.valueOf(str.charAt(str.length()-
1
)))){
return
Integer.parseInt(str.substring(
0
,str.length()-
1
));
}
else
if
(
"G"
.equals(String.valueOf(str.charAt(str.length()-
1
)))){
return
Integer.parseInt(str.substring(
0
,str.length()-
1
))*
1000
;
}
else
if
(
"T"
.equals(String.valueOf(str.charAt(str.length()-
1
)))){
return
Integer.parseInt(str.substring(
0
,str.length()-
1
))*
1000000
;
}
return
0
;
};
}
|
3面试
3.1.两道编程题
(1) 任给一个数组,其中只有一个元素是单独出现,其他是成对出现,输出单独的元素。
例如: 输入: {2,2,1,1,4,4,7}
输出:7
(2)
3.2.面试问题
(1) 说一下常见的工厂模式
(2)出现full gc定位问题的步骤
(3)mysql数据库优化
(4)zookeeper的选举机制
更多技术资讯可关注:itheimaGZ获取