Thursday, December 21, 2017

Facebook Engineer Gorkana Bjedov : How to Prepare for Technical Interview



p.s. I was attending the Live Video on Facebook and missed on asking a question I had in mind. Hence I followed up with Gorkana on Linkedin with my question and she was most humble to reply back instantaneously. I understand that like me there are many other people who struggle with System Design Questions and hence I am sharing this with all of my readers. I think this is one way I can truly contribute to others life in a meaningful manner and I am happy to do it. This is truly the motive of this blog. If you have your own set of experiences you would like to share, you are welcome contribute as Guest Author.

Followup from LeanIn Facebook Live.

Hello Goranka, I listened to your Facebook live video today on LeanIn Channel. I wanted to ask you a technical question and missed the opportunity. I have been interviewing with companies and the one place I lack is System Design Questions. Due to lack of my experience in this developing systems from scratch, I feel quite lost. A questions as simple as design a highly available and reliable tinyurl.com or design a elevator system for 100 floor building. What would you recommend to me and how can I get good at them?

Response :

Hi Amit - we usually ask detailed systems design questions from more experienced candidates and not fresh graduates, but... Here is what I would do:

1. find resources that discuss design in general - there is, for example, a very good book by a Civil Engineering professor called "Why buildings fall down" that discussed design failures. You will actually learn a lot, even if it looks like this has "nothing to do" with programming.
2. When designing a system, you need to first understand what are the requirements, the risks and trade-offs. LEt's take a look at the highly available and reliable system - there are many of them out there that are described in a great level of detail: Google's search front end (GFE) is probably the best documented one. I would definitely read a paper on its design. Same, for example, for Hadoop and for Facebook photo and video storage. Basically, look at the examples of systems currently designed for those requirements, read about them and understand why they made the decisions they made. 
3. For any other design priority - let's say something that has to be super secure - I would look for examples of products that fulfill that requirement and see how they accomplished it. Ideally, two or three examples should be enough, and you will usually find a lot of software for pretty much any problem in the open source. 


Basically, you prepare for it like you would for the coding problem. You find examples, and you study. Again, in this case, I would say something like one or two study-cases per week, probably not one every day, but also, don't let a week go by without making some progress. Keep notes. Understand underlying issues and common solutions. Pretty soon, you will see patterns emerge and you can then focus on those.

No comments:

Post a Comment

It's OK to be NOT-OK.

02/22/2021  Last week I was just un-productive and was not doing enough to talk about. I also wanted to say that weeks before the last, I ha...