
Preparation Mindset
Preparing for code interviews can be painful, stressful, time consuming and energy draining.
But it’s so important. Dan Blumenthal, Dir. Engineering at TripAdvisor puts it well: Whether through arrogance (“I’m awesome, and don’t need to prepare”), fatalism (“there’s nothing I can do to prepare”), or ignorance (“preparing is an option?”), virtually no one does a thing to stack the odds in their favor during one of the most important inflection points in their career. Your job will likely determine where you live. If you get an offer with a low starting salary, it could take years to catch up to a higher one (if at all). “So before you even start practicing, you've gotta just view these interviews as yet another standardized test, another game that you need to play well and beat.” - Philip Guo, CS Professor at University of Rochester “Don't whine and think to yourself, ‘but I'll never have to manually reverse a linked list in my job, so these questions are lame!’” “You should plan on working 60 hours per week. The first 40 are for your employer. The remaining 20 are for you. During this remaining 20 hours you should be reading, practicing, learning, and otherwise enhancing your career." - “Uncle” Bob Martin, author of Clean Code Takeaways:
Take your preparation seriously and invest in it
Have a positive attitude and focus on preparing, not on complaining
Practice in small chunks so you don’t burn out
Summary
Practice a ton of problems: code code code
Code at a whiteboard
Practice writing REAL code—and compile it
Do more real interviews, ending with your favorite company
Create a portfolio website with: a list of projects, your resume, and a photo of your beautiful mug.
Use Github Pages (Octopress/Jekyll) or Wordpress for your site, consider a custom domain.
Start blogging—write about your interview prep, practice problems you do, notes from courses. Host on your site or e.g. CoderWall.
Have a personal website you'd like feedback on? Send it to the instructors/students for review!
Hands-on To Dos:
Get a GitHub account and push something there. Some ideas: Code interview solution code, even snowboarding videos.
Get and update your LinkedIn: list jobs, connect with coworkers, update to a nice photo, ask for recommendations.
(Optional) Get an account on StackOverflow: ask and answer some questions.
Beware of tweets: Be sure you keep your tweets professional or keep separate personal (#yolo) / professional (#knuthswag) accounts—and link to the professional one from your portfolio/LinkedIn.
Topics covered:
1. Choosing the language—choose what you're comfortable with, lean towards language used at company
2. Once you've chosen—practice with that language—and only that language!
Solid choices: Java, C / C++ / C#, Python, Javascript, even Ruby
Company leanings:
Facebook: PHP
Google: C/C++, Java, Python Javascript
Amazon: mostly Java, Javascript, tiny bit of Ruby
In this lecture, I cover the 7 essential steps to approaching a problem, finding a solution—and coding it up without making any avoidable mistakes.
Practice problem: given a linked list, return that linked list with the order of all nodes reversed.
Write a function which, given a linked list, returns whether that linked list contains a cycle.
E.g., given the following linked list, your function will say "yes, this contains a cycle".
E / ^ v | A -> B -> C -> D
That is, where traversing would result in C -> D -> E -> C -> D -> E
For this question, you will parse a string to determine if it contains only "balanced delimiters."
A balanced delimiter starts with an opening character ((, [, {), ends with a matching closing character (), ], }respectively), and has only other matching delimiters in between. A balanced delimiter may contain any number of balanced delimiters.
Given an array of integers and a target integer sum, return whether there exist a pair of integers in the array which add up to sum.
See if you can come up with an O(n^2) solution first. Then—can you come up with an O(n log n) one?
Implement a stack which keeps track of its minimum value.
Challenge: can you keep the operation time complexity to O(1)?
Hint: Try using some extra space. What data structure might work for keeping track of minimums?
Given a binary search tree, return its height—that is, the maximum depth reached by the tree.
Example: given a BST with a single node, your function would return 0.
Given a linear BST with only right side nodes 0 -> 1 -> 2 -> (null), where 2 is the tail, your function would return a max height of 2.
Hint: BSTs are a recursively defined data structure.
Hint #2: which tree traversal method covered in the traversal lecture might come in handy here?
Given a binary search tree root, count the total number of nodes in the tree.
Try the problem simultaneously called "offensive", "an insult to my dignity", and "a must-ask".
Write a function that, given n, returns n!
In this lecture we talk about why reviewing hash tables is important, reading quotes from Dan Blumenthal of TripAdvisor, Steve Yegge from Amazon/Google, and Cracking the Coding Interview.
Want to land your dream job at a top tech company like Google, Amazon, or Facebook? Acing the coding interview is the key, and this comprehensive course will teach you exactly how to do it.
Your instructor, an experienced software engineer and educator, has conducted dozens of interviews at top companies, written practice problems for InterviewCake and HackerRank, and successfully navigated the interview process himself. He even taught a wildly popular "Hacking a Google Interview" workshop at MIT.
In this course, you'll learn a proven, step-by-step framework for tackling any coding problem you might face in an interview. You'll practice applying this formula to 10 real-world problems that have been asked at major tech companies, mastering essential data structures, algorithms, and design patterns along the way.
But landing your dream job requires more than just coding skills. That's why this course also covers how to:
Optimize your resume and create a standout personal website
Choose and discuss impactful side projects
Prepare mentally and physically for interview day
Strategically schedule interviews to maximize your chances
Negotiate your salary (the instructor used these techniques to achieve a 40% increase!)
Whether you're cramming for an upcoming interview or planning ahead for your job search, this course is suitable for anyone pursuing a software engineering role. You'll get lifetime access to cheat sheets, tips and tricks, and extra practice problems, plus a supportive community of peers and instructors.
Enroll now and start preparing for the coding interview that could change your life. The dream job you've always wanted is within reach - let's get you ready to grasp it.