Saturday, April 07, 2007

The Trip to the Pacific Northwest

For those of you who have been following the job search subplot of this blog, you may recall that I was scheduled to have an interview with a very large software company located up in the Pacific Northwest.

It was a long time coming, with two one hour technical phone interviews in February, a one-month wait for their legal team to decide that my current employment agreement didn't expose them to legal risks, and finally a reschedule of the interview due to illness on my end.

The trip there started way too early on the 31st of March. My wife was gone with the kids on a trip of her own, so I parked the car at a third-party park/ride/fly lot. Check-in was hectic because a lot of passengers were outbound for spring break.

It was the first time I had flown in over six years, so this was also my first experience with the post 9/11 security apparatus. I did my homework, so I made it through with minimal hassle.

The trip went fairly smoothly, with a bit of turbulence in a couple of places. I arrived at my destination around mid-day local time, grabbed a shuttle van to my motel, and got some rest.

I spent Saturday evening and Sunday afternoon with some old friends who had moved to the area about eight years ago. The wife of the couple had worked as the manager of the sales department for my former employer in the late 90s, and she was very excited about the job prospect. They took me out for dinner on Saturday and drove me around the city and the countryside to sell me on the area.

I got a very positive first impression. As someone who has never been a fan of urban sprawl, I was pleased to see just how pervasive trees seemed to be even in recently developed areas. Knowing full well the higher cost of living for the area, I'm still a bit concerned over whether I would be able to afford living out there.

The interview process started Monday morning bright and early a 9 a.m. First up was an recruiting coordinator who gave me the high level view of the business unit for which I was interviewing. She then explained to me the underlying idea of the technical interviews that would follow. She also talked some about how compensation was determined, saying that the salary might not be as high as one would expect from the company, but that generous benefits package would also boost the total value.

I was then shuttled off to another building and met with four guys from the department. One was a staff developer. Two of them were group leads, and then finally I met with the department manager. Each interview took place in the member's office.

There were some questions about my background, but nothing too far in depth. Then came programming questions, which were toy problems designed to give them an insight into my thought process. Here is a list of the questions I was asked to give you an idea of what I was up against.

  • Given two C strings (null terminated character arrays) of arbitrary length that contain the characters of the decimal representation of large numbers, write a function that can compute the sum of the two numbers, storing the result in the larger of the two strings.

  • Given two C strings, one containing some text and the other that contains a pattern that can contain one or more asterisks serving as wild card characters, write a function that will return whether the first string matches the pattern in the second.

  • Given a C string consisting of words separated by delimiting characters like white space, write a function that reverses in place the order of letters in each word, but not the sequence of words. (e.g. "the quick brown" -> "eht kciuq nworb")

  • Given a C string, write a function that removes all duplicate characters, including white spaces, without using any functions in the C standard library. (e.g. "Apple tree house" -> "Aple trhous"

After coding the solution on a white board, I was asked to discuss how I would go about testing the function.

I also got a whopper of a question at lunch time that kept my mind a working up until my flight home that evening.
Suppose you have a data storage medium, like magnetic tape, that can be read forward only once. The medium contains a sequence of random integers ranging from 1 to some very large value N. There are no repeats, and all members of the sequence appear on the tape except for one unknown value. Assuming that your programming environment can store numbers up to the value N and do arithmetic on them, how would you determine the missing value for the case where N is larger than the platform's memory address space?

I gave each problem my best effort, and kept my cool when the interviewers would question my approach. I knew my own limitations, and I knew that my first attempts to write an algorithm were rarely the most optimal. I tried as much as possible to communicate my thinking behind my approach.

It suffices to say that my brain was very much in pain by the end of the last interview. After meeting with the department manager, I was told that I was done for the day. It was about 2:40 p.m. by then, and I had a fear that perhaps my day was ending early because I didn't measure up.

I got a cab back to the motel, spent a little time vegging in the hotel lobby. Then I grabbed an early dinner at a nearby Mexican restaurant. I wasn't feeling all that smart. The Dos Equis helped me achieve a level of self soothing that I might not otherwise would have attained.

At this time, I'm inclined to believe that I probably won't get an offer. It'll be a bruise to the ego, but for someone to have gotten this far without a formal computer science degree and mostly self education, that's not too shabby.

The crucible has been more than just about my marriage, it has been about questioning whether I've lived up to my potential. I've had a lot of moments of overachievement in my life, but I've also sold myself out too many times out of a lack of self confidence.

Whether I get an offer is not the ultimate measure of personal growth. The growth manifests itself in the willingness to face my anxiety head on. Success isn't meaningful unless it is achieved under the shadow of potential failure. Taking the risk requires self soothing and a deep belief in myself. I may find out that I am not the right fit, but if I hold onto myself, I can learn where I need to improve for the next challenge.
blog comments powered by Disqus