Technical Topics To Review
Technical Topics To Review
Programming Languages
We do not require that you know any specific programming language before interviewing for a technical
position with Druva, but familiarity with a prominent language is generally a prerequisite for success. Not only
should you be familiar with the syntax of a language like C, C++, Python or JAVA you should be familiar with
some of the languages’ nuances, such as how memory management works, or the most commonly used
collections or libraries, etc.
Coding
Expect to be asked to write syntactically correct code—no pseudo code. If you feel a bit rusty coding without
an IDE or coding in a specific language, it’s probably a good idea to dust off the cobwebs and get comfortable
coding with a pen and paper. The most important thing a Software Development Engineer does at Druva is
write scalable, robust, and well tested code. These are the main criteria by which your code will be evaluated,
so make sure that you check for edge cases and validate that no bad input can slip through. A few missed
commas or typos here and there aren’t that big of a deal, but the goal is to write code that’s as close to
production ready as possible. Your ability to write multithreaded code is a must. To get yourself well
prepared you can read about mutex, condition variables, semaphores, etc…This is your chance to show off
your coding ability. Check your code is Modular, Maintainable, testable and Time Complexity.
Data Structures
Application of Right Data Structures. Ex: Trees, Binary Trees, Hash map, Set, Hash tables, Arrays, Linked Lists.
Uses and implementation of DS like link-list, queues, arrays, trees, binary trees, stacks, hash map etc.
BFS, DFS, maximum number of nodes at a level of binary trees.
Most of the work we do involves storing and providing access to data in efficient ways. This necessitates a very
strong background in data structures. You’ll be expected to understand the inner workings of common data
structures and be able to compare and contrast their usage in various applications. You will be expected to
know the runtimes for common operations as well as how they use memory. Wikipedia is a great resource for
brushing up on data structures.
Algorithms
Your interview with Druva will not be focused on rote memorization of algorithms; however, having a good
understanding of the most common algorithms will likely make solving some of the questions we ask a lot
easier. Consider reviewing traversals, divide and conquer, and any other common algorithms you feel might be
worth brushing up on. For example, it might be good to know how and when to use a breadth-first search
versus a depth-first search, and what the trade-offs are. Knowing the runtimes, theoretical limitations, and
basic implementation strategies of different classes of algorithms is more important than memorizing the
specific details of any given algorithm.
Databases
Most of the software that we write is backed by a data store, somewhere. Many of the challenges we face
arise when figuring out how to most efficiently retrieve or store data for future use. The more you know about
how relational and non-relational databases work and what trade-offs exist between them, the better
prepared you will be. However, we don’t assume any particular level of expertise.
Technical Topics to Review
Distributed Computing
Systems at Druva have to work under very strict tolerances at a high load. While we have some internal tools
that help us with scaling, it’s important to have an understanding of a few basic distributed computing
concepts. Having an understanding of topics such as service-oriented architectures, map-reduce, distributed
caching, load balancing, etc. could help you formulate answers to some of the more complicated distributed
architecture questions you might encounter.
Operating Systems
You won’t need to know how to build your own operating system from scratch, but you should be familiar with
some OS topics that can affect code performance, such as: memory management, processes, threads,
synchronization, paging, and multithreading.
Interview Tips
• Be prepared to discuss technologies listed on your resume. For example, if you list Java or Python as
technical competencies, you should expect technical question about your experience with these
technologies. It’s also helpful to review the job description before your interview to align your
qualifications against the job’s specific requirements and responsibilities.
• Please ask questions if you need clarification. We want the interview process to be collaborative. We also
want to learn what it would be like to work with you on a day-to-day basis in our open environment. If you
are asked a question, but not given enough information to solve the problem, drill down to get the
information that you need. If that information isn’t available, focus on how you would attempt to solve
the problem given the limited information you have. Often at Druva, we have to make quick decisions in
the absence of all of the relevant data. .
• When answering questions, be as concise and detailed in your response as possible. We realize it’s hard to
gauge how much information is too much versus not sufficient enough; an effective litmus test is pausing
after your succinct response to ask if you’ve provided enough detail, or if the interviewer would like you to
go into more depth.
• We want to hire smart, passionate people. Please reflect on what motivated you to pursue a career with
Druva and be prepared to speak to it. Although “Why Druva?” is a standard type of question, it’s not a
check-the-box type of formality for us. We genuinely want to understand what inspired you to explore an
opportunity with us, so we get a better sense of who you are. It’s also appreciated when a candidate has
put thought into a few questions for the interviewer. It goes a long way when you’ve taken the initiative to
research the company prior to your interview.
Recommended Links:
1. Data structure and algo: Use coding platform such as:
1. Leetcode: https://leetcode.com/
2. Geeksforgeeks: https://www.geeksforgeeks.org/
3. Hackerrank: https://www.hackerrank.com/
2. High-Level Design (System Design):
Github Repo: https://github.com/donnemartin/system-design-primer