Most of the times, interview questions and success stories of our target companies are available via various channels but rarely do we find the narrative of interview-experience of a person with the same answers as he answered there and then.
Saransh (BIT Mesra) hired by Adobe, on campus last year, shares is interview experience with us. He joined Adobe in June 2014.
Let me start from scratch as I have an ample amount of time. Don’t get tired after all off-campus stuff is really lengthy. At least it happened with me.
1: Aptitude – Trivially simple. Time could be a problem for junta not preparing for CAT. Fifteen questions in fifteen minutes.
2: Quant – This was even more trivial. Thirty questions in thirty minutes.
These two rounds were entirely objective, multiple-choice with no negative marking.
3: Engineering – This included a lot of general stuff: Thirty minutes. 15 marks
4: Code – This was a real test. A lot of questions involving pointers, data structures and quite a few that I hadn’t seen before. We were supposed to write working C code in a limited time. 15 questions. 45 marks.
Q1. He asked me to tell him about my favorite project.
Answer: I told him about the web-browser that I had developed for cell-phones. I thought that was the only project which was closest to what Adobe was working on. He appeared satisfied with my answers.
Q2. He then looked at my grades.
He commented that my lowest grade – B- was in Digital Image Processing. I just looked at him like a doofus thinking of what to say. But he quickly added, ‘don’t worry, it happens.’ So people, be fully prepared to explain any anomalous grades. I was prepared with the explanation of the W in my grade-sheet but not of the B-in DIP. I know that this is really stupid considering that I was interviewing with Adobe. Don’t make this mistake.
Q3. He further asked me a question that had been asked in Round 4, written test:
Describe an optimal algorithm to find the second minimum number in an array of numbers. What is the exact number of comparisons required in the worst case? Note that they didn’t ask the order in Big-Oh notation. They wanted the exact number of comparisons.
Answer: I screwed up, big time in this question. I had superficially discussed this question with my friend a while ago and he had outlined an algorithm which I thought that I had understood, but I hadn’t. I started off explaining it but got stuck in the middle. He sternly told me to read it up again.
Q4. Given a polygon (could be regular, irregular, convex, concave), find out whether a particular point lies inside it or outside it.
Answer: This is an easy, straight question from graphics. You shoot a ray parallel to the x-axis passing through this point. Start with odd parity. Change parity of ray each time it intersects an edge of the polygon (consider a special case of when the line passes through a vertex of the polygon. Change parity only if it passes through a vertex which has one edge above it and one edge below the ray). If the parity of ray is even when it passes through the point, it is inside the polygon, else it is not.
Q5. He asked me to explain Canny’s algorithm to him. (this was because my DIP project was related to this)
Answer: This is simple. Study DIP
Q6. Then, he gave me a practical problem to solve: Suppose you are given an image which contains some text and some photos. How do you find the location of the image?
Answer: I gave various alternatives – from searching for RGB components to using OCR.. he didn’t appear fully satisfied. I think he was looking for edge-detection, but that would fail, if the text contained tables, etc.
Round 2 :
He was friendly at the start but this interview was my worst. He asked me my favorite subject. I said that it was Programming. (He laughed at that)
Q1. Which are the four storage classes in C?
Answer : static, extern, register, auto
Q2. Given a program:
int *k = (int *) malloc (sizeof(int));
Where are each of these variables stored?
Answer: I started off correctly, but he was able to confuse me. He brought in shared libraries, static libraries fundas into the discussion. We had a discussion for about twenty minutes on this. Finally, he was happy with one of my answers because I had deduced which policy made sense and answered correctly. He said that out of all the people interviewed so far (I was second last), nobody had been able to answer all of these questions correctly.
Q3. Question on polymorphisms.
This is easy – get it from any C++ book. He tried to confuse me again, but this time I was ready and he was finally satisfied.
Then he looked at my grades and said that out of all your grades, you have only two Bs and one of them is in Compilers. Why? (Damn it. three non-A grades and that’s all they ask about. What’s wrong with this world?!)
Didn’t you like Compilers? “Not in particular”, I replied. “Fine. Now, I HAVE to ask you questions on compilers”, he said.
Q4. He again went back to the first question he had asked me. Once again, I had no satisfactory answer for him.
Q5. Then he wrote out some code and asked me how the compiler will generate code for it. I gave some answer, but he was clearly not satisfied. I thought it was all over by then.
Then, he asked me for a DIP question. He commented that he had given that particular question to his juniors once and they had done a very good job at it. The problem is this:
A teacher is writing on a blackboard and we want to pass all the information on the blackboard over a low-bandwidth network in real-time. How do we do it?
Answer: I first suggested that we capture only a small portion of the board. To locate that portion, we could search for the chalk in the prof’s hand – of course, taking care that it had the blackboard in the background (no point capturing a video of the prof scratching his chin, na?). Further, if the prof was writing only text, we could convert the video into text by OCR and then transmitting. Simple diagrams could also be reduced to a set of vector-graphics instructions (we rarely, see the prof shading stuff). I think he liked my approach but was not completely satisfied. Anyway, we left it at that and went forward.
Q6. Given a set of words one after another, give me a data structure so that you’ll know whether a word has appeared already or not.
Answer: I suggested various alternatives. but he kept helping me and finally, we came up with an array of pointers to 26-trees (each node of the tree has 26 children). Store every word as a path from the root to a leaf with pointers in the correct places. For example, hello would be stored as – pointer from ‘h’ index of the root array to a node which had a pointer from ‘e’ index of it’s array to a node which had a pointer from ‘l’ index of the array.. and so on. This is both time and space efficient.
Q7. He asked me some questions on Interprocess Communication: What’s a semaphore? How are they used?
He would often pick out words from my answers and ask me what they meant. He wanted to make sure that I really knew what I was talking about. I was able to answer all his questions, but I made the mistake of telling him when we started off that I didn’t know much about this subject as I had done it a long time ago. He was very annoyed at that, apparently because a lot of people before me had said this.
Q8. He then asked me some DB fundas. Transaction. Serializability, Consistent state, etc.
I was able to answer all of them. I stumbled around a bit in a few questions where I was explaining correctly, but not using the keywords that he was looking for.
Q9. Finally, he asked me whether I had any questions.
I thought that I should say something to make him realize that I was not completely stupid and so asked him whether there was any logic to the order in which the short-listed candidates were called. This turned out to be a dumb move. The order was alphabetic and he sent me off with a parting shot, saying “You guys do pattern recognition and stuff and still you can’t recognize such a simple pattern” Me and my big mouth! Moral of the story: Don’t ask questions for the sake of asking.
Round 3: Puzzle round
After the first two interviews, this one was like having a warm bath after being cold and wet for days! I did well in this one.
Q1. There is a clock at the bottom of the hill and a clock at the top of the hill. The clock at the bottom of the hill works fine but the clock at the top doesn’t. How will you synchronize the two clocks? Obviously, you can’t carry either of the clocks up or down the hill! And you have a horse to help you transport yourself. And, the time required for going up the hill is not equal to the time required to go down the hill.
Answer: You have to go up the hill and come back, with a horse, without a horse, getting four equations to solve four unknowns – time to go uphill – with a horse, without a horse, time to go downhill – with a horse, without a horse. Then you can go up the hill and set the clock to ‘(the time when you left) + (time to go uphill with horse)’
Q2. There was one more puzzle.
I don’t remember it. But I do remember that we started discussing ways of generating large prime numbers. I told him the funda of Mersenne primes (luckily remembered it) and he was decently impressed.
Q3. We also talked a bit about my phone browser project.
Finally hired by Adobe. That’s all for the Adobe. They are focusing on your approach and your coding skills. All the best.
You can also share your interview experiences with us. Simply mail your experiences to info@HireTale.com. Do Good Karma, help fellow engineers