Interview Experience

Photo by Ru Yang, Summer 2022

I started my job hunting in 2022 Fall and experienced many interviews during the following three months. So I want to share a bit of my thought about interviews for new graduate positions. Most interviews I experienced can be divided into three kinds: HR/Recruiter interview, technical interview, and behavioral interview.

HR/Recruiter Interview

Usually, most companies put this interview as the first round. And it is also the less-pressure round for the candidates since it normally costs 15 – 30 mins and won’t involve too many technical questions and tricky behavioral questions. Before this kind of interview, I usually prepare a personal introduction, do research about the company (culture, business scope, recent news, …etc.), and rechecked the job description for which I applied. During the interview, most of my answers are around my research content.

Technical Interview

Personally, I feel it is the most difficult part of the whole interview procedure since different companies have different technical preferences. Even if they have the same technical requirements, they may have different expectations of the proficiency level and test you in different ways. For example, they may all require you proficient in Python and know data structure and algorithm but may test you using different level coding challenges. Moreover, some companies may not use coding challenges. They prefer to ask you technical questions directly such as can you explain what is lambda function and give an example?

For coding challenges, I used Leetcode and school lectures about data structures and algorithms to help me prepare. It is a kind of frustrating process. I still remember that, in the beginning, I even felt hard to understand the solutions to easy questions. The key is persistence. After fully understanding 300+ leetcode questions, I got some good feelings during the coding challenges. I usually check with the recruiter what the format will be for the continued technical interview. If it is technical questions, I will go over the contents around the requirements in the job description. Another key is don’t be afraid to ask questions or speak out your ideas. It is a communication process, and most of the time the interviewers won’t expect you can give the best solutions within a short time. From my experience, they are glad to give you hints to guide you in finding the solution.

Behavioral Interview

I didn’t perform well during the first several behavioral interviews cause I underestimated it and didn’t prepare before it. After, I did a lot of research about how to prepare for the behavioral interview. Personally, I feel the mock interview is the most effective way for me. When googling “behavioral questions”, there are many examples pop out. I usually select 10 – 15 questions according to my experience level and the positions applied. Then let one of my family members ask me those questions, and I will try to use STAR format to respond to each question. After my response, I will ask my family member’s suggestions and then respond to the question one more time according to their suggestions.

Refactoring and Design Pattern Learning Resources Sharing

Photo by Ru Yang, Spring 2022

The first time I hear about the concepts of Refactoring and Design Patterns is in the course CS492 Mobile Software Development. The course taught me some knowledge about how to write code without smells and how to use Singleton (a very popular design pattern) to write maintainable database code. The idea behind it is to centralize database code in a singleton database manager class to ensure that only one instance of an object may exist. Recently, I found an interesting website occasionally, Refactoring Guru, which introduces Refactoring and Design Patterns in a very interesting way.

My thought about Refactoring and Design Patterns

Before talking about Refactoring Guru I want to share a bit of my thought about Refactoring and Design Patterns. In the past, almost every project I worked on is a school individual project. Most time I spent on those projects was focused on functionalities. So I have to admit that I didn’t develop good coding habits. Recently, I went back to check the code of my previous projects. There are much obvious code smells such as one method doing many tasks, inconsistent code styles (some variables use camel case, and others use snake case), comment-out codes and etc. Along with time, I found that I even didn’t understand some parts of the code I wrote before. It reminds me of the topics about Refactoring and Design Patterns.

Intro Refactoring Guru

Refactoring Guru is an interesting website I found recently. I was attracted by this website when a first opened it. I felt that I was reading an electric comic book because it includes many comic illustrations. Containing many interesting illustrations doesn’t enough to make it stand out. It also explains every design pattern clearly and detailed. Each post content includes the problem this pattern intends to solve, how to implement, pseudocode, pros & cons, relations with other patterns and etc. Besides, there are lots of images and graphs included to help users better understand. In addition, for each design pattern, there are code and usage examples in popular development languages (Python, C++, Java, PHP…etc.).

Conclusion

Like many beginners in software development, I put my most effort into how implementing functionalities in a smart and effective way. However, writing clear and tidy code is also important, especially in real-world team projects. Learning refactoring and design patterns could help me to become a more professional developer.

Link to Refactoring Guru

https://refactoring.guru/