Job Directory Uber Software Engineer - Performance (JAVA)

Software Engineer - Performance (JAVA) Uber
San Francisco, CA

Uber is a provider of a mobile application connecting passengers with drivers for hire.

Companies like Uber
are looking for tech talent like you.

On Hired, employers apply to you with up-front salaries.
Sign up to start matching for free.

About Uber

Job Description

Uber Overview

At Uber, we ignite opportunity by setting the world in motion. We take on big problems to help drivers, riders, delivery partners, and eaters get moving in more than 600 cities around the world.

We welcome people from all backgrounds who seek the opportunity to help build a future where everyone and everything can move independently. If you have the curiosity, passion, and collaborative spirit, work with us, and let's move the world forward, together.

Job Description

About the Role

Engineers in this role work across teams and across layers of the stack to solve open-ended performance problems for Uber's server infrastructure. We take the long view and respond strategically to problems with our long-term focus on performance and efficiency. We define metrics, build novel tools and visualizations, and use them to solve real problems.

You will help Uber grow its service to more people around the world by scaling its back-end infrastructure gracefully. You will help Uber's code achieve and maintain high standards of performance and efficiency. You will understand and work across layers of abstraction, from distributed systems to the kernel to language runtimes. With enough experience, you will partner with a large number of development and infrastructure teams to independently solve challenging open-ended problems.

You will use your experience in Java development and performance analysis to solve performance problems specific to the Java language and runtime.

What You'll Do / What You'll Need / Bonus Points / About the Team

What You'll Do

* Do deep systems and software work to improve performance and efficiency for Uber
* Use performance analysis tools (such as tracers, profilers, logs) to debug application-level problems
* Build new tools to further such performance analysis
* Diagnose system performance issues, propose improvements in code and configuration to achieve desired system performance
* Run the full cycle from diagnosis, code change/review, deployment, to verifying impact

What You'll Need

* Ability to reason methodically about performance: what matters most, is it CPU usage? Cache effects? Allocations? GC pressure? Locks? I/O? How do you know?
* Understanding of systems-level performance effects such as:
* Transaction latency and throughput
* Kernel or user-space level scheduling effects
* Blocking effects such as file/network IO, locking, and synchronization
* Minimum 2 years experience with the Java language
* Experience benchmarking and profiling Java code
* Experience modifying code to improve the performance of a Java (micro)service
* Ability to monitor operating system metrics for resource usage
* Understanding of JVM tuning, including the JIT compiler
* Experience optimizing performance of Java threads and synchronization
* Experience monitoring and tuning Java garbage collection
* Experience with Java heap analysis, memory leak diagnosis, memory use reduction

Bonus Points If

* Experience optimizing code for processor cache effects
* Experience detecting and fixing synchronization issues (e.g. lock contention)
* Knowledge of Linux systems including procfs CPU accounting (top et al), thread state, and CFS scheduler effects
* Familiarity with typical performance data presentations, such as a flamegraph, critical path graph, or a simple top-N hot functions list

About the Team

We are the Performance Engineering team, part of the Efficiency team. The charter of the Efficiency team is to help ensure that Engineering teams are taking full advantage of the infrastructure resources allocated to them. The Performance Engineering team does a range of deep technical work in pursuit of better performance and efficiency.

About Uber

Uber is a provider of a mobile application connecting passengers with drivers for hire.

10001 employees

1455 market street

Let your dream job find you.

Sign up to start matching with top companies. It’s fast and free.