Смотрим обитателей тайной комнаты
Принесла вам 3 свежие задачки с собеседований этой недели.
Самый мастхев, чтобы их не бояться : COW и типы данных, диспетчеризация, ARC(счетчик ссылок, weak/strong), GCD + методы синхронизации
Смотрим:
1. Есть протокол ApiClient с методом загрузки одного юзера по ID. Нужно написать метод, который принимает массив ID и возвращает массив юзеров
DispatchGroup — enter() увеличивает счетчик задач, leave() уменьшает. Когда счётчик дошёл до нуля — срабатывает notify. Это способ дождаться завершения нескольких асинхронных задач.
Set(ids) — дедупликация. Если в массиве есть повторяющиеся ID, запрос на сервер уйдёт только один раз.
Serial queue для синхронизации — DispatchQueue(label:...) по умолчанию создаёт последовательную очередь. Все записи в userDict идут строго по одной
compactMap { userDict[$0] } — маппим по оригинальному массиву ids, чтобы сохранить порядок. compactMap отбрасывает nil
guard !ids.isEmpty — ранний выход при пустом массиве
2. 🟢 Ответ:
Array 1: [100, 3, 4, 5]
Array 2: [100, 3, 4, 5]
Почему? Разберём по шагам:
1️⃣ array1 после remove(at: 0) содержит [Item(2), Item(3), Item(4), Item(5)]
2️⃣ var array2 = array1 — массив копируется (Array — value type, работает copy-on-write). НО! Внутри массива лежат ссылки на объекты класса Item. Копируются именно ссылки, а не сами объекты.
3️⃣ array2[0].id = 100 — мы НЕ меняем сам массив (не вставляем и не удаляем элемент). Мы меняем свойство объекта, на который ссылается элемент.
Поэтому изменение через array2 видно и в array1.
💡 Помним, что класс — это reference type (ссылочный тип). Когда ты копируешь массив объектов класса, ты копируешь «указатели», а не сами объекты. Если бы Item был struct, то array1 и array2 были бы полностью независимы и вывод был бы разным:
Array 1: [2, 3, 4, 5]
Array 2: [100, 3, 4, 5]
3. UIResponder — ключевой класс в responder chain
UIWindow наследуется от UIView — и это часто не так очевидно. UIWindow — это не что-то абстрактное, а самая обычная вьюха, просто с особой ролью. UIWindow должен уметь всё то же, что и UIView: рисовать себя, участвовать в layout, обрабатывать касания. Но UIWindow добавляет поверх этого несколько уникальных обязанностей:
— это корневой контейнер для всего UI приложения, все вьюхи живут внутри окна
— он управляет z-ordering — какие окна выше, какие ниже (например, алерт поверх основного контента)
UIView → UIControl — все интерактивные элементы (кнопки, текстовые поля, свитчи) наследуются от UIControl, который добавляет механизм target-action.
UIScrollView — родитель для UITableView и UICollectionView. Поэтому таблицы и коллекции умеют скроллиться «из коробки».
NSManagedObject — базовый класс для всех сущностей Core Data, модели наследуют именно его.
CALayer — каждая UIView содержит внутри layer, он не обрабатывает события пользователя, предназначен только для визуального отображения.
Какие еще задачки посмотрим?
Принесла вам 3 свежие задачки с собеседований этой недели.
Самый мастхев, чтобы их не бояться : COW и типы данных, диспетчеризация, ARC(счетчик ссылок, weak/strong), GCD + методы синхронизации
Смотрим:
1. Есть протокол ApiClient с методом загрузки одного юзера по ID. Нужно написать метод, который принимает массив ID и возвращает массив юзеров
DispatchGroup — enter() увеличивает счетчик задач, leave() уменьшает. Когда счётчик дошёл до нуля — срабатывает notify. Это способ дождаться завершения нескольких асинхронных задач.
Set(ids) — дедупликация. Если в массиве есть повторяющиеся ID, запрос на сервер уйдёт только один раз.
Serial queue для синхронизации — DispatchQueue(label:...) по умолчанию создаёт последовательную очередь. Все записи в userDict идут строго по одной
compactMap { userDict[$0] } — маппим по оригинальному массиву ids, чтобы сохранить порядок. compactMap отбрасывает nil
guard !ids.isEmpty — ранний выход при пустом массиве
2. 🟢 Ответ:
Array 1: [100, 3, 4, 5]
Array 2: [100, 3, 4, 5]
Почему? Разберём по шагам:
1️⃣ array1 после remove(at: 0) содержит [Item(2), Item(3), Item(4), Item(5)]
2️⃣ var array2 = array1 — массив копируется (Array — value type, работает copy-on-write). НО! Внутри массива лежат ссылки на объекты класса Item. Копируются именно ссылки, а не сами объекты.
3️⃣ array2[0].id = 100 — мы НЕ меняем сам массив (не вставляем и не удаляем элемент). Мы меняем свойство объекта, на который ссылается элемент.
Поэтому изменение через array2 видно и в array1.
💡 Помним, что класс — это reference type (ссылочный тип). Когда ты копируешь массив объектов класса, ты копируешь «указатели», а не сами объекты. Если бы Item был struct, то array1 и array2 были бы полностью независимы и вывод был бы разным:
Array 1: [2, 3, 4, 5]
Array 2: [100, 3, 4, 5]
3. UIResponder — ключевой класс в responder chain
UIWindow наследуется от UIView — и это часто не так очевидно. UIWindow — это не что-то абстрактное, а самая обычная вьюха, просто с особой ролью. UIWindow должен уметь всё то же, что и UIView: рисовать себя, участвовать в layout, обрабатывать касания. Но UIWindow добавляет поверх этого несколько уникальных обязанностей:
— это корневой контейнер для всего UI приложения, все вьюхи живут внутри окна
— он управляет z-ordering — какие окна выше, какие ниже (например, алерт поверх основного контента)
UIView → UIControl — все интерактивные элементы (кнопки, текстовые поля, свитчи) наследуются от UIControl, который добавляет механизм target-action.
UIScrollView — родитель для UITableView и UICollectionView. Поэтому таблицы и коллекции умеют скроллиться «из коробки».
NSManagedObject — базовый класс для всех сущностей Core Data, модели наследуют именно его.
CALayer — каждая UIView содержит внутри layer, он не обрабатывает события пользователя, предназначен только для визуального отображения.
Какие еще задачки посмотрим?
мы зумеры и это круто
сегодня вышла в почтовый сервис дочки Сбера и ездила на оформление в офис😁 кстати сливов я не боюсь, оффер все равно мне не очень нравится и иду больше ради интереса
фан факт: считаю этот собес одним из самых провальных, проходила с дичайшего похмелья и подготовка состояла из зайти домой и налить стакан воды😁
целый чай слушала про пожарную безопасность, насладилась атмосферой микроволновок и бесконечных кружек кофе с конфетами
обратно просто убегала, сверкая пятками, от рекрутера с криками «у меня удаленка в договоре»
еще с первой офисной работы не могу переносить душные офисы. что кто-то следит во сколько ты пришел, и не ушел ли раньше 17:30. что нужно поддерживать непонятные смол токи с коллегами и обедать строго по расписанию
в отличии от наших родителей, нам повезло иметь возможность выбирать себя в корпоративном мире ❤️
цените это и никому не позволяйте ограничивать свою свободу в каждом дне.
иначе зачем вообще в айти хотели?чтобы спать до 12 и в курсочик тыкать
сегодня вышла в почтовый сервис дочки Сбера и ездила на оформление в офис😁 кстати сливов я не боюсь, оффер все равно мне не очень нравится и иду больше ради интереса
фан факт: считаю этот собес одним из самых провальных, проходила с дичайшего похмелья и подготовка состояла из зайти домой и налить стакан воды😁
целый чай слушала про пожарную безопасность, насладилась атмосферой микроволновок и бесконечных кружек кофе с конфетами
обратно просто убегала, сверкая пятками, от рекрутера с криками «у меня удаленка в договоре»
еще с первой офисной работы не могу переносить душные офисы. что кто-то следит во сколько ты пришел, и не ушел ли раньше 17:30. что нужно поддерживать непонятные смол токи с коллегами и обедать строго по расписанию
в отличии от наших родителей, нам повезло иметь возможность выбирать себя в корпоративном мире ❤️
цените это и никому не позволяйте ограничивать свою свободу в каждом дне.
иначе зачем вообще в айти хотели?
как убежать за двумя зайцами и не потерять себя
БАЗА :
•выстраивать режим дня
•следить за физической нагрузкой
•адекватно питаться
казалось бы очевидно, но режим сыпется быстро. следите за нормой белка, количеством воды, не ложитесь с рассветом - и мозг даст вам нужный фокус и силы
активно проводить выходные, чтобы уставать отдыхать😁
сразу снизим уровень зожа первого пункта - пиво на летнике с друзьями нужно обязательно всем и без вопросов. зафиксировали
выходить из дома вечером/утром, иначе большой риск укатиться в день сурка. подумайте какие активности вас привлекают. но иногда нужно просто остаться дома под пледиком и комфортик сериалом
менеджер не твой владелец, а новая фича не сможет спасти человечество - люди до ужаса не любят новые релизы. наши продукты не имеют к нам никакого отношения - ты просто песчинка бизнеса, а HR заменит тебя за 2 недели. расслабься уже, пожалуйста
что-то будет не получаться. и свой перфекционизм надо будет приглушить. тебе можно не работать на 100% там и там
БАЗА :
•выстраивать режим дня
•следить за физической нагрузкой
•адекватно питаться
казалось бы очевидно, но режим сыпется быстро. следите за нормой белка, количеством воды, не ложитесь с рассветом - и мозг даст вам нужный фокус и силы
активно проводить выходные, чтобы уставать отдыхать😁
сразу снизим уровень зожа первого пункта - пиво на летнике с друзьями нужно обязательно всем и без вопросов. зафиксировали
выходить из дома вечером/утром, иначе большой риск укатиться в день сурка. подумайте какие активности вас привлекают. но иногда нужно просто остаться дома под пледиком и комфортик сериалом
менеджер не твой владелец, а новая фича не сможет спасти человечество - люди до ужаса не любят новые релизы. наши продукты не имеют к нам никакого отношения - ты просто песчинка бизнеса, а HR заменит тебя за 2 недели. расслабься уже, пожалуйста
что-то будет не получаться. и свой перфекционизм надо будет приглушить. тебе можно не работать на 100% там и там
❤🔥5 2 2
и самое главное - ставить себя на первое место.
уйти в отпуск просто в середине спринта.
потому что устала и Макс Корж непонятно когда еще будет в Стамбуле
Всех обняла и пусть небо поможет вам с поиском второго проекта, братья❤️
уйти в отпуск просто в середине спринта.
потому что устала и Макс Корж непонятно когда еще будет в Стамбуле
Всех обняла и пусть небо поможет вам с поиском второго проекта, братья❤️
уходим или остаемся?
я где-то как 2 месяца не хожу по собесам, но тут попалась занимательная статистика от коллеги айосера
в последних вакансиях все чаще вижу офис, вилки как на джуна встречаются все чаще
и мы заняли первое! место с конца по кол-ву вакансий
плюсом по распределению откликов обошли могучих старичков плюсов и 1С
кстати у моего друга Егора вышел видос, где он находит работу на 1С занеделю . вот и думайте.
В группе Антона тоже грустные вайбы от бывалых ребят
У вас там как? Собесики есть? У меня резюме висит активным, писали сбер/яндекс за эти 2 месяца
Встречала и использовала много авто откликаторов и фоновых помощников на собесах
сейчас это маст хев
актуальная подборочка нужна?
каким бы не был рынок помним главные правила - сильное резюме(лучше несколько аккаунтов)
+ авто отклики по 200 на каждое
я где-то как 2 месяца не хожу по собесам, но тут попалась занимательная статистика от коллеги айосера
в последних вакансиях все чаще вижу офис, вилки как на джуна встречаются все чаще
и мы заняли первое! место с конца по кол-ву вакансий
плюсом по распределению откликов обошли могучих старичков плюсов и 1С
кстати у моего друга Егора вышел видос, где он находит работу на 1С за
В группе Антона тоже грустные вайбы от бывалых ребят
У вас там как? Собесики есть? У меня резюме висит активным, писали сбер/яндекс за эти 2 месяца
Встречала и использовала много авто откликаторов и фоновых помощников на собесах
сейчас это маст хев
актуальная подборочка нужна?
каким бы не был рынок помним главные правила - сильное резюме(лучше несколько аккаунтов)
+ авто отклики по 200 на каждое
Telegram
Пепега Девелопмент
boosty: https://boosty.to/pepe.dev
кстати этот пост написан в такси из Внуково в Шереметьево, спасибо аэрофлоту 🥰
кто угадает, куда я собралась?)
кто угадает, куда я собралась?)
выступала на сходке в Питере с докладом про безопасную валютку
оставляю для вас короткую выжимку🤝
• пользуемся платформами типа EasyStaff/Mellow/Solar Staff и прочими, на которые ваш работодатель захочет потратиться и которые готовы присылать оплату РФ резидентам.
да, они берут 6% комиссии, но это самый быстрый и удобный вариант получить деньги сразу на ИП счет и не морочиться вообще ни с чем - только успевать смотреть, как новый банк попадает под санкции
• иностранное ИП -> наше ИП( грузинский 1%, российский УСН 6%)
• получаем на казахский фридом/таджискую/которую успели получить карту и тратим в отпуске или меняем через цифру
• не пользуемся п2п в РФ. даже с проверенными продавцами и хорошим курсом
меняем в айти чатах, проверенных обменниках, переводим на иностранные карты. только наличка и ни слова больше.
сомневающихся лотерейщиков ждут 115 и 161 блокировки
зарабатывайте больше и безопасней, бусинки!
всем хороших выходных ❤️
оставляю для вас короткую выжимку🤝
• пользуемся платформами типа EasyStaff/Mellow/Solar Staff и прочими, на которые ваш работодатель захочет потратиться и которые готовы присылать оплату РФ резидентам.
да, они берут 6% комиссии, но это самый быстрый и удобный вариант получить деньги сразу на ИП счет и не морочиться вообще ни с чем - только успевать смотреть, как новый банк попадает под санкции
• иностранное ИП -> наше ИП( грузинский 1%, российский УСН 6%)
• получаем на казахский фридом/таджискую/которую успели получить карту и тратим в отпуске или меняем через цифру
• не пользуемся п2п в РФ. даже с проверенными продавцами и хорошим курсом
меняем в айти чатах, проверенных обменниках, переводим на иностранные карты. только наличка и ни слова больше.
сомневающихся лотерейщиков ждут 115 и 161 блокировки
зарабатывайте больше и безопасней, бусинки!
всем хороших выходных ❤️
❤🔥8 2 2 2