中国移动杭州研发中心测评/笔试
2024-10-18刚刚面试完:https://www.nowcoder.com/share/jump/1729345885661
2024-10-19就收到了测评通知。
邀请您参加【中移杭研】在线专业测评,测评通过后将邀请您参与集团在线统一笔试(10月26日下午14:00-16:00),本次测评正式开始后,您将可以看到11个不同的方向,请您于11个专业方向中选择一个进行作答【试卷分为客观题(博士选答),在线编程题(博士选答),党性测试题(必答)(其中党性测试单独计分)以及问题统计,请注意:专业方向试卷仅有一次选择机会,请谨慎选择。】
想起来我投递的应该是嵌入式软件工程师岗位,所以我就选择了嵌入式方向。
题目划分:
客观题*30:我选的嵌入式方向,就是嵌入式的题库三十道选择题(包括判断),整体难度不高,低于牛客题库的难度;
党性测试题*10:党史党章和二十大的基础知识;
在线编程题*2:可能是嵌入式方向,所以限制C/C++;
问题统计:问我能否参加10月26日的全国统一笔试。
编程题1:
题目描述: 给你单链表的头结点head,请你找出并返回链表的中间结点。 如果有两个中间结点,则返回第二个中间结点。 输入描述: 5 1 2 3 4 5 第一行表示链表有5个元素第二行则为具体元素空格分开; 输出描述: 3 4 5 链表只有一个中间结点,值为3。返回3之后的元素。
代码:
#include <iostream> using namespace std; struct ListNode { int val; ListNode* next; ListNode(int x) : val(x), next(nullptr) {} }; ListNode* findMiddle(ListNode* head) { if (!head) return nullptr; ListNode* slow = head; ListNode* fast = head; while (fast && fast->next) { slow = slow->next; fast = fast->next->next; } return slow; } void printList(ListNode* start) { while (start) { cout << start->val << " "; start = start->next; } cout << endl; } int main() { int n; cin >> n; ListNode* head = nullptr; ListNode* tail = nullptr; for (int i = 0; i < n; ++i) { int value; cin >> value; ListNode* newNode = new ListNode(value); if (!head) { head = newNode; tail = newNode; } else { tail->next = newNode; tail = newNode; } } ListNode* middle = findMiddle(head); printList(middle); return 0; }
编程题2:
给定整数n,返回所有小于n的非负整数n的质数的数量。 输入描述: 整数n; 输出描述: 小于n的非负整数n的质数的数量; 比如输入: 10 输出: 4 提示: -5*10^6 < n < 5*10^6
代码:
(明明题目不难,但是一直通过86%,难搞)
#include <iostream> #include <vector> using namespace std; int countPrimes(int n) { if (n <= 2) return 0; vector<bool> isPrime(n, true); isPrime[0] = isPrime[1] = false; for (int i = 2; i * i < n; ++i) { if (isPrime[i]) { for (int j = i * i; j < n; j += i) { isPrime[j] = false; } } } int count = 0; for (bool prime : isPrime) { if (prime) count++; } return count; } int main() { int n; cin >> n; cout << countPrimes(n) << endl; return 0; }#运营商笔面经互助#