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
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
🤔 Какие есть фреймворки для выполнения бэкраунд задач? 1. GCD (Grand Central Dispatch): для управления потоками и выполнения задач. 2. OperationQueue: более высокоуровневая абстракция над GCD. 3. URLSession: для выполнения сетевых запросов в фоне. 4. BackgroundTasks: для выполнения долгосрочных задач в фоне. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

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