【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 或监考人员进行反馈。
祝你考试顺利,取得理想成绩!