华为软件类笔试-嵌入式软件开发 10-11
《嵌入式软件开发笔试与面试手册》:https://blog.nowcoder.net/zhuanlan/jvN8gj
《软件开发笔试汇总》:https://blog.nowcoder.net/zhuanlan/0oDWVm
第三题:稀疏存储
在虚拟化技术、芯片仿真器等领域,存在一种场景,即实际读写的数据量比较小,但要求可访问的地址空间却很大(要求4GB、甚至128GB地址空间)。
实现一个地址范围为32G的,可在该地址范围内任意位置读写数据的虚拟化内存机制(数据默认清零)
对应功能: 1.读取任意地址数据: 2.往任意地址写入任意数据 3.清空数据,并释放内存
输入格式: Command Address Length Data
解释: 1、Command为Read、Write、 Clear之一 2、Address采用64位无符号十六进制数,全大写 3、Length采用64位无符号十进制数,单位为“字节”; 4、Data采用字节流(2个16进制数表示一个Byte) ,全大写;5、如果指定的Length大于实际给定的Data,需要程序自行末尾补0,小于则末尾截断
解答要求:
时间限制: C/C++ 1000ms其他语言: 2000ms内存限制: /C++ 32MB.其他语言: 64MB
输入
每条指今一行,一个用例输入可以是多条指令混合,只有Read指令有输出。每个用例保证指令、参数格式正确,但不保证参数范围,需要程序按照题目规格要求自行校验,参数不合法,则对应的指令无效。
每个用例保证需要存储的总数据量最大不超过16MB,一个用例最多不超过500条指令。
例如(3表示有3条指令) 3 Write 0x100 7 001122AA Read 0x100 4 Clear
输出
采用字节流(2个16进制数表示一个Byte),全大写 例如 001122AA 每条Read指令对应一行输出数据,如果指令给的参数不合法,对应的输出为空(不换行)
第一题:计算最少流控请求数
服务器性能有限,对于突发请求,有时需要通过流控保护系统不受冲击。假设某服务器的系统要求任意M分钟内只能处理N条请求,超出的请求必须流控掉。已知连续X分钟,每分钟的实际请求数,请给出至少流控掉多少请求才能保证上述系统不受冲击。
解答要求
时间限制: C/C++ 1000ms,其他语言: 2000ms 内存限制: C/C++ 256MB,其他语言:512MB
输入
第一行: M和N M范围[1,10] N的范围[0,10000]
第二行: 连续分钟数X,X范围为[1,100000]
第三行:每分钟的请求数范围[0,1000]
输出
最少可以流控的请求数
样例1
输入:
4 6 6 2 1 2 2 3 2 输出:
3 解释:
输入: 第一行系统要求:每4分钟只能接受6个请求。
第二行:连续6分钟 第三行:每分钟的实际请求数。 至少流控3个请求 ,可以是: 第4分钟流控1个请求,第5分钟流控1个请求,第6分钟流控1个请求,才可以满足系统4分钟内只能处理6条请求的要求
#include <iostream> #include <vector> using namespace std; int main() { int M, N; cin >> M >> N; int X; cin >> X; vector<int> requests(X); for(int i = 0; i < X; i++) { cin >> requests[i];
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
本专栏主要发布嵌入式软件开发相关岗位2023年(2024届)的笔试真题(嵌入式软件开发、通用软件开发、C/C++软件开发、算法工程师、数据开发、测试开发等)主要是算法编程题,其中一些岗位笔试含有对应的选择题、填空题、简单题。