各大公司近期 data engineer 面经大全

Spotify DataEng 19 Intern
时长:45 分钟
形式:google hangout 和 online share editor 写代码

  1. 先让我描述一下自己最近的project,围绕project问了几个问题
  2. 接着问了一些岗位相关的基础问题,hashtable, mapreduce, distribution system, process vs thread, sql 的 三种join,
  3. 算法题:先让写fibnacci函数的recursion的版本,然后现场run 成功后。 接着问怎么改进,由于时间不够改进版只写了core code,没有run
  4. 让我问他问题,我问了两个:how much of the day do you spend conding? what’s the top 3 techinques you use in your daily work?

Facebook Data Engineer Intern (Online technical interview)

  1. python 部分:
    valid ipv4
    average word length
    closest distance
    valid parentheses
    count friends
    面试官是个白人老头,一开始看着很严肃的,然后我有个题一直不pass,最后发现忘记写return了 他在那笑得好开心……气氛一下就活跃了
  2. SQL部分
    1.select 买了a和b两种产品的顾客
    2.每个product_class的 一个什么值,很简单的group by product_class_id
    3.不记得了
    4.统计 在所有加州(state=CA,不是California)的数据中,买过0种商品的顾客有几位,买过1种商品的有几位,and so on, group by 种类的数量。这道题要连接多张表。

Ericsson爱立信 Data Engineer OA

  1. 70分钟11道题,前10题都是linux操作的选择题,比如用什么命令查看系统已用和剩余的memory, disk, 替换文件,查看文件行数,得到文件前十行内容blabla的
  2. 最后一题是数据处理
    处理脱氧核糖核苷酸链, 给一个list of strings,要update和remove里面不符合要求的链,然后将所有的链按照是否有重合的头尾三个元素拼接起来,比如ATGATT和ATTGCA可以把ATT拼起来,新的链就是ATGATTGCA,然后对新产生的链按照给的mapping来计算数量,并按字典序写入结果。我用了两个dictionary,一个存头一个存尾,

akuna quant dynamic(python/c++) OA

投了quant research职位,oa的名字是quant dynamic(python/c++)
三道题目:

  1. 15分,分值最大的是判断三角形,但是最后还是有一个case没通过,一共8个
  2. 10分的是unusual sort,就是大于小于穿插进行,我分了奇偶来做的,唯一的难点应该就是要in place,这个办法不巧妙,但是通过了case test
  3. 4分的是一个加减号变换的,好像有30个test case,但是不难

Data Engineer @ Lyft

  1. 二进制字符串相加,原题:
    LintCode 炼码 - ChatGPT!更高效的学习体验!
    该题在coderpad里面进行。
    楼主先解释了自己的思路,征得面试官的同意之后开始码代码;先写的test case,然后写的代码,比较顺利。corner case没判断对,在面试官的提示下改好了
    Follow up问题: 如果要扩展到其它进制,比如十进制,如果修改代码。
    把进制数作为参数传入就好了
  2. 后来发现是这个题:
    LintCode 炼码 - ChatGPT!更高效的学习体验!
    楼主回答用递归算出子数的最大path,然后递归。面试官提示子树的最大路径合,并非是整棵树的最大值,楼主回答修改递归函数,返回两个数的tuple:第一个是整个子树的最大值,第二个是子树单边最大值。心里没有底不知道到底行不行,毕竟之前没刷过这个题。然后就只剩下十分钟,该我提问了
    面试结赶紧把这个题用上面的思路实现了一下,没有问题。

Facebook Data Engineer Analytics Intern
技术电面两轮 第一轮Python 第二轮SQL 约的是东部时间早10点 第一面的小哥完全没睡醒lol

Python:

  1. Flatten array: [1,2,3[4,5,[6]]] -> [1,2,3,4,5,6]
  2. Number of words in a sentence ‘Hello World’ -> 2
  3. Valid Parenthesis -> 注意这个是带星号的那个题 (*)
  4. Valid anagram
  5. Count number of substrings in a string

第二轮SQL 是个DataEng Manager面的我 很严肃 基本不咋说话 题目在地里都见过 如下:

  1. percentage of male customers
  2. percentage of revenue increase due to promotion (CASE WHEN promotion_id != 0 THEN revenue…) blablabla
  3. customers that purchase both A and B -> 不要用subquery!!!!
  4. top 3 sales product classes
    前四个做得太顺了 最后一题给了个有点难度的 记不太清了 经提示还是秒了 提问环节我问了他一些关于A/B test设计和product metrics设计方面的问题 包括click through rate啥的

Wayfair DA BI组店面

面我的是一个印度小姐姐,感谢我在美国一年半的印度同学们,不然我听印度口音还是有一点费劲,虽然小姐姐已经比很多印度人发音标准很多了

上来打完招呼,她先介绍了自己的组和工作内容,然后就到我自我介绍了,介绍完主要问了简历上的问题,尤其focus在美国的/data相关的/时间比较近的经历

问完就是case 基本就是大小catalog的问题算数是很简单的。但其中有两个quantitative的问题是可以看出来她在试图challenge我。比如说,如何给customer分类,我每提出一个想法,她都会问一句what else,好在都答出来了。还有一个问题是如何确定customer使用了我们的catalog,除了coupon之外还需要想几个,因为我提出的其他几种方法自己也觉得不是非常可行,反正这里答得不太好。

case完了之后又补了说你为什么选择wayfair这种bq,然后就是问我有没有什么问题想问她了。

Facebook Data Engineer Analytics Summer 2019 Intern HR面经

  • HR Interview (First round) -

SQL

  1. How do you join two tables with all the information on the left one unchanged? Left outer join.
  2. How do you count unique number of items in a table? count distinct
  3. How do you union two tables with all duplicates removed? Union
  4. How do you change/delete/update a column in a table? Alter
  5. Null + 10 + 3 + 5 + 7? Null

Coding

  1. 4 in a binary base? 0100
  2. How do you control flow? While loop & for loop
  3. How do you call a function that calls itself? Recursive function
  4. How do you call a loop that never ends? Infinite loop
  5. How do you find reminder of a integer? % (modulus)

Facebook Data Engineer Intern

周五完成两轮背靠背电面,趁着还能记住一点题就分享一下面经还有我自己准备时候总结的资料,积攒RP估计周一就要宣布生死了SQL:我记得只有第四题在一面经里面见过其他题都是新题,表的话还是原来的用户交易的那套四张表

customers: customer_id, name, birthday, gender, state, education_level,注册日期
products: product_id, brand_name, product_class_id, prices
sales: product_id, customer_id, store_sales, promotion_id, transaction_date, store_id
stores: store_id, state, area_squarefeet, store_type
第一题是求没有消费过的customer个数
第二题应该是求product_class_id的交易额之类的
第三题是求gender和education_level等于两组给定情况的customer个数
第四题求分性别的消费者人数,购物天数,在某类型店铺的购物天数
第五题求注册日期距离第一次购物日期最近和最远的消费者,注册日期,首次购物日期和注册日期距离第一次购物日期的天数

Coding:
作为一个Java[刷题选手,在Data相关岗选了用Java写Coding真的会有坑,能写Python还是写Python比较好,血泪教训。遇到的有原题但也不完全是原题,可能跟我选的语言有关大家参考参考就行了,能Python就Python~
形式是面试官会复制粘贴整个方法,还有写好的test,你只需要填充方法就好了

1、count word,就是给一句话用空格分割,给出里面有几个单词就行
2、给一个list里面都是数字,输出一个map里面是数字以及对应的计数
3、给一个list里面都是数字并且含有重复数字,输出去重后的结果,当相同数字出现第二次及以上就不输出它,仅输出第一次出现的
4、接下去是个坑,其实是个原题就是flat integer list,然而给定的形式是List<Object>,compile的时候当Object应该是一个List的时候,我尝试了各种策略都不能convert成List<Object>。。面试官也写不了Java,她做了一个奇特的操作,她把正确答案粘贴给我。。。我就懵逼了。于是这个就不知道算过不算过,就下一题了
5、这题是给一个数组,还有一个pct,求不小于这个pct的数值。面试官只让我说思路,说完嘴跑了几个test case就没时间了,她说extra题让我别写,但很怕她在坑我,都感觉自己在挂的边缘徘徊了。需要注意的是pct是按照递增来看的,不过数组不一定是有序的需要先把数组sort成递增的,再做操作。

Amne Data Engineer oa

两道选择,概率题
4道编程
1 python3找出字符串里所有panagram对
2 任意语言计算array中不重复数字的总和,比如原数列是3,2,1,1,那么需要对重复的数字increment,于是变成3,2,1,2,但此时array还有重复,于是再次increment变成3,2,1,3,再重复就更新为3,2,1,4,所以原array的总和变成10
3 两道sql题,可以选择用mysql, SQL server等
1)给了两个表,各个血型的acceptor和donor,找出所有acceptor>donor的血型
2)给了一个insurance的表,里面有ID,2011和2012年的insurance费用,以及ID对应的经纬度坐标
要求返回部分人的2012年insurance费用的总和(结果保留两位小数)
这部分人必须满足两个条件:这个人的2011年insurance费用必须和其他某个人的2011insurance费用相同,这个人的经纬度坐标对是唯一的,也就是找不出相同坐标的另一个ID
举个例子.
ID 2011insurance 2012Insurance Longitude Latitude
1 1598 2312 23.5 15
2 1235 1100 23.5 15
3 1598 1200 12 20
4 1235 1000 17 23.
这样就是返回sum(1200+1000)的值

FB Data Engineer Intern

昨天面了fb technical interview/onsite,一共两轮背靠背,各一小时,分别是sql和coding楼主在写sql的时候不知道怎么就一直有种脑子发空的感觉,可能太紧张了,于是具体的题也记不太清…仅供参考

SQL:
四个tables,columns蛮多的,好像在地里见过table,但题目完全不一样:
products:product_id, brand_name, class, …
sales: product_id, store_id, transaction_date, customer_id, …
stores: store_id, store_type, country…
customers: customer_id, gender, register_date, education, …

一共问了4个小题:
前两题做得比较顺,挺简单的,有点记不清了,全部focus在了后面两题上…
第三题问,the number of customers who have made at least one purchase in each group (定义了两个groups, 分别用两个维度来定义)

第四题要求对male, female分别计算三个值:1. 各有多少人;2. the number of days at least one sale;3. the number of days has at least one sale at one given store type(这一题差不多是这样吧,题目比较长,2.3需要理解一会儿,要求用一个query同时output,写3的时候就很懵了,最后也没完全写完)

不过觉得如果放在平时练习,这些sql应该都不难,还是要及时调整好面试的状态吧,做题前建议先把table select出来看看

Coding:
4道题,都在之前的面经里见过,感谢感谢:

  1. avg length words
  2. validate ip
  3. count friends
  4. valid brackets

Facebook Data Engineer

对这份工作的expectation是什么

Python(地里有原题)
1.Avg word length
2. Valid IP
3.Neighbor那道题,就是根据input list return出每个人有多少小伙伴
是的本**楼主只来得及写三道题。。
SQL
Table: product, sales, customer, 还有个啥不记得了没用到.
基本就用到基础的group by, order by, sum, case when, join

印象很深的是最后一题,求同时买了product a和b的customer,这题我用self join做的但是应该能有更简单的做法,没想出来

总体leetcode easy 最多medium足够了

Amazon Senior Data Engineer

三周前被猎头通知亚麻面试senior data engineer,
第一轮店面印度小哥面了等差数列除重复问题外加寻找出错数列。
第二轮店面三姐面了编程问题如何罗列文件夹下不同文件类型,还有spark下scalar处理数据问题。
上周被拉去onsite,
上来senior manager和program manager面了许多有关以前做的project的问题。
第二轮印度小哥数据modelling问题加如何亚麻网站click concurrence的问题(我设计了一些db transaction 模式但感觉这个回答的不好)
第三轮马公面试,问了许多bh question还有一些简单算法
中午吃饭和店面的三姐吃了顿饭,随便聊了聊亚麻的工作生活,感觉wlb还是可以的,人家也是到点下班,经常wfh
第四轮两个三姐编程问题,问了如何实现数据串输入,输出不同字母count问题和bigO 问题。
第五轮印度team leader,问了许多bh question,包括工作和同事相处,以及以往简历上经历

AMNE DS/DE OA

  1. 算法复杂度要求是o(n), 不然后面8个case不能通过。
  2. sql 题,注意leaf root inner, column name要大写,再此处浪费了10分钟debug。
  3. sql 题, 当然已经有点慌了,写的有点复杂, 我用的ms sql, 写了两个cte, 第一个cte,group by 血型,sum(a_amount)from accepter,第二个cte,把第一个cte left join到donor table on 血型等于血型,1最后写了个select 血型,sum(amount)减去 avg(amount)from 第二个 cte group by 血型。慌了,其实用两个window function sum(amount) over(partition by 血型),最后相减就好了
  4. anagram
    超级无敌坑爹的一道题,要求返回list of sets。用了正则提取所有的字母和空格,然后split 空格嘛
    然后sample test case里面有两个空格是non break space \xa0 ,一定要replace成普通空格。
    导致一直debug,连最基本的sample test case都无法通过。

Data Engineer @ Moody’s

  1. 介绍一下你做过的 data pipeline project. 分析 use case 优缺点, 如何scale
  2. Coding write function Power(x, n)
  3. Coding find the best time to buy and sell stock
  4. Brain Teaser: Find the top 3 running horses from a matrix
  5. hiring Manager Culture Questions

Apple Data Engineer

apple家的data engineer版上的面经几乎为零,但感觉需求还是蛮大的,这个职位对cs背景不是很care,给转专业同学一些信心。system design偏重于big data以及cloud。面的是search的data组,服务于internal tools/platform, 所以也很看重DevOps的一些经验。面我的全是烙印,全是烙印,全是烙印!!!
共6轮,包括一个lunch interview尬聊,下面是面经:

烙印大哥:1. implement queue using stacks, 这是lc原题,在出这题之前先问知不知道queue, 简单写一个enque, deque的class
烙印小弟:2. reorder linked list, 原来是l0, l1, l2, l4。。。ln-1, ln, reorder成l0, ln, l1, ln-1,就是个single linked list的处理,比较基本。答完了以后又被问了一道很基本的implement binary tree题
烙印大叔:3. 这题最最难,一上来面试官说这题可以很open, 然后就开始画图,要求根据每个building的长和高来画出楼群的skyline, 需要注意楼与楼之间的overlap. 一下子蒙圈,完全没有头绪,当场用hashmap来仿histogram来做,面试官不怎么满意,等lz写完问了一个edge case楼主马上发现自己写错了,但已经没什么时间改了,就只好讲了一下改正思路,面试官不置可否。回来才知道是个lc的hard题,题目就叫Skyline,但hard题就没刷几道,更不可能遇到这个了,反正就是跪了哎, 写到这里有点小伤感。。。
lunch: 主要问和之前工作相关的behavior questions,如果处理conflict, 一个小插曲是刚进餐厅和面试官没什么话题,lz脑残地多问了一句吃饭的这个楼员工多少人?结果面试官说如果是你会如何estimate。。。orz
烙印大妈:system design一个recoomender system for a traveler site, 要求展示recommended top 10 hotels.
烙印小妹:AWS的各种操作设计,比如如何选region, 如何降低latency, 如何spin up relational db的instances to multiple clusters, 需不需要subnet等等

Data Engineer Intern @ Facebook

继懵逼面试以后,下面全靠回忆,有些记不清了
sql部分:
如何更改数据库中的table: alter
如何对aggregate后的数据进行筛选: having
表连接,保留左边表中所有的数据和右边表中match的数据:left join
连接两个表,不想要duplicates,用union还是unionall : union
order by的默认排序 ascending
10+null+5+3 的结果 null
如何统计不重复的数据 count(distinct)

coding部分:
用什么数据结构存放key-value:map
list属于array,collection中的哪一种 collection
循环没有退出:infinite loop(十分尴尬的是想不起来死循环怎么说了)
如何退出一个循环:break
直到满足条件以后再推出循环用什么:while
不断重复调用自身的结构:recursion
用二进制表示4:100

data scientist和data engineer面试的流程不一样.
scientist会侧重于让你讲下项目经历啊什么的,engineer上来就直接问问题,不过都很基础

AMNE Data Engineer/ Scientist

第一题是:find the max difference in an array. if there is no max difference, output -1.
[hide = 101]
第二题:The information of a binary tree is stored in a table TREE. Write a query to identify the ROOT, INNER, LEAF nodes of the tree. output the node ID and the type of the node separated by a space. the node can be one of the following types: LEAF, ROOT, INNER.
SAMPLE INPUT:
TREE
ID P_ID
1 2
3 2
6 8
etc…

答案:(这个答案实在网上看到的。。。)

SELECT N ,(CASE WHEN P IS NULL THEN ‘Root’ WHEN EXISTS (SELECT P FROM BST B WHERE A.N=B.P) THEN ‘Inner’ ELSE ‘Leaf’ END) FROM BST A ORDER BY N;

第三题: your task is to write a python function to find all sets of anagrams in a sentence or group of sentences. an anagram is a 'word, phrase, or name formed by rearranging the letters of another, such as ‘cinema’, formed from ‘iceman’.

Sample input: ’ Joe races to spin tops on top of pots. No one cares, but his dog nips his hand.’

Output: [{‘races’, ‘cares’}, {‘nips’, ‘spin’}, {‘tops’, ‘pots’}, {‘no’,‘on’}]

2 Likes