We are looking for an experienced Java Backend Engineer with strong hands-on expertise in multithreading, concurrency, distributed systems, transactional processing, and backend architecture. The ideal candidate will have experience designing, developing, and optimising scalable, high-performance backend services in high-volume, low-latency enterprise environments. The candidate should possess strong problem-solving skills and a solid understanding of Java internals, transaction management, distributed system design, and performance optimisation.
Responsibilities:
- Design, develop, and maintain scalable backend services using Java 8/11/17 and Spring Boot.
- Build high-performance applications using multithreading, concurrency mechanisms, asynchronous programming, and thread management.
- Design and implement distributed system components, including messaging, caching, service discovery, and data consistency mechanisms.
- Implement reliable transaction management using ACID principles, transaction isolation levels, rollback mechanisms, and distributed transaction patterns.
- Develop secure and reliable RESTful APIs and event-driven services.
- Optimise application performance, troubleshoot production issues, and resolve concurrency-related bottlenecks.
- Apply resilience patterns such as retries, circuit breakers, timeouts, and fault tolerance.
- Participate in system design discussions, architecture reviews, code reviews, and technical planning.
- Collaborate with cross-functional teams to deliver reliable and maintainable backend solutions.
- Ensure code quality through unit testing, integration testing, and adherence to engineering best practices.
Requirements:
- Core Java: Strong knowledge of Java 8+, including Collections, Streams API, functional programming, exception handling, and JVM fundamentals.
- Spring Framework: Hands-on experience with Spring Boot, Spring MVC, Spring Data, dependency injection, and REST API development.
- Multithreading and Concurrency: Strong understanding of thread lifecycle, synchronisation, locks, executor frameworks, thread pools, concurrent collections, CompletableFuture, and race conditions.
- Transaction Management: Experience with JPA/JDBC, Spring transaction management, ACID properties, transaction propagation, isolation levels, locking, and rollback handling.
- Distributed Systems: Understanding of microservices communication, distributed caching, messaging systems such as Apache Kafka or RabbitMQ, and consistency models.
- System Design: Ability to design scalable, highly available, fault-tolerant backend systems using load balancing, caching, and appropriate architectural patterns.
- Performance Optimisation: Experience identifying bottlenecks, analysing thread contention, optimising database interactions, and improving application throughput and latency.
- Problem-Solving: Strong debugging, analytical, and technical troubleshooting skills.
Good-to-Have Skills:
- Experience with cloud platforms such as AWS, Azure, or GCP.
- Familiarity with Docker, Kubernetes, and CI/CD pipelines.
- Knowledge of observability tools, distributed tracing, logging, and monitoring.
- Experience with Redis or other distributed caching technologies.
- Understanding of design patterns, clean code principles, and microservices architecture.
- Experience working with high-throughput, low-latency enterprise applications.