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

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

Сайт: easyoffer.ru

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

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

Статистика

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

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


Ставь 👍👍 и забирай 📚📚 Базу знаний Базу знаний
Swift | Вопросы собесов
16 апреля 2025 г. 21:02
Курсы повышения квалификации от Moscow Digital SchoolКурсы повышения квалификации от Moscow Digital School

🎓Образовательная экосистема MDS. Знания, навыки и деловые связи для вашей карьеры

🗒Знания, навыки и деловые связи для вашего профессионального роста

✨Получите знания в новой области права. Помощь в трудоустройстве с карьерным центром. Рассрочка 0%

❤️Оставьте заявку сейчас и станьте ближе к успешной карьере юриста!

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

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

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

Процесс выглядит так:
1. Пользователь нажимает кнопку.
2. Запускается сетевой запрос по URL изображения.
3. После завершения загрузки изображение преобразуется в нужный формат.
4. Полученное изображение устанавливается в элемент ImageView.
Важно, чтобы сетевой запрос выполнялся в фоновом потоке, а обновление интерфейса — в основном UI-потоке.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚📚 Базу знаний Базу знаний
Swift | Вопросы собесов
16 апреля 2025 г. 14:10
📺📺 Уникальная база IT собеседований

456+
456+ реальных собеседований на программиста, тестировщика, аналитика и прочие IT профы.

Есть собесы от ведущих компаний: Сбер, Яндекс, ВТБ, Тинькофф, Озон, Wildberries и т.д.

🎯 Переходи по ссылке и присоединяйся к базе, чтобы прокачать свои шансы на успешное трудоустройство!
Swift | Вопросы собесов
16 апреля 2025 г. 12:10
🤔🤔🤔 Какие изменения надо сделать в constrait перед вызовом layout? Какие изменения надо сделать в constrait перед вызовом layout?

Перед вызовом layoutIfNeeded() или layoutSubviews() в iOS-приложении, нужно изменить значение констрейнта и вызвать анимацию, если необходимо. Вот основные шаги:

🟠Обновление значения констрейнта
Перед вызовом layoutIfNeeded(), измените свойство констрейнта (например, constant у NSLayoutConstraint).
class ViewController: UIViewController {
@IBOutlet weak var button: UIButton!
@IBOutlet weak var heightConstraint: NSLayoutConstraint!

override func viewDidLoad() {
super.viewDidLoad()

DispatchQueue.main.asyncAfter(deadline: .now() + 2) {
self.changeButtonHeight()
}
}

func changeButtonHeight() {
heightConstraint.constant = 100 // Меняем значение констрейнта
UIView.animate(withDuration: 0.3) {
self.view.layoutIfNeeded() // Перестраиваем макет
}
}
}


🟠Если меняется набор констрейнтов
Если нужно удалить/добавить констрейнты, используйте `activate()` / `deactivate()`.
var expanded = false

@IBOutlet weak var smallHeightConstraint: NSLayoutConstraint!
@IBOutlet weak var largeHeightConstraint: NSLayoutConstraint!

func toggleHeight() {
expanded.toggle()

if expanded {
NSLayoutConstraint.deactivate([smallHeightConstraint])
NSLayoutConstraint.activate([largeHeightConstraint])
} else {
NSLayoutConstraint.deactivate([largeHeightConstraint])
NSLayoutConstraint.activate([smallHeightConstraint])
}

UIView.animate(withDuration: 0.3) {
self.view.layoutIfNeeded()
}
}


🟠Если работа идёт в `viewDidLoad()`
Во viewDidLoad() элементы ещё не отрисованы, поэтому layoutIfNeeded() не сработает. Используйте viewDidAppear() или вызовите layoutIfNeeded() после view.layoutIfNeeded().
override func viewDidLoad() {
super.viewDidLoad()
heightConstraint.constant = 100
view.layoutIfNeeded() // НЕ обновит макет, потому что он ещё не загружен
}


Решение
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)

heightConstraint.constant = 100
UIView.animate(withDuration: 0.3) {
self.view.layoutIfNeeded()
}
}


Разница между layoutIfNeeded() и setNeedsLayout()
heightConstraint.constant = 100
view.setNeedsLayout() // Обновление произойдет на следующем цикле рендера


Ставь 👍👍 и забирай 📚📚 Базу знаний Базу знаний
Swift | Вопросы собесов
15 апреля 2025 г. 22:45
Торгуйте валютой с Альфа Форекс!Торгуйте валютой с Альфа Форекс!

Зарабатывайте на Forex бирже с Альфа Форекс💰

✅Лицензия ЦБ
Более 20 лет на рынке Forex👍

Вас ждет самый широкий выбор инструментов в РФ - 40+ валютных пар, включая рублевые! Ввод/вывод 0%, пополнение через СБП, торги от 0.01 лота!

Альфа Форекс - лицензированный Брокер, которому доверяют!❤️

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

Финансовые услуги оказывает: ООО «Альфа-Форекс», АО "АЛЬФА-БАНК".

#реклама
alfaforex.ru

О рекламодателе