The loop at a glance
Six possible rounds, one bar: can you reason in the open and ship in small steps. Everything below is how to clear it.
- Recruiter to offer in 3 to 6 weeks. Screen, hiring manager, one or two technical rounds, a CREDIT values round, sometimes a panel. Not every pipeline has all six.
- Coding is practical, not exotic. LeetCode easy to medium in your own editor, often with lookups allowed. They grade clean code and live reasoning, not memorized tricks.
- Design leans toward their real world. CI runners, job queues, rate limiters, Postgres at scale. Less "design Twitter," more "run millions of CI jobs cheaply."
- Values are tested, not decorative. Iteration and Transparency trip people up most. Every STAR story should perform the value, not just name it.
- The handbook is the tell. It is public and runs the company. Reading it turns "why GitLab" from generic into specific, and most candidates skip it.
1Snapshot, read this first#
| Thing | Detail |
|---|---|
| Roles | Backend (Ruby on Rails), Frontend (Vue), Fullstack, SRE, Distribution/Infra |
| Levels | Intermediate, Senior, Staff (GitLab rarely hires raw juniors into engineering; most "entry" is Intermediate) |
| Process length | Usually 3 to 6 weeks, sometimes faster if the team is hungry |
| Rounds | Recruiter screen, hiring manager, 1 to 2 technical interviews, a values interview, sometimes a panel/skills round |
| What wins | Clear writing, async communication, strong fundamentals, genuine remote maturity, iteration over polish |
| What fails | Vague stories, cannot explain your own code, treating "remote" as a perk instead of a discipline, ignoring their handbook |
| Comp US (Intermediate) | ~$120k to $160k base + equity + bonus, location-adjusted |
| Comp US (Senior) | ~$160k to $200k base + meaningful equity |
| Comp India (Intermediate/Senior) | ~INR 30L to 60L+ total depending on level, roughly 60 to 70% of SF benchmark |
| Comp UK (Senior) | ~£80k to £115k base + equity |
| Comp Canada (Senior) | ~C$140k to C$180k base + equity |
How your number gets set. GitLab publishes a location-factored compensation calculator, so pay is a formula, not a dark art:
- Market benchmark for the role, times a geographic factor for where you live, times a level multiplier.
- They mostly stick to it, and they will say so to your face.
- Two Senior Backend engineers doing identical work can be paid differently because one is in San Francisco and one is in Lisbon.
The one thing to understand about GitLab. This is the most transparent company you will ever interview at, and they expect you to have read the handbook:
- It is public, thousands of pages, and it is literally how they run the company instead of meetings and tribal knowledge.
- Candidates who treat it as homework stand out instantly.
- Most candidates do not bother, and it shows in the first "why GitLab" question.
2Getting the call (the part most guides skip)#
Why a cold application is not hopeless here. GitLab is fully remote and hires globally, so one req pulls hundreds of applicants from every time zone:
- They are a genuinely async, process-driven shop, and recruiters actually read what you submit.
- A referral still moves you up the stack fast.
The trick most people miss: their culture is public. Team page, handbook, merge requests, all open:
- Find an engineer on the team you are targeting and read something they actually shipped.
- Reach out with a specific, non-generic note.
- "I saw your MR on the Rails upgrade, I hit the same autoloading issue on that migration, happy to compare notes" beats "please refer me" every time. The first proves you did the work; the second asks them to.
Write resume bullets that show outcome, not activity.
- Weak: "Worked on backend APIs and improved performance."
- Strong: "Rewrote the N+1-heavy project-list endpoint in Rails, cut p95 latency from 1.9s to 240ms and removed 40% of DB calls, serving 3M requests/day."
- The pattern: numbers, the actual tech, the scale. If you cannot put a number on a bullet, you probably do not understand the impact yet, and an interviewer finds that soft spot in about two follow-ups.
ATS keywords that matter for GitLab roles. Ruby on Rails, PostgreSQL, Vue.js, GraphQL, Sidekiq, CI/CD, Kubernetes, Go (infra roles), Git, REST, async collaboration.
- Do not keyword-stuff. Put them in real bullets where you actually used the thing.
- The human after the ATS will ask you about any term you list.
The product is open source and the entire development history is public. A merged MR to the GitLab repo, even a doc fix or a flaky-test repair, proves you can work in their codebase, pass their CI, survive their code review, and operate async, all before you interview. A merged MR has turned a borderline resume into a fast-tracked one.
3The loop at a glance#
| Round | Length | What it tests |
|---|---|---|
| Recruiter screen | 30 min | Motivation, comp expectations, remote fit, basic background |
| Hiring manager | 45 to 60 min | Your experience in depth, why GitLab, how you work async |
| Technical interview 1 | 60 min | Coding / practical problem solving, usually in your stack |
| Technical interview 2 | 60 min | System design (senior) or deeper technical / debugging (intermediate) |
| Values / behavioral | 45 min | CREDIT values fit, collaboration, conflict, bias for iteration |
| Panel or team round | 45 to 60 min | Sometimes added: meet future peers, broader fit |
Not every pipeline has all six.
- Intermediate backend might be screen, HM, one coding round, one values round, and that is it.
- Senior and Staff get heavier technical and design coverage, usually both technical rounds plus a deeper values conversation.
- Your recruiter lays out the exact sequence up front. GitLab is unusually good about telling you who you are meeting, what each round covers, and often the interviewer's name so you can read their public profile beforehand.
4The coding or technical rounds#
GitLab's technical interviews are refreshingly practical. This is not a company that makes you invert a binary tree while five people stare. The problems look like a task you would pick up on a Tuesday.
What they actually test.
- Practical coding in your language, usually Ruby or JavaScript/Vue. You often use your own editor and can look things up, because that is how the job works and they want to see how you really operate.
- Data structures and algorithms at a reasonable level. LeetCode easy to medium, occasionally a hard. Arrays, hashmaps, strings, trees, graphs, a bit of recursion. They care that you pick the right structure and reason about complexity, not that you memorized a DP trick you will never use in a Rails controller.
- Debugging and reading unfamiliar code. Some rounds hand you a broken snippet or a small feature to extend. This mirrors the job: most of your time is reading and modifying a giant existing Rails monolith, not writing greenfield.
- API and data modeling. Expect "design the endpoints and tables for feature X," where they watch whether you think about indexes, pagination, and backward compatibility.
How to win the round.
- Clarify first. Ask about input size, edge cases, and expected behavior before you touch the keyboard. Asking "what happens on an empty list or a duplicate ID" signals you reduce ambiguity, which they value explicitly.
- Narrate. Say what you are doing and why. In a remote screen share, silence is death. At work they experience your thinking through writing and talking, not by watching you type.
- Start simple, then iterate. Get a correct brute-force working, say "this is O(n squared), I can do better with a hashmap for O(n)," then improve. Iteration is a core value, so show it live on purpose.
- State complexity. Always give time and space in big-O. Then test with an example, including an empty input and a weird edge case like a negative number or a Unicode string.
- Write clean code. Readable names, small functions, no 60-line method. They review code for a living. Ugly-but-correct loses to clean-and-correct every time.
I am not trying to trap you. In a remote screen share I mostly learn about you from the sentences you say while you think. Go quiet for two minutes and I lose the signal, even if the code is right. Talk me through the dead ends too; watching you back out of a wrong turn cleanly tells me more than a perfect first try.
How to practice.
- Do 60 to 80 LeetCode mediums across arrays, hashmaps, strings, two pointers, trees, and graphs.
- More important: clone the GitLab repo, open a controller and a service class, and get comfortable with Rails patterns if you are going for backend.
- Read how they structure a service object, how they use
ActiveRecordscopes, how they avoid N+1 withincludes. That familiarity shows in a debugging round and is hard to fake.
A quick worked example#
A common practical prompt: given a list of events each with a start and end time, merge the overlapping ones. It is a sort-then-sweep problem that rewards clean iteration and stating complexity out loud.
def merge_intervals(intervals)
return [] if intervals.empty?
sorted = intervals.sort_by(&:first)
merged = [sorted.first]
sorted.drop(1).each do |start_time, end_time|
last = merged.last
if start_time <= last[1]
last[1] = [last[1], end_time].max
else
merged << [start_time, end_time]
end
end
merged
end
Narrate it as you go.
- Sort is O(n log n), the pass is O(n), space is O(n) for the output.
- Test with an empty list, one interval, and fully nested intervals.
- That three-step habit (sort, merge, verify) is exactly the thinking they grade.
5System design (for senior) and fundamentals (for intermediate)#
For senior and staff, you get a system design round. GitLab's version leans toward things they live every day:
- Large-scale web apps, CI/CD pipelines, job queues, database scaling, API design.
- Less "design Twitter from scratch," more "how would you build a system that runs millions of CI jobs reliably and cheaply," which is a problem their own runner fleet solves at real scale.
A framework that works here.
- Clarify requirements and scale. Functional and non-functional. Put numbers on it: users, requests/sec, data volume, read/write ratio. Do not draw boxes before you know whether this is 1k jobs a day or 10M.
- Sketch the high-level pieces. Clients, API/app layer, data stores, queues, workers, caches. Keep it to five or six boxes first, then zoom in.
- Data model. GitLab runs on PostgreSQL, so show you understand indexing, N+1 queries, when to denormalize, and when a
JOINis cheaper than two round trips. - Go deep on one hard part. Pick the bottleneck and solve it properly: sharding, caching strategy, idempotent background jobs, rate limiting, or fairly scheduling jobs across tenants.
- Tradeoffs and failure. What breaks at 10x? How do you handle retries, partial failure, poison messages, observability? Ship the simple version, measure it, then scale the part the metrics actually point at.
Classic prompts in this space. Design a CI/CD job runner and scheduler, a rate limiter, a notification/webhook system, a scalable comment or merge-request system, a feature flag service. Anything involving queues, workers, and PostgreSQL is in-theme.
Reveal the answer
For intermediate roles, the design round is often lighter and leans on fundamentals. Be solid on:
- Databases: indexes, transactions, isolation levels, the N+1 problem, how to read a query plan from
EXPLAIN ANALYZE. The most tested area for GitLab backend, because their scale makes query discipline survival. - Networking and web: HTTP methods and status codes, REST vs GraphQL and when each wins, caching headers, idempotency, what happens between typing a URL and the page rendering.
- Concurrency: background jobs, idempotency, race conditions, at-least-once delivery. Sidekiq is everywhere in their stack, so know why a retried job must be safe to run twice.
- OOP and clean code: single responsibility, composition over inheritance, why a 400-line method is a problem both for correctness and for the next person who reviews it.
6Behavioral and culture fit#
This is where GitLab is different, so do not phone it in.
The values spell CREDIT. Collaboration, Results, Efficiency, Diversity/Inclusion/Belonging, Iteration, and Transparency.
- These are not poster words. They are tested directly in the values interview.
- Often the interviewer names the value they are probing and asks for a story that shows it.
Iteration and Transparency are the two that trip people up.
- Iteration means shipping the smallest useful thing and improving it, not holding work until it is perfect.
- Transparency means working out loud, writing things down, defaulting to public.
- If every story is "I built the perfect thing in secret and revealed it at the end," you are quietly arguing against their whole operating model, and the interviewer feels it even if they do not say it.
Prepare six to eight STAR stories. Cover a conflict, a failure, a time you shipped something small and iterated, a time you influenced without authority, and a time you worked fully async across time zones.
- That last one is big. Remote maturity is not optional here.
- A story about coordinating with someone eight hours offset through clear written handoffs is worth more than any clever algorithm.
One full worked STAR example, for Iteration.
- Situation: our team wanted to replace a slow nightly reporting job that was failing for our largest customers and often ran 6+ hours.
- Task: I owned the fix, but a full rewrite would have taken a month and blocked everyone depending on those reports.
- Action: instead of the big rewrite, I shipped a tiny first iteration in two days. I added an index and batched the worst query, behind a feature flag so we could roll it back instantly. I measured, shared the numbers in our public issue so anyone could follow along, then shipped three more small improvements over the next two weeks based on what the data showed.
- Result: runtime dropped from 6 hours to 22 minutes, a 94% reduction, and the job stopped failing entirely. Because each change was small and flagged, we had zero rollbacks. The incremental approach shipped value on day two instead of week four.
Why that story lands. It performs the value instead of claiming it:
- Iteration: small flagged steps.
- Transparency: public issue, shared numbers.
- Results: a hard metric.
- Do that for each story, and put a real number in every result. "It got faster" is not a result. "6 hours to 22 minutes" is.
Telling a story where you polished something in private for weeks and unveiled a finished masterpiece. You mean it as a strength. At a company that ships behind feature flags daily, it reads as a risk, the exact opposite of Iteration and Transparency. If your proudest story has no early share and no mid-course correction, pick a different story.
7Your prep plan#
4-week plan.
- Week 1: read the GitLab handbook sections on values, communication, and the engineering workflow. Clone the GitLab repo, read real code in your target area. Do 15 LeetCode easy/medium.
- Week 2: 25 more mediums focused on arrays, hashmaps, strings, trees, graphs. Drill PostgreSQL fundamentals: indexes, N+1, query plans with
EXPLAIN ANALYZE. - Week 3: system design (if senior): CI runners, rate limiter, queue systems, Postgres scaling. Write out your framework so it is muscle memory. Intermediate: deep fundamentals and debugging practice on unfamiliar code.
- Week 4: write and rehearse 6 to 8 STAR stories mapped to CREDIT. Mock interviews, out loud, with someone who will interrupt you. Try to open one small MR on the GitLab repo.
2-week plan.
- Days 1 to 4: 30 LeetCode mediums, your stack. PostgreSQL and N+1 drilling until indexes and query plans are reflex.
- Days 5 to 8: system design or fundamentals, plus read GitLab handbook values pages so "why GitLab" is specific and true.
- Days 9 to 12: write STAR stories, do 2 mock behavioral rounds focused on Iteration and Transparency.
- Days 13 to 14: mixed mocks, review weak spots, test your screen-share and editor setup so nothing breaks on the day.
2-day crash plan.
- Day 1: read GitLab's CREDIT values page and skim the engineering handbook. Do 10 mediums in your language. List edge cases you always forget, like empty input and off-by-one.
- Day 2: write 5 STAR stories with numbers. Review PostgreSQL indexes and N+1. Do 2 timed coding problems narrating out loud as if someone is listening. Sleep, do not cram at midnight.
8Why people get rejected at GitLab#
- Never read the handbook. Asked "why GitLab," they give a generic "I love open source and remote work." At the most transparent company on earth, with a public handbook, that is a visible red flag that you skipped the one piece of homework they can verify.
- Poor async/written communication. Mumbling, no structure, cannot explain their thinking without being dragged through it. Remote work is mostly writing, and they screen hard for it in both the coding narration and the values round.
- Perfectionism over iteration. Stories and solutions that show "I waited until it was perfect before shipping" clash with the Iteration value and read as a risk to a team that ships behind feature flags daily.
- Cannot explain their own resume. You claimed you scaled a system from X to Y. They ask exactly how: which index, which query, which tradeoff. Vague answers sink you faster than a wrong answer honestly reasoned.
- Weak PostgreSQL and query sense. For backend, not understanding N+1 or indexing is close to disqualifying given their scale. "I use the ORM and it just works" is the wrong answer.
- Treating remote as a lifestyle perk. Candidates who talk about remote as "flexibility for me" instead of "a discipline I am good at" worry hiring managers, because the failure mode of a bad remote hire is expensive and silent.
At GitLab, the handbook is the interview you can study for in advance, and almost nobody does.
9The offer, comp and negotiation#
GitLab's comp is driven by a transparent, location-factored framework. Rough 2026 total targets:
- US Intermediate: ~$120k to $160k base plus equity and bonus, adjusted for your metro.
- US Senior: ~$160k to $200k base plus a real equity grant.
- India: ~INR 30L to 60L+ total depending on level, generally 60 to 70% of SF-area benchmark.
- UK Senior: ~£80k to £115k base plus equity.
- Canada Senior: ~C$140k to C$180k base plus equity.
Negotiation tips specific to GitLab.
- Know the framework. Because the calculator is public-ish and formula-driven, raw base haggling has limited room. The real levers are level and location factor. If you believe you are a Senior and the offer is Intermediate, argue the level with evidence of scope and impact, not the number. A level change moves the whole formula.
- Push on equity and level, not just base. GitLab is public, so equity is real and liquid-ish, not Monopoly money. A level bump changes base and equity together, worth far more than squeezing a few thousand on base and much easier to justify inside their framework.
- Use competing offers factually. This company prizes honesty. "I have an offer at X, I would rather be here, can we close the gap" lands well. Bluffing does not, and inventing a fake offer clashes with the values they just spent a whole round testing.
The highest-value move in a GitLab negotiation is almost never base. It is the level. A bump from Intermediate to Senior re-runs the entire formula (benchmark, factor, and multiplier) at once, and it is the one argument the framework is built to accept when you bring evidence of scope. Spend your energy proving the level, not haggling the dollars.
10FAQ#
"Do I need to know Ruby to get a backend offer?"
"Should I really read the whole handbook?"
"Is the coding hard, LeetCode hard?"
"How important is a GitLab contribution?"
"Is it really fully remote?"
What you can now explain in the room
- The full GitLab loop, which rounds are optional, and why the values round sits on the critical path.
- How their location-factored comp formula works, and why level and geography move it more than base haggling.
- Why the coding rounds reward narration and clean, iterated code over memorized algorithms.
- How to shape a design answer around the Rails plus PostgreSQL plus Sidekiq triangle they actually run.
- Why PostgreSQL query sense (N+1, indexes, `EXPLAIN ANALYZE`) is close to the disqualifying fundamental for backend.
- How to tell a STAR story that performs Iteration and Transparency instead of just naming them.
When you are ready, map these rounds onto a dated week-by-week plan that fits your actual interview date, and work backward from there.
Get a prep plan built around your GitLab interview
Tell us the role and your interview date. We will send back a dated, day by day plan. Free.