VIVO - C/C++工程师 - 笔试
❗❗如果本文对您有帮助,请不要吝啬您的评论、点赞、收藏与小花,这对我非常重要!谢谢!❗❗
本文所涉及的题目均为基于个人学习和理解重新表述的内容,仅供学习交流之用,不代表任何实际考试题目。如有雷同,纯属巧合。
岗位:C、C++工程师(嵌入式方向)-25届秋招
题型:6 道单选题,4 道不定项选择题,3 道编程题
注意:本文章暂无解析,谨慎分辨答案对错
1、选择题
1.1
在网络编程中,文件句柄通常用于什么目的? ==(B)==
- 控制网络连接
- 读写网络数据
- 进行数据加密解密
- 管理网络路由
1.2
使用 SQL 语言在产品投放表中找出品牌为 vivo 或 iqoo 的且同一系列中投放产品个数大于 3 的数据。附表数据例子如下:
1 | vivo | x | x100 | 3966 |
2 | vivo | x | x100u | 5888 |
3 | iqoo | Neo | Neo9 | 2499 |
以下选项中SQL实现正确的是?==(B)==
- A
SELECT 品牌, 系列, COUNT(*) AS '型号数量' FROM 产品投放 WHERE 品牌='vivo' OR 品牌='iqoo' GROUP BY 系列 HAVING 型号数量>3
- B
SELECT 品牌, 系列, COUNT(*) 型号数量 FROM 产品投放 WHERE 品牌 IN('vivo','iqoo') GROUP BY 品牌, 系列 HAVING count(*)>3
- C
SELECT 品牌, 系列, COUNT(*) AS 型号数量 FROM 产品投放 WHERE 品牌 EXISTS('vivo' OR 'iqoo') GROUP BY 品牌, 系列 HAVING 型号数量>3
- D
SELECT 品牌, 系列, COUNT(*) AS '型号数量' FROM 产品投放 WHERE 品牌='vivo' GROUP BY 系列HAVING 型号数量>3
UNION ALL SELECT 品牌, 系列, COUNT(*) AS '型号数量' FROM 产品投放 WHERE 品牌='iqoo' GROUP BY 系列HAVING型号数量>3
1.3
程序执行过程中,有 60% 的部分是串行处理的,其余为并行处理;如果我们将处理器的数量从 2 个提升到 16 个,理论上整个程序的执行时间能减少多少(为了简单,直接使用两者的 speedUp 差值)?==(D)==
- 减少了5.6
- 减少了14
- 减少了16/45
- 减少了0.35
1.4
一个空栈,如果有顺序输入序列:a1,a2,a3 ... an(个数大于3),而且输出第一个元素为 a(n-1) , 那么所有元素都出栈后,==(D)==
- 输出的最后元素一定为 a1
- 输出的最后元素一定为 an
- a(n-2) 一定比 a(n-3) 先出
- 不能确定元素 a1~ (an-2) 的输出/顺序
1.5
线性表如果要频繁的执行插入和删除操作,该线性表采取的存储结构应该是 ==(D)==
- 顺序
- 散列
- 其他均对
- 链式
1.6
操作系统以下哪个不是 shell 命令有?==(B)==
- curl
- mov
- sed
- find
2、不定项选择题
2.1
在构建深度学习模型时,选择 ReLU 作为激活函数的原因可能有什么?==(AC)==
- 它解决了Sigmoid和Tanh函数在深度网络中容易出现的梯度消失问题
- 它能够将任意输入映射到(0,1)区间内,适用于二分类问题的输出层
- 计算效率高,实现高效,可加速神经网络的训练过程
- 它是一种概率分布函数,适用于多分类问题的输出层
2.2
在操作系统和并发编程中,死锁是一个常见且重要的问题。以下关于死锁的描述中,哪些是正确的?==(AD)==
- 死锁是指多个进程在执行过程中,由于竞争资源而造成的一种僵持状态,每个进程都在等待其他进程释放资源,从而导致所有进程都无续执行
- 死锁是由于系统资源不足导致的,当资源无法满足所有进程的需求时,就会发生死锁
- 进程运行太快可能产生死锁
- 打破死锁的四个必要条件中的任何一个,就可以避免死锁的发生,这四个条件包括:互斥、请求并保持、可抢占、循环等待
2.3
如果内存有限,无法一次性加载 10 亿历史单据信息进行搜索,以下哪些算法是最适合的?==(CE)==
- 哈希查找
- 二分查找
- 分块查找
- 线性搜索
- 外部排序+二分查找
3、编程题
3.1
员工分组:
vivo 项目组新老员工分组完成任务, 员工数组 staff,其中 0 表示新员工,1 表示老员工
分组规则如下:
1、一个小组至多3个员工
2、一个小组中最多有1个老员工
3、如果一个小组中有1个老员工,那么这组最多有2个员工
求最小的分组数
输入描述:
输入员工数组staff,元素只包含0,1
输出描述:
输出一个整数,表示最小分组数
示例1:
输入:
[1,0,0,0,1]
输出:3
示例
输入:
[1,1]
输出: 2
解答:
// 90% 通过率
#include <stdio.h>
int staffGroup(int* staff, int staffLen) {
int groups = 0; // 记录分组数
int i = 0; // 遍历数组的索引
while (i < staffLen) {
groups++; // 增加一个分组
if (staff[i] == 1) {
// 如果当前员工是老员工
i++; // 老员工的位置移动到下一个
// 该分组只能有最多2个新员工
if (i < staffLen && staff[i] == 0) {
i++; // 加一个新员工
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
欢迎来到我的专栏,在这里,我将整理并分享2024年各大企业的真实笔试/面试真题,帮助求职者了解考试趋势和嵌入式常见考点。无论你是准备面试,还是希望提升自己的专业知识,这里都能为你提供宝贵的参考和学习资源。