What would you ask on an interview for Jr. iOS position?

Hi, interviewing some folks here at Wanelo and was wondering what kinds of quesitons do you guys ask someone who’s looking to join at a Juniour iOS position?

It all depends on your personality and what you think is important in an iOS developer. I personally favor trivia-type questions that demonstrate deep knowledge of the frameworks. Stick to parts of the SDK that any iOS developer can be reasonably expected to know: UIKit, Core Data, NSURLSession, etc. – unless you’re specifically trying to hire a specialist (which you probably aren’t for a junior role). I’m a senior developer but if you asked me about SpriteKit I’d bomb spectacularly. I can bore you to death with the finer points of EAAccessory, XMPP and SIP, though. Everyone’s experience is different.

Memory-management is a good litmus test now that we’ve had ARC for a few years, because you can more or less get by and write a functional app without understanding much about it…for a while, until it bites you hard and you’re helpless to fix it. For a junior role, I’d expect someone to be able to answer most of these:

  • What is a retain count and how does it relate to objects being deallocated?
  • When do you use strong vs. weak references and why?
  • Explain what a retain cycle is and how to avoid one (if they haven’t already covered this in their answers to the first two, which ideally they should have)
  • Briefly explain the high-level concepts of ARC
  • Bonus: How does ARC differ from garbage collection? What advantages does it have over GC?
  • Extra bonus: What is an autorelease pool? In what sorts of situations can it sometimes be used to improve performance?

I also like to ask a few 100-level CS questions. I personally love theory, but for interviews I’m not really into “implement a doubly-linked list on the whiteboard” stuff, as I don’t believe that correlates meaningfully to actual job skills for someone making apps. However, they do need to have a foundational, platform-independent understanding of common data structures and other core concepts. Stuff like this:

  • Explain how arrays, dictionaries, and sets associate objects. What is each one optimized for?
  • What is recursion? Why does it tend to be inefficient compared to loops?
  • Explain the difference between value semantics and reference semantics. Why does it matter? If a language gives you the choice, what’s your philosophy on choosing one or the other?
  • What is the difference between a compiled language and an interpreted language? Give an example of each. What are the advantages and disadvantages of each?

Other than that, maybe a couple questions each on the important core competencies like networking, concurrency, general best-practices, etc.

Hope this helps.