Whiteboarding tips and tricks

Before Attending the class

To get the most from the class we ask you to do the following before attending:
  • Create an account on www.leetcode.com.
  • Return to the home page and click on “Problems”
  • Review the available categories and types of problems.
  • Choose an easy question from one of the categories and try to solve it. This will allow you to see how leetcode works.
  • Whiteboarding tips and tricks

    Make sure you understand what they want you to create. Remember that, in some cases, your ability to understand the question and, if necessary seek additional information, may be a portion of the test. Key information may have intentionally been omitted to see if you make the effort to learn about the problem before just jumping in. In other cases, the way they say certain things may give you a hint as to what they want or expect.

    Consider the range of possibilities. Will your solution not only address the key topic, but the edge cases as well? For example, what happens if you test it with the largest/lowest value allowed?

    Consider using the approach that is the fastest for you to show first (usually a brute force approach) then consider ways to optimize what you have. This way, you have a solution that (we hope) works and then they can see how you approach optimizing. In some cases, you might briefly state the brute force approach so they know you understand one way, but then you might white board a more efficient approach as your solution.

    What are some alternate approaches to your solution? Could any of them increase performance? Or make the code more readable? In most cases, there are quite a few ways to solve the problem.

    Even if you can’t solve the problem, talk with the interviewer. Often, they may give you hints or nudge you. Or even remind you of a concept you know quite well, but didn’t click as an option.

    As you work think about various approaches, speaking your thoughts may also help them get a feel of your approach.

    Remember to consider which of the following is the most critical for the solution – speed, space (i.e. how much memory/disk space will be required), or flexibility (how easy can it be reused, modified, enhanced, etc.)

    Don’t forget to walk through your completed code to test if it handles all the cases. Do your solutions match the requirements (you didn’t miss one of the requirements did you?) Do you have anything that is redundant, unnecessarily repeated, or implemented in the wrong place, resulting in poor performance?

    If you usually program with an IDE that auto completes the code you type, mention that to the interviewer so that they are less likely to downgrade your code when you used the wrong method/function/etc. name.

  • Links to resources

    The following are a few of the links that may help you as you prepare for your coding interviews. This is by no means a definitive list. Should you feel that other appropriate resources should be included, please let us know.

    Training resources:

    https://channel9.msdn.com/
    Lots of videos about Microsoft products and or relevant technologies
    https://www.codeproject.com/
    great resource for new trends, coding practices, etc. Lots of code. Slight slant towards Microsoft products.
    https://www.edx.org/
    Free university level courses in many areas (but the certificate of completion may cost money.)
    https://www.khanacademy.org/
    mostly for kids, but do have some programming courses. Great for people who want to know more about tech but aren’t software developers.
    https://www.lynda.com/
    LinkedIn bought them, so are available via that platform. Fees vary depending on LinkedIn account. 1 month free (which may be all you need.) Lynda.com is free for anyone with a Sunnyvale library card which are free to any Santa Clara County resident.
    https://mva.microsoft.com/
    Microsoft Virtual Academy – Microsoft product training
    https://www.pluralsight.com/
    A paid training site. But lots of great topics by well-known authors.
    https://www.skillshare.com/
    Basic is free, premium is $8.25/mo with 30 day free trial.
    https://www.udacity.com/
    Free (I think) training. All sessions have a cost, but most show free.

    Practice sites:

    (coding sites to practice/improve coding skills as well as prepare for interviews)
    https://www.careercup.com/
    Interview questions with comments/answers by folks at large.
    https://www.codewars.com/
    Improve your coding skills.
    https://www.hackerrank.com/
    Practice coding and see how you match up to others. Apparently some companies even use this for their candidate testing.
    https://leetcode.com/problemset/all/
    The current resource we are using for the session.
    https://www.pramp.com/
    Pair up with someone to work on a problem in an interview atmosphere.
    https://projecteuler.net/
    Project Euler is a series of challenging mathematical/computer programming problems that will require more than just mathematical insights to solve. Although mathematics will help you arrive at elegant and efficient methods, the use of a computer and programming skills will be required to solve most problems.
    https://www.topcoder.com/
    A place to show off your coding skills and gain the attention of companies looking for people like you. Some companies also use this as a way to crowdsource code.

    Other Resources:

    Cracking the Coding Interview book by Gayle Laakmann McDowell – Some companies (I won’t mention Google) recommend it prior to starting the interview process.
    https://github.com/
    Source code repository (if you don’t have an account or are not familiar with it, you will probably benefit by doing so.)
    https://stackoverflow.com/
    Very popular place to post questions and show your skill by answering them. They also have a jobs page.
    http://www.tomshardware.com/
    Just a good place to ask non software computer related questions – great if you need to update your computer or want to know what is current on the hardware side.

    Debate on using Whiteboards

    Programmers are confessing their coding sins to protest a broken job interview process