【2024年华为OD机试】(C卷,100分)- 机场航班调度程序 (Java JS PythonC/C++)
一、问题描述
题目描述
XX市机场停放了多架飞机,每架飞机都有自己的航班号,如CA3385,CZ6678,SC6508等,航班号的前2个大写字母(或数字)代表航空公司的缩写,后面4个数字代表航班信息。
但是XX市机场只有一条起飞跑道,调度人员需要安排目前停留在机场的航班有序起飞。
为保障航班的有序起飞,调度员首先按照航空公司的缩写(航班号前2个字母)对所有航班进行排序,同一航空公司的航班再按照航班号的后4个数字进行排序,最终获得安排好的航班的起飞顺序。
说明
- 航空公司缩写排序按照从特殊符号
$ & *
,09,AZ排序。
输入描述
第一行输入航班信息,多个航班号之间用逗号 “,” 分隔,输入的航班号不超过100个。
例如:
CA3385,CZ6678,SC6508,DU7523,HK4456,MK0987
备注
- 航班号为6位长度,后4位为纯数字,不考虑存在后4位重复的场景。
输出描述
CA3385,CZ6678,DU7523,HK4456,MK0987,SC6508
用例
输入
CA3385,CZ6678,SC6508,DU7523,HK4456,MK0987
输出
CA3385,CZ6678,DU7523,HK4456,MK0987,SC6508
说明
输入为目前停留在该机场的航班号,输出为按照调度排序后输出的有序的航班号。
输入
MU1087,CA9908,3U0045,FM1703
输出
3U0045,CA9908,FM1703,MU1087
说明
无
题目解析
本题是一个简单的字符串操作和排序问题。
解题步骤
- 解析输入:将输入的航班号字符串按逗号分隔,得到一个航班号列表。
- 定义排序规则:
- 航空公司缩写排序:按照特殊符号
$ & *
,09,AZ的顺序排序。 - 航班号后4位数字排序:在同一航空公司的航班中,按照后4位数字的升序排序。
- 航空公司缩写排序:按照特殊符号
- 排序:
- 使用自定义的排序函数对航班号列表进行排序。排序函数需要先比较航空公司缩写,如果相同则比较后4位数字。
- 输出结果:将排序后的航班号列表用逗号连接成一个字符串输出。
排序逻辑
- 航空公司缩写排序:使用自定义的排序规则,将特殊符号、数字和大写字母分别排序。
- 航班号后4位数字排序:在同一航空公司的航班中,直接比较后4位数字的大小。
通过这种方法,我们可以高效地对航班号进行排序,确保航班的有序起飞。时间复杂度主要取决于排序操作,通常为O(n log n),其中n是航班号的数量。
二、JavaScript算法源码
以下是经过详细注释和解释的你提供的代码,它使用 Node.js 对一组航班编号进行排序:
代码部分:
// 创建一个 readline 接口,用于从标准输入中读取数据
const rl = require("readline").createInterface({ input: process.stdin });// 通过 Symbol.asyncIterator 获取一个异步迭代器,用于逐行读取输入
var iter = rl[Symbol.asyncIterator]();// 定义一个异步函数,用于读取一行输入数据
const readline = async () => (await iter.next()).value;// 主函数入口,立即执行的异步函数表达式(IIFE)
void (async function () {// 从标准输入中读取航班数据,并根据逗号分隔成数组const flights = (await readline()).split(",");// 对航班数组进行排序flights.sort((a, b) => {// 提取航班的前两位字母(航空公司代码)const abbr1 = a.slice(0, 2);const num1 = a.slice(2); // 提取航班号的数字部分// 对比的第二个航班的航空公司代码和数字部分const abbr2 = b.slice(0, 2);const num2 = b.slice(2);// 如果航空公司代码相同,则按数字部分排序if (abbr1 == abbr2) {return strcmp(num1, num2);} else {// 如果航空公司代码不同,则按航空公司代码排序return strcmp(abbr1, abbr2);}});// 输出排序后的航班列表,用逗号连接成字符串console.log(flights.join(","));
})();// 自定义的字符串比较函数,模拟 C 语言中的 strcmp 函数
function strcmp(a, b) {if (a > b) {return 1; // 如果 a > b,返回 1} else if (a < b) {return -1; // 如果 a < b,返回 -1} else {return 0; // 如果 a == b,返回 0}
}
详细解释代码逻辑
1. 读取输入
- 使用
readline
库创建一个接口(rl
),从标准输入中读取数据。 - 通过
Symbol.asyncIterator
获取一个异步迭代器(iter
),然后通过await iter.next()
来逐行读取输入。 readline
函数封装了读取操作,每次调用会返回一行输入的内容。
2. 主函数逻辑
- 使用
await readline()
读取一行输入数据(假设是一个以逗号分隔的航班编号列表,例如:CA123,AA456,CA122
)。 - 使用
.split(",")
将输入字符串分割成数组,得到如["CA123", "AA456", "CA122"]
。
3. 排序的实现
- 使用数组的
sort
方法对航班编号进行排序,传入一个自定义的比较函数:
flights.sort((a, b) => {const abbr1 = a.slice(0, 2); // 提取第一个航班的航空公司代码(前两个字符)const num1 = a.slice(2); // 提取第一个航班的数字部分const abbr2 = b.slice(0, 2); // 提取第二个航班的航空公司代码const num2 = b.slice(2); // 提取第二个航班的数字部分
- 比较规则:
- 如果航空公司代码(
abbr1
和abbr2
)相同,则比较数字部分(num1
和num2
)。 - 如果航空公司代码不同,则直接比较航空公司代码。
- 如果航空公司代码(
4. 字符串比较函数 strcmp
- 这是一个模拟 C 语言中的
strcmp
函数的实现:- 比较两个字符串
a
和b
的大小。 - 如果
a > b
,则返回1
。 - 如果
a < b
,则返回-1
。 - 如果
a == b
,则返回0
。
- 比较两个字符串
5. 排序结果输出
- 排序完成后,使用
flights.join(",")
将排序后的数组重新连接成逗号分隔的字符串。 - 使用
console.log
将结果输出到标准输出。
示例输入与输出
输入:
用户在标准输入中输入以下内容:
CA123,AA456,CA122
输出:
程序会按照航空公司代码和航班号进行排序,输出如下内容:
AA456,CA122,CA123
注意事项
-
航班编号的格式假设:
- 假设所有航班编号均由两部分组成:航空公司代码(两位字母)和航班号(数字)。
- 程序没有验证输入格式,如果输入格式不符,可能会导致错误。
-
异步读取的必要性:
- 使用异步方式读取输入,适用于处理大量或非同步数据场景。对于简单的输入场景,直接使用同步方式可能更易实现。
-
扩展性:
- 如果需要支持不同长度的航空公司代码或其他复杂排序逻辑,可以在
sort
的比较函数内进一步修改。
- 如果需要支持不同长度的航空公司代码或其他复杂排序逻辑,可以在
希望这些注释和讲解能够帮助你更好地理解代码逻辑!如果有任何问题,请随时提问。
三、Java算法源码
import java.util.Arrays; // 导入用于数组操作的工具类
import java.util.Scanner; // 导入用于读取用户输入的工具类
import java.util.StringJoiner; // 导入用于高效拼接字符串的工具类public class Main {public static void main(String[] args) {// 创建一个Scanner对象,用于从控制台读取输入Scanner sc = new Scanner(System.in);// 读取用户输入的一行数据,并用逗号分割成字符串数组// 假设用户输入类似于: "CA123,AA456,CA122"String[] flights = sc.nextLine().split(",");// 创建一个StringJoiner对象,用于拼接排序后的航班号,分隔符使用 ","StringJoiner sj = new StringJoiner(",");// 将航班号数组转换为流,并排序Arrays.stream(flights) // 将数组转换成Stream流.sorted( // 对流中的元素进行排序,使用自定义排序规则(a, b) -> { // 自定义比较器,定义如何比较两个航班号字符串// 提取第一个航班号的航空公司代码(前两位字符)和数字部分String abbr1 = a.substring(0, 2); // 航空公司代码,例如 "CA"String num1 = a.substring(2); // 航班号数字部分,例如 "123"// 提取第二个航班号的航空公司代码和数字部分String abbr2 = b.substring(0, 2); // 航空公司代码,例如 "AA"String num2 = b.substring(2); // 航班号数字部分,例如 "456"// 如果两个航班号的航空公司代码相同,则比较数字部分if (abbr1.equals(abbr2)) {return num1.compareTo(num2); // 字典顺序比较数字部分} else {return abbr1.compareTo(abbr2); // 否则按航空公司代码排序}}).forEach(sj::add); // 将排序后的每个航班号添加到StringJoiner对象中// 输出最终拼接的字符串结果System.out.println(sj);}
}
详细讲解:
1. 读取和分割用户输入
String[] flights = sc.nextLine().split(",");
sc.nextLine()
:读取用户输入的一整行,例如输入"CA123,AA456,CA122"
。.split(",")
:使用逗号","
分割字符串,结果是一个字符串数组:["CA123", "AA456", "CA122"]
。
2. 创建 StringJoiner
StringJoiner sj = new StringJoiner(",");
StringJoiner
是一个用于拼接字符串的工具类,可以高效地将多个字符串组合起来。- 构造方法中的参数
","
表示在拼接字符串时使用逗号作为分隔符。 - 例如,拼接后的结果可能是
"AA456,CA122,CA123"
。
3. 对航班号数组排序
排序逻辑通过以下代码实现:
Arrays.stream(flights).sorted((a, b) -> { // 自定义排序逻辑}).forEach(sj::add);
核心逻辑:自定义排序规则
自定义排序规则通过以下比较器 (a, b)
实现:
(a, b) -> {String abbr1 = a.substring(0, 2); // 提取第一个航班号的航空公司代码String num1 = a.substring(2); // 提取第一个航班号的数字部分String abbr2 = b.substring(0, 2); // 提取第二个航班号的航空公司代码String num2 = b.substring(2); // 提取第二个航班号的数字部分if (abbr1.equals(abbr2)) { // 如果航空公司代码相同return num1.compareTo(num2); // 按数字部分(航班号)排序} else {return abbr1.compareTo(abbr2); // 否则按航空公司代码排序}
}
4. 排序规则解析
假设有以下航班号:
["CA123", "AA456", "CA122"]
排序过程:
- 提取
CA123
的航空公司代码CA
和数字部分123
。 - 提取
AA456
的航空公司代码AA
和数字部分456
。 - 比较航空公司代码:
CA
和AA
按字母顺序比较,AA
在前,CA
在后。
- 如果航空公司代码相同(如
CA123
和CA122
),比较数字部分:123
和122
,122
在前,123
在后。
排序结果:
["AA456", "CA122", "CA123"]
5. 拼接排序后的字符串
.forEach(sj::add);
- 遍历排序后的流中的每个航班号,并将其添加到
StringJoiner
对象sj
中。 sj.add()
方法会将字符串拼接到一起,中间用逗号分隔。
例如:
AA456 + "," + CA122 + "," + CA123
6. 输出结果
System.out.println(sj);
- 最终结果输出为一个以逗号分隔的字符串,例如:
AA456,CA122,CA123
示例输入与输出
示例 1:
输入:
CA123,AA456,CA122
排序过程:
- 按航空公司代码排序:
AA
在前,CA
在后。 - 对于航空公司代码相同的航班(如
CA123
和CA122
),按数字部分排序。
输出:
AA456,CA122,CA123
示例 2:
输入:
BA200,AA100,BA150
排序过程:
- 按航空公司代码排序:
AA
在前,BA
在后。 - 对于航空公司代码相同的航班(如
BA200
和BA150
),按数字部分排序。
输出:
AA100,BA150,BA200
代码特性
- 简洁性:
- 使用 Java 8 的 Stream API 和 Lambda 表达式,使代码简洁易读。
- 高效性:
- 流操作支持惰性计算,排序和拼接操作高效。
- 实用性:
- 适用于按特定规则对字符串数组进行排序的场景。
如果还有其他问题,欢迎随时提问!
四、Python算法源码
代码:
flights = input().split(",") # 从用户输入读取航班号,并用逗号分割成列表flights.sort(key=lambda x: (x[0:2], x[2:])) # 按自定义规则对航班号列表进行排序print(",".join(flights)) # 将排序后的航班号列表用逗号连接成字符串并输出
逐行注释和详细解释:
1. 从用户输入读取数据并分割成列表
flights = input().split(",")
input()
:- 读取用户在控制台输入的一行文本,例如:
CA123,AA456,CA122
。
- 读取用户在控制台输入的一行文本,例如:
.split(",")
:- 使用逗号
","
将输入的字符串分割成一个列表。 - 假设输入是
"CA123,AA456,CA122"
,split(",")
的结果是:flights = ["CA123", "AA456", "CA122"]
- 使用逗号
- 结果:
- 用户输入的航班号被存储为一个字符串列表。
2. 对航班号列表进行排序
flights.sort(key=lambda x: (x[0:2], x[2:]))
-
.sort()
:- 对
flights
列表进行原地排序(修改原列表,不生成新对象)。 key=
参数指定排序规则,这里是一个lambda
函数,自定义了排序的逻辑。
- 对
-
lambda x: (x[0:2], x[2:])
:lambda
是一个匿名函数,这里用于定义排序的键值。- 对列表中的每个元素(即一个航班号字符串)
x
,根据以下规则确定排序优先级:x[0:2]
:- 提取航班号的前两个字符,表示航空公司代码。
- 例如
"CA123"
的x[0:2]
是"CA"
。
x[2:]
:- 提取航班号的第3个字符及之后的部分,表示航班号的数字部分。
- 例如
"CA123"
的x[2:]
是"123"
。
- 组合键
(x[0:2], x[2:])
:- 返回的是一个元组
(航空公司代码, 航班号数字部分)
,例如:"CA123"
->("CA", "123")
"AA456"
->("AA", "456")
- 返回的是一个元组
- 排序逻辑:
- Python 会先按照元组的第一个元素(航空公司代码)排序。
- 如果航空公司代码相同,再按照元组的第二个元素(航班号数字部分)排序。
3. 将排序后的列表拼接成字符串并输出
print(",".join(flights))
.join()
:- 将列表中的字符串用逗号
","
拼接成一个新的字符串。 - 例如:
flights = ["AA456", "CA122", "CA123"] ",".join(flights) -> "AA456,CA122,CA123"
- 将列表中的字符串用逗号
print()
:- 输出拼接后的结果到控制台。
完整执行流程示例
输入:
CA123,AA456,CA122
代码执行步骤:
- 读取输入并分割:
flights = ["CA123", "AA456", "CA122"]
- 提取排序键(航空公司代码和航班号数字部分):
- 对
"CA123"
提取键:("CA", "123")
- 对
"AA456"
提取键:("AA", "456")
- 对
"CA122"
提取键:("CA", "122")
- 对
- 排序规则:
- 按航空公司代码排序:
"AA"
在"CA"
前。 - 对于航空公司代码相同的航班号(如
"CA123"
和"CA122"
),按数字部分排序。 - 排序结果:
["AA456", "CA122", "CA123"]
- 按航空公司代码排序:
- 拼接成字符串:
result = "AA456,CA122,CA123"
- 输出结果:
AA456,CA122,CA123
代码特性
- 简洁性:
- 使用 Python 的内置函数
.sort()
和lambda
表达式,使代码非常简洁。
- 使用 Python 的内置函数
- 高效性:
.sort()
方法基于 Python 的 Timsort 算法,时间复杂度为 O(n log n),适合处理大规模数据。
- 灵活性:
- 如果排序规则需要调整(例如基于更多字段排序),只需修改
lambda
函数即可。
- 如果排序规则需要调整(例如基于更多字段排序),只需修改
扩展应用
此代码不仅适用于航班号排序,还可以处理类似的其他排序需求,例如:
- 按学生学号排序:
students = ["ST123", "ST110", "ST101"] students.sort(key=lambda x: (x[0:2], x[2:])) print(",".join(students)) # 输出:ST101,ST110,ST123
- 按商品编码排序:
products = ["PR456", "PR123", "AB789", "AB001"] products.sort(key=lambda x: (x[0:2], x[2:])) print(",".join(products)) # 输出:AB001,AB789,PR123,PR456
总结
这段 Python 代码实现了对航班号列表的排序,核心是使用 lambda
表达式对字符串进行拆分并自定义排序规则。代码结构简洁,逻辑清晰,适合多种类似的排序场景。如果有其他问题,欢迎随时提问!
五、C/C++算法源码:
C语言代码 和 C++代码 的实现,并附有详细的中文注释与讲解。
C语言代码
#include <stdio.h>
#include <string.h>
#include <stdlib.h>// 自定义排序规则的比较函数
int cmp(const void *a, const void *b) {// 将void指针转换为char指针char *A = (char *)a;char *B = (char *)b;// 提取第一个字符串的航空公司代码和数字部分char abbr1[3]; // 航空公司代码(前2个字符)strncpy(abbr1, A, 2); // 从A中复制前2个字符到abbr1abbr1[2] = '\0'; // 手动添加字符串结束符char num1[5]; // 航班号的数字部分(从第3个字符开始)strncpy(num1, A + 2, 4);num1[4] = '\0'; // 字符串结束符// 提取第二个字符串的航空公司代码和数字部分char abbr2[3];strncpy(abbr2, B, 2);abbr2[2] = '\0';char num2[5];strncpy(num2, B + 2, 4);num2[4] = '\0';// 按航空公司代码排序int res = strcmp(abbr1, abbr2);if (res == 0) {// 如果航空公司代码相同,则按数字部分排序return strcmp(num1, num2);} else {return res;}
}int main() {char s[1000]; // 存储用户输入的字符串fgets(s, sizeof(s), stdin); // 读取用户输入,包含空格和换行s[strcspn(s, "\n")] = '\0'; // 去除fgets读取的换行符char flights[100][7]; // 存储分割后的航班号int flights_size = 0; // 航班号的数量// 使用strtok分割字符串char *token = strtok(s, ",");while (token != NULL) {strcpy(flights[flights_size++], token); // 将每个航班号存入数组token = strtok(NULL, ","); // 继续获取下一个分割值}// 使用qsort对航班号进行排序qsort(flights, flights_size, sizeof(flights[0]), cmp);// 输出排序后的结果for (int i = 0; i < flights_size; i++) {printf("%s", flights[i]); // 输出每一个航班号if (i != flights_size - 1) { // 如果不是最后一个,则输出逗号printf(",");}}return 0;
}
C语言代码详细讲解:
-
输入处理:
- 使用
fgets()
读取用户输入的字符串,最大长度为 1000。通过strtok()
函数将输入字符串按逗号,
分割成多个航班号,并存储到二维数组flights
中。
- 使用
-
排序逻辑:
- 实现了一个自定义比较函数
cmp()
,通过strcmp()
先按航空公司代码(前两个字符)比较,如果航空公司代码相同,则按航班号的数字部分(从第3个字符开始)进行比较。 - 使用
qsort()
函数对数组进行排序。
- 实现了一个自定义比较函数
-
输出结果:
- 遍历排序后的航班号数组,依次输出航班号。如果当前航班号不是最后一个,则追加一个逗号。
C++代码
#include <iostream>
#include <vector>
#include <string>
#include <algorithm> // 用于std::sortusing namespace std;// 自定义排序规则的比较函数
bool cmp(const string &a, const string &b) {// 提取第一个字符串的航空公司代码和数字部分string abbr1 = a.substr(0, 2); // 提取前2个字符(航空公司代码)string num1 = a.substr(2); // 提取第3个字符到末尾(航班号数字部分)// 提取第二个字符串的航空公司代码和数字部分string abbr2 = b.substr(0, 2);string num2 = b.substr(2);if (abbr1 == abbr2) {// 如果航空公司代码相同,则比较数字部分return num1 < num2;} else {// 否则按航空公司代码排序return abbr1 < abbr2;}
}int main() {string s;getline(cin, s); // 从标准输入读取一整行vector<string> flights; // 用于存储所有航班号size_t pos = 0;// 按逗号分割字符串while ((pos = s.find(',')) != string::npos) {flights.push_back(s.substr(0, pos)); // 提取逗号前的子串s.erase(0, pos + 1); // 删除已处理的部分}flights.push_back(s); // 将最后一个航班号加入列表// 使用std::sort对航班号进行排序sort(flights.begin(), flights.end(), cmp);// 输出排序后的结果for (size_t i = 0; i < flights.size(); i++) {cout << flights[i]; // 输出每一个航班号if (i != flights.size() - 1) {cout << ","; // 如果不是最后一个航班号,则输出逗号}}return 0;
}
C++代码详细讲解:
-
输入处理:
- 使用
getline()
函数从用户输入中读取一整行字符串。 - 使用
string
的find()
和substr()
方法按逗号,
分割字符串,将每个航班号存储到vector<string>
中。
- 使用
-
排序逻辑:
- 定义一个自定义的排序函数
cmp()
,其逻辑与 C 代码中的比较器类似。 - 使用
std::sort()
函数对vector<string>
进行排序。
- 定义一个自定义的排序函数
-
输出结果:
- 遍历排序后的
vector<string>
,依次输出航班号。如果当前航班号不是最后一个,则输出一个逗号。
- 遍历排序后的
输入与输出示例
输入:
CA123,AA456,CA122
C输出:
AA456,CA122,CA123
C++输出:
AA456,CA122,CA123
C语言和C++代码的比较
特性 | C 代码 | C++ 代码 |
---|---|---|
使用的数据结构 | 二维数组 char flights[100][7] | 动态数组 vector<string> |
字符串操作 | strncpy() 、strcpy() 、strtok() | STL 的 string 方法,如 substr() |
排序方式 | qsort() | std::sort() |
灵活性和可读性 | 较低,不支持动态数组 | 较高,支持动态数组和现代字符串操作 |
如果对代码或其中某部分还存在不清楚的地方,欢迎随时提问!
六、尾言
什么是华为OD?
华为OD(Outsourcing Developer,外包开发工程师)是华为针对软件开发工程师岗位的一种招聘形式,主要包括笔试、技术面试以及综合面试等环节。尤其在笔试部分,算法题的机试至关重要。
为什么刷题很重要?
-
机试是进入技术面的第一关:
华为OD机试(常被称为机考)主要考察算法和编程能力。只有通过机试,才能进入后续的技术面试环节。 -
技术面试需要手撕代码:
技术一面和二面通常会涉及现场编写代码或算法题。面试官会注重考察候选人的思路清晰度、代码规范性以及解决问题的能力。因此提前刷题、多练习是通过面试的重要保障。 -
入职后的可信考试:
入职华为后,还需要通过“可信考试”。可信考试分为三个等级:- 入门级:主要考察基础算法与编程能力。
- 工作级:更贴近实际业务需求,可能涉及复杂的算法或与工作内容相关的场景题目。
- 专业级:最高等级,考察深层次的算法以及优化能力,与薪资直接挂钩。
刷题策略与说明:
2024年8月14日之后,华为OD机试的题库转为 E卷,由往年题库(D卷、A卷、B卷、C卷)和全新题目组成。刷题时可以参考以下策略:
-
关注历年真题:
- 题库中的旧题占比较大,建议优先刷历年的A卷、B卷、C卷、D卷题目。
- 对于每道题目,建议深度理解其解题思路、代码实现,以及相关算法的适用场景。
-
适应新题目:
- E卷中包含全新题目,需要掌握全面的算法知识和一定的灵活应对能力。
- 建议关注新的刷题平台或交流群,获取最新题目的解析和动态。
-
掌握常见算法:
华为OD考试通常涉及以下算法和数据结构:- 排序算法(快速排序、归并排序等)
- 动态规划(背包问题、最长公共子序列等)
- 贪心算法
- 栈、队列、链表的操作
- 图论(最短路径、最小生成树等)
- 滑动窗口、双指针算法
-
保持编程规范:
- 注重代码的可读性和注释的清晰度。
- 熟练使用常见编程语言,如C++、Java、Python等。
如何获取资源?
-
官方参考:
- 华为招聘官网或相关的招聘平台会有一些参考信息。
- 华为OD的相关公众号可能也会发布相关的刷题资料或学习资源。
-
加入刷题社区:
- 找到可信的刷题交流群,与其他备考的小伙伴交流经验。
- 关注知名的刷题网站,如LeetCode、牛客网等,这些平台上有许多华为OD的历年真题和解析。
-
寻找系统性的教程:
- 学习一本经典的算法书籍,例如《算法导论》《剑指Offer》《编程之美》等。
- 完成系统的学习课程,例如数据结构与算法的在线课程。
积极心态与持续努力:
刷题的过程可能会比较枯燥,但它能够显著提升编程能力和算法思维。无论是为了通过华为OD的招聘考试,还是为了未来的职业发展,这些积累都会成为重要的财富。
考试注意细节
-
本地编写代码
- 在本地 IDE(如 VS Code、PyCharm 等)上编写、保存和调试代码,确保逻辑正确后再复制粘贴到考试页面。这样可以减少语法错误,提高代码准确性。
-
调整心态,保持冷静
- 遇到提示不足或实现不确定的问题时,不必慌张,可以采用更简单或更有把握的方法替代,确保思路清晰。
-
输入输出完整性
- 注意训练和考试时都需要编写完整的输入输出代码,尤其是和题目示例保持一致。完成代码后务必及时调试,确保功能符合要求。
-
快捷键使用
- 删除行可用
Ctrl+D
,复制、粘贴和撤销分别为Ctrl+C
,Ctrl+V
,Ctrl+Z
,这些可以正常使用。 - 避免使用
Ctrl+S
,以免触发浏览器的保存功能。
- 删除行可用
-
浏览器要求
- 使用最新版的 Google Chrome 浏览器完成考试,确保摄像头开启并正常工作。考试期间不要切换到其他网站,以免影响考试成绩。
-
交卷相关
- 答题前,务必仔细查看题目示例,避免遗漏要求。
- 每完成一道题后,点击【保存并调试】按钮,多次保存和调试是允许的,系统会记录得分最高的一次结果。完成所有题目后,点击【提交本题型】按钮。
- 确保在考试结束前提交试卷,避免因未保存或调试失误而丢分。
-
时间和分数安排
- 总时间:150 分钟;总分:400 分。
- 试卷结构:2 道一星难度题(每题 100 分),1 道二星难度题(200 分)。及格分为 150 分。合理分配时间,优先完成自己擅长的题目。
-
考试环境准备
- 考试前请备好草稿纸和笔。考试中尽量避免离开座位,确保监控画面正常。
- 如需上厕所,请提前规划好时间以减少中途离开监控的可能性。
-
技术问题处理
- 如果考试中遇到断电、断网、死机等技术问题,可以关闭浏览器并重新打开试卷链接继续作答。
- 出现其他问题,请第一时间联系 HR 或监考人员进行反馈。
祝你考试顺利,取得理想成绩!
相关文章:

【2024年华为OD机试】(C卷,100分)- 机场航班调度程序 (Java JS PythonC/C++)
一、问题描述 题目描述 XX市机场停放了多架飞机,每架飞机都有自己的航班号,如CA3385,CZ6678,SC6508等,航班号的前2个大写字母(或数字)代表航空公司的缩写,后面4个数字代表航班信息…...
Vue.js组件开发-使用地图绘制轨迹
在Vue.js中开发一个组件来展示地图并绘制轨迹,可以使用诸如Leaflet.js、Mapbox GL JS或百度地图等地图库。这些库提供了丰富的API来创建和定制地图,以及绘制路径、标记和其他地图元素。 示例: 1. 安装Leaflet.js 首先,需要安装…...

vue 与 vue-json-viewer 实现 JSON 数据可视化
前言 接口的调试和测试是确保系统稳定性的重要步骤。为了让开发人员和测试人员能够直观地查看接口返回的 JSON 数据,使用合适的工具至关重要。vue-json-viewer 插件为 vue 开发者提供了一个简单而强大的解决方案。本文将详细介绍如何在 vue 项目中使用该插件&#x…...

ubuntu Android : adb logcat 过滤多个log
指定字符串的log,可以用下面的形式,注意加-E和单引号: adb shell " logcat | grep -E strings1|strings2 " 参考:Android : adb logcat 过滤多个log 用adb shell “ logcat | grep -E ‘strings1| strings2 ‘ “ 形…...

kubeneters-循序渐进Cilium网络(三)
文章目录 概要命名空间之间的路由同一节点上的 Pod 到 Pod 路由跨节点的 Pod 间路由总结 概要 在前一篇讨论网络接口的内容中,详细分析了如何识别所有参与 Pod 间路由的接口。同时,以简明的非技术语言阐述了 Cilium 在 Kubernetes 集群中的路由机制。接…...
编译与汇编
本文来自《程序员的自我修养》 编译过程是把预处理完的文件进行一系列词法分析,语法分析,语义分析以及优化后生成相应的汇编文件代码。 现在版本的GCC把预编译和编译两个步骤合并为一个步骤。 gcc -S HelloWorld.c HelloWorld.sint main() {//test/* …...
对MySQL滴MVCC理解(超详细)
学习目标 什么是MVCC?MVCC的核心概念MVCC 的工作原理MVCC 的优势MVCC 的劣势 什么是MySQL中InnoDB下滴快照读和当前读?一、快照读(Snapshot Read)二、当前读(Current Read)三、快照读和当前读的区别四、当前…...

Mac玩Steam游戏秘籍!
Mac玩Steam游戏秘籍! 大家好!最近有不少朋友在用MacBook玩Steam游戏时遇到不支持mac的问题。别担心,我来教你如何用第三方工具Crossover来畅玩这些不支持的游戏,简单又实用! 第一步:下载Crossover 首先&…...
matlab实现了一个优化的遗传算法,用于求解注汽站最优位置的问题
function [best_chromosome, best_fitness] optimized_genetic_algorithm()%% 遗传算法参数初始化% 定义井信息,包括坐标、管道长度、流量、压力等wells defineWells(); % 返回井的结构体数组N length(wells); % 注汽井数量% 遗传算法相关参数L_chromosome 20; …...
电商项目-基于ElasticSearch实现商品搜索功能(三)
本系列文章主要介绍基于 Spring Data Elasticsearch 实现商品搜索的后端代码,介绍代码逻辑和代码实现。 主要实现功能:根据搜索关键字查询、条件筛选、规格过滤、价格区间搜索、搜索查询分页、搜索查询排序、高亮查询。 主要应用技术:canal,…...
【Vim Masterclass 笔记12】S06L26 + L27:Vim 文本的搜索、查找及替换同步练习(含点评课)
文章目录 S06L26 Exercise 07 - Search, Find, and Replace1 训练目标2 操作指令2.1. 打开 search-practice.txt 文件2.2. 同一行内的搜索练习2.3. 当前文件内的搜索练习2.4. 单词搜索练习2.5. 全局替换练习 3 退出 Vim S06L27 同步练习点评课 写在前面 Vim 的文本检索、查找与…...
Jsoup实现实时爬取
文章目录 1.作用2.使用pom文件引入示例代码(来自官网) 3.测试代码4.上线代码控制层业务层 1.作用 获取Html文档,然后解析出需要的字段 2.使用 pom文件引入 <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-redi…...

如何在Ubuntu上安装Cmake
前言 本文主要阐述如何在Ubuntu22.04上面安装cmake,具体可看下面的操作。 正文 一、环境 Ubuntu22.04 cmake-3.31.4.tar.gz 二、步骤 参考这个方案: 【运维】Ubuntu如何安装最新版本的Cmake,编译安装Cmake,直接命令安装…...

图解Git——分支开发工作流《Pro Git》
分支开发工作流 由于分支管理的便捷, 才衍生出这些典型的工作模式,你可以根据项目实际情况选择。 1. 长期分支 适用于持续开发和发布周期长的项目。常见的长期分支包括: master:只保留稳定的代码,通常用于生产环境。…...
没有正确使用HTTP Range Request,导致访问Azure Blob存储的视频没有实现流式播放
引文: 组里的小伙伴在修改视频播放相关的代码,修改之前的方案使用CDN转发,可以实现流式播放,修改之后的代码因为没有正确的使用Http Range Request, 导致画面访问Azure Blob存储的视频没有实现流式播放,整理下线索在这…...

回归预测 | MATLAB实RVM相关向量机多输入单输出回归预测
回归预测 | MATLAB实RVM相关向量机多输入单输出回归预测 目录 回归预测 | MATLAB实RVM相关向量机多输入单输出回归预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 RVM-Adaboost相关向量机集成学习多输入单输出回归预测是一种先进的机器学习方法,用于处理…...
开发人员学习书籍推荐(C#、Python方向)
作为一名开发人员,持续学习和提升自己的技术水平是至关重要的。如今,技术不断更新换代,新的开发框架、语言和工具层出不穷。对于刚入行的开发者或希望深入某一领域的工程师来说,选对书籍是学习的捷径之一。本篇文章将推荐一些经典…...

Springboot + vue 小区物业管理系统
🥂(❁◡❁)您的点赞👍➕评论📝➕收藏⭐是作者创作的最大动力🤞 💖📕🎉🔥 支持我:点赞👍收藏⭐️留言📝欢迎留言讨论 🔥🔥&…...

基于深度学习的视觉检测小项目(十二) 使用线条边框和渐变颜色美化界面
到目前为止,已经建立起了基本的项目架构,样式表体系也初步具备,但是与成品的界面相比,还是差点什么。 我的界面效果图: 优秀demo的界面截图: 是的,我的界面太“平” 了,没有立体感&…...

基于OQuPy的量子编程实例探究:理论、实践与展望
基于OQuPy的量子编程探究:理论、分析与实践 一、引言 1.1 研究背景与意义 近年来,量子计算作为一种革命性的计算范式,在科学界与产业界引发了广泛关注。它依托量子力学原理,运用量子比特(qubit)进行信息处理,与传统计算相比,具备并行处理、指数级加速等显著优势,为解…...

Linux 文件类型,目录与路径,文件与目录管理
文件类型 后面的字符表示文件类型标志 普通文件:-(纯文本文件,二进制文件,数据格式文件) 如文本文件、图片、程序文件等。 目录文件:d(directory) 用来存放其他文件或子目录。 设备…...

大型活动交通拥堵治理的视觉算法应用
大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动(如演唱会、马拉松赛事、高考中考等)期间,城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例,暖城商圈曾因观众集中离场导致周边…...
解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错
出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上,所以报错,到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本,cu、torch、cp 的版本一定要对…...

(转)什么是DockerCompose?它有什么作用?
一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用,而无需手动一个个创建和运行容器。 Compose文件是一个文本文件,通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...

回溯算法学习
一、电话号码的字母组合 import java.util.ArrayList; import java.util.List;import javax.management.loading.PrivateClassLoader;public class letterCombinations {private static final String[] KEYPAD {"", //0"", //1"abc", //2"…...

视觉slam十四讲实践部分记录——ch2、ch3
ch2 一、使用g++编译.cpp为可执行文件并运行(P30) g++ helloSLAM.cpp ./a.out运行 二、使用cmake编译 mkdir build cd build cmake .. makeCMakeCache.txt 文件仍然指向旧的目录。这表明在源代码目录中可能还存在旧的 CMakeCache.txt 文件,或者在构建过程中仍然引用了旧的路…...

CVE-2020-17519源码分析与漏洞复现(Flink 任意文件读取)
漏洞概览 漏洞名称:Apache Flink REST API 任意文件读取漏洞CVE编号:CVE-2020-17519CVSS评分:7.5影响版本:Apache Flink 1.11.0、1.11.1、1.11.2修复版本:≥ 1.11.3 或 ≥ 1.12.0漏洞类型:路径遍历&#x…...

Golang——7、包与接口详解
包与接口详解 1、Golang包详解1.1、Golang中包的定义和介绍1.2、Golang包管理工具go mod1.3、Golang中自定义包1.4、Golang中使用第三包1.5、init函数 2、接口详解2.1、接口的定义2.2、空接口2.3、类型断言2.4、结构体值接收者和指针接收者实现接口的区别2.5、一个结构体实现多…...

云原生安全实战:API网关Envoy的鉴权与限流详解
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关 作为微服务架构的统一入口,负责路由转发、安全控制、流量管理等核心功能。 2. Envoy 由Lyft开源的高性能云原生…...
32位寻址与64位寻址
32位寻址与64位寻址 32位寻址是什么? 32位寻址是指计算机的CPU、内存或总线系统使用32位二进制数来标识和访问内存中的存储单元(地址),其核心含义与能力如下: 1. 核心定义 地址位宽:CPU或内存控制器用32位…...