Swift | Вопросы собесов
前往频道在 Telegram
Cайт easyoffer.ru Реклама @easyoffer_adv ВП @easyoffer_vp Тесты t.me/+bn3i_aLL0-A2ZGMy Задачи t.me/+JQkI4zSOEXtkYzg6 Вакансии t.me/+3o9-Ytdiv_E5OGIy
显示更多2 214
订阅者
+124 小时
-27 天
-630 天
数据加载中...
相似频道
标签云
进出提及
---
---
---
---
---
---
吸引订阅者
六月 '26
六月 '26
+12
在0个频道中
五月 '26
+21
在0个频道中
Get PRO
四月 '26
+23
在0个频道中
Get PRO
三月 '26
+35
在0个频道中
Get PRO
二月 '26
+45
在1个频道中
Get PRO
一月 '26
+58
在0个频道中
Get PRO
十二月 '25
+28
在0个频道中
Get PRO
十一月 '25
+156
在1个频道中
Get PRO
十月 '25
+26
在0个频道中
Get PRO
九月 '25
+41
在0个频道中
Get PRO
八月 '25
+38
在0个频道中
Get PRO
七月 '25
+27
在0个频道中
Get PRO
六月 '25
+34
在0个频道中
Get PRO
五月 '25
+50
在0个频道中
Get PRO
四月 '25
+87
在0个频道中
Get PRO
三月 '25
+151
在2个频道中
Get PRO
二月 '25
+123
在1个频道中
Get PRO
一月 '25
+127
在53个频道中
Get PRO
十二月 '24
+55
在1个频道中
Get PRO
十一月 '24
+75
在0个频道中
Get PRO
十月 '24
+193
在42个频道中
Get PRO
九月 '24
+348
在251个频道中
Get PRO
八月 '24
+98
在0个频道中
Get PRO
七月 '24
+140
在54个频道中
Get PRO
六月 '24
+411
在244个频道中
Get PRO
五月 '24
+646
在191个频道中
Get PRO
四月 '24
+353
在23个频道中
| 日期 | 订阅者增长 | 提及 | 频道 | |
| 12 六月 | 0 | |||
| 11 六月 | +1 | |||
| 10 六月 | +1 | |||
| 09 六月 | +1 | |||
| 08 六月 | +2 | |||
| 07 六月 | 0 | |||
| 06 六月 | +1 | |||
| 05 六月 | 0 | |||
| 04 六月 | +2 | |||
| 03 六月 | 0 | |||
| 02 六月 | +3 | |||
| 01 六月 | +1 |
频道帖子
🤔 Какой путь проделывает ивент , когда пользователь нажимает на приложение?
Когда пользователь нажимает на иконку приложения на домашнем экране, 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
}
Ставь 👍 и забирай 📚 Базу знаний| 2 | 🤔 Можно ли наследовать структуру от нескольких родителей?
Нет, структуры не поддерживают наследование. Однако можно использовать протоколы (protocol) для реализации общих интерфейсов и функциональности.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний | 160 |
| 3 | 🤔 Какие виды ссылок бывают в Swift?
– strong — по умолчанию, удерживает объект в памяти.
– weak — не увеличивает счётчик ссылок и становится nil, когда объект освобождён.
– unowned — не увеличивает счётчик, но не обнуляется (используется, когда объект точно не должен быть уничтожен до использования).
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний | 241 |
| 4 | 🤔 С какими типами можно использовать ссылки?
Ссылки (strong, weak, unowned) применимы только к reference-типа — то есть к экземплярам классов. Value-типы (например, struct, enum) копируются при передаче, и на них нельзя создать ссылку в обычном понимании.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний | 260 |
| 5 | 🤔 Есть ли функция первого класса в языке?
Да. В Swift функции — объекты первого класса. Их можно передавать как параметры, возвращать из других функций и сохранять в переменные.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний | 302 |
| 6 | 🤔 За что отвечают Compression Resistance Priority?
Отвечают за сопротивление сжатию UI-элемента в ограниченном пространстве. Элемент с более высоким приоритетом будет меньше сжиматься, чем элемент с более низким значением.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний | 316 |
| 7 | 🤔 Как приложения реагируют на нажатия?
Система распознаёт событие касания, передаёт его объекту UIResponder, который находится в иерархии view. Объект может обработать его или передать дальше по цепочке.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний | 343 |
| 8 | 🤔 Как инициализация классов связана с выделением памяти?
При инициализации класса происходит выделение памяти в heap, а затем инициализация всех его свойств. После завершения инициализации объект готов к использованию. Это отличается от структур, которые хранятся в stack (если не вложены в ссылочный тип).
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний | 361 |
| 9 | 🤔 Что нужно сделать, чтобы вызвать жизненный цикл view-контроллера?
Жизненный цикл UIViewController запускается:
- При инициализации и отображении контроллера (вручную или через навигацию).
- Основные методы:
- viewDidLoad()
- viewWillAppear()
- viewDidAppear()
- viewWillDisappear()
- viewDidDisappear()
Чтобы вызвать жизненный цикл вручную:
- Представить контроллер:
- Или встроить в навигацию:
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний | 372 |
| 10 | 🤔 Если обозначить внутри метода Synchronized , что будет монитору?
Это высокоуровневый механизм синхронизации, который объединяет взаимное исключение (mutex) и условные переменные (condition variables) для управления доступом к объектам в многопоточной среде.
🚩Как работает
🟠Взаимное исключение (Mutual Exclusion)
Только один поток может выполнить защищенный блок кода в любой момент времени.
🟠Условные переменные (Condition Variables)
Позволяют потокам ожидать определенных условий, а другим потокам уведомлять их о наступлении этих условий.
🚩Примеры
class ThreadSafeClass {
private var internalState = 0
private let queue = DispatchQueue(label: "com.example.threadSafeQueue")
func increment() {
queue.sync {
internalState += 1
}
}
func getState() -> Int {
return queue.sync {
internalState
}
}
}
С NSLock
class ThreadSafeClass {
private var internalState = 0
private let lock = NSLock()
func increment() {
lock.lock()
internalState += 1
lock.unlock()
}
func getState() -> Int {
lock.lock()
let state = internalState
lock.unlock()
return state
}
}
С objc_sync_enter и objc_sync_exit
class ThreadSafeClass: NSObject {
private var internalState = 0
func increment() {
objc_sync_enter(self)
internalState += 1
objc_sync_exit(self)
}
func getState() -> Int {
objc_sync_enter(self)
let state = internalState
objc_sync_exit(self)
return state
}
}
Ставь 👍 и забирай 📚 Базу знаний | 352 |
| 11 | 🤔 В каком методе жизненного цикла контроллера нам в первый раз известны финальные размеры view?
Финальные размеры UIView гарантированно известны в методе viewDidLayoutSubviews(). На этом этапе система уже рассчитала Auto Layout и определила финальный frame всех вью.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний | 280 |
| 12 | 🤔 Есть функция, принимающая аргумент, а туда закинут integer — что произойдёт?
В языках со строгой типизацией (Swift, Kotlin, Java) произойдёт ошибка компиляции, если типы не совпадают. В динамически типизированных языках (Python, JavaScript) может быть попытка приведения типа — и тогда поведение зависит от реализации функции.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний | 295 |
| 13 | 🤔 Что такое многопоточность?
Это возможность центрального процессора (ЦПУ) или программы выполнять несколько задач (потоков) одновременно. В контексте программирования она используется для улучшения производительности приложений за счёт параллельной обработки задач. Это особенно важно для задач, требующих интенсивных вычислений, или приложений, которые должны одновременно реагировать на множество входных данных, таких как пользовательский интерфейс.
🚩Основные понятия
🟠Поток (Thread)
Минимальная единица обработки, которая может быть выполнена операционной системой.
🟠Конкуренция (Concurrency)
Способность программы делать прогресс в нескольких задачах одновременно. Конкуренция достигается за счёт переключения между задачами.
🟠Параллелизм (Parallelism)
Способность программы выполнять несколько операций одновременно, используя множество процессоров или ядер.
Ставь 👍 и забирай 📚 Базу знаний | 304 |
| 14 | 🤔 Как отменять синхронные задачи?
Синхронные задачи нельзя отменить напрямую — нужно использовать флаг (например, isCancelled) и вручную проверять его внутри выполнения. Лучше использовать DispatchWorkItem или Operation.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний | 293 |
| 15 | 🤔 Как устроена память?
Память устройства можно представить в виде нескольких уровней, каждый из которых имеет свою скорость доступа, размер и назначение:
🟠Регистры процессора
Это самая быстрая память, непосредственно встроенная в процессор. Регистры хранят те данные, с которыми процессор работает в данный момент времени.
🟠Кэш-память
Она находится непосредственно на процессоре или рядом с ним. Кэш-память используется для временного хранения копий часто используемых данных из основной памяти для ускорения доступа к ним. Кэш-память делится на несколько уровней (L1, L2, и иногда L3), где L1 — самый быстрый и обычно самый маленький.
🟠Оперативная память (ОЗУ)
Здесь хранятся данные и программы, с которыми компьютер работает в данный момент. Доступ к ОЗУ быстрый, но оно является временным хранилищем: при выключении устройства данные в ОЗУ теряются.
🟠Постоянная память (ПЗУ, SSD, HDD)
Это память для долговременного хранения данных. Она сохраняет информацию даже при выключении питания. HDD (жесткие диски) использовались ранее и работают на принципе магнитного записывания данных, в то время как SSD (твердотельные накопители) работают на основе флеш-памяти и обеспечивают более быстрый доступ к данным.
🟠Виртуальная память
Это техника, которая позволяет операционной системе использовать часть жесткого диска (или SSD) как дополнительную оперативную память. Когда ОЗУ заполнено, операционная система может перемещать редко используемые данные из ОЗУ на диск в специальный файл подкачки (swap file), освобождая ОЗУ для других задач.
Ставь 👍 и забирай 📚 Базу знаний | 327 |
| 16 | 🤔 Как функционируют стеки между собой?
Стеки между собой не взаимодействуют напрямую, потому что каждый из них принадлежит отдельному потоку и находится в своей изолированной памяти.
Однако потоки могут обмениваться данными через:
- Общую (разделяемую) память.
- Коллекции или переменные, защищённые механизмами синхронизации (например, DispatchQueue, NSLock, Atomic).
- Очереди (например, GCD или OperationQueue в Swift).
Сами стеки — независимы и не пересекаются между потоками.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний | 316 |
| 17 | 🤔 Расскажи про две семантики в swift'е
В Swift все типы данных делятся на два вида по семантике хранения и передачи:
🚩Значимая семантика (Value Semantics)
Структуры (struct), перечисления (enum) и кортежи (tuple) передаются по значению, то есть каждое присваивание создаёт копию объекта.
struct User {
var name: String
}
var user1 = User(name: "Alice")
var user2 = user1 // Копия!
user2.name = "Bob"
print(user1.name) // "Alice" (НЕ изменилось)
print(user2.name) // "Bob"
🚩Ссылочная семантика (Reference Semantics)
Классы (class), акторы (actor) и замыкания (closure) передаются по ссылке, то есть несколько переменных могут ссылаться на один и тот же объект.
class User {
var name: String
init(name: String) {
self.name = name
}
}
var user1 = User(name: "Alice")
var user2 = user1 // Передача ссылки!
user2.name = "Bob"
print(user1.name) // "Bob" (ИЗМЕНИЛОСЬ!)
print(user2.name) // "Bob"
Ставь 👍 и забирай 📚 Базу знаний | 338 |
| 18 | Главный навык на ближайшие годы — ВАЙБ-КОДИНГ
ИИ уже пишет код, чинит баги, генерирует тесты, документацию и помогает запускать продукты быстрее, чем это делали классические команды разработки. И это уже не "будущее когда-нибудь", а реальность, которая меняет рынок уже сегодня
И те, кто научится вайбкодить сейчас, будут увереннее конкурировать на рынке и зарабатывать больше тех, кто по-прежнему делает всё вручную.
Стартовать с нуля поможет канал Вайб-кодинг. Там ребята круглосуточно мониторят более 320 российских и зарубежных источников и публикуют только главное: релизы, инструменты, гайды, курсы и практические кейсы.
Подписывайтесь, нас уже 30 тысяч: @vibecoding_tg | 0 |
| 19 | 🤔 Как отлавливать, где допущена ошибка в свифте?
В 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("Метод ещё не реализован")
}
Ставь 👍 и забирай 📚 Базу знаний | 0 |
| 20 | 🤔Что такое cherrypick?
cherrypick — это команда Git, которая позволяет взять конкретные изменения из одного коммита и применить их в другой ветке. Это полезно для исправления ошибок или добавления небольших фич без полного слияния веток.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний | 0 |
现已上线!2025 年 Telegram 研究 — 年度关键洞察 
