zoho Interview Questions
ROUND 1: WRITTEN
APTITUDE(1 hr and 20 minutes-20 questions): Problems on average, probability, time & distance, alligation&mixture,ratio, HCF & LCM and few a puzzles.
TECHNICAL(45 minutes-10 questions): Output for C questions. Practice questions in geekquiz.com and C output questions in geeksforgeeks.org. Questions in pointers, strings, matrix etc.
Nearly 60 students were selected out of 600 candidates. They didn’t select the top 60. They had a cutoff and those who cleared the cutoff were called for the next round
ROUND 2: SIMPLE CODING(3 hours)
1. Write a program to give the following output for the given input
Eg 1: Input: a1b10 Output: abbbbbbbbbb Eg: 2: Input: b3c6d15 Output: bbbccccccddddddddddddddd The number varies from 1 to 99.
2. Write a program to sort the elements in odd positions in descending order and elements in ascending order
Eg 1: Input: 13,2 4,15,12,10,5 Output: 13,2,12,10,5,15,4 Eg 2: Input: 1,2,3,4,5,6,7,8,9 Output: 9,2,7,4,5,6,3,8,1
3. Write a program to print the following output for the given input. You can assume the string is of odd length
Eg 1: Input: 12345 Output: 1 5 2 4 3 2 4 1 5 Eg 2: Input: geeksforgeeks Output: g s e k e e k e s g f r o f r s g k e e e e k g s
4. Find if a String2 is substring of String1. If it is, return the index of the first occurrence. else return -1.
Eg 1:Input: String 1: test123string String 2: 123 Output: 4 Eg 2: Input: String 1: testing12 String 2: 1234 Output: -1
5. Given two sorted arrays, merge them such that the elements are not repeated
Eg 1: Input: Array 1: 2,4,5,6,7,9,10,13 Array 2: 2,3,4,5,6,7,8,9,11,15 Output: Merged array: 2,3,4,5,6,7,8,9,10,11,13,15
6. Using Recursion reverse the string such as
Eg 1: Input: one two three Output: three two one Eg 2: Input: I love india Output: india love I
ROUND 3: COMPLEX CODING(3 hours)
1) Design a Call taxi booking application
-There are n number of taxi’s. For simplicity, assume 4. But it should work for any number of taxi’s.
-The are 6 points(A,B,C,D,E,F)
-All the points are in a straight line, and each point is 15kms away from the adjacent points.
-It takes 60 mins to travel from one point to another
-Each taxi charges Rs.100 minimum for the first 5 kilometers and Rs.10 for the subsequent kilometers.
-For simplicity, time can be entered as absolute time. Eg: 9hrs, 15hrs etc.
-All taxi’s are initially stationed at A.
-When a customer books a Taxi, a free taxi at that point is allocated
-If no free taxi is available at that point, a free taxi at the nearest point is allocated.
-If two taxi’s are free at the same point, one with lower earning is allocated
-Note that the taxi only charges the customer from the pickup point to the drop point. Not the distance it travels from an adjacent point to pickup the customer.
-If no taxi is free at that time, booking is rejected
-There are n number of taxi’s. For simplicity, assume 4. But it should work for any number of taxi’s.
-The are 6 points(A,B,C,D,E,F)
-All the points are in a straight line, and each point is 15kms away from the adjacent points.
-It takes 60 mins to travel from one point to another
-Each taxi charges Rs.100 minimum for the first 5 kilometers and Rs.10 for the subsequent kilometers.
-For simplicity, time can be entered as absolute time. Eg: 9hrs, 15hrs etc.
-All taxi’s are initially stationed at A.
-When a customer books a Taxi, a free taxi at that point is allocated
-If no free taxi is available at that point, a free taxi at the nearest point is allocated.
-If two taxi’s are free at the same point, one with lower earning is allocated
-Note that the taxi only charges the customer from the pickup point to the drop point. Not the distance it travels from an adjacent point to pickup the customer.
-If no taxi is free at that time, booking is rejected
Design modules for
1) Call taxi booking Input 1: Customer ID: 1 Pickup Point: A Drop Point: B Pickup Time: 9 Output 1: Taxi can be allotted. Taxi-1 is allotted Input 2: Customer ID: 2 Pickup Point: B Drop Point: D Pickup Time: 9 Output 1: Taxi can be allotted. Taxi-2 is allotted
(Note: Since Taxi-1 would have completed its journey when second booking is done, so Taxi-2 from nearest point A which is free is allocated)
Input 3: Customer ID: 3 Pickup Point: B Drop Point: C Pickup Time: 12 Output 1: Taxi can be allotted. Taxi-1 is allotted
2) Display the Taxi details
Taxi No: Total Earnings: BookingID CustomerID From To PickupTime DropTime Amount Output: Taxi-1 Total Earnings: Rs. 400 1 1 A B 9 10 200 3 3 B C 12 13 200 Taxi-2 Total Earnings: Rs. 350 2 2 B D 9 11 350
These were just sample inputs. It should work for any input that they give.
Those who finished both the modules within 3 hours and if it worked for all the inputs they give, those candidates were given extra modules to work with.
Those who finished both the modules within 3 hours and if it worked for all the inputs they give, those candidates were given extra modules to work with.
ROUND 4 : FIRST FACE-TO-FACE(TECHNICAL)
Questions were on project, c, oops concepts, DBMS and a few puzzles. They might ask you more on new scenarios relating to your project.ROUND 5: SECOND FACE-TO-FACE(TECHNICAL)
Question were on c, c++, java(like threads, synchronization etc.), Discussion about questions from first, second and third round. He even asked me to solve a few questions from the first round. He gave me a few puzzles to solveROUND 6: FIRST GENERAL HR
General questions about my pros and cons and discussion on my resume(be thorough with your resume). She finally asked me if I had any queries.ROUND 7: SECOND GENERAL HR
She asked me some family details and gave some scenarios and asked me to what I will do in such situations(like if I am given the power to change 3 things in india, what all will I change) and a few general questions.ANSWER;
ROUND 2;
1)
#include<stdio.h>
#include<string.h>
int main()
{
char a[100],t;
int i,j,x,f;
printf("Enter the string:");
scanf("%s",&a);
for(i=0;i<strlen(a);i=i+2)
{
t=a[i];
if((a[i+2]-48)>=0 && (a[i+2]-48)<=9)
{
int x;
x=((a[i+1]-48)*10)+(a[i+2]-48);
for(f=0;f<x;f++)
{
printf("%c",t);
}
i++;
}
else
{
for(j=0;j<a[i+1]-48;j++)
{
printf("%c",t);
}
}
}
return 0;
}
5)
#include<conio.h>
#include<string.h>
void main()
{
int a[100];
int i,j,s,temp;
clrscr();
printf("Enter the size of array:");
scanf("%d",&s);
for(i=0;i<s;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<s;i+=2)
{
for(j=i+2;j<s;j+=2)
{
if(a[i]<a[j])
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}
for(i=1;i<s;i+=2)
{
for(j=i+2;j<s;j+=2)
{
if(a[i]>a[j])
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}
printf("array");
for(i=0;i<s;i++)
{
printf(" \t%d",a[i]);
}
getch();
}
3)
#include<stdio.h>
#include<conio.h>
#include<string.h>
void main()
{
int i,j,l;
char a[100];
scanf("%s",&a);
l=strlen(a);
for(i=0;i<l;i++)
{
for(j=0;j<l;j++)
{
if(i==j)
{
printf("%c",a[i]);
}
else if(i+j==l-1 && i!=j)
{
printf("%c",a[i]);
}
else
{
printf(" ");
}
}
printf("\n");
}
getch();
}
6)
#include<stdio.h>
#include<conio.h>
#include<string.h>
void main()
{
char a[1000];
int i,j,count=0;
clrscr();
gets(a);
for(i=strlen(a)-1;i>=0;i--)
{
count=count+1;
if(a[i]==' '|| i==0)
{
for(j=i;j<=i+count;j++)
{
printf("%c",a[j]);
}
count=0;
}
}
getch();
}
Round 3
#include<stdio.h>
#include<conio.h>
#include<math.h>
#define pf printf
#define c() clrscr()
int check2(char,int);
int check_picpnt(char,int);
int booking();
void details();
int static id;
char dist[6]={'A','B','C','D','E','F'}; /* pick up points */
struct taxi{
int index; /*for each customer*/
char pic_pnt[10];
char drp_pnt[10],cur_pos; /* struct variables */
int str_time[10],cust_id[10],end_time[10];
int wage[10],t_wage;
}t[5];
void main() /* main function */
{
c();
for(int i=0;i<5;i++)
{ /* initial position allot */
t[i].cur_pos='A';
}
menu:
pf("\t\t\t\tWELCOME TO TAXI BOOKING");
pf("\n\n\n\n\n\t\t MENU"); /* front page */
pf("\n\n\n\t\t\t1.TAXI BOOKING");
pf("\n\t\t\t2.DETAILS\n");
pf("\t\t\t3.EXIT\n");
int opt;
pf("\n\n\t\t\tEnter your option:");
scanf("%d",&opt);
switch(opt)
{
case 1:
booking(); /* calling respective functions */
c();
goto menu;
case 2:
details();
getch();
c();
goto menu;
case 3:
break;
default:
pf("Wrong option!!!");
getch();
c();
goto menu;
}
getch();
}
int booking()
{ /*booking function,second page*/
c();
char p_pnt,d_pnt;
int tme,wag,taxi=0;
pf("\t\t\tbooking menu");
pf("\n\ncustomer_id %d",++id);
pf("\n\npickup_pnt:");
getchar();
scanf("%c",&p_pnt); /* getting booking details from user using temp variables */
pf("\ndrop_pnt:");
getchar();
scanf("%c",&d_pnt);
pf("\ntime:");
getchar();
scanf("%d",&tme);
taxi=check_picpnt(p_pnt,tme); /* checking taxi availability by calling function */
if(taxi!=777)
{
int x=t[taxi].index;
pf("\n\ntaxi %d is alloted",taxi+1); /* Assigning details to struct variables if function return respective taxis */
pf("\n\nthank for booking"); /* display alloted taxi number */
int cost=((abs(p_pnt-d_pnt)*15)-5)*10+100; /* calculating cost based on distance*/
t[taxi].pic_pnt[x]=p_pnt;
t[taxi].drp_pnt[x]=d_pnt;
t[taxi].cust_id[x]=id;
t[taxi].wage[x]=cost;
t[taxi].cur_pos=d_pnt;
t[taxi].t_wage=t[taxi].t_wage+cost;
t[taxi].end_time[x]=abs(p_pnt-d_pnt)+tme; /*calculating taxi free time */
t[taxi].str_time[x]=tme;
t[taxi].index++; /*increasing for each customer*/
}
else
{pf("\n\nOOPs failed");} /* taxi is not available*/
getch();
return 0;
}
int check_picpnt(char pic_pnt,int p_tme) /*function to check the pick point*/
{
int flag=0,min=10000,min_ind,get; /* set the value for min*/
for(int i=0;i<5;i++)
{
if(pic_pnt==t[i].cur_pos) /*check the pickpoint of the customer with the current position of the taxi*/
{
if(t[i].end_time[(t[i].index-1)]<=p_tme) /* check the previously allocated time of the customer with the current customer*/
{
if(t[i].t_wage<min) /* calculate the minimium wage who earned that day */
{
min=t[i].t_wage;
min_ind=i;/* assigning the minimum index*/
flag=1;
}
}
}
}
if(flag==1)
{return (min_ind);} /*returning the respective taxi index to the booking function */
if(flag==0) /*if the taxi is not in that current position*/
{
for(int j=0;j<6;j++) /*getting the index of the pick point */
{
if(pic_pnt==dist[j])
{get=j;
}
}
int k,m,m1,indx,indx1;
for(j=get-1,k=get+1;j>=0||k<=6;j--,k++) /* checking both the sides of the pickpoint if the taxi is available or not*/
{
if(j>=0)
{
indx=check2(dist[j],p_tme);/* passing the neighbour value and pick up time */
if(indx!=-1)
m=t[indx].t_wage; /* storing the minimum wage in that current point */
else
m=10000;
}
if(k<=6)
{
indx1=check2(dist[k],p_tme); /* passing the neighbour value and pick up time */
if(indx1!=-1)
m1=t[indx1].t_wage; /* storing the minimum wage in that current point */
else
m1=10000;
}
if(m1!=10000||m!=10000) /* if both wages of taxi is same then return the lowest index of taxi */
{
if(m<m1)
{return (indx);}
else if(m>m1)
{return (indx1);}
else
{
if(indx<indx1)
{return (indx);}
else
{return (indx1);}
}
}
}
}
return(777);/*returning the error code if no taxi is availble*/
}
int check2(char pic_pnt,int p_tme)
/*function to check the pick point*/
{
int flag=0,min=10000,min_ind,get; /* set the value for min*/
for(int i=0;i<5;i++)
{
if(pic_pnt==t[i].cur_pos) /*check the pickpoint of the customer with the current position of the taxi*/
{
if(t[i].end_time[(t[i].index-1)]<=p_tme) /* check the previously allocated time of the customer with the current customer*/
{
if(t[i].t_wage<min) /* calculate the minimium wage who earned that day */
{
min=t[i].t_wage;
min_ind=i; /*assigning minimum index*/
flag=1;
}
}
}
}
if(flag==1)
{return (min_ind);}
if(flag==0) /*returning minimum index to booking function*/
{return (-1);}
return 0;
}
void details()
{
int i,j;
pf("\t\t\t\tBOOKING DETAILS");
for(i=0;i<3;i++)
{
pf("\n\nTaxi %d details",i+1); /*print the details based on taxi*/
pf("\nTotal wage:%d",t[i].t_wage);
pf("\nc_id p_pnt d_pnt s_tm e_tm wage\n");
for(j=0;j<3;j++)/*print the details based on cust id*/
{
pf("%d %c %c %d %d %d ",t[i].cust_id[j],t[i].pic_pnt[j],
t[i].drp_pnt[j],t[i].str_time[j],t[i].end_time[j],t[i].wage[j]);
pf("\n");
}
}
}
#include<conio.h>
#include<math.h>
#define pf printf
#define c() clrscr()
int check2(char,int);
int check_picpnt(char,int);
int booking();
void details();
int static id;
char dist[6]={'A','B','C','D','E','F'}; /* pick up points */
struct taxi{
int index; /*for each customer*/
char pic_pnt[10];
char drp_pnt[10],cur_pos; /* struct variables */
int str_time[10],cust_id[10],end_time[10];
int wage[10],t_wage;
}t[5];
void main() /* main function */
{
c();
for(int i=0;i<5;i++)
{ /* initial position allot */
t[i].cur_pos='A';
}
menu:
pf("\t\t\t\tWELCOME TO TAXI BOOKING");
pf("\n\n\n\n\n\t\t MENU"); /* front page */
pf("\n\n\n\t\t\t1.TAXI BOOKING");
pf("\n\t\t\t2.DETAILS\n");
pf("\t\t\t3.EXIT\n");
int opt;
pf("\n\n\t\t\tEnter your option:");
scanf("%d",&opt);
switch(opt)
{
case 1:
booking(); /* calling respective functions */
c();
goto menu;
case 2:
details();
getch();
c();
goto menu;
case 3:
break;
default:
pf("Wrong option!!!");
getch();
c();
goto menu;
}
getch();
}
int booking()
{ /*booking function,second page*/
c();
char p_pnt,d_pnt;
int tme,wag,taxi=0;
pf("\t\t\tbooking menu");
pf("\n\ncustomer_id %d",++id);
pf("\n\npickup_pnt:");
getchar();
scanf("%c",&p_pnt); /* getting booking details from user using temp variables */
pf("\ndrop_pnt:");
getchar();
scanf("%c",&d_pnt);
pf("\ntime:");
getchar();
scanf("%d",&tme);
taxi=check_picpnt(p_pnt,tme); /* checking taxi availability by calling function */
if(taxi!=777)
{
int x=t[taxi].index;
pf("\n\ntaxi %d is alloted",taxi+1); /* Assigning details to struct variables if function return respective taxis */
pf("\n\nthank for booking"); /* display alloted taxi number */
int cost=((abs(p_pnt-d_pnt)*15)-5)*10+100; /* calculating cost based on distance*/
t[taxi].pic_pnt[x]=p_pnt;
t[taxi].drp_pnt[x]=d_pnt;
t[taxi].cust_id[x]=id;
t[taxi].wage[x]=cost;
t[taxi].cur_pos=d_pnt;
t[taxi].t_wage=t[taxi].t_wage+cost;
t[taxi].end_time[x]=abs(p_pnt-d_pnt)+tme; /*calculating taxi free time */
t[taxi].str_time[x]=tme;
t[taxi].index++; /*increasing for each customer*/
}
else
{pf("\n\nOOPs failed");} /* taxi is not available*/
getch();
return 0;
}
int check_picpnt(char pic_pnt,int p_tme) /*function to check the pick point*/
{
int flag=0,min=10000,min_ind,get; /* set the value for min*/
for(int i=0;i<5;i++)
{
if(pic_pnt==t[i].cur_pos) /*check the pickpoint of the customer with the current position of the taxi*/
{
if(t[i].end_time[(t[i].index-1)]<=p_tme) /* check the previously allocated time of the customer with the current customer*/
{
if(t[i].t_wage<min) /* calculate the minimium wage who earned that day */
{
min=t[i].t_wage;
min_ind=i;/* assigning the minimum index*/
flag=1;
}
}
}
}
if(flag==1)
{return (min_ind);} /*returning the respective taxi index to the booking function */
if(flag==0) /*if the taxi is not in that current position*/
{
for(int j=0;j<6;j++) /*getting the index of the pick point */
{
if(pic_pnt==dist[j])
{get=j;
}
}
int k,m,m1,indx,indx1;
for(j=get-1,k=get+1;j>=0||k<=6;j--,k++) /* checking both the sides of the pickpoint if the taxi is available or not*/
{
if(j>=0)
{
indx=check2(dist[j],p_tme);/* passing the neighbour value and pick up time */
if(indx!=-1)
m=t[indx].t_wage; /* storing the minimum wage in that current point */
else
m=10000;
}
if(k<=6)
{
indx1=check2(dist[k],p_tme); /* passing the neighbour value and pick up time */
if(indx1!=-1)
m1=t[indx1].t_wage; /* storing the minimum wage in that current point */
else
m1=10000;
}
if(m1!=10000||m!=10000) /* if both wages of taxi is same then return the lowest index of taxi */
{
if(m<m1)
{return (indx);}
else if(m>m1)
{return (indx1);}
else
{
if(indx<indx1)
{return (indx);}
else
{return (indx1);}
}
}
}
}
return(777);/*returning the error code if no taxi is availble*/
}
int check2(char pic_pnt,int p_tme)
/*function to check the pick point*/
{
int flag=0,min=10000,min_ind,get; /* set the value for min*/
for(int i=0;i<5;i++)
{
if(pic_pnt==t[i].cur_pos) /*check the pickpoint of the customer with the current position of the taxi*/
{
if(t[i].end_time[(t[i].index-1)]<=p_tme) /* check the previously allocated time of the customer with the current customer*/
{
if(t[i].t_wage<min) /* calculate the minimium wage who earned that day */
{
min=t[i].t_wage;
min_ind=i; /*assigning minimum index*/
flag=1;
}
}
}
}
if(flag==1)
{return (min_ind);}
if(flag==0) /*returning minimum index to booking function*/
{return (-1);}
return 0;
}
{
int i,j;
pf("\t\t\t\tBOOKING DETAILS");
for(i=0;i<3;i++)
{
pf("\n\nTaxi %d details",i+1); /*print the details based on taxi*/
pf("\nTotal wage:%d",t[i].t_wage);
pf("\nc_id p_pnt d_pnt s_tm e_tm wage\n");
for(j=0;j<3;j++)/*print the details based on cust id*/
{
pf("%d %c %c %d %d %d ",t[i].cust_id[j],t[i].pic_pnt[j],
t[i].drp_pnt[j],t[i].str_time[j],t[i].end_time[j],t[i].wage[j]);
pf("\n");
}
}
}
No comments:
Post a Comment