# Senior Software Engineer, Microsoft, Raleigh, NC

Made it past the phone screen and had an onsite interview with the Microsoft VSTS team in April 2018.

4 one-on-one interviews, each about 1 hour long, divided approximately in half between resume review/behavioral questions first, followed by then second half of the interview devoted to witing programming questions on a whiteboard.

A non-circular, bidirectionally linked graph, the attributes of the each node indicating a “population” for that node. There’s an conference that occurs at one node, requiring the population of all the other nodes to travel to the node where the conference is happening. Find which node is bringing the largest population, and what is the population. Assume the question will be asked repeatedly. Example: (Node A: 20 people) <–> (Node B: 10 people) <–> (Node C: 25 people) <–> (Node D: 25 people). Conference happens at Node C. Answer: Node B brings 30 people (all the people from Node A have to travel to Node B, then all 30 people travel to Node C, which is more than the 25 people coming from Node D).

Analysis: Did okay on this one, but as per usual, it’s hard to get it completely correct on a whiteboard. Here’s my final solution (I rewrote all questions after the interview):

Question 2: Parse Time from a String

Given a string of the form “Retries: 2; TotalTime: 10000; TotalTime: 5000; TotalTime: 2000” (etc…) The number of “TotalTime” items is 1 more than the Retries count, write a function that returns the total time. Do not use regular expressions or any built-in string functions such as Int32.Parse(). The question is designed to test your approach to parsing and integer conversion.

Analysis: My approach on-site used a state machine, which wasn’t necessary. Rewrote the solution to use functions to parse each thing. Interviewer wanted a fast approach that skipped over characters without doing any error checking. He also asked about how I would unit test i.

My final solution:

Question 3: Design a Priority Queue

The question was simply that “Design a priority queue”. It was purposely left vague to see how the interviewee would approach it and ask clarifying questions.

Analysis: Did okay, but I didn’t hit on the idea of tracking my own counter until the end of the interview.

My final solution:

Question 4: Tic-Tac-Toe

Write a function that takes the next move ina tic-tac-toe game (board of arbitrarily large size) and returns true or false if the player won the game. Another question that is purposely rather vague. They want to see what kind of data structure you will use to track the state of the game, etc…

Analysis: Well, sadly I flubbed this one up pretty good. I mentioned to the interviewer that I thought there was an O(1) approach, but for starters I’d show an O(n^2) approach. But I messed up the short-circuting code and ran out of time, so I didn’t make a good showing. Too bad because it was probably the easiest question of the day.

My final solution:

Resolution: I was not offered a position. I was pretty bummed, considering that I have 25 years experience in software development lifecycle tools, basically everything they do, including being a pioneer in the defect tracking field having founded and sold two businesses, I was disappointed that they nitpicked my whiteboard solutions and didn’t give adequate attention to the totality of what I could bring to the table. I kinda feel like it’s an old-boys network down there in North Carolina. I almost suspect that they already had someone in mind that they wanted to hire, and they were just going through the motions with me. That’s just how it goes.