Swift | Вопросы собесов

channel icon
Разбираем вопросы собеседований на iOS / Swift Developer

Сайт: easyoffer.ru

Условия размещения

Цена за 48 часов в ленте 1750,00
Цена за 1 час закрепления N/A
Взаимопиар Нет
+4
2 175
подписчиков
0
406
охват 1 публикации
0
~3
постов / день
0,0%
18,7%
ERR % ?

Статистика

Последние публикации

Swift | Вопросы собесов
21 апреля 2025 г. 22:46
Профессия «Аналитик данных» - начни учиться бесплатно!Профессия «Аналитик данных» - начни учиться бесплатно!

Освойте высокооплачиваемую IT-профессию с нуля за 6 месяцев. Выдаём диплом, помогаем с трудоустройством.
Excel, SQL, PowerBI, Python.

Преимущества обучения в Академии Eduson:
🎓 можно начать учиться бесплатно, если не понравится — не платите
🎓 официальный государственный диплом
🎓 рассрочка 0% на 24 мес.
🎓 бессрочный доступ к лекциям и материалам, которые регулярно обновляются
🎓 личный куратор с Вами на связи

Начните обучаться онлайн и получать стабильный доход уже во время обучения!

Подать заявкуПодать заявку

#реклама 16+
eduson.academy

О рекламодателе
Swift | Вопросы собесов
21 апреля 2025 г. 19:10
🤔🤔 Что такое GitFlow?

GitFlow — это стратегия ветвления в Git. В ней есть основные ветки (main, develop), а также поддержка feature, release, hotfix и support, которые упрощают управление релизами и разработкой.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚📚 Базу знаний Базу знаний
Swift | Вопросы собесов
21 апреля 2025 г. 17:00
"Почему 80% разработчиков НИКОГДА не получат топовые офферы? Шокирующая правда..."

🧑‍💻Забудьте мифы про "гениальный опыт". Даже классные кодеры не могут пройти собес, потому что не знают главного: успех — это умение ПРОДАТЬ свои навыки

❗️Всего 20% получают топовые позиции, потому что понимают, чего хотят компании, как подать себя и вести переговоры.

Хотите узнать, как выделиться среди сотен кандидатов и получить оффер мечты? Всё это — в канале «MAD iOS | From Code to Cash». Только работающие фишки.

✅ Не упустите шанс — присоединяйтесь

🆕 Сейчас новый цикл статей о том, как кандидаты совершают ошибки в самом начале реального отбора.
Swift | Вопросы собесов
21 апреля 2025 г. 12:40
Репост:
Офигеть, вот это поддержка! 🔥

Скажу честно: когда я планировал запуск краудфандинговой кампании, в голове были разные варианты развития событий. Думал — ну, наверное, получится собрать 300 тысяч. В самом идеальном сценарии — может быть, миллион.

Но больше всего я боялся, что запущу кампанию, и не получится собрать даже 300 т. Это был бы провал. Так много усилий, времени и денег вложено в проект… и если бы всё закончилось ничем — это бы сильно демотивировало.

Но, ребята, мы превысили изначальную цель в 10 раз —
3 031 040 рублей! 🤯

Вся эта кампания — это одна большая проверка бизнес-модели на прочность. И я супер рад, что запустил всё публично. Люди видят, что EasyOffer реально нужен. Теперь нет сомнений — проект актуален, он будет прибыльным и будет развиваться.

Мне приходит огромное количество сообщений в личку: кто-то когда-то давно пользовался сайтом, он помог с трудоустройством, и сейчас они уже не ищут работу — но всё равно поддержали.
Это прям очень круто и трогательно.

Никак не могу отделаться от мысли, что easyoffer — это ведь мой первый сайт. Учебный, пет-проект, просто для портфолио. И вот что из него вышло. Просто офигеть.

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

Огромное спасибо за вашу поддержку!Огромное спасибо за вашу поддержку! ❤️
Swift | Вопросы собесов
21 апреля 2025 г. 12:10
🤔🤔🤔 Чем опасна утечка памяти? Чем опасна утечка памяти?

Утечка памяти (memory leak) – это ситуация, когда память остаётся выделенной, но больше не используется программой и не освобождается.

class Person {
var pet: Pet?
deinit { print("Person удалён") }
}

class Pet {
var owner: Person?
deinit { print("Pet удалён") }
}

var person: Person? = Person()
var pet: Pet? = Pet()

person?.pet = pet
pet?.owner = person

person = nil
pet = nil


🚩Как избежать утечек памяти?

🟠Использовать `weak` или `unowned` ссылки
Слабые (weak) или безвладельческие (unowned) ссылки не увеличивают счётчик ссылок, что разрывает цикл.
class Person {
var pet: Pet?
deinit { print("Person удалён") }
}

class Pet {
weak var owner: Person? // Слабая ссылка
deinit { print("Pet удалён") }
}

var person: Person? = Person()
var pet: Pet? = Pet()

person?.pet = pet
pet?.owner = person

person = nil // "Person удалён"
pet = nil // "Pet удалён"


🟠Использовать `unowned`, если объект всегда будет существовать
unowned похож на weak, но он не может быть `nil`.
class Owner {
var car: Car?
deinit { print("Owner удалён") }
}

class Car {
unowned var owner: Owner // Безвладельческая ссылка
init(owner: Owner) { self.owner = owner }
deinit { print("Car удалён") }
}

var owner: Owner? = Owner()
owner?.car = Car(owner: owner!)

owner = nil // "Owner удалён", "Car удалён"


🟠Разрывать циклы в замыканиях (`[weak self]`)
Замыкания захватывают объекты, создавая циклические ссылки.
Проблема: self удерживается замыканием
class ViewController {
var closure: (() -> Void)?

func setup() {
closure = {
print(self) // Удерживает self, создавая цикл!
}
}

deinit { print("ViewController удалён") }
}

var vc: ViewController? = ViewController()
vc?.setup()
vc = nil // ❌ "ViewController" НЕ удалится


Решение: `[weak self]````swift
class ViewController {
var closure: (() -> Void)?

func setup() {
closure = { [weak self] in
print(self ?? "Нет self")
}
}

deinit { print("ViewController удалён") }
}

var vc: ViewController? = ViewController()
vc?.setup()
vc = nil // ✅ "ViewController удалён"
```

🚩Как найти утечки памяти?

🟠Использовать `Instrument – Leaks` в Xcode
- Открываем Xcode > Product > Profile.
- Выбираем Leaks.
- Запускаем приложение и проверяем, остаются ли объекты в памяти.

🟠Проверить `deinit`
Если метод deinit не вызывается – значит, объект утёк в память.
class Test {
deinit { print("Test удалён") }
}

var obj: Test? = Test()
obj = nil // Должно напечатать "Test удалён"


🟠Включить `Malloc Stack Logging`
- В Xcode открываем "Debug Memory Graph" (нажимая значок в Debugger).
- Смотрим, какие объекты остались в памяти.

Ставь 👍👍 и забирай 📚📚 Базу знаний Базу знаний
Swift | Вопросы собесов
20 апреля 2025 г. 21:00
Методичка: как сделать онлайн-встречи эффективнееМетодичка: как сделать онлайн-встречи эффективнее

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

Команда МТС Линк собрала на 37 страницах полезные материалы, чек-листы и кейсы, которые помогают компаниям проводить эффективные совещания в онлайне с помощью сервиса Встречи.

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

Еще в методичке описаны 7 способов оценки текущей эффективности ваших онлайн-встреч.

Получить гайд можно бесплатно на сайте.

СкачатьСкачать

#реклама 16+
mts-link.ru

О рекламодателе
Swift | Вопросы собесов
20 апреля 2025 г. 19:10
🤔🤔 Что такое GCD?

Grand Central Dispatch — это технология Apple для управления многопоточностью. Позволяет запускать задачи асинхронно или синхронно в очередях (DispatchQueue), управляя загрузкой и производительностью.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚📚 Базу знаний Базу знаний
Swift | Вопросы собесов
20 апреля 2025 г. 13:32
Переход на микросервисы с Kubernetes: что нужно учесть?Переход на микросервисы с Kubernetes: что нужно учесть?

24 апреля на бесплатном вебинаре от СберТеха «К микросервисам через построение управляемой контейнерной среды» поговорим о требованиях к контейнеризации и их реализации в продуктах Platform V DropApp и Platform V Synapse Service Mesh.

Что обсудим:

⚡ Почему важно выбрать правильный дистрибутив Kubernetes
⚡ Что входит в Platform V DropApp и каковы его основные преимущества
⚡ Какие инструменты помогают в защите контейнерных сред
⚡ Какие дополнительные ценности дает service mesh

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

Регистрируйтесь и приходите 24 апреля!

ЗарегистрироватьсяЗарегистрироваться

#реклама 16+
platformv.sbertech.ru

О рекламодателе
Swift | Вопросы собесов
20 апреля 2025 г. 12:10
🤔🤔🤔 В каких моментах жизненного цикла лучше поместить подписку? В каких моментах жизненного цикла лучше поместить подписку?

Подписку на уведомления (NotificationCenter), KVO или Combine в жизненном цикле UIViewController лучше размещать в методах, где гарантируется её актуальность и корректное удаление.

🟠Подписка в `viewDidLoad()`
Подписка на события обычно происходит в `viewDidLoad()`, так как этот метод вызывается один раз при создании контроллера.
override func viewDidLoad() {
super.viewDidLoad()

NotificationCenter.default.addObserver(
self,
selector: #selector(handleNotification),
name: .someNotification,
object: nil
)
}

@objc func handleNotification(_ notification: Notification) {
print("Получено уведомление")
}


🟠Подписка в `viewWillAppear()` – если уведомления нужны только при отображении экрана
Если подписка должна работать только когда экран на экране, используем viewWillAppear().
var cancellable: AnyCancellable?

override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)

cancellable = NotificationCenter.default.publisher(for: .someNotification)
.sink { _ in
print("Событие получено")
}
}


🟠`viewWillDisappear()` – отписка от событий
Когда контроллер скрывается, подписки можно удалить, чтобы избежать ненужных вызовов.
Удаление подписки на NotificationCenter:
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)

NotificationCenter.default.removeObserver(self, name: .someNotification, object: nil)
}


Удаление Combine подписки (cancellable)
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)

cancellable?.cancel()
cancellable = nil
}


🟠`deinit` – отписка, если подписка создаётся в `viewDidLoad()`
Если подписка работает на протяжении всего жизненного цикла контроллера, её можно удалить в `deinit`.
deinit {
NotificationCenter.default.removeObserver(self)
}


Ставь 👍👍 и забирай 📚📚 Базу знаний Базу знаний
Swift | Вопросы собесов
19 апреля 2025 г. 22:42
Курс "Дизайн карточек для WB и Ozon". Бесплатно и с нуляКурс "Дизайн карточек для WB и Ozon". Бесплатно и с нуля

Дизайнер карточек для маркетплейсов — востребованная и доходная профессия 💰
Научись ей бесплатно!

- Бесплатный доступ
- Разбор ДЗ от наставника
- Мощные кейсы в портфолио

Узнать большеУзнать больше

#реклама 16+
yudaevschool24.online

О рекламодателе
Swift | Вопросы собесов
19 апреля 2025 г. 19:10
🤔🤔 Как в памяти используется стек и куча?

Стек используется для хранения локальных переменных и вызовов функций — он быстрый и автоматически управляется. Куча используется для хранения объектов с динамическим временем жизни, управление памятью здесь происходит через ARC или GC.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚📚 Базу знаний Базу знаний
Swift | Вопросы собесов
19 апреля 2025 г. 13:45
Онлайн-магистратура Кибербезопасность от Яндекса и МИФИОнлайн-магистратура Кибербезопасность от Яндекса и МИФИ

День открытых дверей
23 апреля в 19:00 мск | Онлайн

Эксперты Яндекса и НИЯУ МИФИ расскажут об очной онлайн-магистратуре для карьеры в IT.
Всё о поступлении и обучении, выступления экспертов, ответы на вопросы.

Выбирайте всё: работу и учёбу, навыки и диплом магистра.

Узнать большеУзнать больше

#реклама 16+
practicum.yandex.ru

О рекламодателе
Swift | Вопросы собесов
19 апреля 2025 г. 12:10
🤔🤔🤔 Почему по дефолту дабл, а не фолт? Почему по дефолту дабл, а не фолт?

В Swift (и во многих других языках программирования) по умолчанию числовой литерал с плавающей запятой интерпретируется как `Double`, а не Float.

🚩Основные причины:

🟠Бóльшая точность
Double имеет 64 бита, а Float32 бита. Это значит, что Double может хранить более точные значения, что особенно важно при математических вычислениях.

🟠Совместимость со стандартными API
Большинство API и стандартных библиотек Swift (например, sin(), cos(), pow()) работают именно с Double.
Например:
   let x = 3.14 // По умолчанию это Double
let y = sin(x) // sin() принимает Double


🟠Производительность на современных процессорах
На современных 64-битных процессорах операции с Double выполняются так же быстро или даже быстрее, чем с Float, из-за оптимизаций в аппаратном обеспечении.

🟠Меньше неожиданных ошибок округления
Float может округлять числа с потерей точности, что может привести к неожиданным результатам.
Пример ошибки округления в Float:
   let a: Float = 0.1 + 0.2
print(a == 0.3) // false 😱


🚩Как сделать `Float` вручную?
Если всё же нужен Float, надо указать это явно:
let number: Float = 3.14


или
let number = 3.14 as Float


Ставь 👍👍 и забирай 📚📚 Базу знаний Базу знаний
Swift | Вопросы собесов
18 апреля 2025 г. 22:46
Заработайте 3000Р за рекомендацию счёта для бизнесаЗаработайте 3000Р за рекомендацию счёта для бизнеса

Участвуйте в реферальной программе СберБизнеса и получите промокод на 3000 ₽ в Купер.

Как это работает:
✅ Вы делитесь ссылкой на открытие счёта для бизнеса;
✅ Друг открывает счёт и пользуется им;
✅ Через 2 месяца вы получаете промокод на 3000 ₽ в Купер, а друг – 3000 ₽ на открытый счёт.

Присоединяйтесь к реферальной программе СберБизнеса и зарабатывайте. Участвовать можно неограниченное количество раз.

Узнать большеУзнать больше

Финансовые услуги оказывает: ПАО Сбербанк.

#реклама
sberbank.com

О рекламодателе
Swift | Вопросы собесов
18 апреля 2025 г. 19:10
🤔🤔 В чем различие очередей serial и concurrent?

- Serial (последовательные): выполняют задачи поочерёдно, одна за другой.
- Concurrent (параллельные): позволяют выполнять несколько задач одновременно, обеспечивая более высокую производительность.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚📚 Базу знаний Базу знаний
Swift | Вопросы собесов
18 апреля 2025 г. 14:11
Бесплатное льготное обучение: 3 месяцаБесплатное льготное обучение: 3 месяца

Ищем людей, которые хотят обучиться и работать в IT-сфере из дома

В конце обучения вы пройдете стажировку и устроитесь на работу с зп от 150.000 рублей

Образование, место жительства, трудовой стаж — не важны!

Для старта нужно:
— пройти короткий тест
— заполнить анкету

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

⚡ Осталось всего 47 бесплатных мест. Успейте пройти тест и оставить заявку:

Узнать большеУзнать больше

#реклама 16+
technolium.ru

О рекламодателе
Swift | Вопросы собесов
18 апреля 2025 г. 14:06
Репост:
📅 Осталось 7 дней до конца краудфандинга

Мы на финишной прямой!

Если ты планировал присоединиться, но ещё не успел, сейчас идеальный момент.

Вознаграждения за поддержку:

🚀 PRO подписка к easyoffer 2.0 на 1 год по цене месячной подписки. Активировать подписку можно в любой момент, например, когда начнешь искать работу.
➕ Приглашение на закрытое бета-тестирование

👉 Поддержать easyoffer 2.0

Не откладывай на последний момент

📌 Если не получается оплатить через карту РФ — напишите мне @kivaiko, и мы найдём удобный способ
Swift | Вопросы собесов
18 апреля 2025 г. 12:10
🤔🤔🤔 Расскажи про кодирование и декодирование в user defaults Расскажи про кодирование и декодирование в user defaults

UserDefaults — это хранилище для сохранения простых данных (строки, числа, массивы). Но если нужно сохранить сложные объекты, их сначала кодируют в `Data` (Codable), а затем сохраняют.

🟠Сохранение и загрузка простых данных
Для примитивных типов (строки, числа, массивы, словари) UserDefaults работает без кодирования:
let defaults = UserDefaults.standard

// Сохранение
defaults.set("Иван", forKey: "username")
defaults.set(25, forKey: "age")

// Чтение
let name = defaults.string(forKey: "username") ?? "Нет имени"
let age = defaults.integer(forKey: "age")

print(name, age) // Иван 25


🟠Сохранение сложных объектов (Codable)
Если нужно сохранить свой объект, сначала его нужно закодировать в Data.
struct User: Codable {
let name: String
let age: Int
}


Сохранение в UserDefaults
let user = User(name: "Иван", age: 25)
let defaults = UserDefaults.standard

if let encoded = try? JSONEncoder().encode(user) {
defaults.set(encoded, forKey: "user")
}


Загрузка из UserDefaults
if let savedData = defaults.data(forKey: "user"),
let savedUser = try? JSONDecoder().decode(User.self, from: savedData) {
print(savedUser.name, savedUser.age) // Иван 25
}


🟠Удаление данных из `UserDefaults`
Чтобы удалить ключ:
defaults.removeObject(forKey: "user")


🟠Сохранение массива объектов
Можно сохранить массив объектов, просто закодировав его:
let users = [
User(name: "Иван", age: 25),
User(name: "Анна", age: 30)
]

if let encoded = try? JSONEncoder().encode(users) {
defaults.set(encoded, forKey: "users")
}

// Читаем массив обратно
if let savedData = defaults.data(forKey: "users"),
let savedUsers = try? JSONDecoder().decode([User].self, from: savedData) {
print(savedUsers) // [{name: Иван, age: 25}, {name: Анна, age: 30}]
}


Ставь 👍👍 и забирай 📚📚 Базу знаний Базу знаний
Swift | Вопросы собесов
17 апреля 2025 г. 13:43
Искусственный интеллект помогает больше продаватьИскусственный интеллект помогает больше продавать

Битрикс24 CRM + Ai упрощает работу менеджера. Расшифровывает записи звонков клиентам и сам заполняет карточку сделки.
Менеджер в это время уже звонит следующему клиенту.

Попробуйте умную CRM

ПопробоватьПопробовать

#реклама 16+
bitrix24.ru

О рекламодателе
Swift | Вопросы собесов
17 апреля 2025 г. 12:10
🤔 Какие виды диспетчеризации существуют в свифт?Какие виды диспетчеризации существуют в свифт?

В Swift существует несколько видов диспетчеризации, которые определяют, как и когда вызываются методы или функции. Основные виды диспетчеризации включают статическую диспетчеризацию (static dispatch), диспетчеризацию по таблице виртуальных функций (vtable dispatch), диспетчеризацию по свидетелю (witness table dispatch) и динамическую диспетчеризацию (dynamic dispatch). Рассмотрим их подробнее:

🟠Статическая диспетчеризация (Static Dispatch)
Вызов функции или метода определяется на этапе компиляции. Используется для функций и методов, которые не переопределяются в подклассах или не являются динамическими. Для структур, перечислений и final классов.
     struct MyStruct {
func printMessage() {
print("Hello from MyStruct")
}
}

let instance = MyStruct()
instance.printMessage() // Вызов определяется на этапе компиляции


🟠Диспетчеризация по таблице виртуальных функций (Vtable Dispatch)
Используется для вызова методов класса, которые могут быть переопределены в подклассах. Виртуальная таблица (vtable) используется для определения, какой метод вызывать. Для классов и их подклассов.
     class BaseClass {
func printMessage() {
print("Hello from BaseClass")
}
}

class SubClass: BaseClass {
override func printMessage() {
print("Hello from SubClass")
}
}

let instance: BaseClass = SubClass()
instance.printMessage() // Вызов определяется в runtime с использованием vtable


🟠Диспетчеризация по свидетелю (Witness Table Dispatch)
Используется для вызова методов протоколов, реализованных типами. Таблица свидетелей (witness table) используется для определения, какой метод вызывать. Для типов, соответствующих протоколам.
     protocol MyProtocol {
func printMessage()
}

struct MyStruct: MyProtocol {
func printMessage() {
print("Hello from MyStruct")
}
}

let instance: MyProtocol = MyStruct()
instance.printMessage() // Вызов определяется в runtime с использованием witness table


🟠Динамическая диспетчеризация (Dynamic Dispatch)
Используется для вызова методов, отмеченных как dynamic или методов Objective-C. Метод определяется в runtime с использованием Objective-C runtime. Для методов, которые должны быть динамически разрешены в runtime, обычно для взаимодействия с Objective-C.
     import Foundation

class MyClass: NSObject {
@objc dynamic func printMessage() {
print("Hello from MyClass")
}
}

let instance = MyClass()
instance.printMessage() // Вызов определяется в runtime с использованием Objective-C runtime


Ставь 👍👍 и забирай 📚📚 Базу знаний Базу знаний