Nutanix MTS
Summary
I interviewed for the MTS role at Nutanix, which involved two technical rounds. Both rounds, focusing on a command-line archive utility and graph problems, went well and I received positive feedback, though the position is currently on hold.
Full Experience
Round 1: Command-Line Archive Utility Objective: Build an archive utility (like a basic tar) with the following features — without using any existing archive/compression libraries.
Requirements:
Archive a Folder: Recursively create an archive from a folder while preserving the directory structure. ./archive-tool create ./my-folder archive1
Extract an Archive: Reconstruct the original folder structure. ./archive-tool extract archive1 ./restored-folder
List Archive Contents: Show all file paths in the archive. ./archive-tool list archive1
Extract a Specific File: ./archive-tool extract-file archive1 file.txt ./restored-folder
Verbose Mode: Add --verbose for detailed logs during operations.
Constraints:
No usage of tools like zipfile, zlib, java.util.zip, etc.
Only use standard libraries.
Handle errors gracefully (e.g., invalid paths, corrupt archives).
This round was focused on file system traversal, binary file creation/reading, and designing your own archive format.
Round 2: Graph Construction + Longest Chain & Cycle Given several user-defined functions like: def a(): b(), c() def b(): ... def c(): ... Tasks:
Build an adjacency list from the function call dependencies. Example: a → [b, c]
Find the Longest Chain: Longest path from any function to the deepest nested call (like DFS longest path).
Find the Longest Cycle: If there's a cycle, return the longest one.
Focus was on parsing, graph building, DFS, and cycle detection.
Outcome: Both rounds went well and I received positive feedback. The recruiter later informed me that the position is currently on hold.
Interview Questions (2)
Objective: Build an archive utility (like a basic tar) with the following features — without using any existing archive/compression libraries.
Requirements:
Archive a Folder: Recursively create an archive from a folder while preserving the directory structure. ./archive-tool create ./my-folder archive1
Extract an Archive: Reconstruct the original folder structure. ./archive-tool extract archive1 ./restored-folder
List Archive Contents: Show all file paths in the archive. ./archive-tool list archive1
Extract a Specific File: ./archive-tool extract-file archive1 file.txt ./restored-folder
Verbose Mode: Add --verbose for detailed logs during operations.
Constraints:
No usage of tools like zipfile, zlib, java.util.zip, etc.
Only use standard libraries.
Handle errors gracefully (e.g., invalid paths, corrupt archives).
This round was focused on file system traversal, binary file creation/reading, and designing your own archive format.
Given several user-defined functions like: def a(): b(), c() def b(): ... def c(): ... Tasks:
Build an adjacency list from the function call dependencies. Example: a → [b, c]
Find the Longest Chain: Longest path from any function to the deepest nested call (like DFS longest path).
Find the Longest Cycle: If there's a cycle, return the longest one.
Focus was on parsing, graph building, DFS, and cycle detection.