SlideShare uma empresa Scribd logo
1 de 42
Baixar para ler offline
Why is it so damn hard to
find a good developer?
by Natalie Podrazik
May 13, 2015
How can I tell if someone
knows enough to work with me
without me losing my mind?
by Natalie Podrazik
May 13, 2015
Skill Spectrum
Experts
Senior
Learning
Junior
Typical Hiring Screening Process
1. Resume
2. Code samples/portfolio
3. Phone screen
4. Take home test
5. 1-2 rounds of technical interviews
Pop Quiz
Rules
1. # of years you’ve been writing
Cocoa or Mac OS X/iOS Apps
2. Write the level of experience you
think you have (1 = Junior, 5 =
Senior)
3. For each question, rank the level of
experience you think a candidate
would need to answer the question
4. Star the question if you think it’s a
“good” interview question
Your answers to the
questions
Meta Page: Answer Page:
15 Questions,
20 Minutes
How do you use
NSNotificationCenter?
#1
What are some ways that
you can persist data in an
app?
#2
What are the differences between
an array and a linked list? What
do you think an NSArray is?
#3
What’s a delegate?
Give an example.
#4
Why shouldn’t you
reference self in a
block?
#5
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?
#6
What is a hash?
#7
When you create an object (in a
running app, not while you’re
writing code), where are the bytes
located in memory?
#8
Have you worked with
NSOperationQueue? How
does it work?
#9
What is an NSZombie?
#10
Name some of the
UIApplicationDelegate protocol
methods and how to use them.
#11
How would you add another
element (@“delta”) to the
foo array?
NSArray *foo = @[@“alpha”,
@“beta”,
@“gamma”];
#12
Describe what happens behind
the scenes when you tap an app’s
icon, you see the app open, and
you press the home button.
#13
When responding to an
NSNotification, what will happen
if the notification handler
executes for a long time? What
can you do about it?
#14
How can you add a
method to a class that you
don’t have the code for?
#15
Pencils down!
How Useful Were
Those Questions?
How do you use
NSNotificationCenter?
#1 Answer
1. Add an observer that can handle notification
2. Post notification
3. Remove observer
What are some ways that you
can persist data in an app?
#2 Answer
• NSUserDefaults
• CoreData
• SQLite
• Archive to Disk
What are the differences between
an array and a linked list? What
do you think an NSArray is?
#3 Answer
- Arrays require contiguous
memory
- Arrays allow index-based
access
- Array insertion/deletion
requires moving other
elements around
- Linked Lists’ insertion/deletion has
minimal impact to rest of set
- Linked Lists can have
hetereogenerous encapsulated data
- Linked Lists have increased memory
management overhead (dangling
pointers, incomplete freeing of memory)
NSArray is probably a linked list with helper methods to
make it more array-like.
What’s a delegate? Give an example.
#4 Answer
"Delegation is a simple and powerful pattern in which one object in a
program acts on behalf of, or in coordination with, another object. The
delegating object keeps a reference to the other object—the delegate—
and at the appropriate time sends a message to it. The message
informs the delegate of an event that the delegating object is about to
handle or has just handled. The delegate may respond to the message
by updating the appearance or state of itself or other objects in the
application, and in some cases it can return a value that affects how an
impending event is handled. The main value of delegation is that it
allows you to easily customize the behavior of several objects in one
central object." -- Apple
< insert a zillion examples here>
source: apple.com
Why shouldn’t you reference
self in a block?
#5 Answer
source: apple.com
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?
#6 Answer
The receiver is nil.
What is a hash?
#7 Answer
Possible answers include:
• Data structure that enables constant
lookup given a unique string
(dictionary/hashmap)
• One way encryption
• …More
When you create an object (in a
running app, not while you’re
writing code), where are the bytes
located in memory?
#8 Answer
On the heap.
Have you worked with
NSOperationQueue? How does it work?
#9 Answer
source: nshipster.com
What is an NSZombie?
#10 Answer
“NSZombies is a runtime process that you can turn on with an
environment variable, when it is on released objects are not
returned to the heap, instead they are replaced with a “zombie”
version of their class that causes a crash. Why is crashing this
way useful? The answer is that when it crashes, the object which
called it will be in the stack trace — therefore you can quickly see
where you are accessing a released object, without NSZombies
the crash would happen in the next class which uses the same
address, this could be quite distant from the spot where the bug
really is.”
source: Scott Yelich
Name some of the
UIApplicationDelegate
protocol methods and
how to use them.
#11 Answer
source: Dash for Mac
How would you add another
element (@“delta”)
to the foo array?
NSArray *foo = @[@“alpha”,
@“beta”,
@“gamma”];
#12
(of the many solutions…)
Answer
#13 Answer
Describe what happens behind
the scenes when you tap an app’s
icon, you see the app open, and
you press the home button.
When responding to an NSNotification, what
will happen if the notification handler executes
for a long time? What can you do about it?
#14 Answer
The thread blocks.
NSNotificationCenter is single threaded. You
can use GCD to move it off the main thread.
How can you add a method to a class
that you don’t have the code for?
#15 Answer
Job Postings in the Wild
full doc: https://docs.google.com/spreadsheets/d/1JWvJvIlTfcWbSUBH8nk5EwmeG0ikwXxEaxJTFJ0-h2o/edit#gid=0
• 3 years of experience ≈ iOS 6
• Acknowledge career arc of mobile developers
• Most places have no idea how to qualify your abilities
• Solve “The Apple Problem”
Conclusions about Employers seeking
Devs Like Us, After Looking through
~20 Fresh Job Postings:
Personal
Reference
• 2-3 years experience is 2-3 iOS Releases
• Culture and coachability
Conclusions as a Developer, Interviewing
iOS Candidates for her Employer
Live App
Sample Code

Mais conteúdo relacionado

Semelhante a Finding Some "Good" iOS Interview Questions for Employers

Surviving the technical interview
Surviving the technical interviewSurviving the technical interview
Surviving the technical interviewEric Brooke
 
Matlab for a computational PhD
Matlab for a computational PhDMatlab for a computational PhD
Matlab for a computational PhDAlbanLevy
 
10 things you're doing wrong in Talend
10 things you're doing wrong in Talend10 things you're doing wrong in Talend
10 things you're doing wrong in TalendMatthew Schroeder
 
10 things you're doing wrong in Talend
10 things you're doing wrong in Talend10 things you're doing wrong in Talend
10 things you're doing wrong in TalendDatalytyx
 
Cinci ug-january2011-anti-patterns
Cinci ug-january2011-anti-patternsCinci ug-january2011-anti-patterns
Cinci ug-january2011-anti-patternsSteven Smith
 
Chaos Engineering Without Observability ... Is Just Chaos
Chaos Engineering Without Observability ... Is Just ChaosChaos Engineering Without Observability ... Is Just Chaos
Chaos Engineering Without Observability ... Is Just ChaosCharity Majors
 
Bca winter 2013 2nd sem
Bca winter 2013 2nd semBca winter 2013 2nd sem
Bca winter 2013 2nd semsmumbahelp
 
Basics of Programming - A Review Guide
Basics of Programming - A Review GuideBasics of Programming - A Review Guide
Basics of Programming - A Review GuideBenjamin Kissinger
 
Metric Abuse: Frequently Misused Metrics in Oracle
Metric Abuse: Frequently Misused Metrics in OracleMetric Abuse: Frequently Misused Metrics in Oracle
Metric Abuse: Frequently Misused Metrics in OracleSteve Karam
 
You shouldneverdo
You shouldneverdoYou shouldneverdo
You shouldneverdodaniil3
 
Introduction to object oriented language
Introduction to object oriented languageIntroduction to object oriented language
Introduction to object oriented languagefarhan amjad
 
Record Deduplication and Record Linkage
Record Deduplication and  Record LinkageRecord Deduplication and  Record Linkage
Record Deduplication and Record LinkageCRISLANIO MACEDO
 
Metamorphosis from Forms to Java: a technical lead's perspective
Metamorphosis from Forms to Java:  a technical lead's perspectiveMetamorphosis from Forms to Java:  a technical lead's perspective
Metamorphosis from Forms to Java: a technical lead's perspectiveMichael Fons
 
Deep learning with tensorflow
Deep learning with tensorflowDeep learning with tensorflow
Deep learning with tensorflowCharmi Chokshi
 
Top 10 Interview Questions for Coding Job.docx
Top 10 Interview Questions for Coding Job.docxTop 10 Interview Questions for Coding Job.docx
Top 10 Interview Questions for Coding Job.docxSurendra Gusain
 
Top 10 Interview Questions for Coding Job.docx
Top 10 Interview Questions for Coding Job.docxTop 10 Interview Questions for Coding Job.docx
Top 10 Interview Questions for Coding Job.docxSurendra Gusain
 
Get your organization’s feet wet with Semantic Web Technologies
Get your organization’s feet wet with Semantic Web TechnologiesGet your organization’s feet wet with Semantic Web Technologies
Get your organization’s feet wet with Semantic Web TechnologiesAndré Torkveen
 

Semelhante a Finding Some "Good" iOS Interview Questions for Employers (20)

Surviving the technical interview
Surviving the technical interviewSurviving the technical interview
Surviving the technical interview
 
Matlab for a computational PhD
Matlab for a computational PhDMatlab for a computational PhD
Matlab for a computational PhD
 
10 things you're doing wrong in Talend
10 things you're doing wrong in Talend10 things you're doing wrong in Talend
10 things you're doing wrong in Talend
 
10 things you're doing wrong in Talend
10 things you're doing wrong in Talend10 things you're doing wrong in Talend
10 things you're doing wrong in Talend
 
OOP Java
OOP JavaOOP Java
OOP Java
 
Cinci ug-january2011-anti-patterns
Cinci ug-january2011-anti-patternsCinci ug-january2011-anti-patterns
Cinci ug-january2011-anti-patterns
 
Chaos Engineering Without Observability ... Is Just Chaos
Chaos Engineering Without Observability ... Is Just ChaosChaos Engineering Without Observability ... Is Just Chaos
Chaos Engineering Without Observability ... Is Just Chaos
 
Bca winter 2013 2nd sem
Bca winter 2013 2nd semBca winter 2013 2nd sem
Bca winter 2013 2nd sem
 
midterm_fa08.pdf
midterm_fa08.pdfmidterm_fa08.pdf
midterm_fa08.pdf
 
Basics of Programming - A Review Guide
Basics of Programming - A Review GuideBasics of Programming - A Review Guide
Basics of Programming - A Review Guide
 
Metric Abuse: Frequently Misused Metrics in Oracle
Metric Abuse: Frequently Misused Metrics in OracleMetric Abuse: Frequently Misused Metrics in Oracle
Metric Abuse: Frequently Misused Metrics in Oracle
 
You shouldneverdo
You shouldneverdoYou shouldneverdo
You shouldneverdo
 
Introduction to object oriented language
Introduction to object oriented languageIntroduction to object oriented language
Introduction to object oriented language
 
01.intro
01.intro01.intro
01.intro
 
Record Deduplication and Record Linkage
Record Deduplication and  Record LinkageRecord Deduplication and  Record Linkage
Record Deduplication and Record Linkage
 
Metamorphosis from Forms to Java: a technical lead's perspective
Metamorphosis from Forms to Java:  a technical lead's perspectiveMetamorphosis from Forms to Java:  a technical lead's perspective
Metamorphosis from Forms to Java: a technical lead's perspective
 
Deep learning with tensorflow
Deep learning with tensorflowDeep learning with tensorflow
Deep learning with tensorflow
 
Top 10 Interview Questions for Coding Job.docx
Top 10 Interview Questions for Coding Job.docxTop 10 Interview Questions for Coding Job.docx
Top 10 Interview Questions for Coding Job.docx
 
Top 10 Interview Questions for Coding Job.docx
Top 10 Interview Questions for Coding Job.docxTop 10 Interview Questions for Coding Job.docx
Top 10 Interview Questions for Coding Job.docx
 
Get your organization’s feet wet with Semantic Web Technologies
Get your organization’s feet wet with Semantic Web TechnologiesGet your organization’s feet wet with Semantic Web Technologies
Get your organization’s feet wet with Semantic Web Technologies
 

Último

CALL ON ➥8923113531 🔝Call Girls Gomti Nagar Lucknow best Night Fun service
CALL ON ➥8923113531 🔝Call Girls Gomti Nagar Lucknow best Night Fun serviceCALL ON ➥8923113531 🔝Call Girls Gomti Nagar Lucknow best Night Fun service
CALL ON ➥8923113531 🔝Call Girls Gomti Nagar Lucknow best Night Fun serviceanilsa9823
 
Call US Pooja 9892124323 ✓Call Girls In Mira Road ( Mumbai ) secure service,
Call US Pooja 9892124323 ✓Call Girls In Mira Road ( Mumbai ) secure service,Call US Pooja 9892124323 ✓Call Girls In Mira Road ( Mumbai ) secure service,
Call US Pooja 9892124323 ✓Call Girls In Mira Road ( Mumbai ) secure service,Pooja Nehwal
 
BDSM⚡Call Girls in Sector 71 Noida Escorts >༒8448380779 Escort Service
BDSM⚡Call Girls in Sector 71 Noida Escorts >༒8448380779 Escort ServiceBDSM⚡Call Girls in Sector 71 Noida Escorts >༒8448380779 Escort Service
BDSM⚡Call Girls in Sector 71 Noida Escorts >༒8448380779 Escort ServiceDelhi Call girls
 
9892124323 | Book Call Girls in Juhu and escort services 24x7
9892124323 | Book Call Girls in Juhu and escort services 24x79892124323 | Book Call Girls in Juhu and escort services 24x7
9892124323 | Book Call Girls in Juhu and escort services 24x7Pooja Nehwal
 
FULL ENJOY - 9999218229 Call Girls in {Mahipalpur}| Delhi NCR
FULL ENJOY - 9999218229 Call Girls in {Mahipalpur}| Delhi NCRFULL ENJOY - 9999218229 Call Girls in {Mahipalpur}| Delhi NCR
FULL ENJOY - 9999218229 Call Girls in {Mahipalpur}| Delhi NCRnishacall1
 
CALL ON ➥8923113531 🔝Call Girls Saharaganj Lucknow best sexual service
CALL ON ➥8923113531 🔝Call Girls Saharaganj Lucknow best sexual serviceCALL ON ➥8923113531 🔝Call Girls Saharaganj Lucknow best sexual service
CALL ON ➥8923113531 🔝Call Girls Saharaganj Lucknow best sexual serviceanilsa9823
 
Powerful Love Spells in Arkansas, AR (310) 882-6330 Bring Back Lost Lover
Powerful Love Spells in Arkansas, AR (310) 882-6330 Bring Back Lost LoverPowerful Love Spells in Arkansas, AR (310) 882-6330 Bring Back Lost Lover
Powerful Love Spells in Arkansas, AR (310) 882-6330 Bring Back Lost LoverPsychicRuben LoveSpells
 

Último (7)

CALL ON ➥8923113531 🔝Call Girls Gomti Nagar Lucknow best Night Fun service
CALL ON ➥8923113531 🔝Call Girls Gomti Nagar Lucknow best Night Fun serviceCALL ON ➥8923113531 🔝Call Girls Gomti Nagar Lucknow best Night Fun service
CALL ON ➥8923113531 🔝Call Girls Gomti Nagar Lucknow best Night Fun service
 
Call US Pooja 9892124323 ✓Call Girls In Mira Road ( Mumbai ) secure service,
Call US Pooja 9892124323 ✓Call Girls In Mira Road ( Mumbai ) secure service,Call US Pooja 9892124323 ✓Call Girls In Mira Road ( Mumbai ) secure service,
Call US Pooja 9892124323 ✓Call Girls In Mira Road ( Mumbai ) secure service,
 
BDSM⚡Call Girls in Sector 71 Noida Escorts >༒8448380779 Escort Service
BDSM⚡Call Girls in Sector 71 Noida Escorts >༒8448380779 Escort ServiceBDSM⚡Call Girls in Sector 71 Noida Escorts >༒8448380779 Escort Service
BDSM⚡Call Girls in Sector 71 Noida Escorts >༒8448380779 Escort Service
 
9892124323 | Book Call Girls in Juhu and escort services 24x7
9892124323 | Book Call Girls in Juhu and escort services 24x79892124323 | Book Call Girls in Juhu and escort services 24x7
9892124323 | Book Call Girls in Juhu and escort services 24x7
 
FULL ENJOY - 9999218229 Call Girls in {Mahipalpur}| Delhi NCR
FULL ENJOY - 9999218229 Call Girls in {Mahipalpur}| Delhi NCRFULL ENJOY - 9999218229 Call Girls in {Mahipalpur}| Delhi NCR
FULL ENJOY - 9999218229 Call Girls in {Mahipalpur}| Delhi NCR
 
CALL ON ➥8923113531 🔝Call Girls Saharaganj Lucknow best sexual service
CALL ON ➥8923113531 🔝Call Girls Saharaganj Lucknow best sexual serviceCALL ON ➥8923113531 🔝Call Girls Saharaganj Lucknow best sexual service
CALL ON ➥8923113531 🔝Call Girls Saharaganj Lucknow best sexual service
 
Powerful Love Spells in Arkansas, AR (310) 882-6330 Bring Back Lost Lover
Powerful Love Spells in Arkansas, AR (310) 882-6330 Bring Back Lost LoverPowerful Love Spells in Arkansas, AR (310) 882-6330 Bring Back Lost Lover
Powerful Love Spells in Arkansas, AR (310) 882-6330 Bring Back Lost Lover
 

Finding Some "Good" iOS Interview Questions for Employers

  • 1. Why is it so damn hard to find a good developer? by Natalie Podrazik May 13, 2015
  • 2. How can I tell if someone knows enough to work with me without me losing my mind? by Natalie Podrazik May 13, 2015
  • 4. Typical Hiring Screening Process 1. Resume 2. Code samples/portfolio 3. Phone screen 4. Take home test 5. 1-2 rounds of technical interviews
  • 6. Rules 1. # of years you’ve been writing Cocoa or Mac OS X/iOS Apps 2. Write the level of experience you think you have (1 = Junior, 5 = Senior) 3. For each question, rank the level of experience you think a candidate would need to answer the question 4. Star the question if you think it’s a “good” interview question Your answers to the questions Meta Page: Answer Page:
  • 8. How do you use NSNotificationCenter? #1
  • 9. What are some ways that you can persist data in an app? #2
  • 10. What are the differences between an array and a linked list? What do you think an NSArray is? #3
  • 11. What’s a delegate? Give an example. #4
  • 12. Why shouldn’t you reference self in a block? #5
  • 13. 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? #6
  • 14. What is a hash? #7
  • 15. When you create an object (in a running app, not while you’re writing code), where are the bytes located in memory? #8
  • 16. Have you worked with NSOperationQueue? How does it work? #9
  • 17. What is an NSZombie? #10
  • 18. Name some of the UIApplicationDelegate protocol methods and how to use them. #11
  • 19. How would you add another element (@“delta”) to the foo array? NSArray *foo = @[@“alpha”, @“beta”, @“gamma”]; #12
  • 20. Describe what happens behind the scenes when you tap an app’s icon, you see the app open, and you press the home button. #13
  • 21. When responding to an NSNotification, what will happen if the notification handler executes for a long time? What can you do about it? #14
  • 22. How can you add a method to a class that you don’t have the code for? #15
  • 23. Pencils down! How Useful Were Those Questions?
  • 24. How do you use NSNotificationCenter? #1 Answer 1. Add an observer that can handle notification 2. Post notification 3. Remove observer
  • 25. What are some ways that you can persist data in an app? #2 Answer • NSUserDefaults • CoreData • SQLite • Archive to Disk
  • 26. What are the differences between an array and a linked list? What do you think an NSArray is? #3 Answer - Arrays require contiguous memory - Arrays allow index-based access - Array insertion/deletion requires moving other elements around - Linked Lists’ insertion/deletion has minimal impact to rest of set - Linked Lists can have hetereogenerous encapsulated data - Linked Lists have increased memory management overhead (dangling pointers, incomplete freeing of memory) NSArray is probably a linked list with helper methods to make it more array-like.
  • 27. What’s a delegate? Give an example. #4 Answer "Delegation is a simple and powerful pattern in which one object in a program acts on behalf of, or in coordination with, another object. The delegating object keeps a reference to the other object—the delegate— and at the appropriate time sends a message to it. The message informs the delegate of an event that the delegating object is about to handle or has just handled. The delegate may respond to the message by updating the appearance or state of itself or other objects in the application, and in some cases it can return a value that affects how an impending event is handled. The main value of delegation is that it allows you to easily customize the behavior of several objects in one central object." -- Apple < insert a zillion examples here> source: apple.com
  • 28. Why shouldn’t you reference self in a block? #5 Answer source: apple.com
  • 29. 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? #6 Answer The receiver is nil.
  • 30. What is a hash? #7 Answer Possible answers include: • Data structure that enables constant lookup given a unique string (dictionary/hashmap) • One way encryption • …More
  • 31. When you create an object (in a running app, not while you’re writing code), where are the bytes located in memory? #8 Answer On the heap.
  • 32. Have you worked with NSOperationQueue? How does it work? #9 Answer source: nshipster.com
  • 33. What is an NSZombie? #10 Answer “NSZombies is a runtime process that you can turn on with an environment variable, when it is on released objects are not returned to the heap, instead they are replaced with a “zombie” version of their class that causes a crash. Why is crashing this way useful? The answer is that when it crashes, the object which called it will be in the stack trace — therefore you can quickly see where you are accessing a released object, without NSZombies the crash would happen in the next class which uses the same address, this could be quite distant from the spot where the bug really is.” source: Scott Yelich
  • 34. Name some of the UIApplicationDelegate protocol methods and how to use them. #11 Answer source: Dash for Mac
  • 35. How would you add another element (@“delta”) to the foo array? NSArray *foo = @[@“alpha”, @“beta”, @“gamma”]; #12 (of the many solutions…) Answer
  • 36. #13 Answer Describe what happens behind the scenes when you tap an app’s icon, you see the app open, and you press the home button.
  • 37. When responding to an NSNotification, what will happen if the notification handler executes for a long time? What can you do about it? #14 Answer The thread blocks. NSNotificationCenter is single threaded. You can use GCD to move it off the main thread.
  • 38. How can you add a method to a class that you don’t have the code for? #15 Answer
  • 39. Job Postings in the Wild
  • 41. • 3 years of experience ≈ iOS 6 • Acknowledge career arc of mobile developers • Most places have no idea how to qualify your abilities • Solve “The Apple Problem” Conclusions about Employers seeking Devs Like Us, After Looking through ~20 Fresh Job Postings:
  • 42. Personal Reference • 2-3 years experience is 2-3 iOS Releases • Culture and coachability Conclusions as a Developer, Interviewing iOS Candidates for her Employer Live App Sample Code