题记:【 9/23/2021/19:00 - 21:30 (2 h 30 min) 】
题型分为两部分:单选(20 道)、编程题(5 道)
(单选的具体问题大多记不清楚,编程题最后 1 道没记清楚,下次一定答完题目就做记录 (╯°□°)╯︵ ┻━┻)
单选
“图 # OS # 网络 # 数据结构 # C++ # 数据库”
这里我列觉出我尚还记得部分:
#图#
- 图的表示形式。问:“有哪些?”
- 最小生成树。问:“给定一个树的节点分布和权值,求解特定规则下的最小生成树的长度?”
#OS#
- 线程与堆栈的关系。问:“线程到底会影响哪里的数据,是栈上的?还是堆是上的?”
- 乐观锁,CAS 实现算法。问:“是不是更新完数据后,再检查是否被其他人更新”
#网络#
- FTP 协议。两个端口,21 用于控制,20 用于传输数据 TCP 协议
- TCP 协议。在给定场景中,分析各方当前所处的状态
#数据结构#
- 哈夫曼树。问:“是否可以交换左右子树”
- 红黑树,对红黑树性质的考察
#智力题#
- 先手必胜问题
#C++#
- 大多考察一些基础,但很多时候没有注意到的部分
int* arr = new int[22]; int* arr = new int[33]()
;- 问:“谁创建的数组会初始化?”
#数据库#
这方面好像问一部分,但没记得几个
编程题
“1.动态规划 + 2.通用逻辑题 + 3.动态规划 + 4.动态规划 + 5.图遍历”
<1> 【小蜜蜂】(杭电 OJ 原题)
解法:简单的 dp 推导,或者直接递归求解
#include <iostream>
using namespace std;
int main()
{
int num = 0;
cin >> num;
while (num--)
{
int left, right;
cin >> left >> right;
long long fa = 0;
long long fb = 1;
long long fn = 0;
for (int index = 1; index < (right - left + 1); index++)
{
fn = fa + fb;
fa = fb;
fb = fn;
}
cout << fn << endl;
}
return 0;
}
<2> 【特殊的二进制转八进制】规则如下:
INPUT:
3
0 1 1
OUTPUT:
0 -> 0
1 -> 01
3 -> 011
解法 “辗转相除进行转换”,缺点:只通过了 90% 的测试用例 >︿<
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int solution(int val);
int main()
{
int N = 0;
while (cin >> N)
{
int sum = 0;
for (int i = 0; i < N; i