NetApp Senior Engineer Interview Experience
Summary
I recently interviewed at NetApp for a Senior Engineer role, which involved a coding round focused on API interaction, a deep dive into past projects, and a system design problem involving a time-based two-tier storage structure.
Full Experience
Hi All,
Recently gave interview of NetApp.
First Round (filter): Interviewer discussed around the past experience and projects. Then gave a problem to solve ( can use local IDE or web). Need to fetch all users from the open endpoint https://gorest.co.in/ and see which all users have posted more than x number of posts. So Basically need to call 2 API endpoints and get the result.
Second Round : Completely on past project. Interviwere deep-dived on one of the project and wanted to understand my contribution.
Third Round: on DSA
Design a time-based two-tier storage structure that:
- Input: Accepts objects with (Key, Data) pairs to store.
- Storage:
- Buffer 1 (B1): Fixed-size Buffer of capacity N. New objects go here first.
- Buffer 2 (B2): Unlimited-size Buffer. Objects move here when their TTL expires.
- Time-to-Live (TTL): Each object has a TTL. When an object in B1 reaches its TTL:
- It is moved from B1 to B2.
- B1 must not exceed capacity N (decide behavior if full).
- Retrieval: Implement get(Key) that:
- Finds the key in either buffer.
- Returns the associated data (or null if not found).
- Should be efficient. - Should Reset the TTL when accessed
#NetApp #SSE_Interview
Interview Questions (2)
Fetch Users and Filter by Post Count from API
Fetch all users from the open endpoint https://gorest.co.in/ and determine which users have posted more than a given x number of posts. This problem requires calling multiple API endpoints and processing the results.
Design a Time-Based Two-Tier Storage System with TTL and Efficient Retrieval
Design a two-tier storage system with the following requirements:
- Input: Accepts objects with (Key, Data) pairs.
- Storage:
- Buffer 1 (B1): A fixed-size buffer with capacity N where new objects are initially stored.
- Buffer 2 (B2): An unlimited-size buffer where objects from B1 are moved once their Time-to-Live (TTL) expires.
- Time-to-Live (TTL): Each object has a TTL. When an object in B1 reaches its TTL, it must be moved to B2. The system must ensure B1 does not exceed its capacity N (and define behavior if full).
- Retrieval: Implement an efficient
get(Key)method that searches for the key in both buffers, returns the associated data (or null if not found), and resets the TTL of the object upon access.