Placement Experience - Amit Jain (Uber)

The Learnings from the internship session plays a significant role in building an elegant placement strategy. The strategy could be different for each of you based on where you used to get stuck during your internship session experiences. So the gist of my failures summed up to weak coding skills (at least not as strong as my fellow mates 😛) and difficulty in explaining what I already knew. Based on it, during the 5th and 6th semester, I spent most of my time in Coding and learning core cs subjects(OS, DBMS, Networking). At the end of the 3rd year, I was pretty confident with my Coding skills and knowledge of core cs subjects.



As coming to summer's preparation, you should be precise about the topics, skills, subjects, and languages that you are going to prepare during this period. and remember, "Consistency is the key". In the next sections, there are some exciting tips for you, based on how I prepared in summer.

How to prepare effectively for placements or internships?

Make Notes

This habit could benefit you in numerous ways. Two months of summer is a lengthy span, and in core CS subjects, most of the vital content is theoretical. So it's a good practice to keep them organized in your handy notes. Write down the key points of all the topics that you think are important and keep revising them. When your placement session begins, these notes help you in quick revision before interviews as well.

Improve your Communication

All your knowledge only makes sense if you communicate it elegantly. Many times, we knew the solution but are unable to put it the way it is in our minds. That's why it is essential to learn "how to explain". For this, you could use the following methods I practiced, and they worked for me.
  • Do both sides (Interviewer and interviewee) - Take a pen, paper, and a set of questions with known solutions. Start by explaining the question loudly to yourself (Interviewer), then explain the solution in the same way(Interviewee). Keep improving it till you got satisfied with yourself. I prefer you to do this exercise daily for two coding questions(with known solutions). 
  • Give mock interviews -  "Thou shalt not get nervous in interviews😛" Do you get nervous in interviews? The less nervous you are, the more effectively you communicate. A mock interview is the best way to deal with your anxiety and nervousness. Mock interviews boost confidence. It's better to stammer in mock interviews than in real ones. There are some excellent websites that provide a platform for mock interviews. You can try Pramp(Mock Interview Site). 
  • Discuss with a friend - Discuss your knowledge with a friend. Decide topics that you are going to study during the day and, in the evening, ask tough questions from each other. Take his/her mock interviews, discuss what should be the best answer to an HR question, ask puzzles. In this way, you never skip anything. I used to do all these exercises with my batchmate Piyush Gupta(puzzle gawd), and we came up with some creative HR answers too 😛.

Coding

Remember the days when you used to stuck with one coding question all day long. Don't do this in summer, because you don't have much time, right? Here are some coding habits, which might help you in interviews, online tests, and utilizing your summer season efficiently.
  1. Take at least one short contest (duration: 1-2 hrs and questions: 3-4) daily. I used to take Leetcode's virtual and mock contests.
  2. Restrict the time that you spend to come up with an approach. I set my limit to 45 mins. If even after 45 mins, I couldn't be able to come with an approach, then I used to jump in the solution section.
  3. You find some algorithms or methods tough to get in the head, or you forget them very often. Its because those algorithms are not in your daily coding routine. For example, there are many famous named algorithms to find the shortest path in graphs, but you only use the most efficient ones in Coding. So better play safe with the rest of them. Write them down and keep revising regularly.
 "If your coding skills are weak, then try to spend most of your time improving it. Everything else would make sense only if you clear Round1 first."

In summers, the platforms I used to practice Coding are Leetcode and Codeforces. And GeeksForGeeks articles for learning data structures and graphs algorithms.

System Design

I believe this is the part about which most of you are afraid, so were I. For "freshers" like us, this round is mostly logical and based on the syllabus contents. For example,
  • The Interviewer could ask you to design an ER or UML diagram of an application or any project mentioned in the resume.
  • He could ask you to optimize a particular task in an application.
  • Object-oriented modeling related questions.
  • Any other logical task related to system designing.
Also, try to learn system designs of popular apps or websites like BookMyShow, Twitter etc. I took the help of Youtube channel Tech Dummies and some random Medium articles whichever I found easy 😃.

Puzzles

Puzzles are used to check the interviewee's presence of mind and problem-solving ability. In general, many companies avoid asking puzzles, but still, they are in fashion. The following are the resources that I've used to increase my puzzling skills.
  • InterviewBit puzzle section.
  • Logically Yours (Youtube Channel)
  • GeeksForGeeks Puzzle section
Don't feel puzzles as an extra load. I prefer you to solve 2 to 4 puzzles daily. This won't take much of your time, and at the end of summer, you will be knowing nearly 200 puzzles(and that's a lot).

CS Subjects

The subjects I prepared for are DSA, Computer Networks, OS, and DBMS. You can add more subjects based on your interests. How much time you should spend on learning or revising each of them depends on your current knowledge. My DBMS was weak, so I used to give relatively more time to study its concepts. Geeksforgeeks has a great collection of asked interview questions from these subjects.

In Leetcode's discussion section, users keep posting their latest interview experiences worldwide. Have a look at them too 😃”

Resume

A resume is your first impression. You could use templates provided by our college or resume building websites. I started working on my resume from the first week of July. I urge you to go through the link to make a better resume.

 I hope my preparation strategy will help some of you guys in getting a good job. Now I will tell you about my Uber Interview Experience.

My Uber Interview Experience

There were 4 rounds. Each of them was an elimination round.

Round 1: Online Coding - 90 mins (Hackerrank)

There were only 3 Coding questions in this round. 
  1. An easy Tree-based question. (straightforward - 100 marks).
  2. Delete Edge to minimize subtree sum difference (Easy - 100 marks)
  3. A Question based on GCD with the sieve of Eratosthenes. (Moderate - 100 marks)
The cutoff needed to clear this round was 300 (Yes you read it right. All questions). I solved all of them.😅
Further rounds held at the Uber Hyderabad office.

Round 2: Interview (Uber Hyderabad Office) (30-40 mins)

The Interviewer asked some questions related to networking and OS. 
  1. Discussion on Thrashing
  2. TCP Vs. UDP
  3. How the OS handles Page Faults?
  4. Explain the layers of the OSI model with their brief explanation.
The above questions were asked in a rapid-fire style, so I didn't remember all of them. The Interviewer was just checking my basic understanding of OS and networking.

After this, the Interviewer switched to the Coding part and asked two questions.
  1. Next Greater Element
  2. Given a number n find the number of valid parentheses expressions of that length. (Interviewer already mentioned to not provide the solution with Catalan number).

Round 3: Interview (Problem Solving 45-60 mins)

In this round, I was given only one question to solve. He was only interested in the approach and didn't ask to code. 
The Interviewer was quite friendly and provided some hints, which helped me to approach the problem in the best way. I believe this was the toughest round.
After he was satisfied with my solution, he asked if I have any questions for him. I asked him why Uber doesn't use OTP verification like Ola to verify customer credentials (Thanks to Kartik Mahendru). And then we had an entertaining discussion on it 😊

Fun Fact: This round was taken by the famous Youtuber Gaurav Sen.😁

Round 4: Interview (HR + System Design + Project) (80-90 mins)

The Interviewer asked me to propose a solution for BookMyShow's concurrency management in the seat booking procedure. I came up with some solutions, and he kept pointing out flaws in them. In the end, he finally agreed with my approach.

Then he asked me to brief him about my projects. He was interested in my mini project and asked some questions related to it.

Some more discussion on
  1. What are design patterns and why we use them? Explain any two of them. 
  2. Discussion on database normalization.
  3. Which is better for distributed systems(normalization or denormalization)?
    Ans is denormalization
  4. Let say you are the leader of your project team. There is a conflict among your teammates in choosing a design pattern for a particular task(All are proposing a different design pattern). How would you resolve this situation?
  5. What do you do when you can't find the solution to a problem (In the context of the project)?
He ended the interview by asking if I have some questions for him. I asked him about his responsibilities and how he feels in the company.

Fun Fact: During this whole interview procedure, None of the interviewers saw my resume

Result: Selected

Some Interview Tips

  1. When you stumble with a new question in interviews, don't get nervous. Instead, try to deal with it constructively. Just share whatever approach (even if it's incomplete) you have in mind with the Interviewer, he would surely help you to think in the right direction.
  2. Before solving any question, clear all your doubts regarding its explanation with the interviewer. You could simply ask the interviewer politely to repeat the question. 
  3. Prepare some questions beforehand, that you could ask the interviewer at the end of the interview.
“Set daily tasks, write down all the activities you are going to do on the day, make a timeline and complete them. At the end of the day, this will give you a feeling of satisfaction and keep you motivated throughout your journey.”

All The Best!!! 

Comments

Post a Comment