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

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

Kanalga Telegram’da o‘tish
2 215
Obunachilar
+124 soatlar
+17 kunlar
-230 kunlar
Obunachilarni jalb qilish
Iyun '26
Iyun '26
+25
0 kanalda
May '26
+21
0 kanalda
Get PRO
Aprel '26
+23
0 kanalda
Get PRO
Mart '26
+35
0 kanalda
Get PRO
Fevral '26
+45
1 kanalda
Get PRO
Yanvar '26
+58
0 kanalda
Get PRO
Dekabr '25
+28
0 kanalda
Get PRO
Noyabr '25
+156
1 kanalda
Get PRO
Oktabr '25
+26
0 kanalda
Get PRO
Sentabr '25
+41
0 kanalda
Get PRO
Avgust '25
+38
0 kanalda
Get PRO
Iyul '25
+27
0 kanalda
Get PRO
Iyun '25
+34
0 kanalda
Get PRO
May '25
+50
0 kanalda
Get PRO
Aprel '25
+87
0 kanalda
Get PRO
Mart '25
+151
2 kanalda
Get PRO
Fevral '25
+123
1 kanalda
Get PRO
Yanvar '25
+127
53 kanalda
Get PRO
Dekabr '24
+55
1 kanalda
Get PRO
Noyabr '24
+75
0 kanalda
Get PRO
Oktabr '24
+193
42 kanalda
Get PRO
Sentabr '24
+348
251 kanalda
Get PRO
Avgust '24
+98
0 kanalda
Get PRO
Iyul '24
+140
54 kanalda
Get PRO
Iyun '24
+411
244 kanalda
Get PRO
May '24
+646
191 kanalda
Get PRO
Aprel '24
+353
23 kanalda
Sana
Obunachilarni jalb qilish
Esdaliklar
Kanallar
22 Iyun0
21 Iyun+1
20 Iyun0
19 Iyun+3
18 Iyun+1
17 Iyun+1
16 Iyun0
15 Iyun+2
14 Iyun+1
13 Iyun+3
12 Iyun+1
11 Iyun+1
10 Iyun+1
09 Iyun+1
08 Iyun+2
07 Iyun0
06 Iyun+1
05 Iyun0
04 Iyun+2
03 Iyun0
02 Iyun+3
01 Iyun+1
Kanal postlari
Пожизненный PRO тариф — по цене 1 года. Покупаешь один раз — пользуешься всю жизнь: 👉 https://easyoffer.ru/pro 🚀 PRO-доступ
Пожизненный PRO тариф — по цене 1 года. Покупаешь один раз — пользуешься всю жизнь: 👉 https://easyoffer.ru/pro 🚀 PRO-доступ закроет 99% проблем на пути к офферу: 1. Полный доступ ко всем грейдам и профессиям. Не важно, Junior вы или Senior, Тестировщик, Разработчик, Проджект — вы получите материалы под ваш текущий уровень и цели, без ограничений. 2. База live-coding задач и вопросов с реальных собесов с уникальной системой вероятности их встречи. Вы будете готовиться не вслепую, а точечно по тем темам, которые спрашивают чаще всего. 3. Эталонные ответы от Senior-разработчиков. Никакой воды и догадок — только четкие, структурированные решения, за которые дают «зеленый свет» к офферу 4. 1100+ записей реальных собеседований (включая топы: Сбер, Авито, Яндекс, WB, OZON, МТС). Вы увидите всё изнутри: как спрашивают, как отвечают сильные кандидаты и на каких ошибках проваливаются 80% проходящих. 5. База 400+ тестовых заданий. Если вы еще студент, то практикуйтесь на решении задач, которые помогут попасть на собес 6. Автоотклики на Хедхантере — пока вы спите, ваше резюме летит к рекрутерам автоматически. Это экономия сотен часов ручного кликанья. 7. Аналитика ТОП-требований из вакансий. Мы парсим рынок и показываем, какие скиллы сейчас в цене. Это позволит вам точечно апгрейдить резюме и проходить суровые ATS-фильтры (которые отсеивают до 75% резюме еще до просмотра рекрутером). 8. Генератор уникального резюме и CV под каждую вакансию. Забудьте про «универсальное» резюме — нейросеть адаптирует ваш опыт под конкретную позицию за минуту, повышая шансы на приглашение в разы. 9. Тренажеры подготовки к собеседованию: «Реальное собеседование» — сценарий вопросов из реальных интервью «Проработка вопросов» — флеш карточки с вопросами/ответами по методике интервальных повторений (как Anki) 10. (Скоро) Агрегатор вакансий — все вакансии из HH, Telegram, LinkedIn и других площадок в одной ленте. 11. (Скоро) Закрытое комьюнити — нетворкинг и помощь в сложных вопросах от таких же целеустремленных айтишников. Завтра последний день акции: 👉 https://easyoffer.ru/pro

2
🤔 Что происходит с вьюшками, которые лежат в Scroll View? - Эти вьюшки не двигаются физически — они находятся в contentView, которая движется вместе с contentOffset. - Относительно ScrollView они могут визуально выходить за пределы видимости, но физически остаются на месте внутри большого contentSize. Если вью ушла за пределы видимой области, она не рендерится до тех пор, пока не попадёт в видимую область (оптимизация). Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
192
3
🤔 Как отлавливать, где допущена ошибка в свифте? В Swift есть несколько способов отлавливать и диагностировать ошибки в коде: 🚩Обработка ошибок через `do-catch` Используется, если функция генерирует ошибку (throws). enum LoginError: Error { case wrongPassword case userNotFound } func login(user: String, password: String) throws { if user != "admin" { throw LoginError.userNotFound } if password != "1234" { throw LoginError.wrongPassword } } do { try login(user: "admin", password: "wrong") } catch LoginError.wrongPassword { print("Ошибка: Неверный пароль") } catch { print("Ошибка: \(error)") } 🚩`assert()`, `precondition()`, `fatalError()` (для отладки) Эти функции прерывают выполнение программы, если что-то пошло не так. assert() (только в Debug) let age = -5 assert(age >= 0, "Возраст не может быть отрицательным") precondition() (работает в Release) precondition(age >= 0, "Возраст не может быть отрицательным") fatalError() (прерывает программу) func getData() -> String { fatalError("Метод ещё не реализован") } Ставь 👍 и забирай 📚 Базу знаний
227
4
🤔 Какие есть фреймворки для выполнения бэкраунд задач? 1. GCD (Grand Central Dispatch): для управления потоками и выполнения задач. 2. OperationQueue: более высокоуровневая абстракция над GCD. 3. URLSession: для выполнения сетевых запросов в фоне. 4. BackgroundTasks: для выполнения долгосрочных задач в фоне. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
213
5
Привет, ребята! У нас для вас отличные новости — на easyoffer вышло сразу несколько крупных обновлений: 1. Автоотклики на HeadHunter Снова работают в полную силу — можно смело возвращаться к активному поиску. 2. Новый раздел «Резюмейкер» Теперь вы можете быстро создавать уникальные резюме, адаптированные под каждую вакансию, и сразу добавлять сопроводительное письмо. Это заметно повышает шансы получить приглашение на собеседование. 3. База вопросов стала чище Мы навели порядок и удалили около 30% дубликатов. Ориентироваться стало проще. –––––––––––––––––– 🔥 Акция в честь обновления Пожизненный тариф easyoffer PRO — по цене одного года. Успейте до 23 июня: 👉 https://easyoffer.ru/pro –––––––––––––––––– Что дальше? В ближайшие пару недель добавим ещё два раздела: 1. Сообщество с чатами по всем профессиональным направлениям. 2. Агрегатор вакансий, чтобы поиск работы стал ещё удобнее.
205
6
🤔 Чем отличается virtual table от witness table? VTable — это таблица методов для классов (динамическое наследование), используется для переопределения. Witness table — механизм Swift для протоколов, в ней хранится соответствие реализаций протокольным методам. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
240
7
🤔 Когда используется runloop? RunLoop используется для поддержки непрерывного ожидания и обработки событий в потоке. Он нужен, когда поток не должен завершаться, а должен обрабатывать входящие события, таймеры, сигналы или сообщения, особенно в UI и фоновых задачах. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
264
8
🤔 Что такое work right? Если речь о work right в контексте GCD или планировщика задач — это стратегия, при которой задачи выполняются максимально близко ко времени их планирования. Также термин может использоваться в смысле правильной, согласованной работы потоков без гонки за ресурсами. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
303
9
🤔 Что из себя представляет структура данных stack? Stack (стек) – это структура данных, работающая по принципу LIFO (Last In, First Out – "последним пришел, первым ушел"). 🚩Пример реализации стека в Swift В Swift нет встроенного стека (кроме Array), но можно создать свой: struct Stack<T> { private var elements: [T] = [] mutating func push(_ item: T) { elements.append(item) } mutating func pop() -> T? { return elements.popLast() // Удаляет и возвращает верхний элемент } func peek() -> T? { return elements.last // Возвращает верхний элемент без удаления } func isEmpty() -> Bool { return elements.isEmpty } } // Пример использования: var stack = Stack<Int>() stack.push(10) stack.push(20) stack.push(30) print(stack.pop()!) // 30 print(stack.peek()!) // 20 print(stack.isEmpty()) // false 🚩Где используется стек? Обратный порядок выполнения (рекурсия) – стек вызовов функций. Алгоритмы (обратная польская нотация, DFS – поиск в глубину) История действий (назад-вперед в браузере, отмена в редакторе). Ставь 👍 и забирай 📚 Базу знаний
312
10
🤔 Почему Swift не может сам сгенерировать memberwise инициализатор для классов? 1. Классы поддерживают наследование, что делает сложным автоматическое создание инициализатора, учитывающего все поля, включая родительские. 2. Инициализация в классах может включать дополнительные логики, которые сложно определить на этапе компиляции. 3. Структуры, в отличие от классов, не имеют этих ограничений, поэтому memberwise инициализатор создаётся автоматически. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
275
11
🤔 Что такое синхронная задача? Синхронная задача в программировании выполняется последовательно в текущем потоке, блокируя его до завершения задачи. Это контрастирует с асинхронной задачей, которая позволяет выполнение другого кода, пока задача обрабатывается. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
281
12
🤔 Какие можно выделить главные принципы ООП? Объектно-ориентированное программирование (ООП) — это парадигма, основанная на концепции "объектов", которые могут содержать данные в виде полей (часто называемых атрибутами или свойствами) и код в виде процедур (часто называемых методами). ООП фокусируется на использовании объектов для моделирования реального мира (или абстракций), облегчая разработку и поддержку сложных программ. Существует четыре основных принципа: 🟠Инкапсуляция Механизм ООП, который объединяет данные (атрибуты) и код (методы), манипулирующий этими данными, внутри одного объекта и скрывает детали реализации от внешнего использования. Это позволяет защитить внутреннее состояние объекта от прямого доступа извне и обеспечить контролируемый интерфейс для работы с этим объектом. 🟠Наследование Позволяет создавать новый класс на основе уже существующего класса, перенимая его свойства и методы. Новый класс может добавлять собственные свойства и методы или модифицировать унаследованные. Наследование обеспечивает повторное использование кода, упрощает его расширение и поддержку. 🟠Полиморфизм Способность объектов с одинаковым интерфейсом предоставлять различную реализацию для одного и того же метода. Это означает, что функция или метод могут использоваться для различных типов объектов, и каждый тип может реализовать эту функцию или метод по-своему. Полиморфизм упрощает написание общего кода для работы с объектами разных классов и обеспечивает гибкость в его использовании. 🟠Абстракция Позволяет скрыть сложность системы, представляя её ключевые аспекты и скрывая детали реализации. Это достигается за счёт использования абстрактных классов и интерфейсов, которые определяют шаблон для классов-наследников. Абстракция помогает сосредоточиться на взаимодействии объектов на более высоком уровне, игнорируя ненужные детали. Ставь 👍 и забирай 📚 Базу знаний
274
13
🤔 Как очищается стек? Стек очищается автоматически, когда завершается функция. Как только стековая рамка функции выходит за пределы контекста вызова — вся память, связанная с ней, сбрасывается. Это обеспечивает высокую производительность, но требует строгой структуры вызовов. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
266
14
🤔 Зачем нужны свойства "Content Hugging Priority"? Свойства "Content Hugging Priority" и "Content Compression Resistance Priority" играют ключевую роль в системе Auto Layout. Эти свойства помогают определить, как вьюшки (views) должны быть отформатированы и как они реагируют на изменения в доступном пространстве в интерфейсе пользователя. Рассмотрим подробнее, что означает каждое из этих свойств и как они используются в разработке интерфейсов. 🚩Content Hugging Priority Определяет, насколько сильно вьюшка должна "обнимать" своё содержимое. Это свойство указывает на желательность вьюшки быть как можно ближе к своим внутренним размерам, основанным на своем содержимом. 🚩Content Compression Resistance Priority Определяет, насколько сильно вьюшка должна противостоять сжатию размеров меньше, чем размеры её содержимого. Ставь 👍 и забирай 📚 Базу знаний
277
15
🤔 Что такое поток безопасности (thread-safety)? Потокобезопасность — это свойство кода/объекта, означающее, что он может использоваться из разных потоков одновременно без ошибок и гонок данных. Потокобезопасный код: - Не вызывает крашей. - Не вызывает конфликтов доступа. - Защищает внутреннее состояние при параллельном использовании. В Swift thread-safety достигается через: - Синхронизацию (DispatchQueue, lock). - Immutable-структуры. - Использование actor и @MainActor. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
258
16
🤔 Какие есть фрейм ворк механизмы в айос для выполненной бэкраунд задач? В iOS для выполнения фоновых задач существуют несколько ключевых механизмов: 🚩Основные механизмы 🟠Grand Central Dispatch (GCD): Используется для асинхронного выполнения задач на глобальных или пользовательских очередях. DispatchQueue.global(qos: .background).async { // Фоновая задача } 🟠OperationQueue: Высокоуровневый API для управления очередями операций с возможностью указания зависимостей. let queue = OperationQueue() queue.addOperation { // Фоновая операция } 🟠Background Fetch: Позволяет приложению периодически загружать новые данные в фоновом режиме. func application(_ application: UIApplication, performFetchWithCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) { // Фоновое обновление данных completionHandler(.newData) } 🟠BGTaskScheduler: Новый фреймворк для планирования и выполнения фоновых задач. import BackgroundTasks func scheduleBackgroundTask() { let request = BGAppRefreshTaskRequest(identifier: "com.example.app.refresh") request.earliestBeginDate = Date(timeIntervalSinceNow: 15 * 60) try? BGTaskScheduler.shared.submit(request) } 🟠URLSession Background Transfers: Выполнение загрузки и выгрузки данных в фоновом режиме. let configuration = URLSessionConfiguration.background(withIdentifier: "com.example.app.background") let session = URLSession(configuration: configuration) let url = URL(string: "https://example.com/largefile")! let task = session.downloadTask(with: url) task.resume() Ставь 👍 и забирай 📚 Базу знаний
293
17
🤔 Что такое escaping closure? Escaping closure — это замыкание, которое используется после выхода из функции, в которую его передали. Например, если замыкание сохраняется в свойстве или передаётся асинхронно. Его нужно отметить @escaping, чтобы компилятор знал, что оно будет жить дольше тела функции. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
266
18
🤔 Какой путь проделывает ивент , когда пользователь нажимает на приложение? Когда пользователь нажимает на иконку приложения на домашнем экране, iOS проходит несколько этапов перед тем, как приложение становится активным. 🚩Разберём путь события подробнее 🟠Пользователь нажимает на иконку (SpringBoard) iOS-устройства управляются системой SpringBoard – это оболочка, отвечающая за домашний экран, иконки, фоновые процессы. Когда пользователь тапает на иконку приложения, SpringBoard отправляет событие UIApplicationLaunchOptionsKey в систему. 🟠iOS загружает процесс приложения Если приложение не запущено: - iOS создаёт новый процесс и выделяет память. - Загружаются зависимости (библиотеки, фреймворки). - Создаётся объект UIApplication. 🟠Вызывается `application(_:didFinishLaunchingWithOptions:)` Здесь приложение инициализируется и загружается основной UI. Метод в AppDelegate: func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { print("Приложение запущено") return true } Ставь 👍 и забирай 📚 Базу знаний
319
19
🤔 Можно ли наследовать структуру от нескольких родителей? Нет, структуры не поддерживают наследование. Однако можно использовать протоколы (protocol) для реализации общих интерфейсов и функциональности. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
321
20
🤔 Какие виды ссылок бывают в Swift? – strong — по умолчанию, удерживает объект в памяти. – weak — не увеличивает счётчик ссылок и становится nil, когда объект освобождён. – unowned — не увеличивает счётчик, но не обнуляется (используется, когда объект точно не должен быть уничтожен до использования). Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
361