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升序排序

简单的join,按照batch_number分组,然后聚合即可

#数据开发##笔试##暑期实习##大数据##oppo#
全部评论

相关推荐

评论
2
3
分享

创作者周榜

更多
牛客网
牛客企业服务