October 21st, 2011

classic cylon

f5 phone screen

I had a phone screen with f5 last Friday. As I wrote a few days ago, I thought it would be more stressful than dancing at Boogie, and that I'd be more nervous. It was both.

In preparation for this interview, I looked on Glassdoor for sample interview questions. There was a mention of questions about the TCP state machine. Since it is complex, I decided that I would keep the state machine in a web browser on my desktop, and if I was asked a question about it, I would first tell the interviewer that I was referring to the state machine from the RFC. I was asked a question about it during the interview, but when I told the interviewer that I was referring to the RFC to answer the question, he asked me another question about why TCP was reliable. I gave an answer about the windowing system, to which he asked another question about why windows were necessary instead of sending a packet at a time and getting one in response. My response was that TCP acknowledgments (acks) call for sending a new window starting with the first expected packet in a sequence after a successful transmission of a window, instead of sending and receiving packets in lock-step (one at a time).

Other stuff that came up included a (Perl) regexp for social security numbers; how to invert a hash lookup (I had forgotten, but the way the question was asked, I wasn't sure what the interviewer meant); what happens within a machine from the point someone types in a URL in a web navigation bar to when the packets leave the machine (this called for a lot of detail about library calls to obtain TCP port numbers given port names, which I didn't remember fully); what the difference between TCP and UDP is; to give two examples of UDP (one was easy -- DNS, but I couldn't think of another offhand, other than the old 'talk' protocol from the 1980s). There was also a question about why HTTP was necessary that I didn't remember at first, until I thought of some traces I had taken with the Lynx browser while at AltaVista, then I remembered that the protocol included support for fetching cached data, data from proxies, etc.

Long story short – f5 decided to pass on me, saying that they were looking for someone whose background more closely matched their needs. I think I might have done better on this interview if I'd had it while at AltaVista, because HTTP was much more fresh in my mind. (Of course, BGP and related topics such as the problems with massive autonomous system (AS) set expansion on network prefix filtering would not have been fresh in my mind.)