Question: Tell me about a time when you realized you needed a deeper level of expertise to do your job well.
Answer: Fixing a crash in our daemon for scanning. Usually because of some segmentation fault. Analyzed the backtrace. But had never learned about low-level knowledge of how this works. The backtrace log was difficult to read, I couldn’t understand it. I didn’t understand about the symbols and function pointers. I couldn’t use it to debug the the crash. The crash handler wasn’t giving me all the information I needed. I realised that there was a second crash in the crash handler. I studied the backtrace and saw that there was a call to malloc in that, and that isn’t safe because that may fail. But this was implemented in Glibc, which shouldn’t be a problem, but I still checked online. Saw that other people were having the same problem, due to the use of malloc when sorting the symbol table.
I did research and found that others recommended the use of Libunwind. I imported it, and ended up using its API for a better trace. As a result, I was able to fix the first crash.
Analysis
Competency asserted: Learn and Be Curious, Dive Deep
Job title: Software Development Engineer (SDE II)
Vote: 👎
The candidate described when he was trying to debug a system crash, and experienced difficulty when attempting to read the backtrace. So, he started to learn how to read backtraces effectively, during which he discovered that there was a second crash in the backtrace crash handler itself. While he thought that this should be trustworthy Glibc code, he decided to dive in and unexpectedly found a call to malloc(), which is where backtrace was failing. He searched online to find a solution to replace Glibc with Libunwind to give him the call path he needed to debug.
His Learn And Be Curious example was fantastic. It demonstrated his ability to unblock himself by seeking new knowledge and provided a clear and strong signal for dive deep.
Learnings
This was a great story for both learning and be curious and dive deep. Not only did the candidate acknowledge a shortcoming and work to bridge that gap by learning how to read backtraces, but he also dove deep when that technology was failing and replaced it with a better alternative.
Leave a Reply