Round 1 (Machine Coding)
Questions:
You have to design and implement a logger library that applications can use to log messages.
Client/application make use of your logger library to log messages to a sink.
Platform Capabilities:
Message
- has content which is of type string
- has a level associated with it
- has namespace associated with it to identify the part of application that sent the message
Sink - This is the destination for a message (e.g., text file, database, console, etc.)
- Sink is tied to one or more message level
Logger library - Requires configuration during sink setup
- Accepts messages from client(s)
- Routes messages to appropriate sink based on the level
- Supports following message level in the order of priority: FATAL, ERROR, WARN, INFO, DEBUG.
- Message levels with higher priority above a given message level should be logged.
- Ex: If INFO is configured as a message level, FATAL, ERROR, WARN and INFO should be logged.
- Enriches message with additional information (like timestamp) while directing message to a sink
- Should not impact the application flow.
Sending messages
- Sink need not be mentioned while sending a message to the logger library.
- A message level has a 1:1 mapping with sink.
- Client specifies message content, level and namespace while sending a message.
Logger configuration
- Specifies all the details required to use the logger library.
- One configuration per association of message level and sink.
- You may consider logger configuration as a key-value pair.
- Example:
- logging level
- sink type
- details required for sink (e.g., file location)
Bonus Capabilities:
- No information loss. Logger library should log all the messages before the client application shuts down.
- Log Level for the application can be updated dynamically.
Verdict: Hire
Candidate's Approach
No approach provided.
Interviewer's Feedback
No feedback provided.
Round 2 (DSA)
Questions:
Question 1
:
Given a list of locations, where each location is represented by a list of regions from specific to general (e.g., ["Bengaluru", "Bellandur", "Marathahalli"]), find the smallest area (region) that contains both Area1 and Area2.
Example:
Input:
Locations = [["Bengaluru", "Bellandur", "Marathahalli", "Kormangala"], ["Karnataka", "Bengaluru", "Mysuru"], ["Maharashtra", "Mumbai", "Pune"], ["India", "Karnataka", "Maharashtra"], ["Italy", "Rome", "Venice"], ["World", "India", "Italy"]]
Area1 = "Bengaluru"
Area2 = "Pune"
Output:
Smallest area containing Area1 and Area2: "India"
LCA problem :)
Question 2
:
Allen has a few classes, each with a certain number of students and a given pass ratio (number_of_students_passed / total_number_of_students_in_class). New students need to be admitted in a way that it maximizes the pass ratio for Allen.
Suggested an approach using priority_queue.
Verdict: Hire
Candidate's Approach
No approach provided.
Interviewer's Feedback
No feedback provided.
Round 3 (HLD+LLD)
Questions: Design AllenFit (very similar to cult.fit)
- Discussed data models in detail
- Discussed High Level Design, both Monolith and MicroService architecture
- Discussed API signatures
Verdict: No Hire
Candidate's Approach
No approach provided.
Interviewer's Feedback
No feedback provided.
Overall Verdict: No Hire
Microsoft Interview Experience
Flipkart Interview Experience
Linkedin Interview Experience
Groupon Interview Experience