Technical interviews: loved by some, loathed by others, but, universally, a necessary gauntlet to vet possible coworkers to prove their worth.
Join us this Thursday, May 14th, at our usual time and place where we will *gasp* quiz each other on interview questions! Sure, there will be softball questions, certainly some hardball questions, maybe a curveball or brain teaser or two BUT there WILL BE PRIZES.
Since I'll be running this open-ended and interactive edition of CocoaHeads, this will be part trivia, and part discussion of which questions make Good Technical Interview Questions for different levels of people.
If you have any interview questions you'd like to contribute, please pass them my way before Thursday!
Thanks to all who made it out and suffered through 15 iOS interview questions. The good news is that I didn't grade your answers because (a) that'd be creepy and (b) I couldn't read most people's handwriting. But I could make out integers in some of their scrawl!
Here are the slides that I gave for the talk:
…and here's how each question fared. For each question, everybody rated how difficult the question was, where a 1 was for a Junior iOS Dev, 3 was Intermediate, and 5 was Expert. Here's the list sorted by the number of votes a question received to grade its expected difficulty (Junior -> Senior):
|Name some of the UIApplicationDelegate protocol methods and how to use them.||6||2||0||0||0||1.25|
|What’s a delegate? Give an example.||6||2||0||0||0||1.25|
|NSArray *foo = @[@“alpha”, @“beta”, @“gamma”]; How would you add another element (@“delta”) to the foo array?||5||2||1||0||0||1.5|
|What are some ways that you can persist data in an app?||4||2||2||0||0||1.75|
|Describe what happens behind the scenes when you tap an app’s icon, you see the app open, and you press the home button.||2||5||1||0||0||1.875|
|How can you add a method to a class that you don’t have the code for?||3||3||2||0||0||1.875|
|How do you use NSNotificationCenter?||1||5||2||0||0||2.125|
|When you create an object (in a running app, not while you’re writing code), where are the bytes located in memory?||2||3||3||0||0||2.125|
|You have a method call. By using the debugger or a print statement you determine that the method is never called even though it seems plain that it should be. What is a very likely cause?||0||4||4||0||0||2.5|
|Have you worked with NSOperationQueue? How does it work?||0||4||3||1||0||2.625|
|When responding to an NSNotification, what will happen if the notification handler executes for a long time? What can you do about it?||1||3||3||1||0||2.625|
|Why shouldn’t you reference self in a block?||0||1||6||1||0||3|
|What is an NSZombie?||0||1||3||3||1||3.5|
And this is not to say that all the questions were acceptable — some of them I put strikethroughs because our group more or less voted them down to be too algorithmic or pure computer-sciency, which does not equate to a good iOS developer. This is a tricky subject: some startups will want a versatile engineer well-versed in the basics of CS, and, frankly, some excellent iOS devs have had no need to study up for those questions. Additionally, some questions are absolutely harder or simpler if the interviewer is or is not a pure jerk and doesn't lead the interviewee on without any affirmation that they're on the right track. All points taken.
p>This was a very fun and engaging talk! I think we all learned something about each other. My personal favorite was the entire room's reaction to the adding things to an NSArray question: "You can't.", which, as the person with the slides, I said "Oh really, Junior Developer, you're telling me you can't add an element to this array?"
Thanks to all that attended! We'll meet again on 6/18.