(These 15 interviews include Google, Adobe, Samsung, Arcesium, DE Shaw, but as they are on campus calls, sharing more details is against university's policies.)
I am a final year student about to graduate from my Bachelors and I recently interviewed for a tech giant. Obviously, I was very nervous before the interview and was trying to give myself pep talk by counting in my head how many interviews I have faced before and it would be fine etc. Well, I just realized including 4 interviews recently, the count sums up to 15.
I felt I should probably review this roller coaster couple of years.
My strengths were core CS subjects and I was an academics-oriented student. Lots of my peers were really good competitive coders and to an extent, these coders were worshipped in the college. On the other hand, students like me were nerds and studying subjects was not "cool". But after this interview, I realized these subjects are my strong point and I should be proud of it. Some very good competitive coders were rejected after the first round because they were not able to answer OS/DBMS.
I need to solve "random" questions without looking at the topic tag. When a question had the tag of, "Graphs", I didn't even tried, thinking it would be too difficult. There are so many array/linked lists hard questions and easy graph questions, and I was rejected on an easy graph question.
I did not have enough awareness of technologies and general CS knowledge. There were questions like, what you see first when you open cmd, how did you install "ubuntu" (dual boot) on your laptop, and sometimes I just need to open my eyes and know the nitty-gritty of basic things I do on my laptop.
Machine Learning MOOCs like Andrew Ng and college courses helped a lot. I had done the courses and also prepared Andrew Ng course notes. So, that proved to be helpful even though making notes takes a lot of patience, I am grateful to myself I did it.
Also, there are some courses online which teach you how to apply an algorithm in Python without knowing its proof or mathematics. Staying away from them helped me.
It was for a startup and I was giving a video call interview where I was supposed to teach as I would teach in the (online) class. (Interviewer was for an online instructor role.) I was rejected since they expected that I would write on a whiteboard kind of software live, but I expected they would have their own software/tools which I would have access to after joining. So, I prepared a presentation to teach. Also, I had to code live for the class, which I was not prepared for. Just clear all this before the interview, if things are left vague.
It was a very fun discussion about the complete journey when we compile a C++ program, how it is converted into .exe, and how .exe is run. He asked me to write a function of checking whether a number is prime or not, and trace it all the way. Compiling/Assembling/Linking/Loading/making a Process Control Block/which variables are stored where etc. I had some confusions regarding what exactly is an .exe file and allocation of variables likeiin for(int i = 0; i*i <= n; ++i). (Read more about ELF Format and it is a local variable which is stored in the stack, Also, try to compile, assemble, link separately (gcc -c, ldd etc. ) and just check for the output of each step. It just cleared all confusions for me.)
It was a very light interview for the PPO of the company I interned at. She just asked about my internship experience and career goals etc. If you are going/may go for Masters, just don't mention. (or you can be honest if you like). Secondly, if they ask about things you didn't like while interning there, do not mention things which makes it look like you do not want to join as Full Time (Telling from a friend's experience).Things like, "Work pressure was too much", "I did not like this city" because these things are not likely to change when you join as Full Timer. Stick to the things like, "In the pantry, there are cold drinks only, healthier options like juices can be added", "I would have preferred more team meetings. " and similar things which are changeable in short run.
Lessons from interview 5 actually helped here, and even though questions were out of my comfort zone, I just didn't collapse into "I don't know", I also practiced writing code on google docs which made my thought process more organized in the interview. Also, check for edge cases before interviewer asks you to or if possible while writing code. Or mention the interviewer when he starts looking at your code that you have not tested yet.
I just can't identify when a question can be solved by DP. I wrote the whole backtracking solution and analyzed its time complexity O(2^n) then thought about DP approach. So, my clue to start thinking DP is always getting TLE or having exponential complexity, or interviewer hinting ("Are you recalculating something?" :p). I need to check for overlapping subproblems on reading the question the first time.
Just write clean codes and a couple of days before interview start practizing on whiteboard/paper. Regarding manipulation of a linked list, keep checking they are NULL or not, and have descriptive names like previousNode and currNode, and not do things like a->next->next = b->next->next, and get confused yourself, lmao. Luckily, he gave me another chance to change the code and he himself renamed the variables.
I need to work on my system design concepts. Yeah, that's it. Very frequent questions like designing music app, Book My Show, Amazon, have a prior discussion about them with your friends on different requirements.
This was my first HR interview which turned into grilling session. (:P) I already had a job offer (ABC) and was interviewing for someone else (XYZ). Both were on-campus, so you can't lie as they can ask the college about your offers already. She asked me which one I would join if I received the XYZ offer. I replied, XYZ only because it is one of the best in terms of work culture. She said, when you join, you will know the culture is not that good. Then I talked about work in both the companies, and she said, we will give you a bad team and bad work, then which one you would join. I kept on giving reasons for joining XYZ and she kept on eliminating them. I was actually not sure which one I would1 join, and maybe that's why I was not able to convince, or maybe she was grilling everyone. Before these interviews, just be prepared with 100 good things about the company you are interviewing for. (and maybe 100 reasons why you are leaving/not joining other company).
Overall, I have had good interviews and bad interviews. But, while drafting this post, all those which I remember clearly and had a lot of valuable lessons were bad bad interviews. I have grown to like these interviews. Desperation to get the call, nervousness, a night before the day, the process itself, wait for the result, everything about them.
Happy Interviewing!!