Why am I being asked about Data Structure and Order Notation by my recruiter?!?

by Eric Stutzman

Data Structures? Order Notation? Isn't that a bit on the academic side for the Industry Candidate screen?

As an Industry Recruiter, I am typically looking for someone that has 5 or more years of experience plus a Bachelor with a Masters in Computer Science preferred. I have several standard questions I ask in my screen that require someone to select the appropriate data structure and check the runtime and space complexity of their algorithm, or I may give you the data structure and have you come up with an optimal solution based on order notation.

Here is where it can get interesting as quite often I am challenged by my interviewee as not having to do this "in the field" or "in the day to day engineer’s life" or even "I know this. It's just been so long since I was in school." Now that may be true for many companies, but I am told by my groups that this type of problem solving can be and is a day to day reality here at Microsoft. So, trying to get a better understanding, I reached out to some of the engineers and managers that I support for a better explanation.

One response that I got was that many of the application developers I am talking with are working on solutions that are for internal customers or customized solutions for a client or two; where as Microsoft's core tech developers are working on solutions that could have tens of thousands of customers, so the solutions they have to come up with MUST be the most efficient solutions possible.

Other engineers agreed.  SDEs and SDETs at Microsoft are answering challenging design questions everyday and MUST keep efficiency in production at the front of their designs.  That's why these questions are so important.

What is your level of understanding with data structures and order notation? If you are applying for SDE and SDET positions, you may want to brush up on this, as many staffing consultants will want to know! Our hiring managers will not only want to know, they will want you to be able to come up with the most efficient algorithm and then write the code for it keeping use cases and test cases in mind!

Eric

6 Comments

  • Lutz said:

    I have seldom heard the term "Order Notation", in fact at first I didn't know what you were talking about. The more common name is the Big O Notation.

  • Luke Foust said:

    Great Post!  Any chance you could provide a list of books or resources which would be usefull for brushing up on these types of "Back In College" subjects?

  • MSFTIE said:

    OK, here's my rant.





    I'm an experienced dev, and work at MSFT.  Most of my experience comes from several companies pre-MSFT.





    I'd like to think that I'm at the level where I'm a bit more focused on architecture and design rather than trivial things like reversing a linked list.





    Don't get me wrong -- these exercises (and understanding Big-O) certainly have value, but most of the time, I could've answered these questions BETTER as a student, rather than as a professional.  However, as a professional, I can design a BETTER, less convoluted system.  I understand scalability, security, and concepts like Sarbanes Oxley compliance.





    So what's the rant?   I've occasionally gone on informationals where I've been asked to come up with the most efficient solution to solving, say, a tic-tac-toe board in  a smallest O(n) possible.  





    In some problems I do okay, in others, I could do better.   My problem is that this is all theoretical problem solving and frankly, it's a problem I could've solved better 10 years ago in college, in part because I was used to taking tests.  But I fail to understand the cliche of every loop starting off this way.  (And similarly, I would probably struggle to solve any real calculus problem now that I once could do easily.)





    I've been successful at MSFT but I get annoyed when managers use a 30-60 minute "test" like this as their only bar.  In one case, the hiring team wasn't interested in my resume, my past experiences, my past internal reviews.  Only that I solved that problem in the time allotted, and if not, "thanks, but no thanks."





    I'm not saying that concepts like this aren't important, but I will say I think they can be over-emphasized.  If this is the only criteria any team has for gauging mental muscle-power or my ability as a developer, then I don't want the job.  





    When hiring a "seasoned professional" (as I was when I hired on), then you're hiring the skillset and the breadth of experience I bring.   There's no better way to guage how effective I would be than to examine my past work.   (And like I said, if my career comes down to a simple solve to the smallest O(n) in 30 minutes or bust type of problem, I'll find something better.)

  • EricMStutzman said:

    Thanks for the comments.





    You are correct Lutz... in the future I will weave in Big-O, Big Oh! and the other more commonly referred names for Order Notation. :)





    MSFTIE - Thank you for the perspective from an internal Dev mindset!





    Eric

  • Structure Too Big said:

    Every once in awhile I'll stumble upon various posts that I'll have an opinion on, but won't bother blogging or otherwise commenting on.

  • Microsoft's JobsBlog said:

    Please welcome guest blogger Kenji Yamaguchi! Kenji is a staffing consultant for Windows Live Experience

Comments have been disabled for this content.