O slideshow foi denunciado.
Seu SlideShare está sendo baixado. ×

The iOS technical interview: get your dream job as an iOS developer

Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Carregando em…3
×

Confira estes a seguir

1 de 34 Anúncio

The iOS technical interview: get your dream job as an iOS developer

Baixar para ler offline

So you have been doing tutorials, sample projects, and watching videos on iOS development for a while. You are trying to publish an app in the App Store or maybe you got one already there. You dream of becoming a professional iOS developer.

Believe me, I was in the same situation six years ago. I started as an indie developer, self employed, and landed a few short contracts, then a six-month contract, and finally, one day, I got a job as a full-time professional iOS developer with a corporation. I have interviewed for a few companies and I have also interviewed come iOS candidates.

In this talk I will explain how to prepare yourself for the iOS technical interview. I will go thru the most usual questions, give my personal advice on how to succeed and pass the interview, and provide links to training material.

So you have been doing tutorials, sample projects, and watching videos on iOS development for a while. You are trying to publish an app in the App Store or maybe you got one already there. You dream of becoming a professional iOS developer.

Believe me, I was in the same situation six years ago. I started as an indie developer, self employed, and landed a few short contracts, then a six-month contract, and finally, one day, I got a job as a full-time professional iOS developer with a corporation. I have interviewed for a few companies and I have also interviewed come iOS candidates.

In this talk I will explain how to prepare yourself for the iOS technical interview. I will go thru the most usual questions, give my personal advice on how to succeed and pass the interview, and provide links to training material.

Anúncio
Anúncio

Mais Conteúdo rRelacionado

Semelhante a The iOS technical interview: get your dream job as an iOS developer (20)

Mais recentes (20)

Anúncio

The iOS technical interview: get your dream job as an iOS developer

  1. 1. The iOS technical interview: get your dream job as an iOS developer Juan Catalan jcatalan007@gmail.com
  2. 2. About me • Senior iOS developer working at Actsoft, Inc, in sunny Tampa, FL, USA • Started iOS development in 2009 • 20+ apps in the App Store • Objective C veteran, Swift enthusiast
  3. 3. Agenda • Industry requirements for a professional iOS developer • Applying for an iOS developer job • The iOS technical interview • Sample questions, advice • Reference material
  4. 4. Industry requirements for a professional iOS developer Junior • Have at least one app in the App Store (sample projects count) or a Github repository with sample code • No experience in the job needed • Know the basics of iOS development • Swift knowledge, maybe willing to learn Objective C
  5. 5. Industry requirements for a professional iOS developer Mid level • Have at least one app in the App Store which is not a sample project • 2+ years of experience • Know how to build an app from scratch and publish to the App Store • Objective C and Swift knowledge
  6. 6. Industry requirements for a professional iOS developer Senior • Have several apps in the App Store (5+) • 5+ years of experience as an iOS developer / 10+ in Software Development • Deep knowledge of Objective C and Swift and how to interface between them • Knowledge of complex subjects like memory management, concurrency, git, unit tests, automated builds, continuous integration
  7. 7. Applying for an iOS developer job • Have an updated LinkedIn profile with links to your apps or have a portfolio website • Have an updated resume in word and pdf format • Have apps or code written by yourself available in Github/Bitbucket/Gitlab • Apply and prepare yourself for the interviews
  8. 8. Applying for an iOS developer job Recruiter / HR person (Technical) screening interview Technical interview / On-site interview Team interview / On-site Recruiter / HR person
  9. 9. Applying for an iOS developer job Recruiter / HR person (Technical) screening interview Technical interview / On-site interview Team interview / On-site Recruiter / HR person • LinkedIn profile / resume • Match resume with the required experience • Behavior, behavior, behavior!
  10. 10. Applying for an iOS developer job Recruiter / HR person (Technical) screening interview Technical interview / On-site interview Team interview / On-site Recruiter / HR person • Match resume with the required experience • Technical questions tailored to the required experience and company needs • Could include real coding exercise to be submitted after the interview
  11. 11. Applying for an iOS developer job Recruiter / HR person (Technical) screening interview Technical interview / On-site interview Team interview / On-site Recruiter / HR person • Techical questions • General software development questions • Specific iOS development questions • Whiteboard/paper coding exercises • Real coding exercise / app
  12. 12. Applying for an iOS developer job Recruiter / HR person (Technical) screening interview Technical interview / On-site interview Team interview / On-site Recruiter / HR person • Resume questions • Techical questions • Behavioral questions
  13. 13. Applying for an iOS developer job Recruiter / HR person (Technical) screening interview Technical interview / On-site interview Team interview / On-site Recruiter / HR person • Company decision • Offer negotiation • Offer letter
  14. 14. The iOS technical interview Algorithms and data structures Design patterns Tools (Xcode, Instruments, git, …) Frameworks (iOS SDK, 3rd party libraries) Programming Languages (Objective C, Swift)
  15. 15. Objective C • Classes, instance variables, properties, methods, method signatures • Memory management: ARC/MRC, retain cycles, strong, weak, assign, initializers (designated, convenience), dealloc • Protocols, Categories, Blocks • Control flow: loops (for, for-in, while, do-while), fast enumeration, switch, if-else, continue, break, return • NSString, NSArray, NSDictionary, NSSet (and mutable counterparts), NSNumber, NSDate, NSNull vs nil, NSURLSession, NSJSONSerialization, NSError • Interfacing with Swift and C/C++
  16. 16. Swift • Structs, classes, (value types vs reference types), methods, method signatures, properties, enums (with associated values), tuples, extensions, protocols, closures, generics, map-filter-reduce • Memory management: ARC, retain cycles, strong, weak, unowned, initializers (designated, convenience), deinit • Optional types (regular, implicit, unwrapping, optional chaining, default values), variables and constants, if-let, guard • Dictionary, Array, Set, String, Int, Double, Date, URLSession, URL • Control Flow: loops (for-in, while, repeat-while), switch, error handling (do - catch, throw, throws), continue, break, return • Bridging headers, interfacing Swift-Objective C, API Design Guidelines
  17. 17. iOS SDK • Support multiple versions of iOS • Foundation, Swift Standard Library • UIKit, Core Location, Core Animation, Core Graphics, MapKit • Core Data, UserDefaults, Property Lists, FileManager, SQLite • URL, URLSession, JSONSerialization • Grand Central Dispatch, Operation, OperationQueue • XCTest
  18. 18. iOS SDK: UIKit • Storyboards, nib files, segues, auto-layout vs UI in code • UIViewController, UINavigationController (and stack of VC) • UITableView, UITableViewController, UITableViewCell (custom cells), asynchronous data loading (background thread) • UIView subclass, gesture recognizers, core graphics, core animation, UICollectionView, UIStackView • UIButton, UILabel, UIImageView, UITextField, UITextView, UIScrollView, UISwitch, Segmented Control
  19. 19. 3rd Party Libraries • Knowing how to discover and install 3rd party libraries: Cocoapods/Github • Networking: AFNetworking, AlamoFire • JSON: Mantle, SwiftyJSON • Alternatives to Core Data: SQLite, Realm
  20. 20. Development Tools • Xcode: project, targets, info.plist, source control, editor (refactoring, code folding, re-indent), archive, devices, organizer, debugger (breakpoints, inspect variables, single-step) • Instruments: allocations, zombies, leaks, network, time profiler, activity monitor • Apple Developer Account, iTunes Connect, Beta app distribution and crash reports (TestFlight, Fabric, HockeyApp) • Git, GitHub/Bitbucket/GitLab: commit, merge, rebase, reset, stage, pull, push, fetch, fork, clone, pull requests, GitFlow branching model • Cocoapods, Carthage, Swift Package Manager
  21. 21. Design Patterns • Object Oriented Design: inheritance, polimorfism, composition • MVC, Delegation, KVO, Factory, KVC, Singleton, target-action (IBOutlet/IBAction), Notifications • Protocol Oriented Design (Swift) • MVVM, Inversion of Control, Dependency Injection • General patterns: Decorator, Façade, Adapter, etc.
  22. 22. Algorithms & Data Structures • Big-O Notation • Array, string, linked list, stack, queue, binary tree, graph, hash tables • Recursion, bread first search, depth first search, binary search, merge sort, quick sort, data structure operations (insert, delete, find, traversing graphs, etc.) • Multitasking: thread, process, lock, critical section
  23. 23. Coding exercise: sample app
  24. 24. NASA Images
  25. 25. NASA Images
  26. 26. NASA Images • Downloads pictures from the Astronomy Picture of the Day website (https://apod.nasa.gov) and shows the pictures in a scrolling table view. • Uses NASA Open API web services • Uses best practices: parallel downloads, smooth UI scrolling while downloads are in progress, provides a mechanism to refresh the UI, etc. Networking JSON Image Downloader
  27. 27. NASA Images UITableView UILabel UIImageViewUIRefreshControl UITextView Progress Indicator
  28. 28. Sample interview questions
  29. 29. Sample interview questions 1. What was the latest version of iOS you worked with? what do you like about it and why? 2. Have you worked with Swift? What do you like about it? What you don’t like? 3. How memory management is handled on iOS? 4. What do you know about singletons? Where would you use one and where you wouldn’t? 5. Could you explain what is the difference between Delegate and KVO? https://www.linkedin.com/pulse/ios-interview-questions-senior-developers-alex-bush
  30. 30. Sample interview questions 6. How do you usually persist data on iOS? 7. How do you typically do networking? 8. How do you serialize data on iOS (JSON from the web or local app data to Core Data and other storages) ? 9. What design patterns do you know and use on iOS? 10.What is Auto-layout? https://www.linkedin.com/pulse/ios-interview-questions-senior-developers-alex-bush
  31. 31. Sample interview questions 11.How do you handle async tasks? 12.How do you manage dependencies? 13.How do you debug and profile things on iOS? 14.Do you code review? 15.Do you test your code? What do you do to make your code testable? https://www.linkedin.com/pulse/ios-interview-questions-senior-developers-alex-bush
  32. 32. Advice • Don’t waste your bullets • Be honest • Be precise • Be respectful, be friendly, not arrogant • Never give up with though questions
  33. 33. Reference material • https://www.glassdoor.com/Interview/ios- developer-interview-questions-SRCH_KO0,13.htm • https://www.linkedin.com/pulse/ios-interview- questions-senior-developers-alex-bush • Cracking the Coding Interview: 189 Programming Questions and Solutions, Gayle Laakmann McDowell • https://careercup.com
  34. 34. Thanks! • Slides https://www.slideshare.net/jcatalan007/the-ios- technical-interview-get-your-dream-job-as-an- ios-developer

×