OPPO暑期实习笔试(数据开发)
笔试时间:3.15日(00:00-23:59)
笔试时长:2h(自由选择作答的时间段)
笔试内容:数据开发基础知识、算法、SQL
1.选择题
20道选择题(2分/题,共40分),主要涉及的内容如下:
- 大数据框架:HDFS/MapReduce等
- 基础算法知识:排序算法(插入/选择/归并/快排),栈,队列,树(前/中/后序遍历)
- SQL语法/数据库基础知识
- Linux基础知识
- python语法
- 概率论与数理统计(会涉及到简单的微积分计算)
2.编程题
三道编程题(共60分):两道算法+一道SQL
题1
炸金花(15分):很简单的字符串问题
输入3个长度为2的字符串(不重复),表示三张牌
如果三张牌中,位置为0的字符相同,则输出Flush
;位置为1的字符相同,则输出Bomb
否则输出Neither
输入示例1:5H 6H 7H
输出示例1:Flush
输入示例2:AS AP AH
输出示例2:Bomb
题2
计算一个数组中子序列的最大权值(25分)
权值的含义是子序列中所有数字的最大公因数(gcd)
- 输入两行,第一行输入两个值n和k,n是字符串的长度,k是要取的子序列得长度第二行输入n个值,表示数组中的数据
- 输出最大的权值
- 输入示例1:
5 3 3 2 3 4 8
- 输出示例1:
2
解释:从长度为5的数组中取长度为3的子序列,分别计算各个子序列的权值,然后输出最大的权值
可以发现取2 4 8的时候,权值(最大公因数)最大,为2
- 输入示例2:
6 2 1 1 4 5 1 4
- 输出示例2:
4
个人的思路是回溯,但是不管怎么剪枝都会超时
题3
有两张表t1和t2,t1是产品批次表,t2是产品检测表,相关字段如下:
t1:component_id(产品id,主键),component_name(产品名称),batch_number(批次编号),cost(单个产品的成本),production_quantity(这一批产品的数量)
t2:inspection_id(检测id,主键),component_id(产品id),defect_count(缺陷产品的数量),passed(是否通过检测,0表示不通过,1表示通过)
要求计算的字段如下:
- batch_number:产品批次编号
- total_cost:总成本
- total_defect_rate:产品缺陷率
- passed_total_cost:通过检测的产品成本
- failed_total_cost:未通过检测的产品成功
按照batch_number升序排序
#数据开发##笔试##暑期实习##大数据##oppo#简单的join,按照batch_number分组,然后聚合即可