I'm a rising senior at Siena College but ever since high school, I've been trying to prepare for these interviews by practicing my competitive programming skills and creating my own side projects on GitHub to show to potential employers. The idea of working at a large company always sounded like a great experience for me because whatever software I create would be used to improve the lives of potentially millions of people. An added benefit of working for these companies is that you'll be given an extremely competitive compensation which sweetens the deal even more. So with my background and motivations established, let's get into my training!
I used a variety of sources to train but mainly it was HackerRank and Leetcode since they are used during technical interviews and share a lot of the same questions. My language of choice was Java since I've been using it for years since high school and my more advanced computer science classes have been using it to the point that I had an intermediate to advanced level of expertise in the language. Every week I made sure to complete at least 1 to 3 problems that were easy or medium-level difficulty. As I gained more confidence I was able to work in a hard level question which was especially helpful during some of my interviews with Amazon and Roblox since they usually use that difficulty level in their technical assessment.
The biggest reason I got into computer science and software engineering in the first place was that so I could make apps that would either be helpful or fun to share with friends. So during my junior year of college I decided to pick up a minor in entrepreneurship. This became a nice talking point during software engineering meetups because I was able to speak to both engineers and business executives in a clear and concise way which helped create more opportunities down the line. One of my more exciting talking points was that I was working on an app with a cross-disciplinary team of business and a tech student (guess who?). This helped me improve my communication skills to an even greater degree because I had to be able to discuss how the app was going to be built using cloud services such as AWS and then talking about the benefits of having hybrid cross-platform apps that can drive down development costs and decrease the team's burndown rate that way. Another project I was working on at this time was my capstone software engineering course where I was a project manager on a team that was developing a website to manage the school's annual high school programming contest. All of these experiences helped contribute to my overall problem-solving skills as well as my ability to work and communicate with a team.
Oh also, NETWORK! Nothing is more amazing than being able to see a potential software engineer not only have an extensive set of problem-solving skills but are also able to get their name out there and communicate clearly with others. It's arguably harder to get an internship than a job since companies more often than not lose money from internship programs since they're used for mainly recruiting potential employees. So be sure to go out there and create a good reputation for yourself to really set yourself apart from your peers.
I used my GitHub profile and a small personal website hosted for free on Netlify to show off my portfolio of projects. My projects were mostly Java or web app-based but I also had a few fun projects from when I participated in the Ludum Dare, a 48-hour game competition. For my resume, I made sure to include my GPA, college awards, projects, and of course my past jobs as a teaching assistant and in tech support. If you can, try to have someone in the industry you'd like to work in taking a look at your resume to get feedback and continually improve upon it.
Let's be honest, hunting for a job is a long and tedious process. That's why I recommend using tools such as LinkedIn and Glassdoor to help with connecting and finding potential employers. LinkedIn also sends you daily or weekly emails with jobs that match your skillset for free so take advantage of it! After what felt like hundreds of job applications I heard back from Amazon, Roblox, IBM, and a few other companies to take their technical assessments. Amazon and Roblox had some difficult questions that almost took most of my time and had some test cases that really challenged me to think about all of the edge cases that could happen. Some skills that can help me during these interviews was knowing how hash tables worked (literally my bread and butter for those O(1) lookup, insertion, and delete times), regular expressions, and recursion. Those interviews didn't end up working out afterward which stung but I was able to learn from my mistakes and it helped me out tremendously during my interview with IBM.
I can't go into complete details of what was asked during my interview but I can give a general outline for how it went.
It started with a 3 part technical assessment hosted by HackerRank that honed in on my ability to create algorithms and efficiently utilize data structures. Some of the questions allowed me to use brute force but some I had to take a much more efficient approach to reach at least an O(N) time.
After a few weeks I was ecstatic to find out I was moving to the next interview with IBM. It was scheduled to take place on HackerRank again but this time with a senior engineer. I was nervous beforehand so I made sure to keep practicing my problem-solving skills on just easy questions so I wouldn't be exhausted and would build up my confidence before the interview. During the interview I talked to the senior engineer who was nice to talk to and was genuinely interested in projects I was working on and how I responded to different types of problems. In the second half of it I was given a question that dealt with the topic of encryption and decryption but since the interviewer was clear with all of the problem constraints and it made the problem easy to solve.
After a few weeks I finally heard back from IBM saying that I got the job! After all of the long hours and hard work I was able to secure my first job with one of the most established tech companies out there. Everyone I've talked to at IBM from recruitment to management has been extremely welcoming and helpful in the process and I recommend any students next year to look at IBM for their potential internship.
I was originally supposed to be working at the Poughkeepsie location but since we're in quarantine now, IBM worked hard to create and layout a wonderful remote internship that makes me proud to be an IBMer.