Behavioral Question Challenges
Hey guys, As I am preparing for a facebook behavioral interview, I have prepared a response for the question - How do you tackle challenges? Name a difficult challenge you faced while working on a project, how you overcame it, and what you learned.
Situation, Task: When the product X was in a development phase, I was assigned to build a end-to-end Y feature. I had previous experience working with implementing the client side of Y. However, I had never worked on a server side Y feature before and did not get a chance to tackle associated problems.
Action:
The first action that I took was to identify the challenges associated with a real-life Y feature. Next, I tried to ramp up with the network architecture and broke it down to different logical blocks. With this information, I presented a High level Design to the team.
Result:
There were multiple back and forth exchange of ideas with the team and finalized the design. Having followed a structured step by step process, I was able to implement and deploy the feature in the following week addressing all the potential issues. I found this a very good learning and challenging experience.
As a response to this, I am expecting interviewer to drill through the project and the various aspects of it.
Do I need to give more technical details or focus on personal traits like communication and problem-solving?
Are interviewers expecting a more complex challenge from a senior engineer? Is this example not good enough?
YOE: 9
TC : 230K
comments
In one of my previous roles, I was looking into our error rates using x. I noticed more than 20% of our errors were caused from the x module. When I investigated further, I realized that the way our x module had originally been set up, any object in the app could write to the shared instance of x module. At the same time, I was also reading the x objects from another thread to send data to server. This caused inconsistencies in the code and caused crashes.
I came up with a fix which required two main steps. Refactoring the code so that the objects dependencies with the x modules were properly managed using factory methods. Secondly, I synchronized the consumers of the x module using different thread synchronization techniques.
Once this was implemented, I saw a significant reduction in the original errors, making our overall error rate dip sharply. This also provided a better architecture design for these modules.