数据挖掘百度2015大数据云计算研发笔试卷

Posted Better Bench

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据挖掘百度2015大数据云计算研发笔试卷相关的知识,希望对你有一定的参考价值。

来自牛客网,答案是我总结的

1、请简要描述一下Hadoop, Spark, MPI三种计算框架的特点以及分别适用于什么样的场景

(1)Hadoop

特点:Hadoop是离线计算,基于磁盘,每次运算之后的结果需要存储在HDFS里面,下次再用的话,还需要读出来进行一次计算,磁盘IO开销比较大。底层基于HDFS存储文件系统。
适用场景:适用于离线数据处理和不需要多次迭代计算的场景,并且Hadoop只有Map和Reduce两种接口,相对于Spark来说太少了。

(2)Spark

特点:是一种可以基于内存,迭代的计算框架
适用场景:适用于多次迭代的计算模型,诸如各种机器学习算法 ,数据过于繁杂,并且需要让计算通过迭代,并在内存中,极大地提高效率的场景

(3)MPI

特点:是一种基于消息传递的并行计算框架。可以理解为是更原生的一种分布式模型
适用场景:适用各种复杂应用的并行计算。支持MPMD( 多程序多数据) ,开发复杂度高

2、请解释tcp连接建立过程,如果可能,请结合相应系统调用函数解释交互过程

tcp通过三次握手协议来建立连接,客户端A向服务器B主动发送请求连接,服务器B收到请求后,发送一个确认给A,A收到B点确认后,还要向B发送一次确认。这时完成三次握手,A进入连接准备状态,B接收到A的确认后,也进入连接准备状态,客户端与服务器开始传送数据。

3、给定一个整数的数组,相邻的数不能同时选,求从该数组选取若干整数,使得他们的和最大,要求只能使用o(1)的空间复杂度。要求给出伪码。

def maxNum(nums: List[int]) -> int:

res = 0

for i in range(len(nums)):

​ if i>0:

​ res+=i

​ else:

​ i+=1

return res

4、二分查找是常用的编程方法,请用完整代码实现该函数(不许调用库函数)
void *bsearch(const void *key, const void *base, size_t nel, size_t width, int (*compar) (const void *, const void *));

#include<iostream>
using namespace std;

void * bsearch(const void *key, const void *base, size_t nel, size_t width, int (*cmp)(const void *, const void *))
    void *mid = NULL;
    int sign;
    while (nel > 0) 
        
        mid = (char *)base + width*(nel/2);
        sign = cmp(key, mid);
        if (sign == 0) return mid;//找到 
        if (nel == 1) break;
        else if (sign < 0)
            nel /= 2;//下取整 
        else 
            base = mid;
            nel -= nel/2;//上取整 
        
        
    
    return NULL;


int compare(const void *val1, const void *val2) 
    int iVal1 = *(int*)val1;
    int iVal2 = *(int*)val2;
    if (iVal1 > iVal2) 
        return 1;
    
    else if (iVal1 == iVal2) 
        return 0;
    
    return -1;

5、有编号1~100个灯泡,起初所有的灯都是灭的。有100个同学来按灯泡开关,如果灯是亮的,那么按过开关之后,灯会灭掉。如果灯是灭的,按过开关之后灯会亮。
现在开始按开关。
第1个同学,把所有的灯泡开关都按一次(按开关灯的编号: 1,2,3,…100)。
第2个同学,隔一个灯按一次(按开关灯的编号: 2,4,6,…,100)。
第3个同学,隔两个灯按一次(按开关灯的编号: 3,6,9,…,99)。

问题是,在第100个同学按过之后,有多少盏灯是亮着的?这些灯的编号是多少?要求给出解题思路或给出伪码。

解析:用0 代表 灯灭 1 代表灯亮

用一个[100]×[100]的array数组储存每个人按的状态 index 由1—100 初始值为0

a r r a y [ i ] [ j ] array[i][j] array[i][j]​代表第i个人按了第j盏灯。最后矩阵的列求和,得到是偶数的则是熄灯状态,奇数的是开灯状态。

结果为,10盏,1,4,9,16,25,36,49,64,81,100

import numpy as np
arr =  np.zeros([101,101])
for i in range(1,101):
    for j in range(1,101):
        if j%i==0:
            arr[i][j] =1 
res = np.sum(arr,axis =0)
for i in range(1,101):
    if res[i]%2!=0:
        print(i)

以上是关于数据挖掘百度2015大数据云计算研发笔试卷的主要内容,如果未能解决你的问题,请参考以下文章

共享软件作者怎样才能月入万元

全省大数据云计算区块链企业 研发机构园区入库工作启动!

数据科学与大数据技术专业 —— 云计算●虚拟化 课程 期末复习卷及其简答

数据科学与大数据技术专业 —— 云计算●虚拟化 课程 期末复习卷及其简答

数据科学与大数据技术专业 —— 云计算●虚拟化 课程 期末复习卷及其简答

数据科学与大数据技术专业 —— 云计算●虚拟化 课程 期末复习卷及其简答