Log in

No account? Create an account

Previous Entry | Next Entry

Cisco phone screen

I had a phone screen last week with the manager of a L2VPN (layer 2 virtual private network) QA group and one of her direct reports. I spoke with the manager first:

"Why do you want to do testing?"

I said that I think testing is an important part of software engineering, and also gave some summary examples of testing I'd done at Equinix and Nominum.

"Where do you see yourself ultimately, professionally?"

I said that I'd like to be a principal IETF contributor.

"What type of testing did you do?"

I said it was primarily performance- and availability-based white box testing. Her group is more focused on functional and correctness testing.

"Would you switch to a development group after, say, six months?"

I said that I would not do that (by choice), but that I would if this is what the company needed me to do. (I did not feel comfortable being asked this question.)

"How did customers use Equinix's route servers"

I described the peering models for both the EDRS and MLPE platforms.

"Which project did you consider your greatest accomplishment"

I said the congestion avoidance project was my greatest accomplishment, as it united two engineering subfields that I most enjoyed – control theory and networking. I gave a description of the project and what I did. She asked if it was similar to QoS (quality of service), and I said no, it promoted fairness among traffic queued according to packet attributes (IP source, destination, and TCP port, a precursor to flows).

The manager's direct report asked me questions for the rest of the screen:

"Give me the algorithm for determining whether a number is a power of 4"

Due to either nervousness or the way the question was asked, I misinterpreted it to have asked whether a number is a perfect fourth power (ie., if you took its fourth root, you'd get a positive integer). So I started off giving a naive (linear time) algorithm for the former, but when corrected, and asked to adapt my algorithm to the intended question, I did that. She then asked if there were ways to both generalize simiplify it, for example taking into account divisibility, and considering any power. I modified the algorithm to report failure if the divisibility test failed, assign the input to a temporary variable, then to iteratively divide that variable's value by the base and compute the modulus at each step. The general idea was to stop dividing if you either reach the point where the value divided by the base equals the base (and there modulus is zero), or the value divided by the base is less than the base (with a nonzero modulus). This needed to be cleaned up a bit. I did, however, give the right answer for its time complexity. I think I could code this fine if just sitting down and implementing it by myself instead of having my thought processes interrupted by questions.

"How do you convert binary numbers to their decimal representations?"

For some reason, I thought she was asking me what the machine representation of a (floating point) decimal number was. I said that I didn't remember. Then she said that we would get back to it later, but that it had something to do with the next question, which was about determining whether an IP packet was valid. Then I realized what she meant was how to convert the string of binary bits to a decimal number, and said so (feeling frustrated because I do know how to do that), but she said we had to move on.

"How would you validate an IP header and how would you process a sequence of them?"

After asking for clarification that we were discussing IPv4 packets, I proceeded to describe how typical programs that work with packet headers allocate space for the header, read as many bytes as are necessary (based on the header's size), etc. She wanted something more specific, so I started to describe how the header files one includes in network software programs delineate the header fields by their sizes (eg. the source and destination are 32 bit unsigned quantities). This still didn't seem to make her happy, so I asked what it was she was actually trying to get me to say. She then asked me how I would tell, for example, if the dotted quad representation of an IP address (which is not how it's stored in the header) was legal. I said ok, you have to check that each field falls within the range 0-255, and then something about not exceeding the largest legal address. (While talking, I was trying to remember what the IPv4 multicast range was, but could not, offhand, and should probably have taken into account that is legal (but would most likely not yield the desired result, if used).) At that point I was trying to picture an IP header as depicted in RFC 791 and couldn't remember all of the fields (and feeling frustrated that yet again, I'm getting stuck on details that are practically always referred to in work situations). As to how I would process a sequence of them, I said they could be placed on a queue, and that in fact, the network stacks generally do that. So we got into another discussion where I wasn't really sure what she was trying to get me to say. She asked me if a linked list could be used to process the sequence, and I said yes, and that in fact, some kernel implementations keep the packets in a (doubly) linked list (as I was thinking, which a queue can be implemented with).

Since the entire interview had run over an hour, she had to stop, and asked me if I had any more questions. I first asked if we could go back to the conversion of binary to decimal question (since I knew exactly what to say), but she said there wasn't enough time. So I asked how long she'd been in the group; she said a couple of years. The manager didn't rejoin the call, so that was the end.

I give this one a 50/50 – could've been worse; could've been better. I wish there was something I could do that would reduce my nervousness to the point where I answer questions based on my overall aptitude level, or at least, how I'd answer them if it was just something that came up during the normal course of work.


( 2 comments — Leave a comment )
Mar. 19th, 2012 12:58 pm (UTC)
That sounds frustrating. It's especially hard over the phone, where you don't get the visual cues like the quizzical look that tells you you've misunderstood.

It sounds like starting each (longer) answer by restating the question might help.
Mar. 19th, 2012 07:30 pm (UTC)
I have always always always hated interview questions that make the applicant remember or picture off the top of their head information that would almost always be in visible reference when you're doing the actual work.
( 2 comments — Leave a comment )