The process it was really short. I have an introduction call planned for 1 hour. It endured 1 hour and a half.
During the first half hour of the call, the intervewer was speaking about him and Aircall for more or less one hour. Then he told me to introduce myself in 5 minutes as fast as possible. The cal was supposed to be an introductional call, but it finally was a technical interview.
He started shoot me with questions:
- Do you know about Hexagonal Archtecture? I explained him some jey concepts (Domain Layer, Applicartion layer, Infra Layer), the benefits of it, and gave him an example use case for building a payment processing system.
- Solid principles? I explained him what for example the Single Responsibility Principle does, giving him an example of an e-commerce application, where a class handling order placement should not be responsible for both order placement and generating order reports. These responsibilities should be separated into different classes.
- Which best practices do you follow on your team and on code?
SOLID, DRY, Testing, Error Handling, Leverage design patterns like factory or Singleton
- If I know the concept of optimstic or pessimistic Locking. I didn't know this concept much in depth but I had an idea. I gave him some ideas though that I knew like the locking strategy, when is best to use each of them and and some possible examples of use cases.
- He asked me about the complexity Algo for findign the max element in an unsorted array. --> Time COmplexity O(n), Space Complexity O(1)
- Sort complexity: I asked him which sort algorithm did he want to tell him about, but he didn't say specifally, so I said for Quick Sort and Merge Sort algorithms which I knew.
- Then he asked about a practical problem on how I would handle this:
A user has the same page in two different tabs where in one of them, he changes the name of one item. What should he see in the other tab after changing in the other? How a system should handle a situation like this? Which is the issue for user? the complexity?
I explained him reasoining that I had in mind about the issue.
Users should see any updates that they have done in any of these tabs to be appeared. If changes aren't updated on real time then system should handle this. System should handle concurrency, to do a better state management of the global state or to use cache as an alternative solution. In that scenario the system should ensure real time syncing (websockets to keep data consistent) - global state manamgnet, so changes in one tab to be instantly reflected in others.
Overall these questions had to be replied in a small amount of time, like I had to know them by heart which wasn't the case. The interviewer had to think about it beforehand, since he is a hiring manager. I received an email that we will not continue with process. Any feedback at all about the converstation that we had, which I personally find at least rude.
You can do better Aircall.