Swift Interview - Вопросы для собеседований. Mobile митапы и конференции.
161 subscribers
9 photos
28 links
При интервью кандидаты часто сталкиваются с вопросами, которые не встречали или разбирали поверхностно. Это касается как и сложных, так и простых тем. На канале вопросы будут систематизироваться по сложности и темам
Download Telegram
Начальный уровень. Общие вопросы.

Чем отличается массив от множества? Когда предпочтителен каждый тип коллекции?

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

Обычно от кандидатов ожидаются подобные ответы:
1) Массив - это упорядоченная коллекция, состоящая из элементов, которые могут быть не уникальными.
2) Множество - это неупорядоченная коллекция из уникальных элементов. Уникальность достигается имплементацией протокола Hashable (его мы разберём в одном из следующих постов).

Если вы дали ответ на первый заглавный вопрос подобный моему, то второй как правило отпадает.

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

Более подробное описание всех типов коллекций по ссылке снизу 👇👇👇

#SwiftInterviewBeginner #SwiftInterviewGeneral

https://swiftbook.ru/content/languageguide/collection-types/
👍4
8 сентября в 19:00 состоится совместный митап Rambler&Co и Okko в смешанном формате: в онлайне на YouTube-канале Rambler&Co и в офлайне в Москве по адресу: Варшавское шоссе, д. 9, стр 1, Даниловская мануфактура, корпус «Ряды Солдатенкова», 5 подъезд).

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

Регистрируйся прямо сейчас, количество мест ограниченно🔥🔥🔥.
👍3🔥2
Начальный уровень. Архитектура приложения.

Чем отличается активная и пассивная модель в MVC?

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

#SwiftInterviewBeginner
#SwiftInterviewArchitecture

http://rsdn.org/article/patterns/ModelViewPresenter.xml
👍3
Средний уровень. UIKit.

Расскажите про метод layoutSubviews. Можно ли его вызывать напрямую?

LayoutSubviews — это метод UIView, который обрабатывает перемещение и изменение размеров view и всех его subviews, что даёт view и каждому subview месторасположение и размер. Этот метод очень затратный, потому что действует на все subview данного view и вызывает их соответсвующие layoutSubviews тоже. Поэтому его не нужно называть напрямую. Вместо него, если вы хотите принудительно обновить и перерисовать view и его subview, используете метод setNeedLayout. Надо учесть, что при вызове этого метода перерисовка произойдёт не мгновенно, а при следующем цикле обновления run loop (подробнее о нём в одном из следующих постов). Если вы же хотите вызвать перерисовку незамедлительно, нужно вызвать layoutIfNeeded.

Так же надо понимать, что setNeedLayout - вызывается асинхронно, layoutIfNeeded - синхронно.

Более подробно по ссылке снизу 👇👇👇

#SwiftInterviewBeginner
#SwiftInterviewUIKit

https://abhimuralidharan.medium.com/ios-swift-setneedslayout-vs-layoutifneeded-vs-layoutsubviews-5a2b486da31c
👍3
Начальный уровень. Общие вопросы.

Логические задачи. Задача про два шнура (фитиля).

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

У Вас есть два шнура (фитиля). Каждый шнур, подожженный с конца, полностью сгорает дотла ровно за один час, но при этом горит с неравномерной скоростью. Как при помощи этих шнуров и зажигалки отмерить время в 45 минут?

Необходимо поджечь первый шнур одновременно с обоих … Ответ читайте ниже 👇👇👇

Больше логических задач по ссылке ниже 👇👇👇

https://tproger.ru/articles/10-logicheskih-zadach-s-sobesedovanij-kotorye-zastavjat-zastrelitsja/

#SwiftInterviewBeginner
#SwiftInterviewGeneral
👍21
Продолжается набор талантливых iOS разработчиков на стажировку в Яндекс🚀

Сейчас открыты вакансии в трёх командах, в том числе, в SuperApp — самую крупную команду мобильных разработчиков, которая делает Браузер и Яндекс с Алисой. 

Стажировка оплачивается и длится от 3 до 6 месяцев. Выбирайте удобную дату выхода и график работы: занятость 20, 30 или 40 часов, старт — каждую неделю. Иногородним стажёрам оплачивается проезд и проживание, а тех, кто хорошо себя проявит, будут рады видеть в штате. Стажёры должны хорошо знать базовые алгоритмы и структуры данных, а также уметь писать код на Swift. 

Узнать все подробности и подать заявку: https://clck.ru/yXmu2
🔥4
Средний уровень. Многопоточность.

GCD. Как вы понимаете последовательные и параллельные очереди. Синхронное и асинхронное выполнение заданий.

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

Особенностью работы iOS является то, что большое внимание система уделяет отрисовке именно UI, которая происходит только на главном потоке main thread, соответсвенно его нужно стараться разгружать от тяжелых задач, которые могут привести к фризам, что сильно раздражает конечных пользователь. Пожалуй, разгрузка главного потока - это самая частая задача, которую вам придётся делать.

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

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

Самый популярный инструмент для работы с многопоточностью - это Grand Central Dispatch или сокращённо GCD, поэтому мы с него и начали. Поставленный вопрос является тоже начальным.

Вкратце ответ приблизительно должен быть таким: в GCD мы работаем с потоками не напрямую, а через очереди, очереди бывают последовательные serial (в этом случае задачи выполняются последовательно друг за другом на одном потоке, и одновременно выполняется только одна задача) и параллельные concurrent (в этом случае задачи выполняются последовательно друг за другом на нескольких доступных потоках, и соответсвенно одновременно может выполняться несколько задач). Задачи берутся из очереди по принципу FIFO (first in first out). Задачу можно добавить как синхронно sync (в этом случае блокируется поток, на котором она добавлена, пока задача не выполниться), так и асинхронно async (в этом случае задача не блокирует поток, а сразу отпускает его после добавления в очередь).

Более подробно по ссылке снизу👇👇👇
https://habr.com/ru/post/320152/

#SwiftInterviewMedium
#SwiftInterviewMultithreading
👍5🔥3
🤘 Врывайся на масштабный онлайн-хакатон Skolkovo Hack 2022

Отложи все дела и участвуй в онлайн-хакатоне с 23 по 25 сентября. Найдётся место для всех айтишников: разработчиков (frontend, backend, мобильных, blockchain), графических и UX/UI-дизайнеров, дата-инженеров и дата-сайентистов, product и project-менеджеров, аналитиков, QA- и DevOps-специалистов.
Уровень подготовки — не имеет значения. Приглашаются и профессионалы, и студенты, чтобы классно провести время и научиться чему-то новому. Найти и создать команду ты сможешь прямо на платформе хакатона Codenrock.
 
Ты получишь:
✔️ Крутые треки, которые прокачают твои скиллы
✔️ Нетворкинг с участниками и экспертами
✔️ Ценные призы: Apple TV, Яндекс.Станция, грант на развитие проекта в сфере Web3, лимитированный мерч и гранты на развитие блокчейн проектов
✔️ Деловая программа с воршкопами, митапами и экспертными сессиями с владельцами треков

Регистрация до 18 сентября! Узнать все подробности и подать заявку по ссылке: https://cnrlink.com/skhcdrvk
👍3🔥1
Все уровни. Общие вопросы. 

Саморазвитие.

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

Получать информацию можно из многих источников, таких как:

Книги. Определённое что-то советовать не буду, но вы можете сами определиться, что вам интересно или что необходимо изучить, и поискать в интернете. Книги могут быть разной тематики про сам язык swift, про алгоритмы, про паттерны, про анимации, про геймдев и т.д.

Интернет сайты. Среди англоязычных одни из самых полезных https://www.raywenderlich.comhttps://medium.com, среди русских — https://habr.com/, на начальном этапе https://swiftbook.ru.

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

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

Митапы и конференции. Полезны как новичкам, так и опытным разработчикам. На подобных мероприятиях часто разбираются нетривиальные темы и кейсы. Есть хорошая возможность узнать что-то новое. Если же вы будет участвовать в оффлайн режиме, то можно познакомиться с интересными людьми, задать лично вопросы.

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

По возможности я постараюсь размещать мероприятия из 5 и 6 пунктов, интересных и полезных именно iOS разработчикам. На самом деле они проходят не так часто, поэтому, я надеюсь, вас подобные посты не будут раздражать 😉

#SwiftInterviewGeneral
#SwiftInterviewBeginner #SwiftInterviewMedium #SwiftInterviewAdvanced
👍10
Начальный уровень. Общие вопросы.

Жизненный цикл приложения. 

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

Жизненный цикл приложения представляет собой последовательность событий, происходящих между запуском и закрытием приложения.

Точкой входа является main.swift:

main.swift
autoreleasepool {
  UIApplicationMain(CommandLine.argc, CommandLine.unsafeArgv, nil, NSStringFromClass(AppDelegate.self))
}

Во время запуска, функция UIApplicationMain выбирает несколько ключевых объектов и запускает приложение. В сердце каждого iOS приложения лежит объект UIApplication, который способствует взаимодействию между системой и другими объектами приложения. Объект UIApplication запускает main runloop и использует его для обработки пользовательских событий и изменений в интерфейсе.

В любом момент времени приложение можно находится в одном из пяти состояний:

• Not running (Не запущено): приложение не было запущено или остановлено системой.
• Inactive (Неактивное состояние): приложение переходит в состояние переднего плана, но не получает события.
• Active (Активное состояние): приложение переходит в состояние переднего плана и может обрабатывать события.
• Background (Фоновое состояние): в этом состоянии, если есть исполняемый код, он будет выполняться, а если исполняемый код отсутствует или выполнение завершено, приложение будет немедленно приостановлено.
• Suspended (Приостановленное состояние): приложение находится в фоновом режиме (в памяти), но не выполняет код, и если в системе недостаточно памяти, оно завершит работу приложения.

Это короткий ответ на данную тему, так же отдельного разбора требует runloop (в одном из будущих постов). Более подробный разбор по ссылке ниже 👇 👇👇
https://medium.com/@neroxiao/ios-app-life-cycle-ec1b31cee9dc

#SwiftInterviewGeneral
#SwiftInterviewBeginner
👍9
🗓 29 сентября в 19:00 состоится совместный митап СберМаркет Tech и сообщества Coffee&Code на тему мобильной разработкиt.

Программа:

1. Горизонтальная карусель для баннеров на SwiftUI
Александр Соломатов — iOS Chapter Lead в CберМаркете:
Расскажу про то, как мы живём уже больше года в проде со SwiftUI…

2. Гайд по анимациям в React Native
Евгений Прокопьев — Android Developer в CберМаркете:
Расскажу про библиотеки анимации: что с чем использовать и как это работает внутри.

3. Keyboard avoiding in SwiftUI
Валерий Скворцов —iOS Developer в СберМаркете:
В ходе разработки приложения появляются кейсы, когда клавиатура затрудняет взаимодействие пользователя с UI или же блокирует его совсем…

4. Boost your coordinators
Александр Сычев — Head of mobile в СберЗдоровье:
В докладе разберем, как можно получить максимум от координаторов

💻 Онлайн
🍕Офлайн с пиццей и общением. А еще на митап заглянут ребята из сообщества Coffee&Code с wow-активностью для гостей.

Регистрация и более подробная информация
👍6
Начальный уровень. UIKit.

Жизненный цикл UIViewController.

Опять же фундаментальная тема, вопросы по которой задают очень часто. Возможно вы получите какие-то косвенные вопросы, на которые обязательно нужно знать ответы, например, в какой момент времени view знает свои размеры, в какой момент создаётся view, скоро раз вызывается метод viewDidLoad, один или может несколько и т.д. 

Сам жизненный цикл состоит из следующих методов:

Создание

• init
• initWithNibName

Создание view

• isViewLoaded
• loadView
• viewDidLoad
initWithFrame
initWithCoder

Обработка изменения состояния view

viewDidLoad
viewWillAppear
viewDidAppear
viewWillDisappear
viewDidDisappear
viewDidUnload

Обработка memory warning

didReceiveMemoryWarning

Уничтожение

• viewDidUnload (deprecated уже давно)
deinit

Если вы не смогли ответить на вопросы, что-то не понимаете или увидели незнакомые методы, то ознакомьтесь с исчерпывающей статьей на хабре по ссылке ниже 👇👇👇 (Она хоть и старая, но до сих пор актуальная, только viewDidUnload уже нет)

#SwiftInterviewBeginner
#SwiftInterviewUIKit

https://habr.com/ru/post/129557/
👍8
6 октября в 19:00 red_mad_robot и эксперты из «Иннотеха» приглашают поучаствовать в митапе, который пройдёт в московском Робохранилище. Он будет посвящён свежим технологиям, доступным в новых версиях iOS, обобщённому программированию, метаморфозам архитектуры и нативной навигации, так же будет онлайн-трансляция. Митап проводим для джун- и мидл-специалистов.

Хорошая возможность, чтобы пообщаться, поделиться опытом, поесть пиццу и послушать доклады. 🍕🍕🍕

Более подробная информация и регистрация здесь 👇👇👇
https://redmad.timepad.ru/event/2173120/
👍6
​​Начальный уровень. Алгоритмы.

Алгоритмическая сложность. Аннотация Big O.

Алоха друзья! Этим постом мы открываем важную тему в программировании «Алгоритмы» и целую область вопросов, попадающихся на собеседовании. 

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

Сложность алгоритма - это количественная характеристика, которая говорит о том, сколько времени, либо какой объём памяти потребуется для выполнения алгоритма.

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

Распространённые сложности алгоритмов:

• O(1) - константная
• O(n) - линейная
• O(log n) - логарифмическая
• O(n * log n) - линеарифметическая или линеаризованная
• O(n2), O(n^2) - квадратичная

Наглядно зависимость времени обработки от входящих данных для различных алгоритмов можете увидеть в прикреплённом графике. На нем, например, видно как сильно отличаются графики для простого цикла (линейная сложность) и вложенного (квадратичная). Более подробно с примерами в статье 👇👇👇

#SwiftInterviewBeginner
#SwiftInterviewAlgorithms

https://bimlibik.github.io/posts/complexity-of-algorithms/
👍9
Intern week offer — ускоренный путь для тех, кто хочет на стажировку в Яндекс. Хорошая возможность попасть в крупную ит компанию.
 
В рамках нового проекта вы сможете пройти собеседования и получить приглашение в команду всего за 7 дней. Направления: Backend (Python, Java), Frontend или Mobile (iOS, Android)
 
Что нужно сделать: 

заполнить анкету на сайте: https://clck.ru/32G595
выполнить тестовое задание до 30 октября
пройти секции и финалы, которые начнутся 7 ноября
если всё пройдёт хорошо — сразу же получить заветный оффер

Условия стажировки:

🔥 стажировки в Яндексе вам оплачиваются и длятся от 3 до 6 месяцев
🔥 занятость вы выбираете сами: 20, 30 или 40 часов в неделю
🔥 иногородним стажёрам оплачиваем проезд и проживание в Москве

Более подробная информация и регистрация 👇👇👇
https://clck.ru/32G595
🔥5👍1
Начальный уровень. Общие вопросы.

Принципы SOLID. 

Алоха друзья! Сегодня мы разберём один из базовых вопросов на собеседовании. Итак, SOLID - это  мнемонический акроним для первых пяти принципов, названных Робертом Мартином в начале 2000-х, которые означали 5 основных принципов объектно-ориентированного программирования и проектирования. Использование принципов SOLID способствует созданию системы, которую будет легко поддерживать и расширять в течение долгого времени.

Разберём подробнее каждую букву:

• SSingle-responsibility principle/ Принцип единственной ответственности

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

• O - Open–closed principle / Принцип открытости-закрытости 

Программные сущности должны быть открыты для расширения, но закрыты для модификации

• L - Liskov substitution principle / Принцип подстановки Лисков 

Объекты родительских классов должны быть заменимы объектами подклассов без изменения поведения приложения

• I - Interface segregation principle / Принцип разделения интерфейсов 

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

• D - Dependency inversion principle / Принцип инверсии зависимостей 

При разработке нужно полагаться на абстракции, а не на конкретные реализации. Компоненты ПО должны иметь низкую связность и высокую согласованность.

Часто спрашивают не все принципы, а какой-то один, например, чаще почему-то именно принцип подстановки Лисков. Иногда просят привести пример нарушения принципов SOLID, в стандартных библиотеках, фреймворках от Apple. Тут можно указать, что в языке Swift есть механизм переопределения функции (override func), который нарушает принцип Принцип открытости-закрытости. Так же можно привести пример UIStackview, который игнорирует  backgroundColor, тем самым нарушается принцип подстановки Лисков.

Более наглядно в статье по принципам SOLID 👇👇👇

#SwiftInterviewBeginner
#SwiftInterviewGeneral

https://habr.com/ru/company/productivity_inside/blog/505430/
👍9🔥21
Средний уровень. Многопоточность.

Задача на изображении. Что выведется на экран?

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

#SwiftInterviewMedium
#SwiftInterviewMultithreading
#SwiftInterviewTasks
👍10🔥2
Forwarded from CocoaHeads (Nikita Maidanov)
🎉  Долгожданный CocoaHeads в четверг, 27 октября в 18:00 (МСК)!

🖼 Александр Скворцов, Павел Курчатов и Ольга Ким (все Яндекс) помогут нам разобраться с DivKit — новым опенсорсным фреймворком для server-driven UI от Яндекса. Пока Александр и Павел будут рассказывать о фреймворке и отвечать на вопросы, Ольга в прямом эфире сверстает экран приложения!

🍭 Илья Чикмарев (CocoaHeads) расскажет про перфоманс в SwiftUI, как заставить его работать чуть-чуть лучше и избежать популярных ошибок.

🔥 В конце традиционный квиз! Проверьте, что есть доступ к платформе Kahoot заранее (может быть нужен VPN), чтобы поучаствовать и получить призы

Ждем всех в четверг в 18:00 в Zoom, ссылка будет в канале, не пропускайте!
Запись будет позже на нашем YouTube
👍6🔥2
Начальный уровень. Работа с памятью.

Расскажите про работу с памятью в Swift. 

Доброго времени суток! Сегодня мы начнём разбирать вопрос, который попадается на собеседовании в не зависимости от роли, на которую вы претендуете. В этом посте разберём что необходимо знать джуну для ответа, а именно что такое reference/value type, что хранится в стеке, а что в куче, принцип работы arc, как избежать зацикливания сильных ссылок.

Value/Reference Types

Value и Reference Types — это основные концепции Swift. В Swift есть три способа объявления типа: классы, структуры и перечисления. Их можно разделить на типы значений (структуры, перечисления, базовые типы) и ссылочные типы (классы, функции, замыкания). То, как они хранятся в памяти, определяет разницу между ними:

• Value Type — каждая переменная типа значения имеет свою собственную копию данных, и операции с одной не влияют на другую. За него отвечает стэк;

• Reference Type — у нас есть ссылка, указывающая на это место в памяти. Переменные ссылочного типа могут указывать на одни и те же данные; следовательно, операции с одной переменной могут повлиять на данные, указанные другой переменной. За него отвечает куча.

ARC

Количество ссылок на один объект может увеличиваться и уменьшаться. В Swift для того чтобы отслеживать этого количество и при уменьшении его до нуля освобождать объект из памяти существует механизм ARC (Automatic Reference Counter).

Retain cycle

При подсчете ссылок может возникнуть ситуация, когда два объекта ссылаются друг на друга, что делает невозможным их высвобождение из памяти, потому что оба их счетчика ссылок (retain count) всегда будут равны единице или больше. То есть происходит ситуация зацикливания сильных ссылок (retain cycle). Для ее исправления нужно сделайте одну из ссылок weak или unowned.

• Слабая(weak) ссылка: не увеличивает счетчик ссылок. Слабые ссылки всегда объявляются как необязательные (optional) типы. Когда счетчик ссылок становится равным нулю, объект автоматически будет деаллоцирован.

• Unowned ссылки: тут точно так же, как и со слабыми ссылками. Она не увеличивает счетчик ссылок. Основное отличие в том, что это не необязательный тип. Если вы попытаетесь получить доступ к unowned свойству, которое ссылается на деинициализированный объект, вы получите ошибку времени выполнения, сравнимую с принудительной распаковкой необязательного типа с nil.

Это краткий ответ по основным пунктам, более подробно в том числе про кучу и стек по ссылке снизу 👇👇👇

#SwiftInterviewBeginner
#SwiftInterviewMemory

https://habr.com/ru/company/otus/blog/649329/
👍8🔥3
Mobius — большая техническая конференция по мобильной разработке.

🗓 Ближайшая конференция: Mobius 2022 Autumn, 9–10 ноября · Online
🗓 Offline-день + Online: 21 ноября · Москва

Темы конференции:

Работа платформ (iOS / Android) и языков программирования (Swift / Kotlin / Flutter / Java) под капотом;
Software Craftsmanship (подходы и практики в разработке мобильных приложений и работе с фреймворками);
Архитектура (архитектурные паттерны, legacy и рефакторинг, модуляризация);
Качество продукта (производительность, UI/UX, безопасность);
Тренды в мобильной разработке (SPM, open source-решения и лучшие практики)

А кроме этого — еще 41 спикер из Яндекса, Сбера, Gradle, VK, Тинькофф, Skyeng и других компаний 🔥🔥🔥

На Mobius вы сможете не только послушать выступления, но и задать вопросы спикерам, а также пообщаться с другими единомышленниками. И промокоды mobileproglib2022JRGpc, iosheads2022JRGpc дадут скидку от 20% на билеты из категории «Для частных лиц».

👉 Подробности и билеты:  mobiusconf.com
👍8
Общие вопросы

Подготовка к нетехнической части собеседования

Друзья, всем привет! Хочу поделиться радостной новостью - вчера на Хабре вышла моя первая, так сказать, вводная статья - «Подготовка к нетехнической части собеседования». В дальнейшем планирую выкладывать там важный материал, связанный напрямую с темой моего телеграмм-канала. Возможно, часть информации, необходимой для подготовки к собеседованиям, будет выкладываться там раньше, поэтому буду признателен, если подпишитесь на меня на Хабре. Заранее спасибо и хорошего дня! Ссылка на статью👇👇👇https://habr.com/ru/post/701962/

#SwiftInterviewGeneral
#SwiftInterviewBeginner
#SwiftInterviewMedium
#SwiftInterviewAdvanced
🔥81