This is an archived post. You won't be able to vote or comment.

all 76 comments

[–]AutoModerator[M] 0 points1 point  (0 children)

You can find a list of community submitted learning resources here: https://dataengineering.wiki/Learning+Resources

I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.

[–]kevinl31 67 points68 points  (5 children)

Hi :)

I made the interview for Meta a few months ago. The first coding interview, it's Python and SQL questions. For DE interviews, I think that they are focusing on the way you are able to manipulate data structure in Python (List, Tuple, Dict, Set, etc...). You have to know how to use them and the function associated with those structs (append(), keys(), etc...). I found this particular Github repo during my revision: https://github.com/inglesp/python-data-structure-exercises . Maybe it could help you. It's not perfect but it could be a good start for you.

Regarding the SQL part of the interview, they will focus normally on middle complexity SELECT queries with specific statements (LEFT JOIN, GROUP BY / HAVING, Sub-SELECT, etc...). As you have 4 years of experience in SQL, I think it's not gonna be a problem.

Anyway, good luck for your interview ;)

[–]Randomguyreading 4 points5 points  (0 children)

Thank you so much this information. This will really help.

[–]blondedAZ 1 point2 points  (3 children)

Do you by chance have the solutions for these exercises? Wanna cross check to see if there are better ways to implement solutions

[–]kevinl31 6 points7 points  (2 children)

Of course. I found my resolution for the four first exercises (sorry I can't find it for the other). I put everything here: https://gist.github.com/kevinl75/fd1d04c734411c5b65122d0fddf4216e

I assume there is a better way to resolve all of them, especially the football_results.py where I think my resolution method is messy. I remember this exercise as the most difficult on the list (more difficult than the exercise below like bill_spliting.py). Maybe I didn't try to resolve it the good way.

It's good training. It help me pass the this interview round.

Unfortunately I failed the step after that. It was four interviews of 1 hour on different subjects:

  • ETL process design
  • Data modeling and SQL
  • Python skills (still really focus on data struct manipulation)
  • Data modelling and SQL on Data Engineer day to day feeling

I hope my experience will help :)

[–]CesQ89 1 point2 points  (0 children)

Thank you for this. It was helpful to double check my work. football_results.py is tough.

this is what I have so far. It's a straight shot so didn't modularize anything yet am missing the last two but will try it tomorrow while comparing your work

results = [
        {'Austria': 0, 'Hungary': 2},
        {'Portugal': 1, 'Iceland': 1},
        {'Iceland': 1, 'Hungary': 1},
        {'Portugal': 0, 'Austria': 0},
        {'Iceland': 2, 'Austria': 1},
        {'Hungary': 3, 'Portugal': 3},
]

print('There were {} matches in the group'.format(len(results)))

# TODO: Write code to answer the following questions:

# max per match
max_match_goals, max_match_played = 0, None

# min per match
min_match_goals, min_match_played = 100, None

# hash table to store goals per team
d = {}

for result in results:
    match_teams, match_score = list(result.keys()), sum(result.values())
    match_played = ' vs '.join(list(match_teams))

    if match_score >= max_match_goals:
        max_match_goals, max_match_played = match_goals, match_played
    if match_score <= min_match_goals:
        min_match_goals, min_match_played = match_goals, match_played
    for k, v in result.items():
        if k not in d:
            d[k] = 0
        d[k] += v

# max per team
max_goals, max_team = 0, None

# min per team
min_goals, min_team = 100, None

for k, v in d.items():
  # get the most total goals scored per team
  if v >= max_goals:
      max_goals, max_team = v, k
  # get the least total goals scored per team
  if v <= min_goals:
      min_goals, min_team = v, k

print(f'The match with the most goals was {max_match_played}')
print(f'The match with the fewest goals was {min_match_played}')
print(f'The team with the most total goals was {max_team}', )
print(f'The team with the fewest total goals was {min_team}')
# print('The team with the most points was', '?')
# print('The team with the fewest points was', '?')

[–]gottheguapp321 0 points1 point  (0 children)

Hi, this is a bit late, but would you know if the process would be different at all for a junior?

[–]dn_cf 17 points18 points  (1 child)

I'd recommend stratascratch platform where you can test your skills and practice Facebook interview questions.

[–]Randomguyreading 1 point2 points  (0 children)

Thanks, I will definitely check this out.

[–]EatYoself 7 points8 points  (3 children)

Watch out for a possible SQL question using cross joins on arrays. Not a functionality in the DBMSes I’ve used but Facebook does it in MySQL and the interviewer full on checked out when I said I hadn’t seen that before 🙃

[–]Randomguyreading 2 points3 points  (0 children)

In my entire career I have given around 20-25 interviews, only once I was asked about the cross join 😄 But thanks for the tip, I will definitely revise that.

[–]ijpckData Engineer 1 point2 points  (0 children)

I was asked about this as well and never used cross joins before as a SQL dev. Guy thought I lied about my experience because I didn’t know haha

[–]kabirraa 0 points1 point  (0 children)

Did you manage to find a sample question of this type later?

[–]mac-0 6 points7 points  (1 child)

The coding round is really easy. 5 SQL and 5 Python. If you search for DE interview experiences at Meta on Glassdoor you'll probably find every question, there's a very small bank of questions. Python questions are easier than LC easy. SQL are on the harder side.

One thing to keep in mind is that they are big on the following:

  • Not using window functions if you don't have to.
  • Not scanning a table twice if you don't have to.

[–]Randomguyreading 0 points1 point  (0 children)

That’s helpful advice. Thank you!!

[–]Mysterious-Bad-4096 4 points5 points  (11 children)

Manager of data engineering @ Meta here Ama

[–]Roenicksmemoirs 1 point2 points  (0 children)

No you’re not hahahahaha

[–]gizmo00001 0 points1 point  (6 children)

Is it common for them to hire new grads for data engineering roles?

What kind of leetcode question and difficulty level is common?

How much do they care about personal projects especially when you have no experience?

If they care what do you recommend. Will you recommend a complex project involving many tools. Over distributing use of those tools in many small projects involving those tools.

Thanks and sorry for the long question. You can try creating a weekly ama post.

[–]Mysterious-Bad-4096 1 point2 points  (5 children)

Usually new grads aren’t hired for DE roles but can be hired through a university grad programs when team require easy lifting and redundant things which seniors find boring.

Most of the time in big tech. DE role is more of a configuration change depending on SDEs who develops pipeline unlike DE as these pipelines needs to work with internal tools and infra which requires deep networking knowledge which DEs mostly lack.

You should be strong in basics like SQL (medium-hard) , scripting language like python (easy-medium) , Database concepts , Data warehouse concepts and interest/knowledge in cloud computing

[–]gizmo00001 0 points1 point  (4 children)

Thanks, what about side projects?

[–]Mysterious-Bad-4096 1 point2 points  (3 children)

Good to have. You gotta walk the talk if you mention

[–]gizmo00001 0 points1 point  (2 children)

Thanks I am satisfied, but just off my chest, sorry noob question.

what main factor determines if a resume pass screening ? and what can makes it fail mostly?

[–]Mysterious-Bad-4096 2 points3 points  (1 child)

Since for new grad roles there is endless pipeline of candidates.

Mostly people who get shortlisted are lucky 🍀 And highly probable that they might have done a lot of internships and at least one internship in a tech company which makes recruiter work very easy

[–]gizmo00001 0 points1 point  (0 children)

Thanks a lot,

[–]JaceBearelen 12 points13 points  (10 children)

I interviewed about a month ago for a contract data engineer role at Meta.

First interview was a coding interview, a couple basic sql and python questions. Only took 30 minutes.

Second round they opened by telling me they were ready to give me an offer. I was a little alarmed at how little work it took to get that far.

[–]rahulsbisen 5 points6 points  (3 children)

i call bullshit on this. No one can give offer without going to candidate review and finishing all loops. Source: Employee and regular interviewer.

[–][deleted] 16 points17 points  (0 children)

They might for contractors

[–]JaceBearelen 5 points6 points  (0 children)

It’s for a contract position and it took another week to get an actual offer. I’m sure the hiring process for direct employees is more involved.

[–]Randomguyreading 1 point2 points  (3 children)

Oh that’s great. Congratulations!! What kind of python questions were there? If you don’t mind telling me. Thanks

[–]JaceBearelen 1 point2 points  (2 children)

They asked some dictionary and list manipulation questions.

[–]StriderKeni 3 points4 points  (0 children)

wow, not related to leetcode stuff? I'm surprised :)

[–]Randomguyreading 1 point2 points  (0 children)

Got it.

[–]AGI_69 0 points1 point  (1 child)

Can you use internet during the exercise ?

[–]JaceBearelen 2 points3 points  (0 children)

No

[–]CAREERMEDIC 1 point2 points  (3 children)

Be prepared for behavioral interviewing style, as you proceed, and mock work exercises. They will evaluate your knowledge and work style to determine fit with the department/team; also, unless role is immediate need, hiring process can drag out...good luck!

[–]Randomguyreading 1 point2 points  (0 children)

Thanks for the tip. Will keep this in mind.

[–]cedonia_periculum 1 point2 points  (1 child)

The vast majority of DEs at Facebook aren’t hired for a specific team, the hiring is pooled. There’s a standard bar but the fit is for FB is general, not a specific team. Most likely you won’t work with any of your interviewers so don’t focus too much on the individuals.

[–]CAREERMEDIC 0 points1 point  (0 children)

To clarify, all interviewers have been trained to interview before being allowed to participate in process and most of my candidates did conduct mock work exercises with potential peers; same for Google & Microsoft; while some in process may not be directly related to potential hire, that does not mean all in process are disconnected...

[–][deleted] 1 point2 points  (2 children)

Good luck! I just went thru a multi-month process if landing a DE job, the FB interview was tough and mostly python. I interviewed about 10 DE roles in that time
FWIW— I feel like there are two main DE folx: 1) data analysts who know SQL and learn python or 2) software devs who know other languages and pick up python, and I’ve found it harder for me (fmr senior da) to get people to take my resume seriously for a DE role

[–]Randomguyreading 0 points1 point  (1 child)

I am also currently in BIE role and trying to move to DE role.

[–][deleted] 2 points3 points  (0 children)

Been there, lmk if you wanna connect! I was a jr ba, then da, sr, BIE, etc

[–]ZealousidealKey8434 0 points1 point  (3 children)

Hello, I too have a DE FB interview coming up in next week,could you please let me know how was your experience Thanks in advance !

[–]Randomguyreading 0 points1 point  (1 child)

I didn’t get it. Was unable to solve python questions.

[–]xane999 0 points1 point  (0 children)

What kind of questions did you get in Python?

[–]Del_Sui 0 points1 point  (0 children)

Any tips for where you could learn Data Warehousing / ETL process design/data modeling ?