What: 1-1.5 hour interview with camera. 2 interviewers! 1-2 coding problems.
When: end of November
Log:
Interviewers introduced themselves
Me introduced myself
a. my internships/working experience
b. why Bloomberg?
c. Most challenging project/task
Coding problem: Design Underground System
I have already solved this problem before the interview, because I solved the top 20 problems by frequency with the tag Bloomberg. But the description of the problem is very open-ended, so most of the time was spent on clarifying the API, creating and justifying data structures, and handling exceptions.
I asked them questions about Bloomberg.
Interviewers were very friendly, chatty, supportive, and interested. Everything went great and two days later I received positive feedback.
General tip: solve top by the frequency problems with tag Bloomberg.
What: 1-1.5 hour interview with camera. 1 interviewer. 1 system design question.
When: end of December.
Log:
Interviewer introduced himself
Me introduced myself
a. my internships/working experience
b. why Bloomberg?
c. What makes me unique? What do I consider my best quality in programming?
d. How does my current employer assess my performance?
System design question. The same as here but without any algo tasks, only system design.
I started with the notification system, clarified the protocols for communicating with the client, API, how often notifications should be sent.
Then I drew a high-level structure of the system, divided everything into services, explained which service would be responsible for what.
After, before generating notifications service, I added an aggregator and began to describe its functionality, structure, possible algorithms / data structures and alternatives.
During each step, the interviewer asked many questions, reasons, clarifications, and possible alternatives. But I kind of answered everything.
Finally, I got into caching and scaling. Added local / distributed caches; explained where I will scale horizontally, where vertically; explained where it is better to use which storage; where I would do replication where not.
At this step, the interviewer became very active and asked about the failure situations of almost every part in turn. In some part, I even got stumped because I noticed that my proposed solution was overengineering, but then I started from the beginning and found a simple solution. I think this "deadlock" even became an advantage for me.
I asked him questions about Bloomberg.
The interviewer was friendly but significantly less interested and chatty. At some point, I even thought that I had failed the interview. But most likely he was just not in the mood or tired. Of course, I made a lot of mistakes because it was my first system design interview, but nevertheless, I kept the structure and I am satisfied with myself. Of the main mistakes, I would like to highlight the fact that I did not specify the amount of data, although it was clear what a lot and what a little.
The next day I received positive feedback and an invitation to the final non-technical interview.
Help materials for this task: general structure + aggregator moments, notification system