The process was **fairly quick**. In a **Zoom call** with the recruiter, I was sent a **questionnaire with 13 React and TypeScript questions**, which I found a bit unusual. The call also included **expectation alignment** and explanations about the company.
After that, my **first interview** was a **live frontend coding session**, which included:
- **`useKeyboard`** – a **custom hook** that calls a callback using a `keydown` event listener on the window.
- **`TransactionType`** – using a **TypeScript enum** and an object instead of a **switch case**.
- **`TimerBox`** – implementing a **countdown component** using React hooks.
The **second interview** took place **onsite** and included:
- **Two hours of backend coding**
- **One hour with the VP of R&D**
The **technical interview** involved **adding an audit log** to **MongoDB** using **TypeScript** and integrating it into the **user model** for `create/update/delete` operations.
I had to **first define the model structure** in the database and then start writing the actual code.
Since it had been **several years** since I last worked with **MongoDB**, and I had never written schemas in **TypeScript**, I **didn't manage to fully complete** the task within the given time. However, I was **very close to finishing** and felt it should have been enough—but they thought otherwise.
The interview with the **VP of R&D** was **quite general**. I talked about **myself and my previous work experience**. He asked me to **sketch an architecture** I had implemented in a large project, asked about **indexes in a database**, and also asked **personality-related** questions, such as:
- *"What would a teammate say about you?"*
- *"What are your hobbies?"*
The conversation with him was **great**.
**In conclusion, I’m disappointed that I didn’t pass, but the process was very well-structured, clear, and efficient.**