I got an oppurtunity today (May 4th) to interview few experienced iOS developers. To fill open positions in my friend's company. Yesterday I got the resumes of the people in my inbox. I feel like the resumes, corrupt the way I do interview and my judgement. So I generally avoid reading resumes before interviewing. I was thinking about what to assess. Here is the list of concepts' understanding and skills I decided to assess.
Logical thinking
Foundation framework
Memory management
iOS App Life Cycle
Obj-C and Swift
iOS SDK frameworks
3rd pary frameworks
Debugging Skills
Data formats and file formats
Network error handling
Tool Chain understanding
design level skills
Interests, hobbies, passion, life-goals
Why is he looking for change?
Communication
Is he a linchpin?
At the start of the interview I understand about the person and the work he has done.
Some examples of interview questions
Logical thinking
// simple basic programs like, reverse a linked list, find a palindrome substring of lenth 5 in a given string.
design level skills
// how do you design apps, with all backend interactions
Obj-C and Swift level
// messaging, class object, instance object
iOS SDK level things
// what framework he has used
// How does Push notification works?
3rd party libraries
// do you use third party libraries? how do you use it?
// do you use cocoapods or Carthage
Tools:
What are the latest Xcode features you have used?
Have you written unit tests or UI tests?
Do you use Continous Integration?
What are different certificates that you use in iOS Apps?
Crashlytics or any tools for fixing crashes, do you use any and how do you use the information?
Foundation level
// insert a number in an array (NSArray) of sorted NSNumbers.
// does he specify that it has to be NSMutableArray
// NSDictionary, NSArray, NSDictionary other questions related to these
Communication
// in their experience, and in the interview
Data formats and file formats
// JSON, XML, MPG, JPEG, mp4, mp3 file formats
Networking - error handling
// what type of errors do you handle in case of networking
iOS App life cycle
// what are different stages?
Did you do anything that is out of your job description? When, what, how and why?
What are their interests, hobbies, passions, life-goals?
Few other question I asked in today's interview
1. HR sends the company location to the candidate through whatsapp and the cadidate open the link in google maps or Apple maps app.
In this scenario, explain how this whole thing might have been achived, and what code must have executed at different places. Including the tick marks for sent, delivered, viewed status in the app.
With this question you get to assess his understanding overall of software systems.
2. What does the .ipa file contain? When you build iOS app what happens?
3. When you take a file .dmg and rename to .exe and try to run on windows what happens internally? // this was asked as part of file formats discussion.
4. Write code for run length encoding.
5. How do you develop an app, that if you blow air in one phone, the fan in other phone starts rotating. (phones are in the same network)
6. What is an event loop? // Gave lot of hits, later realized that if they know they will answer it, if they don't know they will never get to answer it. I think this is fundamental for lead iOS developer to understand. There are lot of hints to reject, but this question made it simple and clear, decision to reject.
Some good questions from an interview a friend attended:
- Garbage Collection in other languages vs ARC in objective - C.
- At what time ARC will work
- What is Cyclic Reference.
- Why delegate is weak. (retain count behind it)
- What is dequeue reusable identifier.
- how tableview dequeue reusable identifier API will work
- If 5 cells are visible with same identifier, how many will be create in memory
- UIViewController methods hierarchy
- best method to replace storyboard base UIView with manually created view
- tell about blocks, how to refer self in a block
- tell about closures, how to refer self in a closure
- core data mapping
- will @interface will work in .m file
- what is category
- what are the keywords availiable. how assign will work.
- what is KVO ? how it works with iVar.
- what is KVC ? how to do serialization using KVC to save object in disk