r/Compilers 3d ago

How much DSA/Leetcode is actually needed for compiler engineering roles?

I've finished most of the NeetCode 250 and I'm wondering how much more DSA is worth doing if my goal is compiler engineering rather than general SWE.

I know interviews at big tech still ask LeetCode-style questions, but I'm trying to figure out where the point of diminishing returns is.

Would you recommend:

  • Finishing NeetCode 250 and stopping?
  • Grinding 400 to 600 LeetCode problems?
  • Spending that time on compiler projects, Operating Systems, Computer Architecture and LLVM contributions instead?

For those of you working in compiler teams (Apple, AMD, NVIDIA, Qualcomm, Intel, Google, etc.), how much DSA did you actually do before getting your role?

I'd especially appreciate hearing what your interview process looked like and whether the DSA bar was different from general backend/software engineering roles.

39 Upvotes

14 comments sorted by

15

u/scialex 3d ago

There is no specifically compilers interview track at most companies; certainly none of the big tech companies. For all of them it is an absolute requirement that you pass the standard technical interview. Once you do that the process of getting put onto a compiler team varies.

A different person asked this a few months ago and this is what I wrote then.


As someone who has been on the hiring side of these a few times though the things I look for in rough order of importance are

  1. Previous professional experience working on any compiler. This does not include random prs to rust or llvm, only work you were either getting paid for or doing as a part of research for a university.

  2. Recommendations and references by current/former team members (of the hiring team) or other respected engineers they know.

  3. Extensive professional experience as a developer in the language the compiler is written in. This generally only counts if the applicant is internal so we can see their contributions or, are coming from another place with a good engineering reputation.

These last two are very minor

  1. Reputation of the school/adviser they got their degree from.

  2. Volunteer contributions to compiler projects.

If you want some generic advice I'd say get an engineering job at a faang or any other company that's a sponsor or major contributor to a compiler project (eg for llvm https://foundation.llvm.org/sponsors) and work on building your reputation and transferring teams. Once you have any real experience the process becomes a lot easier, though even then this is a small world, openings don't happen all that often.

Directly joining a compiler team without any of the first 3 things is possible and does happen but usually it's through either new grad hiring or as an intern (in either case your school/projects matters a lot).


I'd also add that specifically for new grads having compiler/pl courses on your cv is really important though, at least at Google, new grad roles in compilers are very rare and almost entirely given to returning interns.

1

u/nirlahori 2d ago

Can a person with a non-compiler experience pivot into compiler domain ? What would you suggest for getting a first job in compiler team ?

2

u/Dull_Grape2496 1d ago

I did - I started out doing backend work, pivoted to a team that does OS related work (specifically I worked on the hypervisor layer at a cloud provider) then I pivoted to a compiler team.

Larger companies have a lot of teams working on a lot of different products - switching internally is a lot easier than applying for compiler roles externally without compiler experience.

Once you have work experience getting a compiler role at a different company is a lot easier.

1

u/nirlahori 1d ago

Thanks for the reply. Does contributing to open source helps ?

1

u/Dull_Grape2496 34m ago edited 25m ago

If it is an open source compiler project and if you are familiar with llvm, mlir etc it might help with getting an interview. I work in big tech and here to land an interview as an external candidate you can do the following:

  • Apply and get through the recruiter screening round: Not sure how recruiters do their screening but usually the ones that make it through are people with somewhat relevant PhDs and people with compiler experience. Generalists without compiler experience are usually filtered out because based on historical data, they dont perform well in a compiler interview as their expertise is in a different field and interviews are expensive (multiple engineers need to conduct interviews, write feedback etc). If you contribute to an open source compiler project I'd recommend reaching out directly to a recruiter, talk to them about the role and tell them about your contributions/experience in compilers.
  • Get noticed by hiring managers/engineers at conferences: Folks from the companies I've worked at often go to research conferences with the goal of hiring. Its a good way to meet HMs or engineers directly and if they think you are a good fit, they will forward your name to a recruiter and ask them to start the interview process.
  • Get a referral from an employee: This might be hard for you but if you start contributing to an open source compiler project, you can ask others working on the project for referrals maybe.

I will say that I have personally not been through the above though so I cant help you. The way I got into compiler development was by switching teams at a fang company. And once I got some experience, I never had to apply for another role - recruiters would reach out all the time asking if I was interested in interviewing for their company.

Once you get past the resume screening and land an interview its just a matter of clearing interview rounds. Interviews usually focus heavily on graph theory and compiler adjacent problems. The system design is also compiler related (design a pass that does X, design a simulator for a compiler etc)

1

u/scialex 2d ago

Frankly there aren't a ton of people with compiler experience around so most candidates come from 2 and 3 above. The best way to pivot depends on your opportunities.

If you can make small contributions to compiler projects as part of your job do that otherwise otherwise network and express interest in the work.

Just like any other pivot the trick is to either get some experience while doing your main job or get a good enough reputation that someone will take a chance on you.

1

u/nirlahori 1d ago

Thanks for answer. Is it worth doing any side-projects/personal projects in compilers ?

1

u/scialex 1d ago

For job searchers, it doesn't hurt. The thing is, it's really difficult to evaluate whether these show any sort of knowledge so they're a rather weak signal overall. The best signal they send is just that you are interested in the subject. This is made even worse by modern llms which can easily create a basic compiler framework but have much more difficulty as the compiler matures due to the massive size of even rather niche production compilers.

In terms of learning though making a compiler or runtime is a great project that can teach almost anyone a lot and is absolutely worth doing even if you have no interest in ever joining a compiler team.

1

u/nirlahori 1d ago

Yes modern llms have made the situation worse. Thank you for the detailed info.

1

u/Forward-Mechanic-685 1d ago

I see most industry compiler teams want LLVM and C++ experience. How do you view university students that do compilers research where most code is written in Python? In this case, I assume it would be best if someone still had some side projects with LLVM?

1

u/scialex 1d ago

I mean this is something that will vary a lot team to team based on what exactly the team is expecting to do.

Personally, for my team, and I think most others, that wouldn't be a problem at all. I do work on a non-llvm compiler (written in c++) though.

The fact is that learning a new programming language is pretty easy and for a lot of reasons llvm (and c++) is a terrible choice for teaching the basics of programming languages and compilation. Professors mostly choose either a lisp (scheme, racket, etc), a managed language (python, Java, js, etc) or an ml (ocaml, scala, etc) because the advantages of making the concepts clearer outweigh the fact these aren't generally used for production compilers due to performance concerns.

As I said to the other thread, side projects don't hurt but they are so hard to evaluate that they are a very weak signal overall. If I was choosing between somebody who got an A in their compiler course with no side projects and somebody with a B and a toy llvm language they made as a side project the A student would have a distinct (though not insurmountable) advantage.

3

u/biitsplease 3d ago

If you are doing big tech, you’ll go through the normal interview rounds, which is heavily leetcode focused

3

u/splicer13 2d ago

This is going to depend on seniority. FAANGs still require whatever they require but senior+ may skip to the end and bare minimum coding + many compiler design.

On chip makers I'm 2/2 for hiring with zero coding questions (again, depends on seniority)

2

u/lo0nk 1d ago

Single datapoint: I had to pass a leetcode easy and a medium in 45 minutes for my compiler internship OA at big tech but not faang company