Through the computer science lab, I’ve had the opportunity to connect with many new and experienced developers. While not everyone is at the same skill level, all share the desire to advance their careers by interviewing for new positions. Over time, I’ve noticed some students have a knack for making a good impression. Some of these folks have gone on to land fabulous positions at places like Facebook and Apple. Based on those observations, here are my interview tips to make a great impression.
Have a Plan
Having a game plan allows better communication between you and your interviewer. When conducting mock sessions, I note how candidates handle themselves. Do they follow some process? The best students ask clarifying questions before creating a (function) stub, then proceed to code a brute-force solution. Clarifying questions signal that you understand the problem. Also, a stub (or diagram) provides a blueprint of your intended actions. These pieces support your overall plan and can be easily refined. Consider the following:
/* challenge: write a function to produce the Fibonacci sequence to a specified position. For example, one should be able to provide an input the value of 7 and return a value of 13. */ //proposed solution - stub.. func fibSequence(value: Int) -> [Int]{ //code goes here.. }
Like this article? Get more content like this in the iOS Computer Science Lab.
Notice the minor oversight above that will result in an incorrect answer. The question states the return value should be a single value (e.g., Int), however, the stub return type is an Array. Without clarification, this issue will directly impact the solution design and implementation. In this example, after writing the stub you should circle back to the problem statement and make sure each part is reflected correctly in your stub.
Commit to Content
When it comes to whiteboarding, all of us have varying levels of experience. However, one thing that will impress an interviewer will be your willingness to solve a question beyond your immediate understanding or skill set. This is often the case with systems design questions. As mentioned in how to interview at Facebook, your time may be limited, so it helps to document any ideas you may have on the board. Again, always attempt to solve a question, even if you just write pseudocode or diagrams.
Do Your Homework
As software developers, we occupy our time creating solutions and writing code. Even though we’re considered people who have the answers, others will support you if you demonstrate the ability to help yourself. In the context of a technical interview, ensure you’ve done adequate preparation and attempt to gain essential information on the meeting format as well as specific frameworks/libraries the prospective development team employs. For larger companies like Apple and Google, ensure you also understand the basics of Big O Notation and can describe commonly used algorithms and data structures relative to their time and space.
Rehearse, Don’t Memorize
When preparing for a major interview, many ask the common question, “do I really need to memorize all of this?”. Indeed, it’s a valid concern as the volume of the information can be detailed. The advice I usually give students is to focus on rehearsing your plan rather than memorizing specific code sequences or algorithms. Each time you learn something new, consider it one more tool added to your tool case. Even though increasing your knowledge of commonly used algorithms is ideal, the real power comes from being able to plan, code and prove the efficiency of your custom solutions.