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

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

Kanalga Telegram’da o‘tish
2 216
Obunachilar
-124 soatlar
Ma'lumot yo'q7 kunlar
-230 kunlar
Obunachilarni jalb qilish
Iyun '26
Iyun '26
+24
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
21 Iyun0
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
🤔 Что происходит с вьюшками, которые лежат в Scroll View? - Эти вьюшки не двигаются физически — они находятся в contentView, которая движется вместе с contentOffset. - Относительно ScrollView они могут визуально выходить за пределы видимости, но физически остаются на месте внутри большого contentSize. Если вью ушла за пределы видимой области, она не рендерится до тех пор, пока не попадёт в видимую область (оптимизация). Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

2
🤔 Как отлавливать, где допущена ошибка в свифте? В 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("Метод ещё не реализован") } Ставь 👍 и забирай 📚 Базу знаний
162
3
🤔 Какие есть фреймворки для выполнения бэкраунд задач? 1. GCD (Grand Central Dispatch): для управления потоками и выполнения задач. 2. OperationQueue: более высокоуровневая абстракция над GCD. 3. URLSession: для выполнения сетевых запросов в фоне. 4. BackgroundTasks: для выполнения долгосрочных задач в фоне. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
175
4
Привет, ребята! У нас для вас отличные новости — на easyoffer вышло сразу несколько крупных обновлений: 1. Автоотклики на HeadHunter Снова работают в полную силу — можно смело возвращаться к активному поиску. 2. Новый раздел «Резюмейкер» Теперь вы можете быстро создавать уникальные резюме, адаптированные под каждую вакансию, и сразу добавлять сопроводительное письмо. Это заметно повышает шансы получить приглашение на собеседование. 3. База вопросов стала чище Мы навели порядок и удалили около 30% дубликатов. Ориентироваться стало проще. –––––––––––––––––– 🔥 Акция в честь обновления Пожизненный тариф easyoffer PRO — по цене одного года. Успейте до 23 июня: 👉 https://easyoffer.ru/pro –––––––––––––––––– Что дальше? В ближайшие пару недель добавим ещё два раздела: 1. Сообщество с чатами по всем профессиональным направлениям. 2. Агрегатор вакансий, чтобы поиск работы стал ещё удобнее.
205
5
🤔 Чем отличается virtual table от witness table? VTable — это таблица методов для классов (динамическое наследование), используется для переопределения. Witness table — механизм Swift для протоколов, в ней хранится соответствие реализаций протокольным методам. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
199
6
🤔 Когда используется runloop? RunLoop используется для поддержки непрерывного ожидания и обработки событий в потоке. Он нужен, когда поток не должен завершаться, а должен обрабатывать входящие события, таймеры, сигналы или сообщения, особенно в UI и фоновых задачах. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
225
7
🤔 Что такое work right? Если речь о work right в контексте GCD или планировщика задач — это стратегия, при которой задачи выполняются максимально близко ко времени их планирования. Также термин может использоваться в смысле правильной, согласованной работы потоков без гонки за ресурсами. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
276
8
🤔 Что из себя представляет структура данных 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 – поиск в глубину) История действий (назад-вперед в браузере, отмена в редакторе). Ставь 👍 и забирай 📚 Базу знаний
294
9
🤔 Почему Swift не может сам сгенерировать memberwise инициализатор для классов? 1. Классы поддерживают наследование, что делает сложным автоматическое создание инициализатора, учитывающего все поля, включая родительские. 2. Инициализация в классах может включать дополнительные логики, которые сложно определить на этапе компиляции. 3. Структуры, в отличие от классов, не имеют этих ограничений, поэтому memberwise инициализатор создаётся автоматически. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
268
10
🤔 Что такое синхронная задача? Синхронная задача в программировании выполняется последовательно в текущем потоке, блокируя его до завершения задачи. Это контрастирует с асинхронной задачей, которая позволяет выполнение другого кода, пока задача обрабатывается. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
275
11
🤔 Какие можно выделить главные принципы ООП? Объектно-ориентированное программирование (ООП) — это парадигма, основанная на концепции "объектов", которые могут содержать данные в виде полей (часто называемых атрибутами или свойствами) и код в виде процедур (часто называемых методами). ООП фокусируется на использовании объектов для моделирования реального мира (или абстракций), облегчая разработку и поддержку сложных программ. Существует четыре основных принципа: 🟠Инкапсуляция Механизм ООП, который объединяет данные (атрибуты) и код (методы), манипулирующий этими данными, внутри одного объекта и скрывает детали реализации от внешнего использования. Это позволяет защитить внутреннее состояние объекта от прямого доступа извне и обеспечить контролируемый интерфейс для работы с этим объектом. 🟠Наследование Позволяет создавать новый класс на основе уже существующего класса, перенимая его свойства и методы. Новый класс может добавлять собственные свойства и методы или модифицировать унаследованные. Наследование обеспечивает повторное использование кода, упрощает его расширение и поддержку. 🟠Полиморфизм Способность объектов с одинаковым интерфейсом предоставлять различную реализацию для одного и того же метода. Это означает, что функция или метод могут использоваться для различных типов объектов, и каждый тип может реализовать эту функцию или метод по-своему. Полиморфизм упрощает написание общего кода для работы с объектами разных классов и обеспечивает гибкость в его использовании. 🟠Абстракция Позволяет скрыть сложность системы, представляя её ключевые аспекты и скрывая детали реализации. Это достигается за счёт использования абстрактных классов и интерфейсов, которые определяют шаблон для классов-наследников. Абстракция помогает сосредоточиться на взаимодействии объектов на более высоком уровне, игнорируя ненужные детали. Ставь 👍 и забирай 📚 Базу знаний
272
12
🤔 Как очищается стек? Стек очищается автоматически, когда завершается функция. Как только стековая рамка функции выходит за пределы контекста вызова — вся память, связанная с ней, сбрасывается. Это обеспечивает высокую производительность, но требует строгой структуры вызовов. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
261
13
🤔 Зачем нужны свойства "Content Hugging Priority"? Свойства "Content Hugging Priority" и "Content Compression Resistance Priority" играют ключевую роль в системе Auto Layout. Эти свойства помогают определить, как вьюшки (views) должны быть отформатированы и как они реагируют на изменения в доступном пространстве в интерфейсе пользователя. Рассмотрим подробнее, что означает каждое из этих свойств и как они используются в разработке интерфейсов. 🚩Content Hugging Priority Определяет, насколько сильно вьюшка должна "обнимать" своё содержимое. Это свойство указывает на желательность вьюшки быть как можно ближе к своим внутренним размерам, основанным на своем содержимом. 🚩Content Compression Resistance Priority Определяет, насколько сильно вьюшка должна противостоять сжатию размеров меньше, чем размеры её содержимого. Ставь 👍 и забирай 📚 Базу знаний
272
14
🤔 Что такое поток безопасности (thread-safety)? Потокобезопасность — это свойство кода/объекта, означающее, что он может использоваться из разных потоков одновременно без ошибок и гонок данных. Потокобезопасный код: - Не вызывает крашей. - Не вызывает конфликтов доступа. - Защищает внутреннее состояние при параллельном использовании. В Swift thread-safety достигается через: - Синхронизацию (DispatchQueue, lock). - Immutable-структуры. - Использование actor и @MainActor. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
252
15
🤔 Какие есть фрейм ворк механизмы в айос для выполненной бэкраунд задач? В 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() Ставь 👍 и забирай 📚 Базу знаний
287
16
🤔 Что такое escaping closure? Escaping closure — это замыкание, которое используется после выхода из функции, в которую его передали. Например, если замыкание сохраняется в свойстве или передаётся асинхронно. Его нужно отметить @escaping, чтобы компилятор знал, что оно будет жить дольше тела функции. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
260
17
🤔 Какой путь проделывает ивент , когда пользователь нажимает на приложение? Когда пользователь нажимает на иконку приложения на домашнем экране, 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 } Ставь 👍 и забирай 📚 Базу знаний
311
18
🤔 Можно ли наследовать структуру от нескольких родителей? Нет, структуры не поддерживают наследование. Однако можно использовать протоколы (protocol) для реализации общих интерфейсов и функциональности. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
313
19
🤔 Какие виды ссылок бывают в Swift? – strong — по умолчанию, удерживает объект в памяти. – weak — не увеличивает счётчик ссылок и становится nil, когда объект освобождён. – unowned — не увеличивает счётчик, но не обнуляется (используется, когда объект точно не должен быть уничтожен до использования). Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
353
20
🤔 С какими типами можно использовать ссылки? Ссылки (strong, weak, unowned) применимы только к reference-типа — то есть к экземплярам классов. Value-типы (например, struct, enum) копируются при передаче, и на них нельзя создать ссылку в обычном понимании. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
377