Masterdata · июнь 2024

Тех собес на middle-senior IOS Разработчик в Masterdata

middle-senior Тех собес 53 вопроса
1

Общие вопросы

1. Расскажи про свой опыт работы: чем занимался, какие технологии использовал и на чем был основной упор в последнее время?

2. С какими проектами ты работал?

2

Core Data

3. Какой у тебя опыт работы с базами данных?

4. Насколько глубоко ты знаешь Core Data?

5. Расскажи про объектную модель Core Data.

6. Что такое контекст (NSManagedObjectContext) в Core Data?

7. Расскажи, что такое relationships (отношения) в Core Data?

8. С Core Data ты работал напрямую или использовал какие-то фреймворки-обертки?

9. Расскажи про Realm и свой опыт работы с ним.

10. Почему Realm считают быстрее, чем Core Data?

11. Почему Core Data закрыта, и нельзя посмотреть реализацию, а Realm, по-твоему, открыта?

3

Concurrency

12. Давай поговорим о многопоточности: что это такое, зачем она нужна, как с ней работать, и что такое очереди?

13. Расскажи подробнее про очереди в многопоточности, какой у них смысл?

14. Что такое Quality of Service?

15. Какие есть проблемы многопоточности (Deadlock, Race Condition, Livelock) и какие правила их предотвращения существуют?

16. Что такое примитивы синхронизации потоков: semafor, mutex, locks, barriers?

17. Можешь привести пример из реальной работы, где можно применить semafor?

18. В чем плюсы и минусы NSOperation по сравнению с GCD?

19. Какой у тебя опыт с async/await? Почему не использовал?

20. Как думаешь, за async/await будущее?

4

Управление памятью

21. Расскажи, как в iOS работает управление памятью.

22. Что такое ARC?

23. Какие типы ссылок (Strong, Weak, Unowned) ты знаешь и в чем их особенности?

24. Что такое Retain Cycle, и как его избегать?

25. Зачем нужна Unowned ссылка, если есть Weak?

26. В чем разница в производительности между Weak и Unowned?

27. Где хранятся ссылки типа Strong и Unowned, а где Weak? Что такое side table?

28. Почему все ссылки не хранятся в side table?

29. Какие типы данных (Value и Reference) существуют и как они связаны со стеком (Stack) и кучей (Heap)?

30. В чем отличие стека от кучи и зачем их разделяют?

31. Что такое copy-on-write?

32. Что такое closures?

33. Что такое Capture List? В чем его особенность?

34. Как сделать так, чтобы значение, захваченное в Capture List, можно было изменить?

35. Что такое ключевое слово @escaping?

36. Зачем нужен autorelease pool? Приведи пример его использования.

5

Objective-C и Runtime

37. Какой у тебя опыт работы с Objective-C?

38. Есть ли понимание, как устроен Objective-C Runtime?

39. Что такое таблица вызовов в Objective-C?

40. Что такое Method Swizzling, в чем его смысл и какое действие происходит при его использовании?

41. Зачем в принципе надо подменять методы?

42. У нас довольно много кода на Objective-C. Как ты думаешь, почему?

6

UI и верстка

43. Расскажи про свой опыт работы с UI.

44. Как ты работал с Auto Layout?

45. Пробовал ли ты верстать Constraint’ы строками?

46. Какие проблемы могут возникнуть при работе со Storyboards?

47. Что такое Xib-файлы и чем они отличаются от Storyboards?

7

Работа с сетью

48. Какой у тебя опыт работы с сетями?

49. Что такое Codable?

50. Зачем нам нужен протокол Codable при работе с сетью?

51. Как работает URLSession? В каком режиме?

52. Как реализовать несколько последовательных запросов с помощью URLSession?

53. Почему последовательные запросы могут быть предпочтительнее параллельных? Приведи пример.