京东面试-北京

1.有16T的有重复的数据求找到重复次数前k多的数

京东:20200904一面

1.数仓分层,课本中的和美团的比较,通用分层有哪些。
2.数据治理,减少存储方法
1)配置生命周期
2)全量,增量表选择
3.presto处理大数据的方法
分区(将数据打散)、压缩
4.数据规范,建模规范
5.数据库三范式实际应用的例子
6.拉链表
7.维度表事实表建表规则

8.数据质量管理
1).正常
时效减少,优化方式
降低存储(设置增量表/全量表/拉链表)
设置合理的生命周期,数据回溯可找回/或者通过其他表复现
2).异常
资源紧张–》日常数据监控
数据倾斜问题–》缓解数据倾斜

京东:20200907二面

1.分布式ACID特性有了解吗
2.关系型数据库的了解
3.spark和hive的shuffle过程有什么不同
4.hive group by执行过程
5.group setting预计算了解吗
6.HDFS 的namenode了解,宕机操作
7.有没有遇到小文件存储,该怎样优化
8.如何判断数仓模型构建是否合理
9.美团HDFS版本
10.数据湖的了解,olap的了解
反问
1.日常工作
1)数据平台:零售、供应链、采仓配业务都有
2)数据产品平台部:供内外部使用
3)具体工作建模
数仓建模
如何优化构建数仓模型,降体增效
任务/模型优化:hive\spark\hadoop\yarn\sqoop
4)实时数仓
数据湖、实时数仓
2.技术建议

9.22 京东零售一面

1.python装饰器
装饰器参考链接
python 中 *args 和 **kwargs 的区别
在 python 中,*args 和 **kwargs 都代表 1个 或 多个 参数的意思。*args 传入tuple 类型的无名参数,而 **kwargs 传入的参数是 dict 类型。
在不知道传入多少个参数时,args是一个数组,kwargs一个字典。
2.写一个python计时装饰器
python time模块和datetime模块详解

import time

def count_time(func):
    def int_time(*args, **kwargs):
        start_time = time.time()  # 程序开始时间
        func()
        over_time = time.time()   # 程序结束时间
        total_time = over_time - start_time
        print('程序共计%s秒' % total_time)

    return int_time

@count_time
def main():
    print('>>>>开始计算函数运行时间')
    x = 0
    for i in range(1000000):
        x=x//13
    print(x)

if __name__ == '__main__':
    main()
import datetime
def count_time(func):
    def int_time(*args, **kwargs):
        start_time = datetime.datetime.now()  # 程序开始时间
        func()
        over_time = datetime.datetime.now()   # 程序结束时间
        total_time = (over_time-start_time).total_seconds()
        print('程序共计%s秒' % total_time)
    return int_time
@count_time
def main():
    print('>>>>开始计算函数运行时间')
    for i in range(1, 1000):      # 可以是任意函数  , 这里故意模拟函数的运行时间
        for j in range(i):
            print(j)
if __name__ == '__main__':
    main()

3.从行有序,列有序的数组查找到数据,编程
剑指 Offer 04. 二维数组中的查找
题目
题解

# 双指针 从左下角第一个元素开始遍历,右边的都比它大,上边的都比它小
class Solution:
    def findNumberIn2DArray(self, matrix: List[List[int]], target: int) -> bool:
        i, j = len(matrix) - 1, 0
        while i >= 0 and j < len(matrix[0]):
            if matrix[i][j] > target: i -= 1
            elif matrix[i][j] < target: j += 1
            else: return True
        return False

复杂度分析:
时间复杂度 O(M+N):其中,N和 M 分别为矩阵行数和列数,此算法最多循环 M+N 次。
空间复杂度 O(1) : i, j 指针使用常数大小额外空间。
4.假设京东5亿的成交数据,求出销售量前100个商品并给出时间复杂度
hash建100个key,类似于shuffle的过程??
先用哈希,统计每个商品的成交次数,然后再用在N个数中找出前K大个数的方法找出成交次数最多的前100个商品。
优化方法: 可以把5亿个数据分组存放,比如放在5000个文件中。这样就可以分别在每个文件的10^6个数据中,用哈希+堆统计每个区域内前100个频率最高的商品,最后求出所有记录中出现频率最高的前100个商品
互联网常见算法思想面试题
5.n个地理坐标点,指定其中一个,取方圆一公里的坐标点,提供实时api
6.mysq索引讲一讲
7.hive文件格式
8.shuffle过程
9.深拷贝、浅拷贝
10.数组的逆序 -编程
京东零售-数据中台-数字营销-Scala/python/java
spark/flink等组件。ETL挖掘、服务端、web服务端api

京东:20200924二面

1.neo4j项目做啥,成果
2.美团实习成果
3.ABtest流程,如果检验指标有效性
4.供应链流程、指标有哪些
5.水滴的保险哪里来,自己的,还是其他平安等保险背景
6.设计发红包机制,说思路
7.手撕,有序数组求缺失的数。

"""
有序数组nums缺失的数值,n个数,从1开始
[1,2,3,4,6,7,8] 缺失5,n=8
[1] n=2,缺失2
"""
def find(nums,n):
    left,right=0,n-2
    while left<=right:
        mid=(left+right)//2
        if nums[mid]==mid+1:
            left=mid+1
        else:
            right=mid-1
    return left+1
nums=[1,2,3,4,5,7]
n=7
print(find(nums,n))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值