Тех собес на middle-senior IOS Developer в ****

Доступно с премиум-подпиской

Оформите премиум-подписку, чтобы получить доступ к:

  • Фильтрации по компаниям
  • Названиям компаний в интервью
  • Видеозаписям собеседований в категории IOS Developer

Посмотреть видео в категории

(2024-08-29)

— Общие вопросы и вопросы о процессах в команде:

1. Расскажи, как у вас устроен процесс разработки: как задача проходит от этапа получения до выпуска в прод? 2. Какой твой лучший проект, чего ты добился? Приведи кейсы, где ты был инициатором чего-то нового или предложил интересное решение. 3. Какие процессы в команде тебе нравятся и какие ты считаешь идеальными?

— Архитектура и дизайн:

1. Как с точки зрения безопасности работала кросс-авторизация в твоем проекте? 2. Расскажи о своем опыте перехода с MVC на MVVM. Что тебе понравилось и не понравилось в этом переходе? 3. Почему вы приняли решение перейти с MVC на MVVM? 4. В чем отличие View Controller от View Model? 5. Ты когда-нибудь работал с компонентами, которые используются в разных проектах? Например, с внутренними библиотеками. 6. Какое понятие ты вкладываешь в термин “архитектура”? 7. Если бы ты начал новый большой проект с нуля, какую архитектуру бы выбрал и какие подходы внедрил? От чего это зависит? 8. Что ты подразумеваешь под Clean Architecture? Расскажи о своем понимании. 9. С какими принципами из SOLID ты знаком? Какой из них кажется тебе наиболее важным и почему? 10. Как ты можешь объяснить принцип “открытости/закрытости” (Open/Closed Principle)? 11. Как можно расширять функционал библиотеки, не меняя ее код? Приведи примеры. 12. Как бы ты реализовал взаимодействие с UI-элементами, не изменяя код базовой библиотеки, например, для кастомной UITableView? 13. Применял ли ты Dependency Injection (DI) в своих проектах?(DI) в своих проектах?

— Производительность и оптимизация:

1. Расскажи о своем опыте оптимизации производительности UITableView. 2. С какими проблемами утечки памяти (memory leaks) ты сталкивался? 3. Какие инструменты для поиска утечек памяти ты использовал? 4. Расскажи про диспетчеризацию в Swift/Objective-C? (статистическая, табличная, отправка сообщений) 5. Как ты относишься к многопоточности? Чувствуешь ли себя уверенно в этой области? 6. Как сделать словарь потокобезопасным? Какие способы ты знаешь? 7. Чем Operation отличается от GCD? В каких случаях ты бы выбрал одно, а в каких другое? 8. Какие преимущества async/await по сравнению с GCD?авнению с GCD?

— Тестирование:

1. Какие тесты можно написать для формы с авторизацией, где есть два текстовых поля и кнопка? 2. Как бы ты написал Unit-тест? Как бы он понимал, что тест прошел или упал? 3. Как бы ты проверил, что отправка событий после нажатия на кнопку работает корректно?о?

— Задача 1: Разберём простую задачу. Допустим, у нас есть форма логина с двумя полями — логин и пароль — и кнопка “Войти”. Выбери архитектуру, которая тебе ближе, и расскажи, какие будут компоненты и как они будут взаимодействовать между собой.

— Задача 2: Что выведет программа?

    import Foundation

protocol Animal {    func say()}
extension Animal {    func say() {        print(“Say”)    }}
class Cat: Animal {    func say() {        print(“Meow”)    }}

Cat().say()(Cat() as Animal).say()

— Задача 3: — Что выведет программа и почему? — Что скажете по поводу DispatchQueue.main и RunLoop.main? Есть ли между ними какая-то особенность, и в каких случаях что лучше использовать?

  // Кейс 1:
let queue1 = DispatchQueue(label: "label")
queue1.async {
    queue1.sync {
        print("Hello world!")
    }
}

// Кейс 2:let queue2 = DispatchQueue(label: “label”)let newQueue = DispatchQueue(label: “newQ”)queue2.async {    newQueue.sync {        print(“Hello world!”)    }}