Какие Вопросы Задают Младшим Ios-Разработчикам На Первых Собеседованиях?



Что хотят услышать работодатели? Что вам следует знать? В Интернете много пишут, но на самом деле играет роль человеческий фактор и вас ловят на простых вопросах, к которым вы не были готовы.

Привет, Хабр.

За последние 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
Здесь вас, скорее всего, спросят, создавали ли вы когда-нибудь ViewController с помощью xib. Они не будут просить вас вдаваться в нюансы и детали.

Ты джун, ты еще многого не знаешь.

Им главное понять, сможешь ли ты это написать.

Ну и вам нужно будет дать ответ, почему вы творите через xib или наоборот.

  • Авторазметка
Здесь я мог бы написать длинный рассказ на эту тему.

Советую погуглить, что это такое.

Получите общее представление, этого будет достаточно.

  • Сохранение данных (CoreData, Realm, UserDefault и т. д.)
Этот вопрос будет преследовать вас долгое время.

Самое главное — знать, когда использовать UserDefault, что сохранять в KeyChain, что такое Realm. Сохраните пару раз данные в своих домашних проектах в CoreData, чтобы иметь общее представление, что это за зверь и как его приручить.

  • Запросы и работа с данными, которые мы получаем с сервера (URLSession, Alamofire, Codable)
Здесь вам нужно знать, что такое POST и GET. Это спросят. Необходимо уметь обрабатывать ошибки при запросе.

Идеальный вариант – если перед собеседованием вам дали Техническое Задание, которое нужно забрать домой.

Там вы сможете продемонстрировать всю силу своего разума.

Alamofire также часто встречается в проектах, поэтому вам желательно знать, как его использовать.

Вы должны иметь возможность анализировать данные, которые сервер возвращает вам, используя Codable или некоторые библиотеки, такие как SwiftyJSON или ObjectMapper.

  • Замыкания закрытия
Это очень важный момент. Может случиться так, что вы действительно часто этим пользуетесь, но не вникли в суть данного вопроса.

Если вы знаете, как их писать и как их использовать, отлично! Но как вы покажете работодателю, что знаете это, если не сможете объяснить простым языком, что это такое.

Советую хорошенько пошуршать SwiftBook по этому вопросу.

  • Опции
Это должно быть для вас одним из самых простых пунктов.

Вы должны знать об этом «Коте Шрёдингера» и о том, какие методы его развертывания существуют. Обязательно скажите им, что вы не сторонник Force Unwrap и глубоко презираете людей, которые вот так портят проект.

  • Расширения
Вряд ли это будет звучать как отдельная тема.

Скорее всего это будет в совокупности с другими вопросами (например, вопросом о протоколах).

Напишите Extensions пару раз.

Уверяю вас, ничего сложного здесь нет. Вы обязательно справитесь с этим вопросом.

Но у меня, например, были случаи, когда спрашивали, зачем великие умы это придумали.

Где-нибудь можно отметить такой ответ: «Чтобы расширить класс, к которому у нас нет доступа».

Например, родные Apple, в которые мы не можем попасть, но хотим немного расширить их для своего удобства.

  • Дженерики
Для чего они? Что это? Когда вы читаете о дженериках в SwiftBook, вашему простому уму может показаться чем-то сверхсложным, но на самом деле все гораздо проще.

Главное просто понять суть того, почему это написано.

И вы всегда можете подсмотреть, как его создать.

Вас не заставят написать это на собеседовании.

Они просто хотят услышать ваше понимание этого вопроса.

  • АРК (поверхностно, никто не будет требовать от джуниора глубоких знаний)
Здесь от вас хотят услышать общее представление о подсчете ссылок.

Как она увеличивается и что будет, если «счетчик» равен 0. Они не попросят вас нырнуть под капот, а если и попросят, то вряд ли поймут, что перед ними сидит молодой человек .

Здесь хотят понять, что можно корректно найти ошибки в коде, когда ваш ViewController, например, «случайно» не деинициализируется (убивает, исчезает, уходит).

  • Многопоточность
Как перейти из основного потока в фоновый.

Здесь есть много нюансов.

Вы не поймете их все сразу; главное — понимать GCD и Dispatch Queues. Здесь отличная статья об этой теме.

  • слабый, бесхозный, частный, файловый
Что это за слабые свойства? В чем разница между слабым и бесхозным.

Что такое Private и FilePrivate? Это простой вопрос.

Вы можете прочитать это в Интернете, здесь нет ничего сложного, но знать все равно нужно.

Они также могут включить сюда вопрос о лени.

Здесь все так же просто.

Прочтите это!

  • Разница между рамкой и границами
В принципе, с этого вопроса можно начать собеседование.

Но добавлю, что этот вопрос на удивление поднимался не так часто, как остальные.

Но побродив по Интернету, я заметил, что это довольно распространенный вопрос, так что не испытывайте судьбу, учитесь! Подумайте, что вас обязательно об этом спросят. Здесь нет ничего сложного, нужно просто понять суть (да, как и во всех остальных вопросах).

  • Cocoapods (SwiftPacketManager, Карфаген)
Вы обязательно должны знать, как включать библиотеки в свой проект. Самый популярный — CocoaPods. В принципе, знания этого вам будет достаточно.

Но если вы хотите расширить ассортимент, вы также можете посмотреть SwiftPacketManager, carthage.

  • Гит
Ну даже не знаю, что тут добавить.

Используйте git, делайте коммиты (чем больше, тем лучше).

Вы должны иметь возможность создавать новые ветки, объединяться с другими ветками и разрешать конфликты слияния.

В принципе, я перечислил самые популярные вопросы, с которыми мне приходилось сталкиваться.

Конечно, человеческий фактор никто не отменял и тебя могут уличить в любом другом вопросе, но если ты хорошо разбираешься в этих вопросах, то ты уже на 90% готов.

Я сам еще юниор и понимаю, что мое мнение далеко от экспертного, но я просто решил поделиться с другими тем, что знаю, в надежде, что кому-то это будет очень полезно и поможет преодолеть этап техническое интервью.

Учитесь, развивайтесь и помогайте другим! Теги: #iOS-разработка #Разработка мобильных приложений #мобильная разработка #интервью #Swift

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.