Flipkart is a leading Indian e-commerce company founded in October 2007 by Sachin Bansal and Binny Bansal, both IIT Delhi alumni and former Amazon employees. Headquartered in Bengaluru, India, and initially incorporated in Singapore (shifted to India in 2025), Flipkart started as an online bookstore but expanded to offer over 80 million products across 80+ categories, including electronics, fashion, home essentials, groceries, and lifestyle products. It competes primarily with Amazon India and Snapdeal, holding a 48% market share in the Indian e-commerce industry as of FY23.
Flipkart's recruitment process for Software Development Engineer (SDE) roles is structured to assess candidates' technical skills, problem-solving abilities, and cultural fit. Here's a comprehensive overview:
The hiring process typically comprises four main stages:
Online Coding Assessment
Platform: Usually conducted on HackerRank.
Duration: 90–120 minutes.
Questions: 2–3 programming problems focusing on data structures and algorithms.
Topics: Arrays, Linked Lists, Trees, Graphs, Recursion, Dynamic Programming, and String Manipulation.
Technical Interview 1
Format: Live coding session.
Focus: Algorithmic problem-solving, code optimization, and understanding of time and space complexity.
Skills Assessed: Proficiency in data structures, algorithms, and coding best practices.
Technical Interview 2
Format: Discussion-based interview.
Focus: System design principles, object-oriented programming concepts, and low-level design problems.
Skills Assessed: Ability to design scalable systems, understanding of OOPs, DBMS, and operating systems.
Hiring Manager Round
Format: Behavioral and technical discussion.
Focus: Assessment of cultural fit, communication skills, and alignment with Flipkart's mission and values.
Topics: Past projects, career aspirations, situational judgment, and leadership capabilities.
Education: Bachelor's or Master's degree in Computer Science or related fields (B.Tech, B.E, M.Tech, M.E, MCA).
Academic Performance: Minimum of 60% or 6.5 CGPA in 10th, 12th, and graduation.
Backlogs: No active backlogs at the time of the interview.
Experience: 0–2 years for SDE-1 roles.
Flipkart primarily recruits for the following positions:
Software Development Engineer (SDE)
Backend Developer
Frontend Developer
Full Stack Developer
Candidates are expected to have strong programming and analytical skills, with proficiency in languages like Java, Python, or C++.
Fixed Pay: ₹18,00,000 per annum.
Performance Bonus: ₹1,80,000 per annum.
ESOPs: Approximately ₹1,27,000 annually (25% vested each year).
Relocation & Joining Benefits: ₹40,000 for relocation reimbursement and ₹40,000 for travel and accommodation.
Total CTC: Approximately ₹21–₹22 LPA.
Data Structures & Algorithms: Focus on mastering arrays, linked lists, trees, graphs, dynamic programming, and recursion.
System Design: Understand low-level design principles and object-oriented programming concepts.
Mock Interviews: Practice with peers or mentors to simulate interview scenarios.
Project Discussion: Be prepared to discuss your academic or internship projects in detail.
Behavioral Questions: Reflect on past experiences to answer situational and behavioral questions effectively.
To reverse a linked list, use an iterative or recursive approach.
Iterative Method:
Initialize three pointers: prev
(null), current
(head), and next
(null).
Traverse the list, updating next
to current.next
, then reverse the link by setting current.next
to prev
.
Move prev
and current
forward. Repeat until current
is null. The new head is prev
.
Time Complexity: O(n), Space: O(1).
Recursive Method:
Base case: If the node is null or the last node, return it as the new head.
Recursively reverse the rest. Set current.next.next
to current
, and current.next
to null.
Time Complexity: O(n), Space: O(n) (stack).
Use the two-pointer (Tortoise and Hare) approach:
Initialize slow
and fast
pointers at the head.
Move slow
by 1 node and fast
by 2 nodes in each iteration.
When fast
reaches the end, slow
points to the middle.
Edge Cases:
Even nodes: Return the first or second middle based on requirements.
Time Complexity: O(n), Space: O(1).
Example: In 1 -> 2 -> 3 -> 4 -> 5
, slow
stops at 3.
Use two stacks (s1
and s2
):
Enqueue: Push elements to s1
. Time: O(1).
Dequeue:
If s2
is empty, transfer all elements from s1
to s2
(reversing order).
Pop from s2
. Amortized Time: O(1) per operation.
Example:
Enqueue 1, 2, 3: s1
= [1, 2, 3].
Dequeue: Transfer to s2
= [3, 2, 1], pop 1.
This approach ensures FIFO order efficiently.
Use a stack to track opening brackets:
Traverse the string. For (, {, [
, push to stack.
For closing brackets, check if the stack is empty (unbalanced) or if the top matches.
After traversal, the stack must be empty.
Example: {[()]}
is balanced. {[}]
is not.
Edge Cases:
Empty string: Balanced.
Extra closing brackets: Unbalanced.
Time: O(n), Space: O(n).
Use expand around center approach:
For each character, expand left and right to find the longest odd-length palindrome.
Repeat for even-length (centered between two characters).
Track the maximum length and its start index.
Example: For "babad", the longest is "aba" or "bab".
Time: O(n²), Space: O(1).
Alternative: Dynamic Programming (table for substring validity) but uses O(n²) space.
Components:
Short URL Generation: Use hash functions (e.g., MD5) or Base62 encoding of a unique ID.
Database: Store mappings (shortURL, longURL, expiry).
Redirection: HTTP 301/302 redirects.
Optimizations:
Caching: Use Redis for frequent requests.
Scalability: Database sharding, load balancers.
Collision Handling: Retry on hash collision.
Example: TinyURL uses Base62 encoding for 7-character short URLs.
Key Services:
User Service: Authentication, profiles.
Product Service: Catalog, search (Elasticsearch).
Order Service: Transactions, inventory updates.
Payment Gateway Integration: Idempotent API for payments.
Scalability:
Microservices: Isolate failures.
Database: Sharding (by user/product), read replicas.
Caching: Redis for product details.
Async Processing: Queues (Kafka) for order processing.
High Traffic: CDN for images, auto-scaling, rate limiting.
Indexes (e.g., B+ trees) speed up queries by reducing disk I/O.
Clustered Index: Determines data storage order (e.g., primary key).
Non-Clustered Index: Separate structure with pointers to data.
Trade-offs:
Faster reads vs slower writes (index updates).
Use for columns in WHERE, JOIN, ORDER BY.
Example: Index on users.email
speeds up login queries.
Orders
into Orders
and Customers
to avoid repeating customer data. Atomicity: Transactions are all-or-nothing.
Consistency: Valid state transitions (e.g., no negative balance).
Isolation: Concurrent transactions don’t interfere (via locks/MVCC).
Durability: Committed data survives crashes.
Example: Bank transfers require ACID to prevent errors.
Deadlock: Processes hold resources and wait cyclically.
Conditions: Mutual exclusion, hold and wait, no preemption, circular wait.
Prevention:
Resource ordering: Acquire resources in fixed order.
Timeouts: Release resources after a period.
Deadlock detection: Periodically check for cycles.
Animal.speak() for Dog/Cat)
.Payment.process()
handles credit cards, UPI differently. Stateless: No client context stored.
HTTP Methods: GET (read), POST (create), PUT (update), DELETE.
Status Codes: 200 (OK), 201 (Created), 404 (Not Found).
Best Practices: Versioning (/api/v1
), HATEOAS, pagination.
Horizontal Scaling: Add more servers.
Caching: CDN for static content, Redis for DB queries.
Database: Read replicas, sharding.
Async: Queues for non-critical tasks (e.g., emails).
Algorithms:
Round Robin: Distribute requests sequentially.
Least Connections: Send to least busy server.
Tools: AWS ALB, NGINX.
Benefits: Redundancy, improved uptime, scalability.
HTTPS: Encrypt data in transit.
OAuth2/JWT: Token-based authentication.
Rate Limiting: Prevent abuse.
Input Validation: Sanitize user inputs.