We all know that interviews can be stressful — whether you’re new to interviewing for the first time, or someone in the industry with a few years of development experience to endorse, they can be stressful.

As an interviewer, you have to prepare well to put your best foot forward, and that can be difficult to do in an hour or so of conversation. As developers, we are often reluctant to learn documents by heart, and even simple things require temporary Google searches. That’s ok, no one is asking us to remember everything… But if it’s an interview, it’s a different story.

As an interviewer, the interview may not be so easy. You want to recruit a great fit for your team, but you don’t have much time to get to know them. You need to know what questions to ask and be careful how you conduct yourself — you don’t want to make the interviewer uncomfortable, or you might make some bad judgments and miss a good developer.

Almost everyone needs to prepare for an interview, and I hope this article will help you be better prepared for future interviews.

The problem

One quick note: I’m not going to provide full answers to these questions (just a few basics that I personally expect you to know at least), because I think you’re better prepared to find out for yourself. Reading articles on specific topics can be a good choice to provide you with more information that can help you perform better in an interview.

Sooner or later, though, I’ll probably explain it all in my own blog.

General question

Interviews on iOS (or any other platform) don’t just involve technical questions. Although you will include some information about previous jobs and projects on your resume, there is not enough space to go into all the details. Prepare for these kinds of questions — so you don’t get flustered during the interview.

1. What projects have you worked on so far? What technologies are used? Talk in detail about interesting projects and what technologies and frameworks they use.

2. Have you worked on open source projects? What is your role in this? Even if you’re just a contributor to an open source project, this is a big plus for you. If you want your first job right now, open source projects are a great way to prove your skills. If you are the maintainer of a popular REPO, all the better.

3. How big was your previous team? Have you ever been a leader in a project? This question is just to get a sense of whether you’ve worked alone in the past, in a larger team, collaborating remotely, or just working with local developers.

4. What are the sources of your knowledge? Do you watch blogs or podcasts? Let me give you some examples. If you do, it shows that programming is not just your job, it’s a hobby, so you’re a better candidate than someone who doesn’t do it.

5. Do you have Scrum/Agile development experience? What do you think of this approach to development? In your opinion, when should it be used and when not to use it? This is just a quick question to see if you understand that Scrum has its place, but it doesn’t have to be used all the time.

6. What do you think of code Review? This is also a short question to see if you are the type of person who values code review.

7. Do you go to conferences or local meet-and-greets? Which of these activities do you like best? I don’t think this is a serious issue — if you don’t like participating, that doesn’t mean you’re a bad developer, you’re probably just an introvert. However, if you can promote the company or give a speech at one of those conferences, the company would be very interested.

Swift and Objective – C

IOS development doesn’t just mean Swift. Many projects still have parts of them in Objective-C — even projects written entirely in Objective-C. Also, in some (less common) situations, C and C ++ skills can be useful.

However, I’m not too worried about this, because if the interview is for a specific project that requires this knowledge, it’s likely to be mentioned in the job description. In addition, some basic knowledge of Bash and Ruby might give you a huge advantage, because sometimes we might need to write some scripts.

The following questions are in a random order.

8. How would you describe the language Swift? This is a type-safe language for protocol oriented programming. You may then be asked some follow-up questions, which may lead you to further explain what “protocol orientation” means, etc.

  1. What’s the difference between var and let? Which property would you choose in the struct? Why is that? The first is very basic, while the second can be tricky because it depends.

10. What is a lazy property? If you’ve been writing Swift code for a while, you should have used lazy Property at least once to better understand its advantages and disadvantages.

11. What is optional? What is the mechanism behind it? What is unconditional unwrapping? You probably know the answer to that.

12. How to unwrap an optional value? Additional questions: What is optional chaining, optional binding, and nil-coalescing operator? Give an example of which approach you would choose in a situation. This is an easy question, but the point is just to see if you know the difference, and guard isn’t always the first choice.

  1. What’s the difference between class and struct? Give an example of when to use it. You can talk a little bit more about this, for example, how they are stored in memory (stack/heap), etc.

14. What is closure? You know that, right?

15. What do you mean by weak and unowned? What’s the difference? It’s good to know the difference and when to use unowned. While it might be ok for you to use weak every time, unowned has its uses.

16. Illustrate the method of collecting from the standard library. What are the roles of Map and Reduce, and how do these approaches work in daily development?

17. What is an autoclosure? This may seem like a simple question, but there’s more to Autoclosure than you might think — how it affects performance, for example.

  1. What does the mutating keyword mean? Let me give you some examples.

19. What do escaping and unescaping mean respectively? It’s an easy question. But do you remember which one is the default?

20. (If you know Objective-C) : What’s the difference between Swift and Objective-C? What do you like about each language? Just say anything — if you have experience in both languages, you will know what you like or miss most about each language.

21. Have you heard of Method Swizzling? What does that mean? Can it be used in Swift? Magic… Throw in whatever information you know — like why it’s dangerous, etc.

  1. What’s the difference between an NSArray and an NSSet? Don’t just say that the set contains unique elements, but go further and explain how it behaves in different situations.

23. (if you know Objective-C) : What are atomic/nonatomic in Objective-C?

24. What are KVO and KVC? This is another big topic, so at least understand the basics.

25. What is the application and controller life cycle? This is a short question.

26. What is Core Data? This is a big topic — you’ll probably never use Core Data, but there are some basics.

27. What experience do you have in architecture? Which do you like best and why? You may need to know about MVVM (which is the most common one), so read about this and coordinator.

28. Do you use structs or classes in viewmodels in MVVM? The viewmodel is not always a class.

29. How do I manage dependencies in my code? Do you use a dependency injection framework/tool, or do you do it manually? Or do you just use singletons?

30. What is REST? What’s the difference between the POST and GET methods? This is essential knowledge.

31. Have you ever written a network layer? Explain briefly how you have done/will do? You only have to interpret it from your own experience.

32. Have you ever used Alamofire, or any other web framework? Some people use web frameworks, some people don’t. Do you usually use it?

33. How do I parse JSON in Swift? How do I parse XML in Swift? The JSON problem is pretty easy. If you know, also discuss your key decoding strategy. XML is somewhat forgotten, but for some projects, you may still need XML.

34. What is Certificate pinning? How do you do that in iOS applications? It doesn’t matter if you can’t do this one, but it would be nice to know!

35. How do I allow an insecure connection? Is it feasible? Will it pass the app review? Just say what you know — for example, talk about the circumstances in which it’s possible to do this.

36. How should we handle background operations? Know at least one way.

  1. What are the similarities and differences between GCD and NSOperation? GCD may be easier to use, but knowing when to use NSOperation is a plus.

38. What is a serial/concurrent queue? Give examples of when to use them.

39. What is a Dispatch group? Knowing is a bonus.

40. What’s your favorite way to create views? Why is that? Interface Builder, constraints in code, manual frame computing — what are the advantages and disadvantages of each? Which do you prefer and why?

41. How do I build views that support different screen sizes? Size class, user interface terminology, etc

42. What is the reuseIdentifier in this cell and what does the prepareForReuse method do? You have to know this one, because tables and collections are usually core elements in your application.

43. What is UIStackView? Have you used it before? You probably know stack Views by now, just say what you know about the subject, such as how to animate, etc.

44. What is internalContentSize? It really works.

45. Have you ever written a custom controller conversion? How do you do that? You don’t use this very often, but if you do, it’s best to remember back Gesture and how to do it.

46. What’s the difference between frame and bounds? This is the “must ask” question in the interview. But some developers don’t know the answer.

  1. Constraint priorities, Hugging Priority, and Compression Resistance Priority: What are they, and how do they work? Hopefully, you’re not the type of person who sets the priority of all constraints to 999 every time you encounter a constraint conflict.

48. What’s the most complicated animation you’ve ever made on iOS? How did you do it? If you’ve made something beautiful, say so with confidence.

49. How do I create complex animations without having multiple UIView.animate methods nested? I think we rarely have the opportunity (need) to do this, but you may need to do it someday.

50. (if you understand Objective-C) : What is the difference between copy and retain? Maybe the number of people who know the answer is going to decrease every year, but anyway, if you know Objective-C, you probably know it.

51. How will you store sensitive user data? This is just to check if you know anything about data security.

52. What is defer? In what order they are executed and so on.

What is Generics? Describe how generalization improves our lives, with examples from the Swift standard library.

Interview questions may not just be about code, so be prepared with general knowledge about iOS development.

54. Name the first few things you need to do after creating a new project. Please don’t say you need to set CocoaPods first. Don’t get me wrong, there’s nothing wrong with CocoaPods as a dependency Manager, but that’s not what you should be doing in the first place.

Do you use a dependency manager? Which do you prefer? There are no good or bad answers here — just to know your preference. However, it’s a good idea to know what the pros and cons of each manager are.

56. What is debug? Will you create custom configurations? I’m not sure how many projects will use custom configurations. Anyway, in some cases we might use it.

57. Do you use Xcode’s tools? What kind of? Hopefully you’ll at least use Leaks.

58. How do you find and fix memory leaks? If you have experience with reactive programming, you can talk about it, and by the way say that this kind of problem is harder to solve in reactive programming.

59. What is Continuous Integration (CI)? Have you used it? Has it been configured? There are many types, and it’s good to know one or two.

60. Do you have any experience releasing apps to the App Store? Have you ever had any problems with app review? Just speak from experience. If you’ve ever released an app using IAP, mention it. If you’ve ever had an interesting conversation with a censor, say so.

61. Do you have any experience in unit testing? What about UI testing? Everyone says they write tests, but do they really? If you’ve used any frameworks to help with testing, mention that too.

62. Have you ever developed a test Driven project (TDD)? Raise your hand if you’ve done it.

63. What development tools do you use every day? It could be something like a code formatter or a synchronizer — whatever. If you wrote your own tool, be sure to mention it!

64. What is SOLID? Can you list and describe these principles? If you know what it means, you are ready for the interview. However, it would be nice to give some examples.

65. What is declarative programming? Have you tried SwiftUI? SwiftUI is becoming more and more popular, and who knows, maybe in a few years it will become the only way to write iOS apps. So it’s best to at least know it exists. I don’t think anyone is asking for a lot of SwiftUI experience yet, but it’s a plus if you’ve tried.

66. What is Reactive programming? Do you have experience using Rx frameworks and/or Apple’s Combine? Apple does this too, so if you haven’t tried it yet, now is a good time to learn the basics.

67. Why did you leave your previous job? Are you looking forward to your new job? Just be honest. More money is most likely what you’re after, but there must be something else.

These are just some of the questions your interviewer might ask.

conclusion

It’s best to keep up with the changes in the iOS world, and that’s in your best interest. Read blogs, listen to podcasts, and follow the news about Apple developers. Even if there’s a good chance you won’t need to know all that in your new job, it’s always good to be open to new knowledge, and you can show your interviewer that you’re constantly learning.

Good luck with your interview — whether you’re the interviewer or the interviewer.

Interview questions continue to sort out the update, need to get the first-hand factory interview questions and answers document can add iOS advanced learning exchange group: 763164022! Strong contacts, discussion technology you want here!