Junior ios: Работа junior IOS developer в Москве на полный день

Какие вопросы задают Junior iOS разработчику на первых собеседованиях / Хабр

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


Здравствуй, Хабр. За недавние 7 месяцев обходил собеседований, где-то больше 20. Все они были на позицию Junior iOS developer. В итоге после многочисленных терзаний и подтягиваний различных нюансов мобильной разработки, мне дали офер в компанию, чему я был безумно рад.

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

Писать я тут буду только для Junior Swift iOS developer позиций. Другие собеседования на тех позицию не проходил.

Я перечислю списком вещи которые с вероятностью 99% вас будут спрашивать, потом я добавлю пару слов о каждом пункте.

Итак, начнем.


Что вас точно будут спрашивать (ну а если вдруг забудут спросить, то явно будут от вас ожидать что вы это знаете):

  • Жизненный цикл ViewController’a
  • ООП
  • Разница между класом и структом
  • Протоколы
  • Способы передачи данных между контроллерами
  • Storyboard или xib
  • AutoLayout
  • Сохранение данных (CoreData, Realm, UserDefault, etc.)
  • Запросы и работа с данными которые получаем с сервера (URLSession, Alamofire, Codable)
  • Замыкания (closures)
  • Optionals
  • Extensions
  • Generics
  • ARC
  • Многопоточность (поверхностно, никто не будет требовать глубинных познаний от джуна)
  • weak, unowned, private, fileprivate
  • Разница между frame и bounds
  • Cocoapods (SwiftPacketManager, carthage)
  • Git


Разберем вкратце несколько пунктов.

  • Жизненный цикл ViewController’a


Тут все просто. От вас хотят услышать:

viewDidLoad()
viewWillAppear(_ animated: Bool)
viewDidAppear(_ animated: Bool)
viewWillDisappear(_ animated: Bool)
viewDidDisappear(_ animated: Bool)


Есть конечно еще методы, но этих в принципе будет достаточно.

  • ООП


Этот момент можно легко загуглить и прочитать что там есть.

  • Class vs Struct


Тут на самом деле казалось бы все просто, но вам действительно нужно знать в чем у них отличия. Нужно понимать хоты бы на базовом примере что выдаст print() и почему.

let customClass = EasyQuestion()
let a = customClass
let b = a
b.someProperty = 4
print(a.someProperty)


Вы должны знать что вам выдаст print в этих двух кейсах.

Так же будет плюс если добавить от кого ViewController’ы могут наследоваться, а от кого нет. (P.S. от Struct’a — нет)

  • Протоколы


Почитайте что это и для чего они используются (хотя я думаю вы и так уже о них слышали).

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

  • Способы передачи данных между контроллерами


Вам достаточно будет назвать парочку. Методы делегата, closures, через init если создаем ViewController через xib и т.д.

  • Storyboard или xib


Тут вас скорее всего спросят создавали ли вы когда либо ViewController через xib. В нюансы и детали ударяться вас просить не будут. Вы джун, вы еще много-го не знаете. Тут главное им понять сможете ли вы это написать. Ну и надо будет дать ответ почему вы создаете через xib или наоборот.

  • AutoLayout


Тут расписывать можно долго на эту тему. Советую загуглить что это такое. Уловите общую суть, этого будет достаточно.

  • Сохранение данных (CoreData, Realm, UserDefault, etc.)


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

  • Запросы и работа с данными которые получаем с сервера (URLSession, Alamofire, Codable)


Тут нужно знать что такое POST, GET. Это будут спрашивать.

Нужно уметь обрабатывать ошибки при запросе. Идеальный вариант это если вам дали Техническое задание на дом перед собеседованием. Там вы и можете продемонстрировать всю мощь вашего ума.

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

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

  • Замыкания (closures)


Это очень важный момент. Может случиться так что вы действительно часто этим пользуетесь, но не вникали в суть этого вопроса. Если вы знаете как их писать и как ими пользоваться — отлично! Но как вы покажете работодателю что вы это знаете если вы не сможете объяснить простым языком что это. Советую хорошенько прошуршать SwiftBook по этому вопросу.

  • Optionals


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

  • Extensions


Отдельным вопросом это вряд ли будет звучать. Скорее всего это будет в связке с другими вопросами (например вопрос про протоколы). Попишите пару раз Extension’ы. Уверяю, ничего сложного там нет. Вы точно справитесь с этим вопросом.

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

Можете себе где-то пометить такой ответ — «Для расширения класса к которому у нас нет доступа». К примеру нативные эпловские, в которые мы залезть не можем, но хотим его немного расширить для нашего удобства.

  • Generics


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

  • ARC (поверхностно, никто не будет требовать глубинных познаний от джуна)


Тут от вас хотят услышать общее представление подсчета ссылок. Как оно увеличивается и что будет если «счетчик» будет равен 0. Под капот вас нырять просить не будут, а если будут, то вряд ли они понимают что перед ними сидит джун.

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

  • Многопоточность


Как перенести с main thread на background. Тут есть много нюансов. Во всех сразу не разберешься, главное разобраться с GCD и Dispatch Queues. Вот отличная статья на эту тему.

  • weak, unowned, private, fileprivate


Какие это weak проперти. Какая разница между weak и unowned.

Что такое private и fileprivate? Это простой вопрос. Вы можете почитать в интернете, тут ничего сложного нет, но знать все равно надо.

Могут также сюда включить вопрос о lazy. Тут так же все просто. Почитайте!

  • Разница между frame и bounds


С этого вопроса могут в принципе начать собеседование. Но добавлю что этот вопрос на удивление встречался не так часто как остальные. Но пошуршав в интернете я заметил что это довольно распространенный вопрос, так что не пытайте удачу, учите! Думайте что вас это обязательно спросят. Ничего сложного здесь нет, просто надо понять суть (да-да, как и со всеми другими вопросами).

  • Cocoapods (SwiftPacketManager, carthage)


Как затягивать библиотеки в свой проект вы точно должны уметь. Самое популярное это CocoaPods. Знать его вам в принципе будет достаточно. Но если хотите расширить ассортимент то можете посмотреть еще SwiftPacketManager, carthage.

  • Git


Ну тут я даже не знаю что можно добавить. Пользуйтесь гитом, делайте комиты (чем больше тем лучше).

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

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

Учите, развивайтесь и помогайте другим!

iOS developer | 387 | Hexlet CV

Основное

Описание

Знаю как написать приложение с UI на UIKit/SwiftUI, работать с серверным API, хранить данные локально.

Я любопытный и заинтересованный разработчик. Люблю писать структурированный, легко читаемый и поддерживаемый код.

До того как стать разработчиком, 8 лет работал проджект и продакт менеджером в продуктовых компаниях. Это помогает мне понимать продуктовые и бизнесовые цели, и в том числе думать о приложении с точки зрения клиента.

Разговариваю на английском, могу свободно проходить интервью.

В 2014 году придумал и запустил сервис Printie с iOS приложением, где можно было заказать печать фотографий из Инстаграма на холстах и постерах с доставкой по всему миру. Поднял бесплатный движок интернет- магазина для обработки заказов, адаптировал его под наши задачи. Мобильная разработка была на фрилансере, которому я ставил задачи и описал API. Сейчас сервис не работает, остался проморолик: https://vimeo.com/100502191

Навыки

UI Frameworks
SwiftUI, UIKit

iOS SDK
Combine, CoreData, URLSession

Architectures and patterns
MVVM, MVC, SOLID

Other
Git, Fastlane, SPM

Награды, Сертификаты

Прошёл курс Stanford CS193p (Developing Applications for iOS using SwiftUI). Выкладывал задания на гитхаб: https://github.com/yogar

Прошёл курс «Управление продуктом на основе аналитики. Go Practice! Симулятор» Сертификат: https://simulator.gopractice.ru/certificate/56c3b59e-fe29-482f-b74b-b5785cf35b88

Владение английским

Могу проходить интервью

Hexlet

https://ru.hexlet.io/u/user-4fdc5df3409bb37e

Github

https://github.com/yogar

Контакт

tg: @grpkht, email: [email protected]

Работа

iOS-разработчик, Mnfctr

июля 2020 — по настоящее время

Разрабатываю приложения для клиентов компании.

Swift • UIKit • Mapbox •Клиент-серверные приложения

iOS Developer, Frogogo

дек. 2021 — мая 2022

Стэк: Swift, UIKit, SwiftUI, MapKit, Alamofire, SPM.

Приложение — клиент интернет-магазина с программой лояльности.

Успел сделать:
1. Разрабатывал с нуля и обновлял UI экранов. Заменил несколько массивных вью-контролеров на небольшие модели и вью.
2. Обновлял клиент для поддержки новых версии API бэкенда.
3. Избавился от нескольких избыточных и устаревших зависимостей.
4. Исправил множество ошибок и крашей. Избавился от падения приложения, когда не приходят необходимые данные от сервера.

Приложение: https://apps.apple.com/us/app/frogogo-клуб-выгодных-покупок/id1476687478

Junior iOS Developer, Rebarborum

июля 2021 — дек. 2021

Стэк: SwiftUI, UIKit, URLSession, Combine, Turbo-iOS, CoreLocation, CoreBluetooth.

Работал над тремя приложениями для проверки продуктовых гипотез.

  1. Cделал приложение, которое позволяет загрузить изображения с камеры или фотогалереи в хранилище и сообщить на бэкенд о статусе, есть авторизация.
  2. Сделал Sharing Extension, чтобы загружать фотографию можно из любого другого приложения.
  3. Автоматизировал загрузку тестовых билдов с помощью Fastlane.
  4. Сделал приложение, в котором используется библиотека Turbo-iOS, позволяет обернуть веб-приложение в нативные вью и сделать бесшовную интеграцию. Сделал стык нативной и веб-части.
  5. Сделал приложение под macOS, которое отправляет содержимое буфера обмена на сервер и открывает полученную в ответ ссылку в браузере. Добавил меню в статус бар и экран настройки шортката для вызова отправки на сервер.

Менеджер продукта, Точка Банк

окт. 2020 — марта 2021

Отвечал за поиск проблем у бухгалтеров — клиентов банка. Провёл исследование по гипотезам болей (20+ интервью). По итогу исследования запустил продажи продукта по интеграции 1С Бухгалтерии и банка.

Менеджер продукта, СберЗдоровье (ранее DocDoc)

марта 2020 — окт. 2020

Отвечал на развитие UX мобильного приложения. Провел UX-исследование сценария онлайн-консультации врача в приложении. С командой проработал несколько итераций прототипов и провёл UX сессии с пользователями на каждом. Макеты ушли в разработку.

Менеджер продукта, Profi.ru

марта 2017 — июля 2019

Запустил и развивал сценарий уточнения требований клиента к услуге или специалисту на сайте и в приложении. Конверсия в создание заказа выросла на двузначные цифры без падения выручки.
Перезапустил интерфейс выбора адреса и подходящего для выезда района клиента. Конверсия в создание заказа выросла на 3.5%, выручка на 1.4%.

Менеджер проектов, СберЗвук (ранее Zvooq)

сент. 2014 — сент. 2016

Запустил 5 партнёрств с операторами сотовой связи из России, Украины, Беларуси, Казахстана. Отвечал за интеграцию с биллингом оператора, локализацию, брендирование, поддержку маркетинга, разработку сценариев в приложении.

Основатель, разработчик бэкенда, Printie

марта 2014 — сент. 2014

В 2014 году придумал и запустил сервис с iOS приложением, где можно было заказать печать фотографий из Инстаграма на холстах и постерах с доставкой по всему миру. Я разрабатывал бэк и ставил задачи мобильному разработчику на фрилансе. Сейчас сервис не работает, остался только проморолик: https://vimeo.com/100502191

Образование

СибГУ им. М.Ф.Решетнёва, Информационная безопасность телекоммуникационных систем

сент. 2005 — февр. 2011

31 000+ вакансий младших разработчиков iOS в США (1 204 новых)

Перейти к основному содержанию

  • За последние 24 часа (1204)

    Прошлая неделя (7 958)

    Прошлый месяц (21 742)

    В любое время (31 630)

  • Получить награды (25)

    Компьютерные фьючерсы (9)

    Желание (6)

    Технический светлячок (5)

    Элеос Технологии (4)

  • 40 000 долларов + (10 616)

    60 000 долларов США + (9 632)

    80 000 долларов США + (7 494)

    100 000 долларов США + (4 090)

    120 000 долларов США + (2358)

  • Нью-Йорк, штат Нью-Йорк (1215)

    Сан-Франциско, Калифорния (930)

    Чикаго, Иллинойс (877)

    Лос-Анджелес, Калифорния (421)

    Денвер, Колорадо (267)

  • Полная занятость (25 088)

    Неполный рабочий день (1398)

    Контракт (4968)

    Временный (74)

    Волонтер (11)

  • Стажировка (89)

    Начальный уровень (11 238)

    Ассоциированный (903)

    Средний-старший уровень (16 403)

    Директор (57)

  • На месте (19 885)

    Удаленный (8,391)

    Гибрид (4029)

Получайте уведомления о новых вакансиях Junior Ios Developer в United States .

Войдите, чтобы создать оповещение о вакансии

Вы просмотрели все вакансии для этого поиска

Младший разработчик iOS — Viaplay Group

В Viaplay Group мы ежедневно развлекаем миллионы людей с помощью наших потоковых сервисов, радиосетей, телеканалов и продакшн-студий. Мы верим в силу контента не только как способ рассказывать истории и затрагивать жизни, но и как способ расширения мира.

Мы начинали в Скандинавии, но у нас глобальное мышление и мы считаем себя международным поставщиком развлечений. Это означает, что мы постоянно запускаем наш потоковый сервис Viaplay на новых рынках и ищем талантливых, любознательных и целеустремленных профессионалов, которые присоединятся к нам в нашем путешествии.

Прямо сейчас мы ищем iOS-разработчика в наш стокгольмский офис. Готовы ли вы начать увлекательную смену карьеры?

 

Роль

В настоящее время мы ищем iOS-разработчика, который присоединится к нашей команде разработчиков в рамках программы удержания. Команда состоит из 7 разработчиков с разными навыками, разработчиков Front end, Back end и Full stack, а также одного дизайнера. Миссия команды состоит в том, чтобы предоставить индивидуальный опыт, основанный на личных предпочтениях клиентов и шаблонах профилей пользователей. Вы будете тесно сотрудничать с нашим главным инженером iOS, который поможет вам в решении ваших задач и развитии.

Поскольку команда Viaplay состоит как из команд, так и из гильдий по компетенциям, вы будете тесно сотрудничать с группой талантливых разработчиков в разных областях. Команды по продуктам ставят четкие цели, основанные на нашем пути клиента, и полностью автономны в том, как создавать лучшие решения для достижения своих целей. Команды инженеров, с другой стороны, следят за тем, чтобы мы были в курсе новейших технологий, и работают над выполнением нашей миссии, чтобы сделать инновации и эксперименты на наших мобильных платформах быстрыми и легкими. Другими словами, если вы хотите работать по-новому и устали от доставки тикетов Jira весь день — у нас есть предложение, от которого вы не сможете отказаться

 

Что мы ищем

Мы понимаем, что вы можете чувствовать себя уверенно, отмечая определенные поля больше, чем другие, и поэтому мы всегда сохраняем непредвзятость в нашем процессе найма. Но, чтобы преуспеть в этой роли, мы верим, что вы должны иметь хотя бы некоторые знания в следующем:

  • Базовые знания в приложении iOS с использованием Swift
  • Понимание того, что значит работать в гибкой рабочей среде
  • Понимание что такое модульное тестирование, проверка кода и другие методы, ориентированные на качество

Мы также считаем важным, чтобы вы были любопытны и готовы учиться и развивать свои навыки вместе и под руководством других разработчиков и получать удовольствие от сотрудничества.

Это бонус, если у вас есть:

  • Опыт работы с tvOS или работа с приложениями, которые доступны в App Store. Structured Concurrency, Combine или SwiftUI
  • Способность к действию, чувство юмора и способность скромно работать с другими.

 

Наше предложение

  • У нас есть базовые знания (и даже больше)! 30 дней оплачиваемого отпуска каждый год, гибкий график работы и дополнительная компенсация в дополнение к родительской надбавке.
  • Ваше благополучие имеет значение. У нас есть привлекательная пенсионная и страховая программа с полным медицинским обслуживанием, если оно вам понадобится.
  • Безопасное пространство для роста и повышения квалификации со свободой пробовать новые вещи в автономных командах. Наша культура обучения ставит вас на место водителя вашего собственного развития, при этом вы всегда чувствуете поддержку благодаря регулярным занятиям по обмену знаниями, техническому обучению, возможностям наставничества и сетям равных.
  • Инновационная среда с Hack Days не один, а два раза в год. Эта недельная инициатива позволяет вам мыслить нестандартно и предлагать творческие технические решения, которые (чаще всего) внедряются либо в наш продукт, либо в наши методы работы.
  • По-настоящему интернациональная и разнообразная группа коллег, с которой можно связаться. Мы стремимся к гендерному балансу 50:50, и мы не за горами — к тому же, когда мы в прошлый раз проверяли, у нас более 60 разных национальностей в наших девяти офисах!
  • Развлечение — это то, что мы любим, и развлечение — это то, чем мы занимаемся . Таким образом, неограниченный доступ к Viaplay кажется справедливым для вас, чтобы вы могли познакомиться с продуктом, включая спортивные трансляции и события с оплатой за просмотр, прокат новых выпусков фильмов, линейные каналы и многое другое.

 

Играйте сегодня

Если это похоже на вызов для вас, не забудьте подать заявку, прикрепив свое резюме здесь — вы также можете добавить свой профиль LinkedIn. Пожалуйста, не присылайте нам свою заявку по электронной почте, потому что мы не сможем ее принять. Однако мы приветствуем любые вопросы, которые могут возникнуть у вас по поводу этой конкретной должности.

Хотите узнать больше о том, кто мы и чем занимаемся? Посетите нашу страницу вакансий или подпишитесь на нас в Instagram! Мы всегда на расстоянии нескольких кликов.

scroll to top