Druva Interview Questions | Online Test And Telephonic Interview

Druva Interview Questions | Online Test And Telephonic Interview

I got a text in my LinkedIn message box from Druva. They have a job opening and find my profile suitable for their job recruitment. Here is I am sharing my Druva Interview questions and experience with the online test.

Quick Tips for Linkedin User:

Many people think LinkedIn is a job searching portal. But it is also a portal for recruiters who are seeking talent. Being a candidate, whether you are searching for a job or not, always keep your LinkedIn profile neat and clean. Keep adding new skills that you learn. You will never know how big an opportunity is coming in your way even if you are not looking for.

If you are actively looking for the job, follow the effective job searching techniques. Otherwise, you will just end up wasting your time and without any job opportunities.

I got a message from the Druva recruiter on Linkedin, I sent them my contact detail. After having a discussion, they asked me for a CV.

I got my CV shortlisted. We finalized a schedule for an online test. Here is my experience of online tests.

Druva Online Test Pattern

In an email, they had explicitly mentioned the topics that were going to be asked in the online test.

Druva Interview Questions and online test topics

So here is… What are the topics you should prepare for the Druva Online Test?

Druva Software Online Test Questions

There were subjective as well as objective questions in the online test.

In the end, there was one programming question to write a code for. We can choose any of the C / C++ or Python Language. I wrote code in Python.

There is no strict timing for online tests. But they expect to complete in 1-1/2 to 2 hours. We can take even more time if it is necessary. Priority is to answer questions correctly as many as you can.

The following are the sections covered in Druva online test.

Section:

  • Background Information (5 questions)
  • Computer Science Concepts (5 questions)
  • Data Structure and Algorithm (5 questions)
  • Threads and Synchronization (3 questions)
  • Analyze a program (2 questions)
  • One programming question

I must say, solve the programming question correctly. If you make it, you have more chances. So it is very important. You can write code in any language as you are good at.

For me, in online text, they ask me to write code to find “Out of Date Software”.  You can find the complete program for Out of Date Software.

After a couple of days, I got an email from Druva as I got a shortlisted for interview. They asked me for a telephonic interview.

Here are the Druva placement interview questions I faced in a telephonic interview.

Round 1: Druva Interview Questions

After giving the online test, I was asked for a technical interview.

I was giving a telephonic interview for the first time. I thought it may be verbal questions and answers discussion. But it was purely a coding test.

They shared the Google Sheet with me. Interviewer and I, both had access to this sheet. Whatever I write there, it is visible to an interviewer and vice-versa.

Druva Telephonic Interview

There was only one interviewer.

They shared one Google sheet with me. So whatever they will write, or I will write, it is visible to both of us.

The interview had started with an introduction as usual.  You can refer to what are the questions usually asked in the interview.

Then he asked me a couple of questions on academic and current work.

After that, he straight comes to the coding part.

Before writing any code, I just asked him, what is the preferred language for writing code? He told me to write in any language.

Coding Questions

Some of the programs as I remember as follows.

  • Question: You have given string s1, s2, and s3. Write a program to replace the occurrence of an s2 string in s1 with s3 string.
  • Question: Write a program to reverse the linked list.

Programming Question

Question 1: You are alumina of college. And your college authority wants your help. They have a list of 2000 students’ names in a file, and they want to search the name of the student from the list of students stored in the file. Is it possible to search the name of the student in constant time?

I said “Yes, it is possible”.

So he asked me how.

Here is my answer.

Answer:

If you apply any of the search algorithms, it will take at least log(n) time.

So there is another way to do that, using hashing.

We will find the hash for each of the student names, and we will keep the hash value and name in the hash table.

When we do search operation, first we will find the hash of the search term and will match it with the hash value in the hash table.

If that matches, we can return the name of the student from the hash table.

But there is a challenge to do hashing. We need to define hashing function which will return the hash value unique for each student name.

He was satisfied with an answer and moved to the next one.

Question 2: You have given file which contents students result. The data in the file is as follows.

Expected Output:
23, English, 54
34, Match, 44
23, English, 46

Write a program to find the average mark of each subject for the student who has the lowest id?

Answer:

Rather than writing code, he asked me to explain how to do this.

It’s pretty simple. I explained to him everything.

We will find all the tuples for students having the lowest ID. Then we will calculate the average for each subject.

He points out by saying “it will take two iterations first to find the tuples with the lowest ID and the next iteration is to calculate the average for each subject”.

He asked me “is it possible to do it in a single iteration?”

Yes! It is possible.

We will traverse the tuples, and if it is the lowest ID, we will calculate the average mark. And we will store it in the main memory.

Following will be the scenarios,

Step 1: Every time read the next id. If we get the higher id, we will skip that. For lower id, we will reset all previously calculated data and start considering this as the lowest id. If we get the same id, we will manipulate and update the main memory data.

Step 2: We will traverse to the end of the file. In the end, we will get the average mark of each subject for students having the lowest id.

I thought this was the only interview and I was confident to crack it. After a couple of days, again I got a call from Druva HR. She told me as there is one more online interview.

After that, I had another interview.

Round 2: Dhruva Finance Private Limited Interview Questions

Question: Details about current work.

Question 1: Three threads are running in parallel. Each thread prints some data.
T1, T2, andT3 are running threads. Each print “One”, “Two” and “Three” respectively.

Expected Output:
One Two Three
One Two Three

I was unable to write code for it as I have not used the thread for a long time.

I told the interviewer conceptually how it is possible. But he was not happy.

Question 2: There are 10 Million integers in File. The size of an integer is 4 Bytes. Write a program to sort it but with a memory limitation of 4 MB. Let’s say X integers can be fit into memory at any time.

Instead of writing code, he asked me to write the algorithm and to explain it.

Solution: Here we can use the divide and conquer technique [step-by-step].

  • Read the file and store the X integers values in memory. Sort the values stored in memory. And write back it to the file.
  • Take another chunk of the next X integers from the file. Repeat step 1 until all the elements in the file get sorted.
  • Conquer all the sorted chunks.

Question 3: What are the Mutable and Non-Mutable data types in Python?

Solution: You can read detail about the difference between mutable and immutable data types in Python.

Check some tricky Python questions asked in interview.

Some Tips to Crack Druva Interview

  • If you are looking for a job change, you should have a valid reason why do you want to switch. In an interview, they will ask you.
  • Even though they ask for a telephonic interview, most probably they will ask you to write code on the Google sheet shared with you. I did a mistake as I was thinking of a telephonic verbal interview.

Here are other Druva Interview Questions and experiences shared by another candidate.

Online Coding Question

Problem statement for the coding round:

You are supposed to distribute M candies in K kid. 1st kid gets 1 candy, 2nd gets 2 and Kth gets K candies if the candies are not finished 1st kid gets K+1 candies 2nd gets K+2 and so on till the candies are finished

for M=11 K=3
{5,3,3}

for M=7 K=4
{1,2,3,1}

Interview Questions:

  • How to implement a bitset class?
  • How to implement a linked list?
  • Write a program to remove a node from the linked list.
  • How to implement < operator for a class with 3 members in it?

This is all about Druva interview questions and my experience. Hope you find it useful.

Thanks, Guy! All the best if you are appearing for Druva placement!


Editor’s Note: This experience is shared by Candidate and we wish him a very bright future ahead. If anyone wants to share their experience, you can write here.

9 Comments

  1. I want more detail in google sheet interview – Round 1(Telephonic).
    Please share your email id.

    My email id: neerajkv.130012@gmail(dot)com

    1. Hi Niraj,

      It depends on the individual, interviewer and job profile for which you are applying. So it will never be the same. I would suggest you preparing programming languages and subject you have mentioned in your resume.

  2. Hi Aniruddha,

    I also received an online test today and I am more comfortable in java than C/C++/Python. I have worked in python a while back though. Can i submit the programming question in java

    Thanks

  3. #include 
    #include 
    #include 
    #include 
    
    typedef enum SoftwateType {
            DATABASE,
            OS,
            LANGUAGE,
    } SoftwateType;
    
    typedef struct Server {
            SoftwateType soft_type;
    
            char server_name[128];
            char software_name[128];
            char software_version[128];
    
            struct Server *next;
    } server;
    
    typedef struct ServerHead {
            server *head;
            server *tail;
    
            int count;
    } server_head;
    
    int compare_num(int m, int n) {
    
            if (m > n)
                    return 1;
            else if (m < n)
                    return -1;
    
            return 0;
    }
    
    int parse_version(char *s, int *v11, int *v12, int *v13) {
            char *token;
            int r, i;
    
            if (!s)
                    return -1;
    
            i = 0;
            token = strtok(s, ".");
            while (token) {
                    r = atoi(token);
    
                    switch(i) {
                    case 0:
                            *v11 = r;
                            break;
                    case 1:
                            *v12 = r;
                            break;
    
                    case 2:
                            *v13 = r;
                            break;
                    }
    
                    i++;
                    token = strtok(NULL, ".");
            }
    
            return 0;
    }
    
    int compare_version(char *a, char *b) {
            int v11, v12, v13;
            int v21, v22, v23;
            int r, i;
    
            if (!a && !b)
                    return 0;
    
            if (!a)
                    return 1;
            else if (!b)
                    return -1;
    
            r = parse_version(a, &v11, &v12, &v13);
            if (r < 0)
                    return -1;
    
            r = parse_version(b, &v21, &v22, &v23);
            if (r head;
            while(p) {
                    if (!q) {
                            q = p;
                    } else {
                            if (compare_version(q->software_version, p->software_version) > 0)
                                    q = p;
                    }
                    p = p->next;
            }
    
            printf("%s\n", q->server_name);
    }
    
    /*
      Server1, Database, MySQL, 5.5
      Server2, Database, MySQL, 5.1
      Server3, OS, Ubuntu, 10.04
      Server1, OS, Ubuntu, 12.04
      Server2, OS, Ubuntu, 12.04
      Server4, OS, Ubuntu, 9.01
      Server3, Language, Python, 2.6.3
    */
    
    int main() {
            ServerHead language_head = {};
            ServerHead db_head = {};
            ServerHead os_head = {};
            char buf[1024] = {};
            Server *s = NULL;
            char *token;
            int i = 0;
            FILE* fp;
    
            fp = fopen("/home/sus/tmp/ser_info.txt", "r");
            if (!fp)
                    return -1;
    
            while (fgets(buf, sizeof(buf), fp) != NULL) {
                    buf[strlen(buf) - 1] = '\0';
    
    
                    s = calloc(1, sizeof(server));
                    if (!s)
                            return -1;
    
                    i = 0;
                    token = strtok(buf, ",");
                    if (!token)
                            continue;
    
                    while (token) {
    
                            while (isspace(*token))
                                    token++;
    
                            switch (i) {
                            case 0:
                                    strcpy(s->server_name, token);
                                    break;
                            case 1:
                                    if (!strcmp("Database", token)) {
                                            s->soft_type = DATABASE;
    
                                            if (!db_head.head) {
                                                    db_head.head = s;
                                                    db_head.tail = s;
                                            } else {
                                                    db_head.tail->next = s;
                                                    db_head.tail = s;
                                            }
    
                                            db_head.count++;
    
                                    } else if (!strcmp("OS", token)) {
                                            s->soft_type = OS;
    
                                            if (!os_head.head) {
                                                    os_head.head = s;
                                                    os_head.tail = s;
                                            } else {
                                                    os_head.tail->next = s;
                                                    os_head.tail = s;
                                            }
    
                                            os_head.count++;
    
                                    } else if (!strcmp("Language", token)) {
                                            s->soft_type = LANGUAGE;
    
                                            if (!language_head.head) {
                                                    language_head.head = s;
                                                    language_head.tail = s;
                                            } else {
                                                    language_head.tail->next = s;
                                                    language_head.tail = s;
                                            }
    
                                            language_head.count++;
                                    }
                                    break;
                            case 2:
                                    strcpy(s->software_name, token);
                                    break;
                            case 3:
                                    strcpy(s->software_version, token);
                                    break;
                            default:
                                    break;
                            }
    
                            i++;
    
                            token = strtok(NULL, ",");
                     }
            }
    
            fclose(fp);
    
            if (db_head.count > 1)
                    print_list(&db_head);
    
            if (os_head.count > 1)
                    print_list(&os_head);
    
            if (language_head.count > 1)
                    print_list(&language_head);
    
            return 0;
    }

Leave a Reply

Your email address will not be published. Required fields are marked *