Sr. Java Engineer
We are looking for a Sr. Java Engineer to join us!
The team is growing to face new and exciting challenges. We are looking for senior engineer with technical expertise and a passion for low-level programming.
We are building a top-level Java backend team to work on an innovative product in the analytics industry. For this position, we are looking for experienced Java Engineers (+5 years) who enjoy low-level programming and have a deep understanding of technology at its core.
We expect candidates with outstanding analytical skills and a keen desire to learn and apply state-of-the-art technologies.
- Implement new functionality and analyses in a real-time distributed query engine using cutting-edge technologies while working with massive data sets.
- Research and develop solutions to help scale systems and eliminate performance bottlenecks emphasizing high scalability, high reliability, and low latency.
- Build systems to support easier integration of customer data.
- Be an integral part of a team that works and adapts fast, and enjoys working together.
- Be a self-starter, self-learner, and contribute to the better development of the product.
- Minimum five years of work experience as a Java software/infrastructure engineer.
- Significant experience with scalable distributed systems architectures using modern commercial cloud infrastructure (we use a mix of web servers, containers, load balancers, databases, message queues, and caches from the big providers).
- Solid CS foundation — you’re able to justify the data structures, algorithms, and techniques used in your code, and you’re able to analyze it with regard to time/space complexity.
- Experience with tools like YourKit, VisualVm, or Console.
- Experience with distributed data stores like Cassandra, HBase, Hive, Druid, Clickhouse.
- Experience with applications in production, and/or debugging applications in production.
- Experience tuning garbage collection in the JVM.
- Demonstrated track record of shipping quality products
- Deep understanding of the heuristics of the JVM, memory, and garbage collection.
- The ability to debug programs in your head.
- Able to build articulate and justify trade-offs when architecting new functionality
- A solid understanding of the fundamentals of how computers and networks operate, TCP/IP, DNS, the difference between CPU/DISK/Network IO and how that impacts programming decisions.
- Good job estimation.
- Methodical, organized, and consistent in completing your work
- Able to move and adjust quickly.
- Able to operate independently and can speak up when help is needed.
- Good English and Spanish written and oral communication skills.
- Constant interest in learning.