Go Interview Structure
Answer interview's questions in a structure fashion has never been easy even with experienced developers. This is even more challenged with non-native English speakers like Vietnamese young developers. Sometime candidates talk too much or too little, or even make bad impression to interviewers by saying things they shouldn't say,... Those little things often lead to a failed interview.
For young and non-native English speaker developers in Vietnam, we need a simple structure so that they can learn and practice themselves. I created and applied successfully the interview structure below for more than 50 developers for Go developer position. Most of them are fresh graduate with less than 1 year of experience and the success rate of the interviews is more than 97.5%.
If you're a young Vietnamese developer who are trying to pass a Go interview, this guideline is for you. The guideline is provided as a template with some very basic rules so that you can use it for practicing with your mentors and easier to make your own styles.
Although the rules listed below are very basic, but a lot of people makes those mistakes. Hence make sure you are very clear the below rules before your interview:
- Be respectful to the interviewers.
- Listen to the questions carefully.
- Be clear about your role and what you did in the projects.
- Don't just say "I know it" and stop. Instead, talk about your real experiences with the technologies in your past projects in full context. And if possible, provide your analysis or comparison with similar technologies.
- Don't assume that interviewers know your projects or familiar with the domains/technologies in your projects. Instead, provide them a full context of what/when/why and how did you use it.
- Don't use "we". Instead, use "I" when talking about your experiences.
- Don't argue with interviewers about why they use a specific technology instead of another one. Instead, ask them about the context that led to the decision of using it.
- If you don't know a specific technology, don't just say "I don't know". Instead, admit that you have not had a chance to work with it and talk about your experiences with similar technologies.
- Be honest, be nice and smile.
- Practice makes perfect.
Introduce Yourself And Projects You've Worked
There are a plenty of ways to introduce yourself and an overview on what you have worked on. Through my experiences as mentors for more than a hundred of developers, providing enough key information is very important in the introduction.
I suggest to talk a very overview about your self and at most 2 or 3 relevant projects that you have worked on.
- Your Name, might be age?
- How many years in software development?
- Whether you are a back-end/front-end/full-stack or DevOps developer?
- What programming languages, technologies you are good at?
- Tell them at most 2 or 3 relevant projects you've worked on:- Type of project: web, desktop, mobile, API, microservice application?- An overview about the goal/purpose or main features of the project.- Technologies are used in the project.- Your role/what you did in the project.
Describes A Project In Detail
When talking about the detail of a project, the general guideline is to go from "overview" to "detail". Talking about the overview first to make sure the interviewers know the big picture of the project, and talking about the detail to show them your deep knowledge of the project.
- Type: web, desktop, micro-service, API application, CLI,...
- Your role: fix bug/implement new features. What features did you worked on?
- Architect: describe in detail back-end/front-end/database technologies, deployment, how components communicates to each other. Technologies used in the project,...
- Structure: how did you structure the project? how many modules? How each module is structured?...
- Library: names of some big libraries, why did you choose that libraries instead of others.
- Deployment: Docker/Docker Compose, Kubernetes? How did u write Docker file, Docker compose file, Kubernetes?..
Talk About The Exam
Some customers request candidate to take a coding exam before the interview, hence you must be clear on what you've done.
- Summary the exercises requirements and your solution.
- Calculate the big O notation for the exercises.
Some interviewers might interested in relevant technologies and the list of the technologies can be varied depend on project's requirements.
The ground rules for answer these questions is that you must know how you used those technologies in detail. If you don't know, just admit that you don't know. If you know some similar technologies, talk about them to the interviewers so that he/she can understand that you can learn it quickly.
Some interviewers also interested some fundamental information like:
- What version of the technology you are using?
- What did you use the technologies for? And why?
- Why don't you use technology X instead of technology Y.
- What library did you use in your project? Why did you choose it instead of another?
In most of the interviews for Go position that I'm the mentor, they often ask for below technologies:
- Elastic search
Questions About Go
Although there are many questions an interview can ask a candidate about Go, I found more than 95% interviewers ask below questions when it comes to Go specific questions.
- What are the differences between array and slice?
- What are the differences between Goroutine and Thread?
- How did you structure your code in Go?
- What framework/library did you use in your project?
- How did you measure performance of your application?
- What do you want to ask the interviewer?
- Don't stop until they say so. Don't just say yes and no, talk more about your experiences in detail so that the interviewer understand you and your work.
If you want to read more about common interview process, I recommend you to take a look at this page: https://techinterviewhandbook.org