This repo contains the outline and materials related to the technical interview for the role of technical lead on an iOS team at Condé Nast.
Imagine that you are running the team for the New Yorker iOS app. Up to this point, the app has focused primarily on article presentation. It provides a feed of the latest articles (updated daily) and allows the users to download weekly magazines (which are really just collections of articles).
The product team has come to you with the idea of incorporating audio content into the app. They'd like a native audio playing experience.. and audio content should now show up in the feed and within magazines relative to the article that audio file belongs to. You can assume audio content is always associated to a single article.
This exercise is about investigating how the existing system that delivers data to the app can be updated to provide the new audio data. Output should be a rough design of the planned changes relative to what you learn (through questions) of the existing system.
NOTE: It is EXPECTED to begin this section with clarifying questions of the existing tech stack.
The purpose of this section is to understand how you approach refactoring troublesome code. To that end, we'll review a basic app that displays some news (provided by newsapi.com). This code has some definite smells!
About the app:
This app shows news article retrived from newsapi.org. It first shows a feed, and then allows you to click into an item in the feed for some expanded information.
During this section of the interview, we'll ask you to:
- Talk about some of the problems you see in this codebase.
- Set out a plan for refactoring it to an improved architecture.
- Take 1-2 initial steps on that plan.
You can find the troublesome codebase within this repository for early review if you'd like to analyze it ahead of the interview.
Please checkout this repository to your local development environment. Check that the troublesome codebase builds within Xcode and runs.
- During section #2 you'll be expected to screenshare Xcode from your machine as we work through the steps.
- Try to have a stable wifi connection!
- During all stages, questions and any accommodations you need can be discussed. Please feel free to share all thoughts & concerns!