Zoho面试经验(校外)2年以上经验
我是一名拥有 2 年以上经验的软件工程师。我在校外进行了一轮 Zoho。我在第三轮面向对象设计中被拒绝了。
1 级:该级别由 10 个编程问题和 10 个能力问题组成。
1. 输出是什么?
C
void func(int *b) { *b = 1; }
int main(){
int *a;
int n;
a = &n;
*a=0;
func(a);
std::cout << *a << std::end;
return 0;
}
C
int main(){
int x=10;
int y=20;
if(!(x^y))
printf("0");
else
printf("1");
return 0;
}
C
int main(){
int a[10][10]={{1,2},{3,4},{5,6},{7,8},{9,10}};
int *p=3;
int result = a[2][1]+ (*p--)+(++*p)+(*p+13);
printf("%d",result);
return 0;
}
C
#include
int main(){
int i;
char ch[]={'z','o','h','o'};
char *ptr,*str1;
ptr=ch;
sr1=ch;
i =(*ptr-- + ++*str1)-10;
return 0;
}
C++
void main(){
int n=21;
int out = 1;
while(n>=3){
n/=2;
out*=(n/2);
}
printf("%d",n*out);
}
C
#include
void function(char**);
int main(){
char *arr[] = {"ant","bat","cat","dog","egg","fly"};
function(arr);
return 0;
}
void function(char **ptr){
char *ptr1;
ptr1 = (ptr + = sizeof(int))[-2];
printf("%s\n",ptr1);
}
C++
#include
using namespace std;
class Test{
static int i;
int j;
};
int Test :: i;
int main(){
count << sizeof(Test);
return 0;
}
C
int main(){
int a[10][10] = {{1,2},{3,4},{5,6},{7,8},{9,10}};
int *p = a[3];
int result = (*p+2)*a[4][1]+(++*p)+(*p+7);
printf("%d",result);
return 0;
}
C
int a=20;
int main(){
int a=10;
std::cout << a << ""<<::a;
return 0;
}
C
int main() {
int n[]={8,1,3,9,4};
int j,*y=n;
for(j=0;j<5;j++) {
if(j%2==0)
*y++;
}
printf("%d",*y);
return 0;
}
2. 输出是什么?
C
int main(){
int x=10;
int y=20;
if(!(x^y))
printf("0");
else
printf("1");
return 0;
}
3. 输出是什么?
C
int main(){
int a[10][10]={{1,2},{3,4},{5,6},{7,8},{9,10}};
int *p=3;
int result = a[2][1]+ (*p--)+(++*p)+(*p+13);
printf("%d",result);
return 0;
}
4. 输出是什么?
C
#include
int main(){
int i;
char ch[]={'z','o','h','o'};
char *ptr,*str1;
ptr=ch;
sr1=ch;
i =(*ptr-- + ++*str1)-10;
return 0;
}
5. 输出是什么?
C++
void main(){
int n=21;
int out = 1;
while(n>=3){
n/=2;
out*=(n/2);
}
printf("%d",n*out);
}
6. 输出是什么?
C
#include
void function(char**);
int main(){
char *arr[] = {"ant","bat","cat","dog","egg","fly"};
function(arr);
return 0;
}
void function(char **ptr){
char *ptr1;
ptr1 = (ptr + = sizeof(int))[-2];
printf("%s\n",ptr1);
}
7.输出是什么?
C++
#include
using namespace std;
class Test{
static int i;
int j;
};
int Test :: i;
int main(){
count << sizeof(Test);
return 0;
}
8.输出是什么?
C
int main(){
int a[10][10] = {{1,2},{3,4},{5,6},{7,8},{9,10}};
int *p = a[3];
int result = (*p+2)*a[4][1]+(++*p)+(*p+7);
printf("%d",result);
return 0;
}
9. 输出是什么?
C
int a=20;
int main(){
int a=10;
std::cout << a << ""<<::a;
return 0;
}
10. 输出是什么?
C
int main() {
int n[]={8,1,3,9,4};
int j,*y=n;
for(j=0;j<5;j++) {
if(j%2==0)
*y++;
}
printf("%d",*y);
return 0;
}
第 2 部分由 10 个问题组成
- 2个苹果和4个橙子的价格是160卢比。同样的钱,一个人可以买1个苹果和6个橙子。 3个橙子的价格是多少?
- Anirudh 想将一块大的矩形板切成相同的小方块。如果电路板尺寸为 18 英寸 x 30 英寸。他可以在不浪费任何木板的情况下切割最少多少个正方形?
- 在聚会上,每个人都与其他人握手。如果有 105 次握手,请找出聚会的人数。
- A以卢比的金额开始了一项业务。 40000。5 个月后,A 提取 20000 卢比。B 每月定期投资。年末 A 和 B 的利润分成比例为 10239。求 B 每月投入多少?
- 一个两位数与交换其位的位置得到的数的差是18。这个数的两位数有什么区别?
- 2个苹果和4个橙子的价格是卢比。 160、同样的钱,可以买1个苹果和6个橙子。 3个橙子的价格是多少?
- 一个班有6个男孩和7个女孩。他们必须从中选出一组 6 名学生表演哑剧,因此所选组中至少有 4 个女孩。
- 如果小组中的每个人都为筹款做出了贡献,并且每个人都至少支付了卢比。 140,总共收集到2370,这可能是该组可能的最大强度。
- 在乘积 24647^117 和 45639^118 中找到单位的位数。
- 如果 A(x) 表示不大于 x 的素数个数。那么 A(A(100)) 的值是多少。
您必须获得 100% 的分数才能通过 Zoho 回合的 L1 级别。我在这一轮中被选中,并在几天内接到了 HR 的电话,关于 Zoho 轮的 L2 级别。
Zoho 轮的 L2 级别涉及 DataStructure 和 Algorithms 轮。
1. 编写一个函数来查找字符串数组中最长的公共前缀字符串。如果没有公共前缀,则返回一个空字符串。
示例 1:
Input : strs = ["flower","flow","flight"]
output : "fl"
示例 2:
Input : strs = ["dog","racecar","car"]
output : ""
- https://www.geeksforgeeks.org/longest-common-prefix-using-sorting/
2. 一棵树每年要经历两个生长周期,夏季和春季。每年春天,它的高度都会翻一番。每年夏天,它的高度都会增加一米。给定一个样本,在春季种植在 1 米的高度。计算 n 次循环后的高度。
示例 1:
Input : 0
Output:1
示例 2:
Input: 1
Output 2
示例 3:
Input 4
Output:7
https://hackerranksolution.in/utopiantreealgo/
3. 给定一组价格,其中价格[i] 是给定股票在第 i 天的价格。您希望通过选择一天购买一只股票并选择未来的另一天出售该股票来最大化您的利润。返回您可以从此交易中获得的最大利润。如果您无法获得任何利润,则返回 0
示例 1:
Input : prices =[7,1,5,3,6,4]
output: 5
解释:第 2 天买入(价格=1),第 5 天卖出(价格=6),利润 = 6-1 = 5
请注意,不允许在第 2 天买入和在第 1 天卖出,因为您必须先买入再卖出。
示例 2:
input : prices = [7,6,4,3,1]
output : 0
解释:在这种情况下,没有交易完成,最大利润=0
类似于这篇文章的东西: https://www.geeksforgeeks.org/stock-buy-sell/
L3 级别回合:L3 是面向对象的设计回合。这轮我被拒了,尽量在3小时内完成所有任务,否则你不会入围。
创建满足以下条件的巴士预订应用程序 ZOBUS:
任务一:初始化
根据下面给出的详细信息初始化数据,以便在程序启动时加载:
它可以加载并保存在内存中。无需维护文件或数据库。
假设这辆巴士仅适用于单条路线(钦奈到班加罗尔)。
并且所有乘客都希望在同一天旅行。
一位顾客只能预订一张票。
2 辆卧铺巴士 – 1 辆交流电和 1 辆非交流电
2 座巴士 – 1 辆 AC 和 1 辆非 AC。
Seater Bus 有 12 个座位(1,2 3, 4 - 代表可以坐的排。中间留有空间,因为它是步行区)。 A B C 1 2 3 4
卧铺巴士在 2 个甲板上有 12 个座位(每个 6 个)
(底层甲板) A B 1 2 3
(顶层甲板) A B 4 5 6
初始客户Id Name Password Age Gender 1 aaa 111 25 F 2 bbb 222 61 M 3 ccc 333 22 M 4 ddd 444 36 F
任务 2:客户注册:客户应该可以选择通过提供所有基本详细信息来使用新帐户进行注册。
任务 3:客户登录:客户应该能够使用他们现有的帐户凭据(用户名和密码)登录
任务 4:订票
4.1 总线选项
应该向客户询问乘客人数我们应该显示所有剩余容量的公共汽车。
样本输出:
- 空调卧铺 – 12 个座位
- AC Seater – 9 个座位
- 非 AC 卧铺 – 4 个座位
- 非空调座椅 – 10 个座位
4.2 座位选择:一旦客户选择了所需的巴士,h 应该显示巴士的当前状态,其中座位已被占用,哪些是空缺的。
客户可以根据以下规则选择座位:
- 他/她应输入不超过剩余座位的旅客人数)。应获取同行旅客的姓名和性别。
- 他/她可以选择座位,使得只有一位女士可以坐在不同票的女士旁边的座位上。
- 如果女士和男士来自同一张票,则他们可以占据相邻的座位。
样本输出 A B C 1 2 F 3 M 4 M
如果 B2 是女士,那么 座位 B1 只能由另一位女士占用。对于卧铺来说也是如此。而如果 2 人旅行。 1男1女。他们可以坐 A1 和 A2 座位。
任务 5:票价计算:票价应按以下方式计算并提示给客户:
- AC + Sleeper – 700 卢比/座
- AC + Seater – 550 卢比/座
- 非空调 + 卧铺 – 600 卢比/座
- 非 AC + Seater – 450 卢比 / 座
任务 6:票务确认:估算票价后,必须提示客户确认预订。只有当他确认时,才应该订票。
任务 7 退票:客户应 可以根据以下工作流程选择取消他们的票:
- 他应该出示他预订的座位清单。
- 他可以选择完全取消(所有座位)或部分取消(选定座位)
- AC 座位的取消费用为 50%,非 AC 座位的取消费用为 25%。
任务 8:巴士过滤:客户可以根据自己的偏好在以下各项中过滤和查看巴士:
- 交流电或非交流电或两者兼有
- 座椅或卧铺或两者兼而有之
仅应显示未填充的适用巴士。
- 按剩余容量降序排列。
- 如果相同容量的交流电应该先来。
- 如果相同容量的 Sleeper 应该先来。
样本输出:
- AC Seater – 12 个座位
- 空调卧铺 – 11 个座位
- 非空调卧铺 – 11 个座位
- 非空调座椅 – 11 个座位
任务 9:总线摘要:管理员应该能够看到总线的摘要,如下所示:
巴士类型、已满座位数、收取的总票价以及每个已满座位的详细信息。
样本输出:
- 交流卧铺
- 座位数:4
总票价:3510(4个座位+1个取消)
座位详情:Seat Name Gender A3 ccc M B6 aaa F A4 ddd F A5 daa F
这一轮我被拒绝了,虽然我尽力了,但也许我没有那么好。下次好运。