To apply for this position, you are required to complete the technical assessment.
We do not review generic CV submissions without the accompanying technical test. This challenge is designed to showcase your ability to handle real-world backend scenarios involving concurrency, data integrity, and system design.
We are looking for an experienced Senior Backend Engineer to join our technical team. You will be responsible for designing, developing, and maintaining high-performance, reliable, and scalable backend systems. The ideal candidate possesses a deep understanding of concurrency, event-driven architecture, and strict data integrity.
- Design and build efficient backend microservices using Golang.
- Architect robust event-driven systems to handle high traffic loads.
- Design complex database schemas and ensure data integrity through proper transaction management.
- Conduct code reviews, write unit tests, and enforce code quality (Clean Code).
- Perform performance tuning on database queries and application logic.
- Minimum 4-5 years of professional experience in Backend Development.
- Expert level in Golang (Go). Deep understanding of Goroutines, Channels, Context, and memory management in Go.
- Strong grasp of Clean Architecture, SOLID principles, and Design Patterns.
- Hands-on experience using RabbitMQ (or similar technologies like Kafka/NATS) in a production environment.
- Understanding of Pub/Sub, Dead Letter Queues, Message Acknowledgment, and retry strategies to prevent data loss.
- Ability to design systems that handle race conditions in asynchronous message processing.
- Multi-Database Knowledge: Proficient in RDBMS (PostgreSQL/MySQL) and experienced with NoSQL (Redis/MongoDB/Cassandra). Knows exactly when to use SQL vs. NoSQL.
- Deep Understanding of Transactions:
- Strong knowledge of ACID concepts (Atomicity, Consistency, Isolation, Durability).
- Understanding of Isolation Levels (Read Committed, Repeatable Read, Serializable) and their impact on performance and data consistency.
- Experience handling Distributed Transactions (e.g., using Saga Pattern or Two-Phase Commit).
- Proficient in handling Database Locking (Optimistic vs. Pessimistic Locking) to prevent data conflicts.
- Experience with Docker and Kubernetes.
- Understanding of CI/CD pipelines (GitLab CI, GitHub Actions, or Jenkins).
- Familiar with monitoring tools (Prometheus, Grafana, ELK Stack).
Build a REST API in Golang for a "Flash Sale" Coupon System. The system must handle high concurrency, guarantee strict data consistency, and be easy to deploy via Docker.
IMPORTANT: We will use an automated script to test your submission. You must follow the API Specifications exactly as described below.
- Language: Golang.
- Database: MongoDB or SQL (PostgreSQL/MySQL).
- Infrastructure: Application must run via Docker / Docker Compose.
- Separation of Concerns: You must separate Coupon data and Claim history into two distinct Collections/Tables.
- No Embedding: You are not allowed to embed claim history inside the Coupon record.
- Uniqueness Rule (CRITICAL):
- A
user_idcan claim a specificcoupon_nameonly once. - However, the same
user_idcan claim other different coupons. - Hint: Ensure your database schema enforces uniqueness on the pair
(user_id, coupon_name)to prevent race conditions.
- A