Image for post
Image for post

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.

Fast forward to today, and much of the innovation seen is on mobile devices. While we were amazed by the original form factor of the iPhone (and later the iPad), it’s what’s being done on these devices today that is truly surprising. More than just photos, any device from the iPhone or iPad family (e.g., Air, Pro, etc.) can easily support document creation, gaming, video editing, video production, and more. As many fans and industry experts have anticipated, most mobile devices can now meet or exceed their desktop counterparts’ performance. …


Image for post
Image for post

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.

It’s common for a developer to be asked by a project manager or stakeholder to “codify” some new process or business rule. Many solutions can be fulfilled through predefined SDK Framework functions or third-party libraries. Other times we have to roll up our sleeves and think about how a system or process could work. In essence, this is the value we bring to a business or project. As a result, here are five tips to consider when writing your own algorithms. These suggestions can be applied during a technical interview or when planning your next project. …


Image for post
Image for post

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:


Image for post
Image for post

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 one’s solutions with specific syntax and/or object design. …


Image for post
Image for post

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?

The Challenge

No technical interview would be complete without a basic test on String manipulation. While there are many ways this can be achieved, a popular test involves evaluating a String to see if it qualifies as a palindrome. For example, the phrase “was it a car or a cat I saw” can be read either forward or backward, often making for funny anecdotes! …


Image for post
Image for post

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. …


Image for post
Image for post

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.

Value Types

When it comes to Swift syntax, a nice feature is that objects are either treated as a reference or value type. When working with value types, a new memory is allocated for each instance or assignment. …


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:

https://www.waynewbishop.com/ios-interview/cslab

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!

Image for post
Image for post


Image for post
Image for post

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 are provided.
*/

func isBetter(lhs: T, rhs: T) -> T {
if lhs > rhs {
return lhs
}
return rhs
}

//hint - see parameters.. …


4 Ways to get the most from an iOS Coding Bootcamp
4 Ways to get the most from an iOS Coding Bootcamp

For the last while I’ve had stellar experiences helping iOS developers pass technical interviews. As someone who finds satisfaction by helping others, being able to work 1–1 with fellow engineers has been great. Fast-forward to the present and the sky is now the limit in terms of teachable topics as well as the number of services that specialize in content delivery. Although I remain enthusiastic about all forms of learning, I find students who learn iOS development through bootcamps have many additional questions about the environment, coding syntax and commonly used design patterns. …

About

Wayne Bishop

I write about Swift Development & Computer Science. Get more tips on technical interview preparation at — www.waynewbishop.com

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store