As a software developer, there are few things more exciting than being invited to participate in a multi-stage technical interview. Recently, I had the opportunity to go through a three-stage interview process at Craftsmen Ltd. that not only challenged me technically, but also allowed me to get to know the company and their culture better.
First Stage
This was a technical assessment sent via email and time limit was 3 hours.
I was given a set of requirements of creating REST APIs that allows users to Confidential create, read, update, and delete blog posts. and asked to implement the solution using Node.js and the Express framework.
Then create a React app that allows the user to view and interact with the list of blog posts from the REST APIs created and asked to integrate redux to manage the state of the blog posts.
Also asked to write tests to ensure that the REST API, Redux store, and React app work as expected.
This was an intense experience, but it allowed me to showcase my technical skills and demonstrate my ability to work under pressure.
Second Stage
It was an onsite interview, which allowed me to meet the team in person and get a better understanding of their work culture.
During this stage, I was asked a range of technical questions, including ones related to AWS services, Lambda, S3, REST, Node.js, React, Redux, and lifecycle methods. The team was friendly, engaging, and clearly invested in getting to know me both as a developer and as a person.
One of the questions that particularly stood out to me was the one about why I used a custom error handler in my demo project. This question allowed me to demonstrate my understanding of the importance of handling errors properly in a production environment, and how a custom error handler can help to provide a better user experience.
Followings are a list of questions/topics we discussed there.
Can you introduce yourself?
What are the products you have worked on?
What are your strengths in frontend/backend development? (One interviewer mentioned that CSS is like black magic to him.)
What AWS services have you used?
If millions of files are uploaded to S3 and a Lambda function needs to be triggered, how would Lambda handle the workload? How would it work with SQS? [This was a dream question for me based on my work expectations]
Can you explain how dead letter queues work?
How does Lambda work, and what are its limitations?
Can you explain how to upload a file from your application to a private S3 bucket?
What are the advantages of REST, and how does it work?
Why did you use a custom error handler in your assignment project?
Are you satisfied with your demo project? If not, how would you improve it?
How often have you used unit tests in practice?
How is your code deployed, and from your answer, is it possible to run end-to-end tests before merging a pull request? If so, how?
Why are unit tests necessary?
Can you explain how a pure component works?
Have you encountered any scenarios where you needed to customize the Shadow DOM library in React?
Can you explain the lifecycle methods of a React class component?
How can you achieve the same behavior of lifecycle methods in a functional component?
What are the alternatives to Redux?
How can you share data between components?
Can you explain how the Context API works?
What is Kubernetes, and what problems does it solve?
In the event that a pod crashes in Kubernetes, who is responsible for fixing its state?
In one of your project, you used AWS ECS to deploy your application. Can you explain the reason behind this choice? Is it more expensive compared to other options?
Why did you leave your previous job, and what issues did you encounter? How did you try to communicate these issues to your superiors? If you encountered the same issues at this company, what would you do?
Are you interested in pursuing an MSC degree? If so, why? What are your goals after completing the degree?
How did you utilize your BSC credits in your practical experience, and how would pursuing an MSC degree for two more years help you?
Another highlight of the interview was when the team discussed their products and the kind of challenges they face and solve. This showed me that they are passionate about what they do, and that they have a deep understanding of the industry and the technologies they work with.
I appreciated the way they took the time to understand my experience, interests, and goals, and asked thoughtful questions that allowed me to showcase my skills and knowledge.
Final Stage
This was a non-technical interview where we discussed the company's facilities, work culture, and the negotiation round. This allowed me to get a better sense of the company's values, and to see whether I would be a good fit for their team.
Overall, the interview process was challenging but rewarding, and allowed me to showcase my skills and get to know the company and the team better. I appreciated the friendly and engaging nature of the interviews, and the way that the team took the time to understand my interests and goals.
Top comments (0)