華為機試經驗


題目說明:

第一道題:

舉辦一場8小時的聚會,時間段從12:00到20:00點,讓來訪的客人事先填好到達的時間和離開的時間,為了掌握聚會期間的座位數目,需要先估計不同時間的最大客人數量。

1.到達和離開的時間,以整點計算,輸入為整數,比如“12,18”表示客人到達的時間為12點后13點前,離開的時間是17點后18點前。

2.按小時區間統計客人的數量,需要統計[12,13),[13,14)….[19,20)共有8個時間段的最大客人數量。

3.假設邀請的客人最多100個。

假設輸入:

 

12,15

16,17

12,20

-1,-1

 

程序要求的輸出結果為:

 

[12,13):2

[13,14):2

[14,15):2

[15,16):1

[16,17):2

[17,18):1

[18,19):1

[19,20):1

解題思路如下:

 

 

如上圖,就是要將每個時間段的值加入map做一個統計。

代碼如下:

package com.example.zookeepertest.web;


import javax.sound.midi.Soundbank;
import java.io.IOException;
import java.lang.reflect.Array;
import java.util.*;
import java.util.stream.Collectors;
public class JvmTest {
public static void main(String[] args) throws IOException {

Map<String, Integer> result = new HashMap<>();
String temp = "16,18";
String[] split = temp.split(",");

int a = Integer.valueOf(split[0]);
int b = Integer.valueOf(split[1]);
if (a > b || a < 12 || b > 20) {
return;
}

for (int i = a; i < b; i++) {
String key = "[" + i + "," + (i + 1) + ")" + ":";
if (result.containsKey(key))
result.put(key, result.get(key) + 1);
else
result.put(key, 1);
}

result.entrySet().stream().sorted(
Map.Entry.<String, Integer>comparingByKey().reversed()).collect(
Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (o1, o2) -> o1, LinkedHashMap::new));

result.entrySet().forEach(e -> System.out.println(e.getKey() + e.getValue()));

}
}




難點:map排序,這個是我寫的時候在網上搜的。

其他就是那個算法。理解了就是一行代碼。

第二道題:

流水線N個產品每個產品有M個零件,Aij表示生產該零件的生產時間
需滿足以下2個條件
1. Aij需要生產出來必須保證Ai-1 j先生產出來
2. Aij需要生產出來必須保證Ai j-1先生產出來

測試用例有
1 3
3.0
2.0
1.0
輸出6.000000

3 1
3.0 2.0 1.0
輸出6.000000

用例3:
2 4
10.000000 5.000000
4.500000 3.000000
4.499999 2.000000
2.000000 1.000000

21.999999
 
這道題 現在我也沒有看懂什么意思,題的要求 也不太全了。根據輸入,輸出代碼如下:
public class JvmTest {
public static void main(String[] args) throws IOException {
BigDecimal[][] arrays = new BigDecimal[4][2];
arrays[0][0] = new BigDecimal(10.000000);
arrays[0][1] = new BigDecimal(5.000000);
arrays[1][0] = new BigDecimal(4.500000);
arrays[1][1] = new BigDecimal(3.000000);
arrays[2][0] = new BigDecimal(4.499999);
arrays[2][1] = new BigDecimal(2.000000);
arrays[3][0] = new BigDecimal(2.000000);
arrays[3][1] = new BigDecimal(1.000000);

BigDecimal result = new BigDecimal(0.0);

for (int i = 0; i < 4; i++) {
for (int j = 0; j < 2; j++) {
result = result.add(arrays[i][j]);
}
}
result = result.subtract(arrays[0][0]).setScale(6, BigDecimal.ROUND_HALF_DOWN);
System.out.println(result);

}
第三道題:

 

 

 

總結:

華為機試 我是二道題,一道200,共400分,

在機試的時候,一定要 沉着冷靜,

第二道題是數組,直接沒有頭緒。

所以,此生 與 華為無緣了。

至此,祝願其他同學 一路平安。

ps:面試華為的有機試的同學,可以找我,我還可以給你傳授點不為人知的經驗。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM