NVIDIA interviews
March 15th, 2015

I contacted Marko Misic about MUPS (multiprocessor systems) course that he held, and was told that usually people that listen to this course are interested in working an internship at NVIDIA. I got interested and started visiting course extracurricular. I first applied while in my second year of studies, but I never got contacted back. So, next year I tried again.

It’s good to have a current employee at NVIDIA to forward your application, and Marko Misic helped me get in touch with Andrija Bosnjakovic, who’s an NVIDIA employee. They both verified and corrected my CV and then sent it to the office. My CV was sent in the late November, and I got first response within two days.

In total, two teams contacted me for two different positions:
Infrastructure Architect (IA) and Software Engineer (SE).

After you apply with your CV, teams that are interested in you will contact you and try to schedule an interview. They will probably require that you send them your resume as well. (note that CV != resume)

Preparation

My main resources were the books and websites mentioned in the Microsoft written test post. Re-doing programming problems, reading CUDA books again to freshen up knowledge, visiting bunch of websites regarding graphics pipeline and OpenGL specification. Reading object-oriented theory and patterns. I tried to cover everything that I possibly could, but after my first interview for the IA position, I focused more on the graphics and GPGPU rather than C/Cpp programming.

I prepared certain answers in advance, so I don’t spend too much time thinking. Where would I want to work an internship, why do I want internship, what do I know best, what I hope that internship will bring to me, my key skills, diploma project ideas – that were some of the questions that I had written down and answers were on my screen during the interview. I also included a list of the questions that I wanted to ask to a interviewer.

Also, learn about the company that you’re applying for. I knew quite a lot about the history of the company, and I followed latest news over Twitter, so that really helped.

Time for interviews!

SE position

First interview

It was a phone interview, and connection was quite poor, which made interview a bit more difficult. Questions were regarding classes, composition and virtual methods. “Could you simulate class inheritance with a composition?” I had to write code that mirrors each word’s letters in the sentence. So, “Hi there.” would become “iH ereht.” I wrote it in plain C, and was asked about thoughts on optimization, or translating it to a more high-level C++ code.

I wasn’t satisfied with my answers, so I believe that my interviewer wasn’t happy also. That was the only interview that I had for the SE position. That team later waited for a IA team to come with a decision before continuing with the second interview (which never happened).

IA position

First interview

Five days after sending my CV, I had first interview for the IA position. I wrote questions that I was asked during the interviews in the note after the interview, so I might have forgotten something.

Intro and basic programming questions (~20min):

Getting more graphical (~35min):

Outro, questions that I asked the interviewer (~5min):

I was really, really satisfied, and confident that I did well. Other colleagues informed what questions they had on their interview (all were for SE position), so I was really surprised that I was asked more about computer graphics than the usual programming problems. I was delighted to talk about graphics on the interview, so I was happy. Positive, both for me, and I believe it was also for the interviewer. I later asked my friends that were into graphics about the textured quad problem, but no-one was able to provide a correct answers to the problem, so I guess that question really helped me make an impression.

Second interview

Second interview was via Skype, because phone connection was having some issues. Interview was a bit shorter than the first, and a lot less about programming. It was scheduled around 19 days after applying.

I was asked about my experience working with clients. How I treat them, how do I handle difficult situations and what I think that difficult situations are. I was asked about experience with libraries, stl, boost etc.

Interview wasn’t that formal at all, which I liked. We talked about our experience with clients on both sides, what I enjoy doing and how did I get started with all of it. It was more of a HR talk, than programming talk, well first half of the interview at least.

In the second part, I was asked to solve a real world problem. You are a sys admin and you are responsible that computers in the network get all the antivirus software’s updates so they stay secure. I was asked how would I approach that kind of problem, how would I solve it and then to describe exact technologies and methods that I would use to implement such system.

Interview was quite different than the first one. Barely and C/Cpp questions, no graphics or GPGPU questions. Talk was about experience with clients mostly, and that one real world problem at the end. Though, I was really satisfied how it all went.

The results

I was told that there would be two interviews. So, I waited for some time for them to wage a decision. I was a bit surprised when they scheduled a third interview. Third interview was 40 days after applying.

Third interview

This was once again very technical interview, over the phone.

Graphics and GPGPU:

We talked about my personal projects, 3D engine that I wrote and the research I was conducting at the time. Talk about problems, bugs and overall experience while working on those projects. After that, there was talk about real world problems:

Outro: I asked abut the interviewer and its job, the IA team, about the position.

I was very satisfied with this interview also, and so was the interviewer, I believe. All interviews with IA team ended in a good mood, with quite positive feeling on both sides, I reckon. I haven’t wrote a single line of code during all three IA interviews. I was asked more to think and analyze problems, to talk outloud while thinking instead of doing an actual coding, which suited me well.

Epilogue

I got an email 60 days after I first applied, with positive feedback. Santa Clara, here I come! :)

Thoughts

Interview questions are reasonable and quite expected. I was positively surprised with questions regarding computer graphics. I was also first ever who got into a IA team (well, from my country at least), all other interns went to SE position. So, the conclusion that I could draw is – work on your area of expertise, the right team will spot you and contact you. Don’t focus you time and energy on certain topics just because. In my case, I should have spent less time looking into some Cpp low-level things that are really not related to the graphics, but hey, it all went well, so I won’t complain. I was just terrified by some questions that previous interns got for SE position, so I thought that that kind of knowledge is expected from me no matter which team I speak with, which is not the case.

Interviewers are nice and pleasant people. You have to try and understand their position, having interview with who knows how many people a day, they can also get tired. But, if you demonstrate you knowledge well and somehow express you persona, so they get to know you a bit in that ~1h, then all should be okay. Don’t be too stiff, which was happening to me at the beginning of the interviews, but there’s no reason for that stiffness to persist through an entire session.

I really liked the fact that I didn’t need to write code. Not because I’m bad at coding, but because that can complicate things. That one interview for SE required me to write code on paper and then dictate it over the phone, which, when combined with the fact that connection quality was poor, resulted in a small disaster. Other colleagues, when prompted to write code, used some kind of online collaboration tools, which is not a bad option.

There were moments when I wasn’t sure what was happening, or is my process still active. My advice would be – don’t hesitate to contact recruiters and ask them for updated. It will make you life easier and less stressful and it will show them that you’re interested and involved in the whole process. So, work on your process! That includes preparation, active involvement and friendliness during the interviews. It’s in your/theirs, best interest to find a suitable and enjoyable position/person to work at/with. If you have some concern or if you want feedback – ask!

Overall, I enjoyed the whole process, amplified by the fact that I got a positive feedback, of course. A bit of temptation, a bit of anxiety, but in the end, it came down to normal programming/graphics questions, and if you know that, you’ve got nothing to worry about.

Special thanks to Marko and Andrija for helping me during the process.

tags: , ,


Comments:

Marko commented on December 5, 2015 at 22:53:

Nisam razumeo, da li su ti ovo sve bila usmena pitanja i da li si pisao neki kod, posto si napisao da ti se svidelo sto nisi morao da pises kod?

abstract_algorithm commented on December 7, 2015 at 13:00:

Za IA poziciju, sve su bila usmena pitanja, sve je bilo receno kroz razgovor. Nikakav kod nisam niti pisao, niti pricao, vec sam samo konceptualno objasnjavao kako bi pristupio resavanju problema. Sto se tice SE pozicije, tu sam diktirao kod preko telefona. Mada, obavesten sam od strane kolega koji su takodje imali intervjue za SE da su neki od njih pisali kod na nekom online collaborative servisu, gde moze real-time da se menja i gleda kod, tako da intervjuer moze da prati dok kucas kod. Dakle, zavisi od pozicije, pa od toga zavise pitanja i problemi i format istih.