华为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获取
