Larson & Toubro Infotech arrived at our college for their specialized engineer selection process. Applicants were supposed to register on their portal and fill out a trainee application form to proceed to the online gamified coding challenge.
Online Gamified Assessment: The online gamified coding challenge had 3 progressive levels ie the next level could only be attempted if the criteria for the last one were met. The applicants who were able to clear level-1 of the challenge were eligible for the interviews. The purpose of level-2 and level-3 rounds was to elevate the CTC for the applicant. An applicant clearing all the levels was eligible for the highest CTC that LTI was offering. After attempting each round, applicants received an E-mail confirming their eligibility for the next round, then they could refresh the Mettle platform and move ahead to the next level. Each coding question had 12 test cases: 2 examples, 2 basic, 2 necessary, 2 corners, and 2-time complexity test cases. It was necessary to clear all the test cases to proceed to the next round.
Level-1: The first level is comprised of a technical MCQ round and a coding question. Failing to clear the MCQ in itself, made the applicant inligible for the coding question. This was an eliminatory round as failing to clear it made the candidates inligible for the virtual interviews. The round lasted around 70 minutes.
- MCQ round (40 minutes): This round consisted of 40 questions that covered the following topics: OOPS & Programming Basics (loops, pseudocode, algorithms), SQL, PLSQL, Operating Systems, Computer Networks, Web Concepts, and Software Development Life Cycle. Although
- Coding Round (30 minutes): You are provided with a string(S) and character(C). You need to print the value that represents the most number of distinct characters that exist between any two C in the S. If S does not contain C, print 0. If S contains a single occurrence of C, print -1. The character itself should not be included in the distance characters.
Input : S = my name is granar C = a Output : 7 Explanation: The largest substring between the two occurance of 'a' is - 'ame is grana' and distinct character between the two occurances of 'a' are - m,e,i,s,g,r, and n, ie 7 distinct characters. Input : S = my name is granar C = y Output : -1 Explanation: Single occurance of 'y'.
Approach: I solved this question by using a HashSet and a variable, result. The initial value of the result was set to 0. Once C is found in S, set it to -1 and then keep on adding the characters to the HashSet. Whenever C is found again, set the result to the size of HashSet.
Level-2: The second level comprised a single coding question. The round lasted around 45 minutes.
Coding Round (45 minutes): (I can’t remember the question exactly but it was something similar) There are two ponds: A and B. The fishes of pond A are stronger than pond B. The fishes from both the ponds were picked up and put in a single pond . Each fish in Pond A has a value associated with it. When a fish from pond A attacks pond B, the fish in pond B comes under the influence of fish under pond A. When a fish from pond A attacks another fish from pond A, if its value is greater than the fish it is attacking, the fish being attacked and all the fishes under its influence come under the influence of the fish that is attacking. All the attacks are provided to you in a query array in which each query is formed of 3 integers: attacking fish, defending fish, and 1: attacks within pond A or 2: towards pond B. Print the fish that has the most number of fishes under its spell alongside the number of fishes following its leads.
Input Number of fishes in pond A = 4 Number of fishes in pond B = 4 A = [4,3,2,1] Queries =[[1,1,2],[1,2,2],[1,3,2],[3,3,2],[2,4,2],[1,4,1],[1,2,1]] Output : 1 5 Explanation: Fish number 1 has influenced the most amount of fishes. It directly attacked fish 1,2 and 3 of pond B.Then fish 3 was stolen from it. Then it attacked fish 4 of pond A, as its value is greater it caputers fish 4. Finally it attacks fish 2 of pond A, and captures both fish 2 of pond A and fish 4 of pond B which was under fish 2's spell. Final result = 1(B)+2(B)+3(B)-3(B)+4(A)+2(A)+4(B) = 5
Approach: A simple brute force approach worked for this problem. One just had to create another array for pond B and a HashSet for fishes to the fishes under their spell respectively. The array of pond B should contain the index of fish of pond A that is leading them.
Level-3: The third level comprised a single coding question. The round lasted around 45 minutes.
Coding Round (45 minutes): The question was similar to the one mentioned in this article, the only difference was that the value for L and R were identical for all test cases. I solved the question using the same dynamic programming approach mentioned in the article.
Virtual Interviews: It took around a week before I was called for my virtual interview. All shortlisted applicants were called up for a meeting where they were explained that their clearance level would not affect their interview and it would be identical for Level-1, Level-2, and Level-3 candidates. So, one cannot receive a downgrade or an upgrade in levels based on their interview, the only 2 possible were: selected/rejected. The applicants were told that they would be judged on the following parameters: Communication skills, Technical skills, Verbal ability, Willingness to Learn, and Professional Attitude.
Technical Interview: All applicants were asked to prepare for the following topics for the technical interview:
- Programming Concepts-C, OOPS, etc.
- DBMS & RDBMS Concepts-Basics of SQL
- Data Structures- Linked list, stacks, queues, etc.
- Basics of Operating Systems-Unix/Linux/Windows, scheduling algorithms
- Networking Concepts- LAN / MAN /WAN / OSI Layers
- Web Concepts-Architecture of 2 tier or 3 tier Web application
- General- Software development life cycle..etc.
As the topics weren’t out of the ordinary, I was more or less prepared for all of them, but in my case, the interviewer asked me questions on programming concepts and projects only. We had an in-depth, discussion on my projects and certifications. Although the discussion wasn’t too long, the interviewer was very thorough. Then we moved on to Programming Concepts. I have tested OOPS and related concepts(relationship). This was followed by a few questions based on java:
- Tell me about garbage collection in java
- What do you know about collections class and interface?
- Basics of hashing
- What is a wrapper class
- What is a vector class
- What is serialization
- Have you ever worked on the applet
Before ending the interview, The interviewer asked me if I had any questions and I asked the following question: “If I was offered the role full-time offer, what skills should I work on that will help me in transitioning to the SDE role at Amazon? The interviewer told me that learning AWS and spring would be helpful and that I should continue working on my DSA
Before ending the interview, The interviewer asked me if I had any questions and I asked the following question: “If I was offered the role, what skills should I work on that will help me in transitioning into the role comfortably?” The interviewer told me that in the role I would get the opportunity to work on a lot of different technologies, and he recommended mastering Java as it is my primary language.
The interview went well and I was quite confident that I would be called up for the HR round.
HR Round: The interview lasted merely 7/8 minutes. This was the simplest round and I am pretty sure that one’s chances of getting selected after reaching this round are 99.9%. I was asked to introduce myself. Then I was asked if I would have any issues with relocating to any state in India and If I was okay with the 2-year service agreement. Finally, I was the generic where do you see yourself in 10 years question.
All in all, 68 students were selected from my university. This ended up being my backup offer, I was selected by Amazon for a 6-month internship. My only suggestion would be to learn from all your rejection and get over them as quickly as possible. Just 2 days before the amazon process, I was rejected by Morgan Stanley ( Technical Interview). Keep on working hard to achieve your goal and all the best!
Tips for Interview Preparation:
- Consistency is key. Brush up on your DSA daily and keep on practicing coding questions. Work on building programming logic and developing a systematic technique to approach questions. (utilize InterviewBit, LeetCode, GFG, and Hackerrank)
- Work on your ability to write clean and comprehensible code on the first go (without making logical or syntactical errors). Debugging is time-consuming, it will help you during interviews and tests.
- Try to incorporate touch typing. My typing speed used to be around 30 WPM, It almost took me 8 months to turn it to 95 WPM, but I am certain that it helped me during the interviews. ( 10fastfingers, Keybr, and Typingclub are some useful resources)
- Before the interview, read up on the company. Their principles, work culture, etc.
- During the interview, always discuss the brute force logic before moving on to the more complex solution and ask as many clarification questions as you want. Even if you have attempted that question before, try to portray that you are attempting it for the first time.
- Be calm, composed, and confident during the interview. It is not necessary to answer all the answers to the T. Even if nothing is striking you, keep speaking your thought process and plausible solutions. You might be close and even if you aren’t, at least, the interviewer would be able to interpret the way you approach problems.