I want to share my experience with an interview I had a few weeks back. Out of respect I will not name the company, and I will keep some details very generic. I found a listing on a job board and applied directly to the company site on their careers page. The company has been around for a few years. They are building out a software that is focused on helping other companies retain their customers and close more sales by having a good feedback loop and good communication across all departments.
I was initially contacted by the CTO and we had a phone screen for about half an hour talking about our backgrounds, the needs and direction of the company, and some of my technical skills. A few days later I was invited to come in for a technical interview/meet the team. The technical interview lasted about 45 minutes. The goal was to figure out how I would design a code a survey. This part of the interview was all whiteboard.
The scenario was this: You are a developer and you have to come up with a survey to help your company sell more granola bars. What questions would you put on the survey? Why? How would you code a database to accommodate for the survey questions? What tables will you need? Write out what the tables look like and how they connect with one another. How would you display this information on the front-end. How will you combine multiple elements and display it on a graph? Write out a SQL query that retrieves that information. It is important to note that most of the whiteboarding session was all pseudo-code with the exception of writing specific tables and SQL queries.
I think I did alright on most of the parts and I did struggle a little with the SQL query as I am not writing those all of the time and I should have done a little more review on that beforehand. After the technical portion I met with the owner and a few other team members. They asked some questions about things I was looking for in place to work and talked about what the things they were doing.
After my interview I was invited to complete a take-home coding test. I was told the test was fairly straight forward and would take me 2 to 4 hours. It ended up taking me quite a bit longer than that and the test did have some twists in it. My task was to access a specific API and then build out the front-end with react and the back-end with node. I was to make my calls to the API from the back-end to mimic having a database. I needed to access a list of 7000 users and display the information to the front-end. It also needed to be performant. The main issue was that the API would not return consistent data whenever you accessed it. It generated random users every time you requested information, even when you used a seed. So if you wanted to grab just a user, even a seeded user, you had to get ALL the information you needed to access in one go. You have no way of just accessing a first and last name, and an ID, and then later making a request for that specific user. The API was randomuser.me .
What I ended up doing was requesting just the information I needed for 1000 users at a time. Basically every time you went to a new page you would grab a 1000 users with all the info that was needed and then store it in state on the front-end. Doing it this way, I felt I made it as efficient as I could, and I only ended up needing to make 1 route on the back end to accomplish what I needed. Again, I want to reiterate that there is no way of going back and requesting more information for 1 specific user. I really had to play around with this API a lot and scour the docs to figure that out, which is why this project took me as long as it did, which I’ll talk about in a moment.
After I submitted my completed project I had a follow up interview online for about 20 minutes with another developer to go over my code. They seemed pleased with my solution and said it was almost identical to the solution they came up with. I asked how long it took most other participants to complete the project and I was told 7-8 hours, which is about how long it took me. Another important thing to ask as well in interviews is for proper expectations such as how many hours you will be expected to work. This was for a salaried position but the expectation was that 60 hour work weeks might be required often. You need to be your own judge and decide if that is something that is worth it to you when choosing an employer to work for. Remember that you are choosing your employer as much as they are choosing you.
I ended up hearing back a few weeks later that the company would be moving forward with someone more senior and that’s fine. I learned some things and gained some experience from this interview process that I will take with me. I hope you have gained some insight into what a developer interview process might look like. Good luck in your journey!