For iOS developers at any level, learning something new can be a time-consuming and challenging process. When discussing career goals with other iOS developers, most possess a good understanding of Swift/iOS coding syntax and commonly used design patterns. However, roadblocks are met when understanding ideas behind computer science, problem solving and algorithms. If this describes you, here are 5 free resources to help you ace your next technical interview.
The iOS Interview Worksheet
Initially conceived as handwritten notes as I prepared for a technical interview at Google (years ago), this free resource has been expanded to support the many areas of…
As a software engineer, I’ve had the opportunity to see many software and hardware technologies introduced over the years. Beyond writing code, I also work as an educator, teaching computer science essentials to other iOS developers. Back when I started, the Java programming language was just released, and the possibilities of the internet were being realized with the launch of Mosaic and Netscape. It was the golden age of the x86 platform, including countless PCs being sold with 386, 486, and Pentium processors.
Recently, a great developer enrolled in my weekly iOS Computer Science Lab approached me with a link on how to write a popular algorithm in Swift. Since we review similar concepts in class, I was intrigued and proceeded to check out the details. Even though the essay had received many views (likes), disappointment set in as I realized portions were lacking, were poorly communicated and technically incomplete. To support my assumptions, the author was unable to answer questions asked by audience members.
After helping iOS developers prepare for technical interviews, I like to reconnect with folks to discuss tough questions that they were asked. Recently, I came across an interesting challenge that involved binary notation and thought it worthy of a review. Even though it’s rare for hiring managers to ask candidates questions on this topic, this one has less to do with the notation and more to do with data management. For example:
When helping iOS developers prepare for technical interviews I like to put a focus on popular “gotchas” most likely to be asked by hiring managers. Beyond essential data structures and algorithms, a good way to test one’s competency is to present challenges that showcase Swift’s unique features. In addition to the use of optionals and generics, what makes Swift a robust language is its extensive use of protocols. In this essay, we’ll walk through an example of protocol-oriented programming.
Boats, Planes & Seaplanes
To succeed in a technical interview, one must be proficient enough with one’s language of choice to express…
For new or even experience developers we often hear one of the keys advancing in one’s career is becoming more familiar with algorithms. Sometimes we’ll even hear the term “algorithmic thinking”. As the name implies, this way of approaching problems isn’t a one-size-fits-all solution but does contain some common elements. Consider this question from Quora:
Q: I’ve heard a lot about algorithms, I’m a beginner, how do programmers learn to think and solve problems algorithmically? Is there a process for this kind of thinking?
No technical interview would be complete without a basic test on String manipulation. While there are…
For the past few months, I’ve been helping a student prepare for a technical interview at Facebook. Many aspects of the Facebook interview process are well-documented, however, this alone doesn’t guarantee success. As part of my weekly iOS Computer Science Lab, we also work on solving code challenges. Our latest topic included a review of understanding binary trees:
Challenge: Given a *non-empty* binary tree, find the maximum path sum. For this problem, a path is defined as any sequence of nodes from some starting node to any node in the tree along the parent-child connections. …
When helping iOS developers prepare for technical interviews, I usually focus on problem-solving techniques rather than specific syntax or the Apple SDK. However, there are some key coding features iOS developers should be aware of. By now, most of us are familiar with examples of Optionals, Closures and Generics. However, the unique InOut variable can also help developers extend the depth and complexity of their solutions. Let’s review some scenarios of when this can be applied.
When it comes to Swift syntax, a nice feature is that objects are either treated as a reference or value type. When working with…
Today I’m pleased to announce a new group called the Computer Science Lab. If you are preparing for your next iOS technical interview, testing your knowledge with code challenges is key. Going beyond my publication on Swift Algorithms & Data Structures, the computer science lab provides the opportunity to solve new iOS questions and collaborate with other developers every week:
A great compliment to the book, you’ll get the chance to apply and explain what you’ve learned with others. Additional benefits include learning how to implement concepts that may be vaguely familiar as well as being exposed to new or alternative coding solutions.
Hope to see you at the next meeting!
The ability to create generic models in Swift provides a powerful, yet flexible model for code reuse. Generics may not come up as the main discussion in a technical interview, but if used correctly, will certainly showcase your ability to create a flexible design. Swift generics can be used to extend straightforward or complex code and is embedded in many aspects of the language. To understand how this works, let’s review the challenge of comparing Apples and Oranges:
challenge: Identify and correct the syntax and/or design issues with the following code. Assume basic type definitions for Apple and Orange…