What Programming Language Does Uber Use?
Uber's backend runs mostly on Go and Java. Python covers data science and machine learning. The iOS app is written in Swift. The Android app is written in Kotlin and Java. Uber has described all of this in public engineering posts and open source projects.
Uber does not use one language everywhere. It runs thousands of small services, called microservices. Each team picks from a short list of supported languages.
The Short Answer by Layer
| Layer | Main languages | Public evidence from Uber |
|---|---|---|
| Backend services | Go, Java | Uber's posts on its Go and Java code repositories |
| Data and machine learning | Python, Java, Scala | Horovod, Ludwig, Apache Hudi |
| iOS app | Swift | Uber's rewrite of the rider app |
| Android app | Kotlin, Java | Uber's posts on moving to Kotlin |
| Web front end | JavaScript, TypeScript | Fusion.js and Base Web |
| Analytics and storage | SQL | Uber's data platform posts |
Why Go Shows Up So Often
Go is Uber's most visible backend language. Uber open sourced several large systems written in Go. Cadence runs long workflows. Jaeger traces requests across services. M3 stores metrics.
Go fits Uber's needs for two reasons. It handles many requests at the same time using light threads called goroutines. It also builds into one file, which makes deployment simple.
Uber has also written about keeping most of its Go services in a single code repository. That repository is one of the larger public examples of the pattern.
Where Java Fits
Java carries a large share of Uber's heavier backend services. Uber keeps a separate Java code repository for them. Storage, payments, and marketplace services are common examples.
Uber's data tools also sit in the Java world. Apache Hudi, a storage format for large tables, started at Uber. Stream processing runs on Apache Flink, which is a Java system.
Uber open sourced NullAway, a tool that catches null errors in Java at build time. A tool like that only makes sense for a very large Java codebase.
Python, JavaScript, and the Rest
Python is Uber's language for data science and machine learning. Horovod, a tool for training models across many machines, was created at Uber. Ludwig, a machine learning toolkit, also came from Uber.
Some early Uber services were written in Python and Node.js. Uber has said it moved much of that traffic to Go and Java for speed. Node.js still serves parts of the web stack.
On the web side, Uber released Fusion.js and Base Web. Both are JavaScript projects, and newer work uses TypeScript.
C and C++ appear in narrow places. H3, Uber's system for splitting the map into hexagons, is written in C.
Which Language Should You Use in the Interview?
Uber does not require a specific language in a coding round. Candidates report using Java, Python, Go, C++, and JavaScript without any problem.
Pick the language you write fastest under time pressure. That is almost always the one you have used most.
Two habits matter more than the language itself. Say your plan before you type. Then name the time and space cost of your solution.
Knowing Uber's stack still helps in two places. It gives you real detail for why you want to work at Uber. It also helps in design rounds, where Uber asks about maps, matching, and pricing at large scale.
How to Prepare
- Practice patterns, not problem counts. Group questions by shape, such as sliding window or graphs. Grokking the Coding Interview is built around those groups.
- Know the rounds before you study. Read what Uber asks in an interview and plan your weeks around it.
- Prepare for the machine coding round. This round asks for working code in a class design, not a puzzle. See the Uber machine coding round.
- Study Uber-shaped design questions. Ride matching and surge pricing come up often. Start with top system design questions for Uber.
- Write stories for the behavioral round. Use top Uber behavioral questions and keep each story under two minutes.

GET YOUR FREE
Coding Questions Catalog

$123

$197

$72