Что хотят услышать работодатели? Что вам следует знать? В Интернете много пишут, но на самом деле играет роль человеческий фактор и вас ловят на простых вопросах, к которым вы не были готовы.
Привет, Хабр.
За последние 7 месяцев я провел около 20 собеседований.
Все они были на должность Junior iOS-разработчика.
В итоге после многочисленных мучений и затягиваний различных нюансов мобильной разработки мне поступило предложение в компанию, чему я был несказанно рад. Как человек без раннего опыта в разработке, сам экономист по образованию, я хотел бы поделиться и дать возможность человеку, который только решил встать на этот путь, немного понять, чего ему следует ожидать на собеседованиях и какие вопросы ему обязательно нужно улучшить.
или выучиться вообще.
Я буду писать здесь только на позиции младшего Swift iOS-разработчика.
Никаких других собеседований на эту должность я не проходил.
Я перечислю то, о чем с вероятностью 99% вас спросят, затем добавлю пару слов о каждом пункте.
Итак, начнем.
О чем вас обязательно спросят (ну, если вдруг забудут спросить, то, очевидно, будут ожидать, что вы это узнаете):
- Жизненный цикл ViewController
- ООП
- Разница между классом и структурой
- Протоколы
- Способы передачи данных между контроллерами
- Раскадровка или xib
- Авторазметка
- Сохранение данных (CoreData, Realm, UserDefault и т. д.)
- Запросы и работа с данными, которые мы получаем от сервера (URLSession, Alamofire, Codable)
- Замыкания
- Опции
- Расширения
- Дженерики
- АРК
- Многопоточность (поверхностно, глубоких знаний от джуна никто требовать не будет)
- слабый, бесхозный, частный, файловый
- Разница между рамкой и границами
- Cocoapods (SwiftPacketManager, Карфаген)
- Гит
- Жизненный цикл ViewController
Они хотят услышать от вас:
Есть, конечно, и другие методы, но и этих, как правило, будет достаточно.viewDidLoad() viewWillAppear(_ animated: Bool) viewDidAppear(_ animated: Bool) viewWillDisappear(_ animated: Bool) viewDidDisappear(_ animated: Bool)
- ООП
- Класс против структуры
Вам необходимо понять, хотя бы на базовом примере, что выдаст print() и почему.
let customClass = EasyQuestion()
let a = customClass
let b = a
b.someProperty = 4
print(a.someProperty)
Вы должны знать, что вам даст печать в этих двух случаях.
Также будет плюсом, если вы добавите, от кого можно наследовать ViewControllers, а от кого нельзя.
(P.S. из Struct - нет)
- Протоколы
Они также могут спросить о расширении протокола.
Вам нужно точно понимать, кто такие делегаты и как работает эта связь.
- Способы передачи данных между контроллерами
Делегируйте методы, замыкания через init, если мы создаем ViewController через xib и т. д.
- Раскадровка или xib
Ты джун, ты еще многого не знаешь.
Им главное понять, сможешь ли ты это написать.
Ну и вам нужно будет дать ответ, почему вы творите через xib или наоборот.
- Авторазметка
Советую погуглить, что это такое.
Получите общее представление, этого будет достаточно.
- Сохранение данных (CoreData, Realm, UserDefault и т. д.)
Самое главное — знать, когда использовать UserDefault, что сохранять в KeyChain, что такое Realm. Сохраните пару раз данные в своих домашних проектах в CoreData, чтобы иметь общее представление, что это за зверь и как его приручить.
- Запросы и работа с данными, которые мы получаем с сервера (URLSession, Alamofire, Codable)
Идеальный вариант – если перед собеседованием вам дали Техническое Задание, которое нужно забрать домой.
Там вы сможете продемонстрировать всю силу своего разума.
Alamofire также часто встречается в проектах, поэтому вам желательно знать, как его использовать.
Вы должны иметь возможность анализировать данные, которые сервер возвращает вам, используя Codable или некоторые библиотеки, такие как SwiftyJSON или ObjectMapper.
- Замыкания закрытия
Если вы знаете, как их писать и как их использовать, отлично! Но как вы покажете работодателю, что знаете это, если не сможете объяснить простым языком, что это такое.
Советую хорошенько пошуршать SwiftBook по этому вопросу.
- Опции
Вы должны знать об этом «Коте Шрёдингера» и о том, какие методы его развертывания существуют. Обязательно скажите им, что вы не сторонник Force Unwrap и глубоко презираете людей, которые вот так портят проект.
- Расширения
Скорее всего это будет в совокупности с другими вопросами (например, вопросом о протоколах).
Напишите Extensions пару раз.
Уверяю вас, ничего сложного здесь нет. Вы обязательно справитесь с этим вопросом.
Но у меня, например, были случаи, когда спрашивали, зачем великие умы это придумали.
Где-нибудь можно отметить такой ответ: «Чтобы расширить класс, к которому у нас нет доступа».
Например, родные Apple, в которые мы не можем попасть, но хотим немного расширить их для своего удобства.
- Дженерики
Главное просто понять суть того, почему это написано.
И вы всегда можете подсмотреть, как его создать.
Вас не заставят написать это на собеседовании.
Они просто хотят услышать ваше понимание этого вопроса.
- АРК (поверхностно, никто не будет требовать от джуниора глубоких знаний)
Как она увеличивается и что будет, если «счетчик» равен 0. Они не попросят вас нырнуть под капот, а если и попросят, то вряд ли поймут, что перед ними сидит молодой человек .
Здесь хотят понять, что можно корректно найти ошибки в коде, когда ваш ViewController, например, «случайно» не деинициализируется (убивает, исчезает, уходит).
- Многопоточность
Здесь есть много нюансов.
Вы не поймете их все сразу; главное — понимать GCD и Dispatch Queues. Здесь отличная статья об этой теме.
- слабый, бесхозный, частный, файловый
Что такое Private и FilePrivate? Это простой вопрос.
Вы можете прочитать это в Интернете, здесь нет ничего сложного, но знать все равно нужно.
Они также могут включить сюда вопрос о лени.
Здесь все так же просто.
Прочтите это!
- Разница между рамкой и границами
Но добавлю, что этот вопрос на удивление поднимался не так часто, как остальные.
Но побродив по Интернету, я заметил, что это довольно распространенный вопрос, так что не испытывайте судьбу, учитесь! Подумайте, что вас обязательно об этом спросят. Здесь нет ничего сложного, нужно просто понять суть (да, как и во всех остальных вопросах).
- Cocoapods (SwiftPacketManager, Карфаген)
Но если вы хотите расширить ассортимент, вы также можете посмотреть SwiftPacketManager, carthage.
- Гит
Используйте git, делайте коммиты (чем больше, тем лучше).
Вы должны иметь возможность создавать новые ветки, объединяться с другими ветками и разрешать конфликты слияния.
В принципе, я перечислил самые популярные вопросы, с которыми мне приходилось сталкиваться.
Конечно, человеческий фактор никто не отменял и тебя могут уличить в любом другом вопросе, но если ты хорошо разбираешься в этих вопросах, то ты уже на 90% готов.
Я сам еще юниор и понимаю, что мое мнение далеко от экспертного, но я просто решил поделиться с другими тем, что знаю, в надежде, что кому-то это будет очень полезно и поможет преодолеть этап техническое интервью.
Учитесь, развивайтесь и помогайте другим! Теги: #iOS-разработка #Разработка мобильных приложений #мобильная разработка #интервью #Swift
-
Каковы Возможности Использования Интернета?
19 Oct, 24 -
У Вашей Компании Есть Долг В Знаниях
19 Oct, 24 -
Пишем Наш Первый Драйвер Для Windows
19 Oct, 24 -
Статический Анализатор Detekt Для Kotlin
19 Oct, 24 -
5 Профессий, Которые Можно Автоматизировать
19 Oct, 24