本文概述
- 关于公司:Adobe
- Adobe招聘流程
- 第一轮:网上书面回合
- 描述
- 第一轮测试图案
- A.定量和推理科
- 能力面试问题
- 1)如果房间里的灯泡每9秒钟闪烁一次, 它在一个小时的?中会闪烁多少次?
- 2)Arjun, Ram和Vivek的年龄比例为4:7:9。如果9年前他们的年龄总和是53岁, 那么他们现在的年龄是多少?
- 3)如果办公室员工的平均年龄为40岁, 并且有120名新员工加入公司, 而该公司的平均年龄为32岁。因此, 所有员工的平均年龄降低了4岁。那么, 现在公司的员工总数是多少?
- 4)找到最大的4位数字, 该数字可以被88整除吗?
- 5)计算前五个质数之和?
- 6)仅” A” 字就能在2天内完成工作的1/4。仅” B” 字就能在4天内完成工作的2/3。如果三个工人一起工作, 他们可以在3天内完成工作, 那么仅” C” 将在2天内完成工作的哪一部分?
- 7)有一天, 拉维开始从家中提早30分钟到达家中, 并迟到了50分钟才到达办公室, 同时开车速度比平时慢了25%。拉维通常需要多少时间才能在家中到达办公室?
- 8)一位店主以卢比的价格出售一张桌子。 840的收益为20%, 另一张表格为卢比。 960亏损4%。他的总收益或损失是多少?
- 9)如果在圆锥形帐篷中, 可以容纳10人。每个人必须拥有6平方米的空间站立和呼吸30立方米的空气。圆锥的高度是多少?
- 10)A可以在10天内完成一件工作, B可以在12天内完成相同的工作, 而Ravi在15天内可以完成相同的工作。他们都一起开始工作, 但是A在工作完成2天后离开, B在工作完成3天后离开。查找完成工作的日期。
- 推理问题
- 1)如果MADRAS可以编码为NBESBT, 那么我们如何编码BOMBAY?
- 2)这是系列中的下一项:3、4、6、9、13, _______
- 3)如果w, x, y z是整数。有一个条件, 表达式x-y-z为偶数, 表达式y-z-w为奇数。如果x甚至必须为真?
- 4)BXF, DVI, FTL, HRO, _____系列的下一个术语是什么
- 5)如果使用某种代码语言,
- 6)如果胜利与竞争有关, 那么发明与之有关。
- 7)拉胡尔对阿卡什说:” 那个踢足球的男孩是我父亲妻子的女儿的两个兄弟中的较小者。” 这个踢足球的男孩和拉胡尔有什么关系?
- 8)山姆介绍里娅后说:” 她是我母亲唯一兄弟的唯一侄子的妻子。” Riya与Sam有何关系?
- 9)工程师:Map :: Bricklayer :?找到这个词。
- 10)从以下选项中找出奇数词
- B:技术MCQ示例
- 1)以下内容的输出是什么
- 2)在C语言中, 参数始终为_______
- 3)查找以下代码的输出
- 4)以下语句的用途是什么?
- 5)查找以下代码的输出。
- 6)使用三个未标记的节点可以形成的最大二叉树数量是多少?
- 7)具有3个节点的结构上不同的可能二叉树的总数是多少?
- 8)可以使用哪种排序算法对时间最短的随机链表进行排序?
- 9)计算以下代码的输出
- 10)计算以下代码的输出
- 编码问题
- 1)编写代码以反向链接列表?
- 2)编写一个代码, 使用最小的加法数将两个数字相乘。
- 3)写一个交换两个整数指针的程序?
- 4)编写一个程序来计算斐波那契数列的第n个项?
- 5)编写一个程序来计算一个数字中的总置位数?
- 6)编写算法来计算X ^ N的输出, 其复杂度为log n。
- 7)编写代码以检查二进制树是否是BST树?
- 8)编写代码以从列表的末尾查找第n个元素?
- 技术回合面试问题
- 技术首轮
- 1)区分typedef和#define?
- 2)为什么我们使用sprint()函数?
- 3)如何区分char a [] =?String和char * a =?String。
- 4)解释数据断点?我们在哪里可以使用?
- 5)区分new和malloc()?
- 6)区分进程和线程?
- 7)什么是C ++速记属性?它的作用是什么?
- 8)通过函数原型的声明和定义, 你了解什么?
- 9)你对条件运算符了解什么?
- 10)C语言中的volatile关键字是什么?
- 11)你对OS有什么了解?用最简单的方式解释。
- 12)为什么我们在C和C ++中使用指针?
- 13)区分指针调用和引用调用?
- 14)你对calloc()和malloc()有什么了解?
- 15)解释” 虚拟机” 一词吗?
- 16)你对同步有什么了解?
- 17)解释Mutex吗?什么是读写器问题?
- 18)为什么要使用void关键字?
- 19)解释退出受控循环?
- 20)什么是DNS服务器?
- 技术第二轮
- 1)TCP / IP模型中的不同层是什么?解释每一层的协议?
- 2)解释调用函数时堆栈的工作情况?什么时候发生堆栈溢出?
- 3)解释声明的含义:int * const p&const int * const p?
- 4)什么是C ++中的默认函数
- 5)字典使用哪种数据结构?
- 6)如何从一个字符串中也有重复的单词中找到一个唯一的单词?
- 技术性第三轮或导演轮
- 1)为河内塔写一个算法?
- 2)编写代码以在” 链表” 列表中找到循环?你将如何删除此循环?
- 3)你将如何设计Excel电子表格的数据结构?
- 4)解释OS中的内存保护。
- 5)什么是OS中的虚拟内存?
- 6)编写算法以将元素插入到已排序的链表中?
- 7)找到总和等于给定数的一对元素?
- 也可以要求候选人提出以下问题
- 人力资源回合
- 1)简要介绍一下自己?
- 2)为什么要加入Adobe?
- 3)你拥有什么技能, 以便我们雇用你?
- 4)你梦想中的公司是哪家?
- 5)谈谈你的家庭背景吗?
- 6)十年后, 你想在哪里看到自己?
- 7)你独特和不同的品质是什么, 这使你成为该公司最合适的员工?
- 8)你认为你是一个目标导向的人吗?
- 9)你最大的优点和缺点是什么?
Adobe的关键人物:
首席执行官兼董事长:Shantanu Narayen
首席财务官:John F Murphy
CTO:Abhay Parasn??is
Adobe招聘流程 Adobe招聘过程是困难的招聘过程之一。 Adobe非常仔细地选择候选人, 并进行了大量筛选以选择所有候选人中的最佳人才。 Adobe的招聘过程也与其他公司不同, 因为面试需要5到6轮。以下是招聘过程的主要步骤。
- 在线书面回合
- 小组讨论
- 多轮技术面试
- 导演轮
- 人力资源回合
- X和XII中65%, 毕业或CGPA 7中70%。
- 申请时没有积压。
第一轮测试图案
Sections | 持续时间 | 问题数 | Topics |
---|---|---|---|
15 min | 15个问题 | 量化智能算术代数时间和工作盈亏几何速度和距离百分比 | |
30分钟 | 30个问题 | 逻辑推理难题数据解释血缘关系等 | |
75-120 min | 15-20 Questions | C语言数据结构位处理 |
- 招聘过程的量化能力部分相对容易, 但是候选人需要具备基本的知识并且必须具有良好的速度。没有负面的标记。
- 分析部分包含一些棘手的问题, 这些问题可能会占用更多时间, 因此在尝试这些部分时请务必小心。
能力面试问题 1)如果房间里的灯泡每9秒钟闪烁一次, 它在一个小时的?中会闪烁多少次?
- 301
- 300
- 250
- 401
答:一个
说明:
灯泡每9秒闪烁一次。
?小时=?* 60 = 45分钟
45分钟= 45 * 60 = 2700秒
因此, 光将在?小时内闪烁= 2700/9 = 300次
但是计数在第一次闪烁后开始, 因此总时间= 300 + 1 = 301
2)Arjun, Ram和Vivek的年龄比例为4:7:9。如果9年前他们的年龄总和是53岁, 那么他们现在的年龄是多少?
- 16, 28, 36
- 8, 20, 28
- 20, 35, 45
- 以上都不是
答:一个
说明:Arjun, Ram和Vivek的年龄比例为4:7:9
令, Arjun的当前年龄= 4倍
拉姆的现龄= 7倍
Vivek的当前年龄= 9倍
根据问题
(4x-9)+(7x-9)+(9x-9)= 53
20x-27 = 53
X = 4
因此Arjun = 16, Ram = 28和Vivek = 36的现年年龄
3)如果办公室员工的平均年龄为40岁, 并且有120名新员工加入公司, 而该公司的平均年龄为32岁。因此, 所有员工的平均年龄降低了4岁。那么, 现在公司的员工总数是多少?
- 1200
- 120
- 360
- 240
答案:d
说明:
设x为初始员工总数
员工的最初平均年龄= 40岁
(员工的初始总年龄)/ x = 40
员工初始总年龄= 40倍
120名员工的总年龄= 32 * 120
根据问题:
平均年龄减少了4岁, 因此
(40x + 32 * 120)/(x + 120)=(40-4)
(40x + 3840)= 36 *(x + 120)
4倍= 4320-3840
X = 120
因此, 现在公司的员工总数= 120 + 120 = 240
4)找到最大的4位数字, 该数字可以被88整除吗?
- 9768
- 9988
- 9944
- 8888
答案:c
说明:
最大的4位数字= 9999
9999/88 =余数= 55
所以新的数字将是= 9999-55 = 9944
它将被88完全整除;因此, 最大的数字将是9944
5)计算前五个质数之和?
- 11
- 18
- 26
- 28
答案:d
说明:
所需的五个素数之和=(2+ 3 + 5 + 7 + 11)= 28
6)仅” A” 字就能在2天内完成工作的1/4。仅” B” 字就能在4天内完成工作的2/3。如果三个工人一起工作, 他们可以在3天内完成工作, 那么仅” C” 将在2天内完成工作的哪一部分?
- 1/12
- 1/8
- 1/16
- 1/20
答:一个
说明:
让我们用C = x的一天来工作
A的1天工作= 1/8
B的1天工作= 1/6
根据问题:
1/8 + 1/6 + x = 1/3
通过求解方程式:
x = 1/24
如果x是
1天工作= 1/24
因此, 两天的工作量为c = 1/12
7)有一天, 拉维开始从家中提早30分钟到达家中, 并迟到了50分钟才到达办公室, 同时开车速度比平时慢了25%。拉维通常需要多少时间才能在家中到达办公室?
- 20分钟
- 80分钟
- 60分钟
- 40分钟
答案:c
说明:
假设t是从家到办公室的通常时间, 通常时间和速度时间= t, 速度= s
延迟时间和速度较慢速度降低25%= 3 / 4s, 时间= t + 20
D = s * t
D =(3秒/ 4)*(t + 20)
S * t =(3s / 4)*(t + 20)
4吨= 3吨+ 60
t = 60分钟。
8)一位店主以卢比的价格出售一张桌子。 840的收益为20%, 另一张表格为卢比。 960亏损4%。他的总收益或损失是多少?
- 收益提高100/17%
- 损失100/17%
- 增益20/3%
- 没有一个
答:一个
说明:
1张桌子的成本价格=(100 * 840)/(100 + 20)= 700
2张桌子的成本价格=(100 * 960)/(100-4)= 1000
表的总成本价格= 1000 + 700 = 1700
总售价= 840 + 960 = 1800
收益=售价-成本价
增益= 1800-1700 = 100
增益%=(100 * 100)/ 1700
增益%= 100/17
9)如果在圆锥形帐篷中, 可以容纳10人。每个人必须拥有6平方米的空间站立和呼吸30立方米的空气。圆锥的高度是多少?
- 15m
- 37.5m
- 75m
- 150m
答案:30m
说明:
如果, 1人占用的空间= 6平方米
10人占用的空间= 60平方米。米
因此, 圆锥形帐篷的底面积= pi * r * r = 60
因为每个人都需要呼吸空气= 30立方米
10个人需要空气到广度= 300立方米
因此, 圆锥形帐篷的体积(1/3)* pi * r * r * h = 600
20 * h = 600
h = 30m
10)A可以在10天内完成一件工作, B可以在12天内完成相同的工作, 而Ravi在15天内可以完成相同的工作。他们都一起开始工作, 但是A在工作完成2天后离开, B在工作完成3天后离开。查找完成工作的日期。
- 6天
- 5天
- 9天
- 7天
答案:d
说明:
工作完成者:
A在10天之内, B在12天之内, C在15天之内,
完成的总工作量=(10, 12, 15)的L.C.M = 60单位
因此, A可以在1天内完成6个工作单元, B可以完成5个工作单元, C可以完成4个工作单元
根据问题, 完成x天的剩余工作, 然后
(6 + 5 + 4)* 2 +(5 + 4)*(x-3)+(4 * 3)= 60单位
解决之后
30+ 9(x-3)+ 12 = 60
X = 5天
因此, 所需的总天数= 5 + 2 = 7天。
推理问题 1)如果MADRAS可以编码为NBESBT, 那么我们如何编码BOMBAY?
- 重庆市
- CPOCBZ
- 中国人民银行
- CPNCPX
答案:C
说明:
M A D R A S < =========> N B E S B T
每个字母都等同于下一个字母, 因此M代表N, A代表B, D代表E, 依此类推。
因此
B O M B A Y可以写成C P N C B Z
2)这是系列中的下一项:3、4、6、9、13, _______
- 16
- 15
- 18
- 17
答案:c
说明:
如给定序列中的3, (3 + 1 = 4), (4 + 2 = 6), (6 + 3 = 9), (9 + 4 = 13), 所以(13 + 5 = 18)因此学期将是18
3)如果w, x, y z是整数。有一个条件, 表达式x-y-z为偶数, 表达式y-z-w为奇数。如果x甚至必须为真?
- 我一定很奇怪
- y-z必须是奇数
- z必须是偶数
- z必须是奇数
答:一个
说明:
由于x是偶数, 因此x-y-z必须为偶数, 即使y和z都为奇数, 而y-z-w必须为奇数, 而w必须为奇数
4)BXF, DVI, FTL, HRO, _____系列的下一个术语是什么
- 联合警察
- KPL
- 良好
- 没有一个
答案:d
说明:
如给定系列
B X F, D V I, F T L, H R O
对于第一个字母,
B-C-D, D-E-F, F-G-H, H-I-J
2个字母
X-W-V, V-U-T, T-S-R, R-Q-P
3个字母
F-G-H-I, I-J-K-1, L-M-N-O, O-P-Q-R所以下一项应该是JPR, 所以答案都不是, 因此下一个系列是-JPR
5)如果使用某种代码语言, 一世。 Guda buka意味着清澈的水
ii。 Pin gola意味着阴云密布的天空
iii。 Pin saf buka意味着湛蓝的天空
那么, 以下哪个词表示BLUE?
- 开门
- 纯
- 一样的
- Pin
答案:b
说明:
通过1和2和3陈述, 发现buka表示晴朗, pin表示天空, 因此saf表示蓝色。
6)如果胜利与竞争有关, 那么发明与之有关。
- 实验
- 发现
- 实验室
- 试用版
答:一个
7)拉胡尔对阿卡什说:” 那个踢足球的男孩是我父亲妻子的女儿的两个兄弟中的较小者。” 这个踢足球的男孩和拉胡尔有什么关系?
- 他的
- 哥哥
- 长者的意思是铁则
- 表姐
答案:b
说明:
【热门!Adobe精品面试题最新汇总在这里啦】我父亲的妻子=拉胡尔的母亲
我父亲妻子的女儿=拉胡尔的姐姐
两兄弟中的小者=拉胡尔的b兄弟。
8)山姆介绍里娅后说:” 她是我母亲唯一兄弟的唯一侄子的妻子。” Riya与Sam有何关系?
- 妻子
- 嫂子
- 妹妹
- 资料不足
答:一个
说明:
我母亲的唯一兄弟=山姆的叔叔
唯一侄子的妻子=山姆的妻子
因此, Riya是Sams的妻子。
9)工程师:Map :: Bricklayer :?找到这个词。
- 模板
- 模子
- 水泥
- 设计
答:一个
10)从以下选项中找出奇数词
- 方向盘
- 他们的
- 汽车
- 发动机
答案:c
说明:
在选项中, 方向盘, 轮胎和发动机都是汽车的一部分。
B:技术MCQ示例 第一轮的第二部分是技术MCQ和编码部分。这部分很难破解。它需要彻底研究数据结构, C, 位操作和算法的概念。有一些样本问题可供Adobe面试, 并附有答案。
1)以下内容的输出是什么 int main()
{
你我;
int arr [5] = {5};
对于(i = 0; i < 5; i ++)
printf(“ %d” , arr [i]);
返回0;
}
- 0 0 0 0 0
- 5 0 0 0 0
- 5 5 5 5 5
- 错误
答案:b
2)在C语言中, 参数始终为_______
- 通过参考
- 通过值结果
- 价值传递
- 指针变量通过引用传递, 非指针变量通过值传递
答案:c
3)查找以下代码的输出 #include < stdio.h>
int main()
{
printf(“ %d” , main);
返回0;
}
- 编译时间错误
- 主要功能地址
- 0
- 任何随机值
答案:b
4)以下语句的用途是什么? scanf(“ %3s” , str);
- 最多读取3个字符
- 从控制台读取3个字符
- 取字符串str为3的倍数
- 以上都不是。
答:一个
5)查找以下代码的输出。 字符p [10];
char * s =” 计算机” ;
int length = strlen(s);
你我;
对于(i = 0; i < length; i ++)
p [i] = s [length-i];
printf(“ %s” , p)
- retupmoc
- 电脑
- 空值
- 没有输出将打印
答案:d
6)使用三个未标记的节点可以形成的最大二叉树数量是多少?
- 1
- 4
- 6
- 5
答案:d
7)具有3个节点的结构上不同的可能二叉树的总数是多少?
- 10
- 5
- 168
- 245
答案:b
说明:
结构上可能的树数=!2N /(!N *(!(N + 1))
其中n =节点数, 因此N = 3,
答案将是5。
8)可以使用哪种排序算法对时间最短的随机链表进行排序?
- 快速排序
- 进行排序
- 插入排序
- 堆排序
答案:b
9)计算以下代码的输出 #include < stdio.h>
结构体
{
int x;
静态整数
};
int main()
{
printf(“ %d” , sizeof(struct st));
返回0;
}
- 8
- 4
- 编译时间错误
- 运行时错误
答案:c
说明:
在C语言中, 我们不能在struct和unions类型内包含静态成员, 因此此程序将生成编译时错误。
10)计算以下代码的输出 #include < stdio.h>
int main()
{
int arr [] = {5, 8, 10, 12, 18};
INT * P = ARR;
++ * p;
p + = 3;
printf(“ %d” , * p);
返回0;
}
- 10
- 12
- 18
- 无输出。
答案:b
编码问题 这部分是一轮编码, 其中应试者需要使用任何首选语言(C / C ++ / Java)为给定问题编写代码。下面给出一些编码问题以供练习。
1)编写代码以反向链接列表?
#include<
stdio.h>
#include<
stdlib.h>
struct Node { int data;
struct Node* next;
};
/* Function for reversing the linked list */static void reverseList(struct Node** head_ref) { struct Node* t2 = NULL;
struct Node* start = *head_ref;
struct Node* t1 = NULL;
while (start != NULL) { t1 = start->
next;
start->
next = t2;
t2 = start;
start = t1;
} *head_ref = t2;
} void newNode(struct Node** head_ref, int new_data) { struct Node* new_node = (struct Node*) malloc(sizeof(struct Node));
new_node->
data = http://www.srcmini.com/new_data;
new_node->
next = (*head_ref);
(*head_ref) = new_node;
} /* Function to print linked list */void printList(struct Node *head) { struct Node *temp = head;
while(temp != NULL) { printf("%d ", temp->
data);
temp = temp->
next;
} }int main() { struct Node* head = NULL;
newNode(&
head, 20);
newNode(&
head, 14);
newNode(&
head, 30);
newNode(&
head, 68);
printf("Input linked list\n");
printList(head);
reverseList(&
head);
printf("\nReversed Linked list \n");
printList(head);
}
输出
Input linked list68 30 14 20 Reversed Linked list 20 14 30 68
2)编写一个代码, 使用最小的加法数将两个数字相乘。
#include<
stdio.h>
int main(){int product=0, x, y, n;
x=10;
y= 20;
for(n = 0;
n <
y;
n++){product = product + x;
}printf("\n The product of %d and %d: %d\n", x, y, product);
return 0;
}}
输出
The product of 10 and 20: 200
3)写一个交换两个整数指针的程序?
#include<
stdio.h>
int main(){int *a, *b, *temp, x=20, y=30;
a=&
x;
b=&
y;
printf("Before swap %d %d", *a, *b);
*temp= *a;
*a=*b;
*b= *temp;
printf("\n After swap %d %d", *a, *b);
return 0;
}
输出
Before swap 20 30 After swap 30 20
4)编写一个程序来计算斐波那契数列的第n个项?
#include<
stdio.h>
int fun(int n) { if (n <
= 1) return n;
elsereturn fun(n-1) + fun(n-2);
} int main(){int n1=0, n2=1, n3=0, n=7;
printf("The series is %d %d", n1, n2);
for(int i=2;
i<
=n;
i++){n3=n1+n2;
printf(" %d", n3);
n1=n2;
n2=n3;
}printf("\nThe nth term is %d", fun(n));
}
输出
The series is 0 1 1 2 3 5 8 13The nth term is 13
5)编写一个程序来计算一个数字中的总置位数?
#include <
stdio.h>
int main() {int n=15, count_zerobit= 0, count_onebit=0, total_bits=0;
while(n>
0){if(n%2==0)count_zerobit=count_zerobit+1;
elsecount_onebit=count_onebit+1;
n=n>
>
1;
} total_bits=count_onebit+count_zerobit;
printf("Total bits are=%d Total zero bits are=%d Total one's bits are= %d", total_bits, count_zerobit, count_onebit);
}
输出
Total bits are=4 Total zero bits are=0 Total one's bits are= 4
6)编写算法来计算X ^ N的输出, 其复杂度为log n。
#include<
stdio.h>
int pow(int x, int n) { int y;
if( n == 0) return 1;
y = pow(x, n/2);
if (n%2 == 0) return y*y;
elsereturn x*y*y;
} int main() { int x = 6;
int n = 3;
printf("The output for x^n, where x=%d, n=%d, %d", x, n, pow(x, n));
return 0;
}
输出
The output for x^n, where x=6, n=3, 216
7)编写代码以检查二进制树是否是BST树?
public class CheckBST { public static Node prevNode = null;
//Method1: public boolean isBST1(Node root) {if (root != null) {if (!isBST1(root.left))return false;
if (prevNode != null &
&
prevNode.data >
= root.data) {return false;
}prevNode = root;
return isBST1(root.right);
}return true;
} //method 2 public boolean isBST2(Node root, int min, int max) {if (root != null) {if (root.data >
max || root.data <
min) {return false;
}return isBST2(root.left, min, root.data)&
&
isBST2(root.right, root.data, max);
} else {return true;
} } public void inorder(Node root) {if (root != null) {inorder(root.left);
System.out.print("" + root.data);
inorder(root.right);
} } public static void main(String args[]) {CheckBST cb = new CheckBST();
Node root = new Node(7);
root.left = new Node(3);
root.right = new Node(9);
root.left.left = new Node(1);
root.left.right = new Node(4);
root.right.left = new Node(8);
root.right.right = new Node(10);
System.out.println("Input Tree is ");
cb.inorder(root);
System.out.println();
System.out.println("Tree is BST or not: " + cb.isBST1(root));
System.out.println("Tree is BST or not : "+ cb.isBST2(root, Integer.MIN_VALUE, Integer.MAX_VALUE));
root.left.right.right = new Node(20);
System.out.println("Input Tree is ");
cb.inorder(root);
System.out.println();
System.out.println("Tree is BST or not: " + cb.isBST1(root));
System.out.println("Tree is BST or not : "+ cb.isBST2(root, Integer.MIN_VALUE, Integer.MAX_VALUE));
}}class Node { int data;
Node left;
Node right;
public Node(int data) {this.data = http://www.srcmini.com/data;
left = null;
right = null;
}}
输出
Input Tree is 13478910Tree is BST or not: trueTree is BST or not: trueInput Tree is 1342078910Tree is BST or not: falseTree is BST or not: false
8)编写代码以从列表的末尾查找第n个元素?
public class ListElement{ Node head;
static class Node { int value;
Node next;
Node(int value) {this.value = http://www.srcmini.com/value;
} } public void addToList(Node node) { if (head == null) {head = node;
} else {Node temp = head;
while (temp.next != null)temp = temp.next;
temp.next = node;
} } public void printList() {Node temp = head;
while (temp != null) {System.out.format("%d ", temp.value);
temp = temp.next;
}System.out.println();
} public Node nthFromLastNode(Node head, int n) {Node firstPtr=head;
Node secondPtr=head;
for (int i = 0;
i <
n;
i++) {firstPtr=firstPtr.next;
} while(firstPtr!=null){firstPtr=firstPtr.next;
secondPtr=secondPtr.next;
} return secondPtr;
} public static void main(String[] args) {ListElement li = new ListElement();
// Creating a linked listNode head=new Node(18);
li.addToList(head);
li.addToList(new Node(20));
li.addToList(new Node(30));
li.addToList(new Node(15));
li.addToList(new Node(10));
li.addToList(new Node(16));
li.printList();
Node nthNodeFromLast= li.nthFromLastNode(head, 4);
System.out.println("4th node from end is :"+ nthNodeFromLast.value);
} }
输出
18 20 30 15 10 16 4th node from end is: 30
技术回合面试问题 这是Adobe面试过程的第三轮。它包含各种回合。在这一轮中, 将对候选人的技术技能进行检查。如果候选人通过了一个回合, 那么他/她可以继续下一回合。
技术首轮 1)区分typedef和#define? typedef和#define之间的主要区别如下:
- typedef用于定义类型或为类型赋予新名称, 而#define是预处理器指令, 用于定义宏。
- typedef将实际定义赋予新的数据类型, 而#define仅用于将值定义复制粘贴到使用它的位置。
- typedef是编译器已知的, 但#define仅是预处理器已知的。
#include <
stdio.h>
typedef int CHAR;
#define AP "Andhra Pradesh"int main() { CHAR a, b;
a = 10;
printf("%d\n""%s", a, AP);
return 0;
}
输出
10Andhra Pradesh
2)为什么我们使用sprint()函数? sprint()是一个C库函数, 称为” 字符串打印” 。 sprintf函数用于将格式化的数据输出保存为String。
语法
intsprintf (char *string, const char *form, .... )
例:
#include<
stdio.h>
int main() { char string[50];
int a = 10, b = 5, c;
c = a * b;
sprintf(string, "multiplication of %d and %d is %d", a, b, c);
printf("%s", string);
return 0;
}
输出
multiplication of 10 and 5 is 2
3)如何区分char a [] =?String和char * a =?String。 声明:
- 字符a [] =” 计算机” ;
- char * a =” 计算机” ;
但是第二条语句将创建一个指针变量。我们无法对此指针变量执行任何数组操作, 因为它将以只读模式存储。
例:
#include <
stdio.h>
int main() { char a[] = "Computer";
printf("%lu", sizeof(a));
a[1] = 'n';
printf("\n%s", a);
return 0;
}
输出
9Cnmputer
例子2
#include <
stdio.h>
int main() { char *a = "Computer";
printf("%lu", sizeof(a));
return 0;
}
4)解释数据断点?我们在哪里可以使用? 数据断点是C ++的一项强大功能, 当存储在特定内存位置的值发生更改时, 它可使我们停止执行。数据断点可用于解决内存损坏问题。
5)区分new和malloc()? new和malloc()都用于动态内存分配。但是new和malloc之间存在各种差异, 如下所示:
- new是C语言的运算符, 而malloc()是用于内存分配的函数。
- new运算符调用构造函数, 而malloc()不调用构造函数。
- 新操作员从” 空闲存储” 中分配的内存, 而malloc()函数从堆中分配的内存。
- 执行失败时, new运算符将引发异常, 而malloc()返回Null。
- new运算符不需要sizeof()运算符, malloc()函数需要sizeof()运算符才能知道内存大小。
- 进程是程序的执行, 而线程是轻量级进程。
- 进程不像内存那样共享资源, 而线程可以共享资源。
- 该进程需要花费更多时间进行上下文切换, 而线程需要更少的时间进行上下文切换。
- 与线程相比, 该进程的效率较低。
例:
x = x + 5; 可以用简写写成x + = 5
x = x-10; 可以写成x- = 10;
8)通过函数原型的声明和定义, 你了解什么? 函数原型声明:函数原型声明语句提供有关函数的以下信息:
- 它告诉函数的符号名称。
- 有关函数返回类型的信息。
- 有关作为参数传递的参数的信息及其数据类型。
int add(int a, int b, int c)
其中add是函数的名称, a, b和c是传递的参数。
函数定义:函数定义是函数的实际源代码。函数定义提供了该函数实际功能的信息。
例:
int add(int a, int b, int c){<
br>
c= a + b;
return c;
}
9)你对条件运算符了解什么?
- 条件运算符是具有三个操作数的三元运算符, 它们用作if-else语句的简写形式。
- 如果条件为true, 条件运算符将返回第一个表达式, 如果条件为false, 则返回第二个表达式。
(Check expression)? Expression1: Expression2;
例:
var = (x <
10) ? 20 : 40;
10)C语言中的volatile关键字是什么? volatile关键字是一个限定符, 在声明时与变量一起使用。
它向编译器提供了一个信息, 即变量的值在任何时候都可以更改, 即使它似乎没有被修改。
易失性关键字用于将变量声明为易失性变量。可以在数据类型之前或之后使用它。
语法
volatile int x;
or int volatile x;
11)你对OS有什么了解?用最简单的方式解释。
- 操作系统是一个程序, 它是用户和硬件之间的接口
- 它在加载后通过引导程序管理计算机中的所有其他程序。
- 操作系统充当计算机或移动设备的骨干。
- 操作系统的示例是UNIX, LINUX, MS-Windows, MAC-OS等。
以下是为什么我们在C和C ++中使用指针的主要原因:
- 指针可用于动态内存分配。
- 指针有助于执行数组算术和访问数组元素。
- 指针有助于创建API。
- 在数据结构的实现中使用指针。
- 指针有利于通过引用传递。
- 我们可以直接将指针分配为空指针, 但是不能通过引用来完成。
- 我们可以重新分配一个指针, 但是引用不能重新分配。
malloc():malloc()函数是一个库函数, 它分配一个所请求的内存块并返回一个指向其无效的指针, 该指针可以转换为任何返回类型。如果没有足够的内存, 它将返回空值。
语法
ptr=(cast-type*)malloc(byte-size)
calloc():calloc()函数也是一个库函数, 用于分配请求大小的多个内存块。它最初将内存初始化为零, 如果内存不足, 则返回NULL。
语法
ptr=(cast-type*)calloc(number, byte-size)
15)解释” 虚拟机” 一词吗? 虚拟机是一个行为类似于单独计算机的软件程序。它的工作原理与主计算机相同, 并且能够运行应用程序和其他程序。在称为主机的主机中创建了一个称为guest虚拟机的虚拟机。根据其用途, 有两种类型的虚拟机。
- 系统虚拟机
- 处理虚拟机
同步有两种类型:
- 进程或线程同步
- 数据同步
数据同步:数据同步是一种确保两个设备之间数据完整性的技术。借助数据同步, 它可以将单个数据的多个副本保存在不同的位置。它包括文件同步, 日记, Raid等。
17)解释Mutex吗?什么是读写器问题? 互斥体:
- 在多线程中, Mutex(互斥对象)是一个程序对象, 它为线程提供锁定机制。
- Mutex确保两个或多个线程之间正确的线程同步。一次只能有一个线程可以执行程序或资源。
在OS中, 一种情况称为特定共享数据区域的读写器问题, 其中包括:
- 可以从该共享区域读取任意数量的阅读器, 但一次只能写入一个作者。
- 当一个作者在特定区域中书写时, 没有其他进程可以访问该区域。
- 如果在该共享区域中有非零读者, 则writer不能在其中写入。
18)为什么要使用void关键字? 我们可以将void关键字用于两个目的:
函数参数:当我们使用void作为函数参数时, 表示函数不接受任何值。
例:
int showMessage(void){}
函数返回类型:当我们将void用作函数返回类型时, 表示将不返回任何内容。
例:
void showMessage() {}
void关键字也可以与指针一起使用, 这使其功能更强大, 因为当void与指针一起使用时, 它被称为泛型类型, 可以容纳任何类型的地址。
19)解释退出受控循环? 出口控制循环是一种循环类型, 它首先执行指令, 然后检查条件。当我们使用退出控制循环时, 即使条件为假, 至少也会执行一次。 do-while循环是退出控制循环的一个示例。
#include <
stdio.h>
int main() {int x = 10;
do{printf("\n the value of x is %d", x);
x - -;
}while(x>
=5);
return 0;
}Output: the value of x is 10 the value of x is 9 the value of x is 8 the value of x is 7 the value of x is 6 the value of x is 5
20)什么是DNS服务器? DNS服务器是DNS(域名系统)基础结构的主要部分。它是一台计算机服务器, 用于存储和管理IP地址及其各自的主机名的数据库。
DNS服务器也称为名称服务器, 用于将域名映射到相应的IP地址。
单个域名可以具有多个IP, 这意味着IP地址可以随时间变化。

文章图片
技术第二轮 1)TCP / IP模型中的不同层是什么?解释每一层的协议? TCP / IP模型被称为传输控制协议/ Internet协议。 TCP / IP模型是OSI模型的实用且简洁的版本。当前的网络体系结构取决于TCP / IP模型。它主要包括四层:
- 应用层
- 传输层/主机到主机层
- 网络层
- 链路层/网络访问层
负责通过网络的物理数据流。它由光纤, 同轴电缆或双绞线等硬件设备组成。在这一层中, 数据以位和帧的形式传输。
在此级别使用的协议是以太网, 令牌环等。
2. Internet层:
Internet层是Link层的上层。该层将数据转换为数据包, 称为IP数据报, 并通过网络跨主机发送这些数据报。这些数据报由主机和目标地址组成, 它们通过网络转发。
在此级别上使用的主要协议是:
- IP(互联网协议):此协议负责使用包头组成的地址将包从源主机转发到目的地。 IP有两个主要版本IPv4和IPv6。
- ICMP(Internet控制消息协议):该协议主要负责通知网络中的问题。
- ARP(地址解析协议):ARP协议是TCP / IP模型的基本协议, 负责将IPv4地址解析为物理地址。
该层主要包括两个协议:
TCP(传输控制协议):TCP是可靠的协议, 用于源主机和目标主机之间的无错误通信。这是一个面向连接的协议。
UDP(用户数据报协议):与TCP协议相比, 该协议不可靠, 我们可以使用不需要可靠通信的协议。它是无连接协议。
4.应用层:这是TCP / IP模型的顶层。它描述了应用协议并提供了节点到节点的通信。
该层包含各种更高级别的协议, 它们是:
- HTTP和HTTPs(超文本传输??协议)
- FTP(文件传输协议)
- SSH(安全外壳)
- TFTP(私有文件传输协议)
- SMTP(简单邮件传输协议)
- DHCP(动态主机配置协议)
当我们调用一个函数时, 堆栈执行以下步骤:
- 为返回变量增加空间。
- 将参数压入堆栈。
- 推送功能的局部变量。
堆栈溢出:我们知道堆栈在执行后释放了内存并释放了空间, 但是在使用完完整的堆栈空间后仍然有条件, 并且没有更多的空间来保存变量, 因此称为堆栈溢出。发生这种情况的原因是堆栈的空间大小也受到限制, 并且在执行时, 如果我们分配的内存比可用内存多, 则发生溢出并导致程序崩溃。堆栈溢出的一些示例是:
- 使用无限递归
- 使用非常大的堆栈变量
- 使用非常深的递归
const int * const p:以这种方式声明指针意味着, 我们无法更改指针的地址, 因为我们无法更改该地址的地址。如果我们尝试这样做, 那么它将生成一个编译时错误。
4)什么是C ++中的默认函数 C ++提供了以下六个默认成员函数:
- 默认构造函数
- 驱逐舰
- 复制构造函数
- 复制分配运算符
- 移动构造函数
- 移动分配运算符
哈希表:如果我们想要一个简单的字典, 没有前缀作为选项, 或者是最近邻居搜索, 那么我们可以对字典使用哈希或哈希表。
特里:如果我们要添加前缀和快速查找, 这可能是一个不错的选择。但是, 它比其他数据结构占用更多的空间。
三元搜索树:如果我们想要像trie的所有品质, 但又不想给更多的空间, 那么我们可以使用三元搜索树。
BK-树:如果我们需要诸如拼写检查器, 查找相似单词等规范, BK-树是最好的数据结构之一。
6)如何从一个字符串中也有重复的单词中找到一个唯一的单词? 我们可以使用HashMap, Set和Regex从字符串中找到唯一的单词。
还可以向候选人询问以下问题:
- 使用动态编程, 实现Snake and Ladder游戏并找到给定游戏中从1到100所需的最小移动数。
- 为DFA的数据结构建模, 该数据结构将事件作为参数并执行所需的操作。
- 解决三个贴错标签的罐子的问题。
- 如何比较两个二叉树?
- 如何证明一棵树的内部节点数少于叶子数?
1)为河内塔写一个算法? 河内塔是一个非常流行的数学难题。在这个难题中, 我们得到了三个圆盘和三个杆。盘片按升序排列在第一根杆中。我们需要将磁盘从第一杆以相同的顺序转移到第三杆。
还有一些规则:
- 我们可以一次移动一个磁盘
- 我们只能移动最上面的磁盘
- 磁盘应始终按升序排列, 即, 较大的磁盘不能放在较小的磁盘上。
假设有塔Beg, Aux和Dest, 并且有两个磁盘, 其中n磁盘是较大的磁盘, n-1是较小的磁盘。
开始
步骤1:将n-1磁盘从Beg塔转移到Aux
步骤2:将N磁盘从Beg移至End
步骤3:将磁盘n-1从塔辅助移到C.
Tower(n, Beg, Aux, Dest)BeginIf n=1 then, Print: Beg->
Dest;
else Call Tower(n-1, Beg, Dest, Aux);
Call Tower(n, Beg, Aux, End);
Call Tower(n-1, Aux, Beg, End);
endifEnd
2)编写代码以在” 链表” 列表中找到循环?你将如何删除此循环?
#include<
stdio.h>
#include<
stdlib.h>
struct Node { int data;
struct Node* next;
};
/* Function for removing the loop. */void remLoop(struct Node *, struct Node *);
/*Function to remove and detect the loop*/int detAndRemLoop(struct Node *list) { struct Node *p1 = list, *p2 = list;
while (p1 &
&
p2 &
&
p2->
next) { p1 = p1->
next;
p2 = p2->
next->
next;
/*if p1 and p2 will meet at some point which means there is a loop*/if (p1 == p2) { remLoop(p1, list);
printf("Loop is occurred\n");
/* Return 1 if loop is found */return 1;
} } /* Return 0 if there is no loop*/ return 0;
} /* Function to remove loop. */void remLoop(struct Node *loop_node, struct Node *head) { struct Node *ptr1 = loop_node;
struct Node *ptr2 = loop_node;
// Count the number of nodes in loop unsigned int k = 1, i;
while (ptr1->
next != ptr2) { ptr1 = ptr1->
next;
k++;
} // Fix one pointer to head ptr1 = head;
ptr2 = head;
for (i = 0;
i <
k;
i++) ptr2 = ptr2->
next;
while (ptr2 != ptr1) { ptr1 = ptr1->
next;
ptr2 = ptr2->
next;
} ptr2 = ptr2->
next;
while (ptr2->
next != ptr1) ptr2 = ptr2->
next;
/* Set the next node to Null to fix the loop */ ptr2->
next = NULL;
} /* Function to print linked list */void printList(struct Node *node) { while (node != NULL) { printf("%d ", node->
data);
node = node->
next;
} } struct Node *newNode(int key) { struct Node *temp = (struct Node*)malloc(sizeof(struct Node));
temp->
data = http://www.srcmini.com/key;
temp->
next = NULL;
return temp;
} int main() { struct Node *head = newNode(40);
head->
next = newNode(15);
head->
next->
next = newNode(12);
head->
next->
next->
next = newNode(10);
head->
next->
next->
next->
next = newNode(4);
/* Create a loop*/ head->
next->
next->
next->
next->
next = head->
next->
next;
detAndRemLoop(head);
printf("Linked List after removing loop \n");
printList(head);
return 0;
}
输出
Loop is occurredLinked List after removing loop 40 15 12 10 4
3)你将如何设计Excel电子表格的数据结构? 我们可以使用以下方法设计Excel电子表格:
- 二维数组(但是会占用很多空间)
- 稀疏矩阵
- 地图等
有两个寄存器LBR和UBR用于实现存储器保护。
5)什么是OS中的虚拟内存? 虚拟内存是操作系统的内存管理技术。当主存储器没有足够的空间来执行代码时, 虚拟存储器是提供给程序的额外空间。它暂时将数据从RAM传输到磁盘存储, 该磁盘使用硬盘的非活动内存, 称为虚拟内存。
6)编写算法以将元素插入到已排序的链表中? 假设链表是按升序排序的, 则其算法如下。设输入节点为13并赋值为n
假设输入链接列表为:
3 8 11 15 20
1)如果给定的链表为空, 则将该节点分配为head并返回它。
2)如果节点n的值小于头节点的值, 则在开始处插入该节点并将其分配为头。
3)在循环中, 搜索适当的节点, 然后将其插入输入节点。要从头开始搜索适当的节点, 请继续移动直到到达值大于输入节点的节点x(假设15)。 x之前的节点将是适当的节点(11)。
4)在步骤3中找到的相应节点(11)之后插入节点(13)。
插入后:
3 8 11 13 15 20
7)找到总和等于给定数的一对元素?
#include <
stdio.h>
void Pair(int arr[], int n, int sum){for (int i = 0;
i <
=n;
i++){for (int j = i + 1;
j <
=n;
j++){if (arr[i] + arr[j] == sum){printf("Pair element found at position %d and %d\n ", i, j);
}}}} int main(){int arr[] = { 5, 8, 9, 1, 6, 2, 7, 3};
int sum = 11;
int n = sizeof(arr)/sizeof(arr[0]);
Pair(arr, n, sum);
return 0;
}
输出
Pair element found at position 0 and 4 Pair element found at position 1 and 7 Pair element found at position 2 and 5
也可以要求候选人提出以下问题
- 如果存在一个数字数组, 其中包含从1到n的数字。如果我们用另一个替换一个数字。在O(N)中找到两个数字。
- 如果在婚姻职能中有n个人, 则将这些人分为两组, 这样每个人彼此认识?
- 使用动态编程, 实现Snake and Ladder游戏并找到给定游戏中从1到100所需的最小移动数。
- 一个城市有n座房屋。全部放在一行中。我们可以用三种颜色(R, G, B)中的任何一种给房屋着色。每种颜色都会给每个房屋上色的费用。没有两个邻居的房子可以具有相同的颜色。打印最低成本为所有房屋上色。
- 如果给定LinkedList和数字k。在一组k中反向LinkedList。
1)简要介绍一下自己? 这个问题是一个非常普遍的问题, 大多数面试中都问这个问题。可以通过以下方式回答这个问题。
早上好/下午/晚上, 先生/妈妈, 很高兴有这个机会介绍自己。我叫Anamika Singh, 属于乌代浦。我已经从诺伊达工程技术学院的CSE分公司完成了B. Tech的学士学位, 并且在圣约翰·英特学院(Saint John Inter College)上学。如果我谈论我的家庭成员, 那么我的家庭中就有5个成员, 包括我在内。我父亲是政府老师, 母亲是家庭主妇, 我还有一个弟弟, 上个月他完成了高中毕业。我对C, C ++和Java等编程语言有很好的了解。我还创建了一些基于大学的有关这些技术的项目。我是一个非常自信, 聪明和适应能力强的人。我可以在任何环境中适应自己, 并可以应对任何类型的情况。我的爱好是打羽毛球, 跳舞, 绘画和上网。谢谢。2)为什么要加入Adobe? 面试官问这个问题, 以检查你是否真的有兴趣加入, 或者你加入该公司的动机是什么。你应通过以下方式回答此问题:
主席先生, Adobe是遍布全球的伟大公司之一。每个人都希望与Adobe合作。这是一个工作的好地方。而且我的技术能力符合公司的要求。我可以展示自己的技术技能为公司的发展以及职业发展做出贡献。3)你拥有什么技能, 以便我们雇用你? 通过这个问题, 面试官想检查一下, 你对自己的技能的了解程度如何, 以及对自己的看法与他人不同。对此的答案应为:
我对C, C ++, Java和数据结构有很好的理论和实践知识。我已经针对这些技术创建了多个项目。我可以在比其他更少的时间内非常有效地解决编码难题。4)你梦想中的公司是哪家? 通过这个问题, 面试官想检查一下你的热情。该公司是你梦想中的公司, 还是你没有其他选择, 想要加入该公司。因此考生应仔细回答这个问题。
要回答这个问题, 候选人在选择公司的特征时, 切勿使用任何其他公司的名称。
例:
我的梦想工作是从事创新, 并向世界提供可以改变人们生活方式的产品。我对此工作感到很兴奋。据我所知, Adobe是一家致力于创新和创造力的公司。
5)谈谈你的家庭背景吗? 这是一个普遍而轻松的问题, 因为你无需花太多时间来回答这个问题。要回答这个问题, 你需要告诉你你有多少名成员以及他们做什么。
例:
我的家人有五个成员, 包括我在内。我的父亲Jay Prakash先生是一名商人, 从事电子设备业务。我的母亲Sunita夫人是一位出色的家庭主妇。我有两个哥哥, 他们是HCL技术的软件开发人员。6)十年后, 你想在哪里看到自己? 例:
十年后, 我希望自己能在这家公司中担任各自的职务, 从而可以承担公司的重大职责。我想在每个级别上学习, 这将提高我的技能, 并将对公司的发展有所帮助。7)你独特和不同的品质是什么, 这使你成为该公司最合适的员工? 这是与” 我为什么要雇用你” 相同的问题, 答案应为第3个问题。
8)你认为你是一个目标导向的人吗?
是的, 我是一个目标明确的人, 我有一些人生的关键目标, 我要尽早实现。我会定期更新我的目标清单, 直到达到目标为止。9)你最大的优点和缺点是什么? 我最大的优点就是我的自我激励能力。有了这个, 我可以面对任何挑战。
我最大的弱点是我的情感天性。当我看到某人处于任何不利状况时, 我都容易受到伤害。
才智
推理科
技术(MCQ)+编码测试(主观)
推荐阅读
- 凯捷最新面试流程合集
- 人力资源面试问题汇总 | 面试常见问题合集
- 基于能力的面试题,经验分享————
- 面试有什么技巧(如何做?有什么有用的建议?)
- 最新业务分析师面试问题精华汇总
- 看这里!行为面试问题精品汇总
- Ruby on Rails教程介绍
- 打开页面很慢,图文详细说明电脑打开页面很慢怎样处理
- 任务管理器被禁用,图文详细说明任务管理器被禁用了怎样办