Sei sulla pagina 1di 6

The Road that leads to Adobe...

11th July, 2014: Adobe India visited campus (the proverbial first company :P) . The recruitment process started
with two tests on Interview Street.
Test 1: Aptitude (45 Questions, 50 minutes): It was very easy, basic quant and logical reasoning. 30 questions
on quant and 15 on LR. Some people would suggest trying out apti questions from R.S Aggarwal and what not,
but its really not necessary at all. Just concentrate, keep an open mind and do it fast. For CAT junta its gonna
be a cakewalk.
Test 2: Coding round (20 questions, 120 minutes), had to write codes (functions only) for 7 questions, the rest
were C-output, OS (Scheduling, Synchronization etc). This too was quite easy, basic programs like reverse a
linked list, palindrome of a number, sum of two numbers equal to N, Multiply two numbers without using the
addition operator etc. Just solve previous years adobe placement papers most of the problems are repeated.
Finished it half an hour before the scheduled time, I was glad I did so, because there was a blackout after that
and things went haywire. They did compensate it by giving 40 minutes extra, but with the overhead of
harassment.
The two tests were over by 1 P.M, there was a PPT scheduled at 5.40 P.M and at the end of the PPT, they
announced the names of the shortlisted candidates. 25 were selected for the interviews, divided in groups of 5
and each group assigned a time slot. Luckily, my slot was at 10 P.M, had about 3 hours to get things ready.
Within, this limited time frame things were done in the following order:
1. Eat : (In the cafeteria): As I finished my meal I saw the adobe guys leaving the cafeteria, went up to them
and asked Sir do we have to wear formals for the interview and what documents do we need to bring along. The
senior engineering manager (more on him later) replied, Ah its not necessary at all, just come in whatever you
are wearing and bring your resume along with you, nothing else. I did exactly that, went in the same t-shirt and
jeans that I was wearing, but still needed to get a copy of my resume.
2. Get the resume: Rushed to the Xerox shop near CC-3 to get a printout of my resume that done paced back to
the hostel to have a look at my projects and skim through the basics of OS.
3. Revise, Bath, Get Dressed, Shave (and in the process injure your left ear with the razor): Browsed
through the OS slides (thanks to Satnalika for helping me out with this ). Flipped through my project
reports and I was done. Braced myself for the interview and set out with just the CV in hand.
12th July, 2014 (12.05 A.M) Round 1 (HR, Strangely enough): A friendly looking guy, looked at my CV
started with the usual stuff, tell me about yourself, why adobe blah blah blah. Asked me about my projects there
were quite a few of them so he asked me which ones are your favorites. I told him about the Stamp
Segmentation from document images and tweet mining engine. Briefly explained what it was all about in nontechnical terms (remember this is the HR). Then he said OK sounds good enough but how will you
commercialize them and put them to practical use. Well, I was ready with that, for the stamp segmentation one I
said, it can be used in insurance companies, banks and government offices for automated verification of official
documents. For the tweet mining engine, gave him a contrived scenario, consider a journalist writing an article
about the latest football match, he/she would like to know the peoples feedback on twitter, but its a daunting
task to sift through the millions of tweets and find the ones related to sports. Easy way out feed the tweets into
the engine and it will classify them, sounds like magic but works in practice. Then he caught me off-guard with

this question, The students of your college think that blindly doing competitive coding will get them a fat paycheck, but thats not true in real-life what do you think..?? . Thought for a second and replied, Well Sir, there
is nothing wrong with competitive coding, it really helps to improve your coding skills, but for me coding is a
means to an end and not an end in itself. And thats what I have always tried to do through my projects,
applying my coding skills to solve practical problems and doing things that matter. After that we deviated to
quite a philosophical discussion about life and times, it was great, felt like talking to a friend not HR. I was
frank and honest with him and he seemed to like that, even he divulged details about his career and life. He
asked me about my family and other such stuff during these few minutes.
Do you have any questions for me...??, cardinal rule, whenever asked anything like this try your best to ask a
sensible and inquisitive question (this shows your interest in the company), but do not ask just for the sake of
asking. I asked him about the work culture at adobe, he countered saying, Why......?. I answered, Because
its the people, their interactions and their interpersonal relations that make a company and build a brand, the
buildings and the pay-packages come second to the people who make the place great. He countered me again
saying, So what do you think about people at Adobe..?? . Well from what I have seen in your PPT (Yes I did
actually hear what was being told in the PPT, had no other choice was seated in the front row :P :P ), you guys
seem to be a lot of awesome and cool people, you do not constraint your employees by putting up artificial
barriers around their work. You let them have a free rein, let them try to do things in their own way, let them
fail, stumble, fall and later pick themselves up and thats how I think you usher in the ambience of innovation
and creativity in the workplace and instill confidence in your employees. (Seems like a textbook answer I
know but trust me I hadnt prepared this or any other answer for the HR round). He replies with a smile on his
face, And there you have got your answer.
Then, he gave me a puzzle to solve, quite an easy one readily available on the internet though (didnt know it
back then). Given sorted numbers from 1 to 8 fill them in a grid such that no adjacent elements are in adjacent
grids. Started thinking for a while, he asked me for my approach I told him, first we must put the first and last
elements in the grid, then take one element from the beginning and one from the end and place them in the grid,
keeping in mind the given constraints. Seemed like the only logical thing to do (and it turns out that I was right).
Ok, he said you dont need to solve the puzzle for now, but can you formulate some type of linear equation to
model the constraint. I said, mod(x-x0) = 1, where x and x0 are numbers in the adjacent grids. That quite about
sealed the deal. Ok, he said, I want you to go to bed now, get a good nights sleep, but I definitely want to
see you tomorrow morning buddy. I walked out of the room thinking to myself, whoa!!! what a cool guy.
Things to take away from the HR round:

Be clear and measured about what you are saying (do not contradict yourself).
Speak confidently and not too fast.
Make your case, and drive home your point, as courteously as possible.
Be honest and frank and whenever possible make eye contact with the person while answering.
When asked about your pros and cons, be humble in mentioning your strengths, do not be ostentatious,
(read flamboyance is highly disregarded). Be gracious while accepting your weaknesses and also let
them know how you are working towards overcoming them. This sends a positive vibe of your
willingness to improve yourself.

There were three more rounds, all of them technical I have made an attempt to present them in the form of a
play, the main characters are:
Muchhad : Because he had a moustache.
IIT K guy: Had a calm demeanor, happy face and sharp looks
Everyones Nemesis: Because he was the toughest to get past in the interviews.
12th July, 1.15 P.M (Round 2) (Muchhad Round): He walked in 5 minutes before the interview and took my
CV (his usual way of doing things). Here is how things went.
Muchhad: I will ask you questions of OS, data structures, algorithms and basic C.
Me: OK, not a problem but wont you ask me anything related to ML and AI, because most of my projects are
in those fields.
Muchha: OK I will ask, but first the basics. First question what is a pointer..??
Me (thinking to myself, really!!): Explained it to him in details along with a block diagram of the memory.

The next few questions revolved around basic data structures like binary trees, linked lists, stack, queue
definition of the ADT and the expected time complexity of the operations.
Muchhad: Do you know about N-ary trees..??
Me: Yes, showed him two alternate representations one using just the usual N-pointers and the other one using
the binary tree representation using pointers to the siblings and the child of each node.
Muchhad : OK, write the code for the level order traversal of the N-ary tree.
Me: Wrote it down, using a queue, pushing in the root first and then print the siblings at the same level and push
their children (if any) into the queue, repeat until queue is empty. Made a mistake in the code, forgot to print the
values of the siblings but corrected it soon enough.
Muchhad: Now over to OS, what is a process, what is the difference between a thread and process.
Me: Gave him textbook definitions of both, then I added an example of thread consider Microsoft word, there
are multiple threads running, one for auto-correct, one for auto-save, a third to take care of indentation and fontsize etc etc..
Mucchad: How do you achieve synchronization..??
Me: Semaphore, Mutex, Critical Section. Explained what these terms meant in details.
Muchhad: What is fragmentation..?? How do you deal with internal fragmentation?
Me: First part was easy enough, I didnt have any straight forward answer for the next question, but tried to
come up with something, I have a way of correcting internal fragmentation, but dont know whether its
applicable in practice or not. Gave him a way of connecting the empty spaces in each page using a linked list
and then improvised upon it.
Muchhad: Smiled at me and said, thats not how we do it in practice.
Me: Oh... so how we do it in practice...??
Muchhad: Its written in the book please look it up.
Me: OK
Muchhad: Do you have any questions for me..??
Me (oh yes I do, was waiting for this): Yes, I want to know about the digital marketing algorithms that you use
to target ads to the customers.?? He explained it to me in details. Then I asked about, the suitability of data

structures and algorithms in their commercial products. He answered all of them in a hurry, we were nearing
lunch time, he asked me to wait in the room, he will confirm with the HR and let me know of the decision. I
waited in room, the HR came to me said Rupak you can go have your lunch but be back by 2.20, we will start
the next round by 2.30. Rushed to the hostel, had a few mouthfuls of the gourmet meal :P.
12th July, 2.45 P.M, Round 3 (IIT-K Guy):
IIT K Guy: What courses have you done..??
Me: Machine Learning, AI, DBMS, Data Structures and Algorithms, OS and I know about Image processing
although I havent taken an official course on it.
IIT K Guy: OK so you know about C/C++ right, I will ask you questions on that.
Me: OK but, why dont you ask me questions from machine learning I really like that and all of my projects are
closely related to that.
IIT K Guy: OK what is Linear Regression..??
Me (smiling internally, this is what I had been waiting for): First explained the basic concept behind regression
analysis, why we do it. Then derived the equation of the best fit line using the method of least squares.
IIT K Guy: What is meant by linear here..??
Me: Sir, linearity is only in the combination of the terms of the expression not the individual terms, there might
be higher powers of the independent variable present in the individual terms but still it will be called linear.
Thought of venturing into other forms of Regression analysis like Multi-linear regression, Ridge Regression,
MARS, etc but decided against it.
IIT K Guy: How would you fit a circle/sphere through the data points...?
Me: Thought along the same lines and showed him how to derive the equation of the best fit circle/sphere.
IIT K Guy (his eyes sparkling with excitement): Suppose that a decision boundary overfits the data points how
will you correct it.
Me: Sir this is the classical problem of bias-variance trade-off, we can use a regularization parameter to limit
the error rate and prevent it from reaching zero or a pre-defined threshold.
IIT K Guy: Thats good enough, now lets move on to C/C++
Me: Sure.
IIT K Guy: Do you know about virtual functions..?
Me: Yes, explained to him what they are and how they are useful in the upcasting and downcasting.
IIT K Guy: So how does the compiler keep track of the virtual functions??
Me: Told him about the virtual pointer and the virtual pointer table.
IIT K Guy: Ok so you have a class with only two integer member variables and nothing else what will be the
size of the class??
Me: Without thinking twice, 8 bytes (considering that the size of integer is 4 bytes).
IIT K Guy: Really isnt there anything else..??
Me (getting a feeling that something is messed up): I told him about the default constructor which is supplied by
the compiler, and then deviating to structures in C, telling him about slack bytes and padding.
IIT K Guy (Getting me back on track): Ok forget about that for a while, you have read compilers right so how
does the compiler implement the virtual functions in the derived...?
Me (a bit perplexed): Started with the virtual pointer table and said that the derived class will inherit the table
from the base class and override its entries with its own. Seemed logical enough.
IIT K Guy: This is the way, it is actually done in the compilers, did you know this from before.
Me: Really I didnt (which is true).

IIT K Guy: So now what will be the size of the class that we were talking about..??
Me (eureka moment): It will be size of the two integers, plus the size of the pointer to the default constructor of
the class. Thus, even for an empty class, it will have at least the size of the pointer (which is usually 4 bytes of a
32 bit machine).
IIT K Guy: Let us move on to algorithms asked me to code two simple questions, one was to find the first and
last occurrence of a repeating element in a sorted array, the other was to arrange 0s, 1s and 2s given in an
array in sorted order.
Me: Coded both of them and explained why it works.
IIT K Guy: I guess we are done, do you have questions for me..??
Me (oh boy yes): I asked him about how they manage the terabytes of data everyday which is analyzed for the
their content based advertising.
IIT K Guy: Do you know about Hadoop...??
Me: Yes I do and explained Hadoops map-reduce, then added, this is all theoretical knowledge how is it
implemented in practice..??
IIT K Guy (With a grin on his face): For that you need to come to Adobe
We shook hands and he led me out. And I knew that only one thing left undone is to face the nemesis.
12th July 2014, 5.10 P.M, Round 4 (The Nemesis)
Nemesis: How are your interviews going..??
Me: They were OK.
Nemesis: Just OK or good.
Me: They were fine.
Nemesis: Tell me about yourself..? What are your hobbies outside Computer Science...?
Me (seriously is this a tech round): Anyway answered him and ended up discussing about Game of thrones :P
Nemesis (coming back in form): Gave me a question on two child processes, something which he had given to
everyone before me.
Me: Tried solving in different ways but each one had its pros and cons couldnt give him the best solution.
Nemesis: What is the different between malloc and new..??
Me: Told him the obvious thing, that malloc returns a void type pointer which has to be explicitly type-casted
into the appropriate type. But new automatically does it and on top of that it initializes allocated objects with
zeros.
Nemesis: So what is the major advantage of new over malloc..??
Me (scratching my head): I dont know. (The answer that he was looking for was, new does automatic type
checking and new is an operator which can be overloaded whereas malloc is a function)
Nemesis: Difference between char *p and char p[] ??
Me: Explained in details what each meant with an example.
Nemesis: Given an integer convert it into a corresponding IP address.
Me: Will a binary representation do...??
Nemesis: Yes it will do.
Me: OK, wrote the code for it, it is similar to the conversion of decimal numbers to binary using bitwise
operators, but with quite a few modifications.
Nemesis: Asked me about Little Endian, Big Endian
Me: Explained what each is and the difference between them.

Nemesis: How would you determine whether your machine is big endian/ little endian?
Me: Gave him the most popular and easiest solution which uses a char * pointer to an unsigned integer that has
been set to one.
Nemesis: Last question of the day, how would you serialize a binary tree, that is store its data in a file and later
build the tree when required, only from that data.
Me: Gave him two approaches, one was to do a level order traversal of the tree and save the data... mark which
nodes have children and which dont, Next came up with the obvious solution, store two traversals of the tree
inorder with either postorder/preorder. Then rebuild the tree from these as it is usually done.
Nemesis: Do you have any questions for me..??
Me: Asked him about automated software verification tools which are used at Adobe.
Nemesis: He did explain things briefly and then led me out.
Things to take away from the Technical Rounds:

Think out loudly about the problem you are solving, do not sit there clueless and/or speechless staring at
the paper or the interviewers face.
Explain each step that you are taking and why, especially while writing the codes.
If you do not understand the problem at once ask the interviewer to repeat it, not blankly though, say
something like, Let me get this right, you mean to tell me this, this and this. Is this is what you actually
trying to convey or I have made a mistake somewhere, please let me know.
Be clear about the demands of the question before venturing into a probable solution, clarify things like
expected time complexity/space complexity and/or other constraints.
If you do not know the exact answer just proceed logically and ask for hints along the way if you get
stuck, they will surely help you out.

Back to the story, the long wait finally ended at 6.30 P.M when they declared the results, it all felt so surreal,
the feeling is still sinking in, but yes it feels good

---- Rupak Chakraborty

Disclaimer: All characters in this story are fictional, resemblance to any person, whether dead or alive is purely
co-incidental