Пару недель назад мне написал один знакомый, который спрашивал что обычно спрашивают на архитектурных собесах. Для меня это странно, тк я как раз в канале писал про system design интервью и про проектирование приложений. Видимо, я где-то не сделал акценты.
Для многих большое заблуждение, что архитектурный собес — это пересказ паттернов mvvm, viper, solid и парочки шаблонов проектирования. Чаще в это вкладывают нечто больше, чем просто пересказ рефакторинг гуру и книги чистая архитектура.
Одна из базовых задач проектирования — это сэкономить ресурсы до момента реализации. Хорошо спланированное решение поможет избежать множества ошибок и сэкономить времени. Именно этот навык и определяет сеньорность разработчика, где не получится зазубрить слитые вопросы с собесов, а легко раскачать человека и дотянуться до его границ. Просто невозможно спроектировать хорошую систему, если ты никогда этим раньше не занимался.
Собес обычно разделен на несколько этапов. Очень поверхностно разберем на примере чата:
На основе этих требований мы и решаем какие паттерны, архитектуры, технологии нам подойдут. Здесь нет универсального ответа в стиле "VIPER/TCA/MVVM — это универсальный паттерн". Бизнес требования не должны натягивать на архитектуры — это архитектура должна адаптироваться к бизнесу.
Please open Telegram to view this post
VIEW IN TELEGRAM
Снифферы — это незаменимая тулза в работе мобильного инженера. Я даже удивлен, как много людей не знают о них.
Почти всегда при работе с бэком нам нужно что-то трогать или проверять. Очень полезно будет изменять данные, которые приходят с бэка.
Когда это полезно:
Как это делать с проксименом сделал скриншоты
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Я уже писал, что вопросы для мидлов создавать гораздо интереснее. Мало инфы в интернете про сложные вопросы, почти нет нигде задач.
Многие приходится придумывать исходя из реального опыта или вспоминая что спрашивали на собесах. Получается уникальная солянка.
В этой подборке:
Скоро ждем подборку вопросов про Swift Concurrency
Please open Telegram to view this post
VIEW IN TELEGRAM
BDUI – удовольствие или боль?
Отличный доклад про разбор BDUI. В целом, многие мысли я повторял в своем посте, но тут все подтверждается внутренними метриками.
Очень не нравится, как возле технологий выстраиваются джоб секьюрити, которые сильно хотят преувеличить ценность своей основной технологии. Но очень нравится, что появляются адекватные люди, которые сдержано разбирают все подходы.
А то наплодятся андроид разрабов, что кричат о замене иосеров. И бэкендеров, что кричат о смерти мобильщиков.
Вот в целом выжимка:
🟣 BDUI дорогой для развития
🟣 BDUI не про экономию на разработке, а про быструю выкатку
🟣 для BDUI нужна готовая дизайн система
🟣 на BDUI не сделаешь сложные анимации и необычную обработку жестов
Ставь лайк, если нужен в ноушене "Курс по самообороне от KMP и BDUI"
Отличный доклад про разбор BDUI. В целом, многие мысли я повторял в своем посте, но тут все подтверждается внутренними метриками.
Очень не нравится, как возле технологий выстраиваются джоб секьюрити, которые сильно хотят преувеличить ценность своей основной технологии. Но очень нравится, что появляются адекватные люди, которые сдержано разбирают все подходы.
А то наплодятся андроид разрабов, что кричат о замене иосеров. И бэкендеров, что кричат о смерти мобильщиков.
Вот в целом выжимка:
Ставь лайк, если нужен в ноушене "Курс по самообороне от KMP и BDUI"
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Дмитрий Жердев — BDUI – удовольствие или боль?
Подробнее о конференции Mobius: https://jrg.su/ojGU3B
— —
Backend-Driven UI (BDUI) – концепция, при которой сервер управляет не только данными в приложении, но и его версткой, то есть формирует экраны и переходы. Этот подход на слуху уже несколько лет.
Спикер…
— —
Backend-Driven UI (BDUI) – концепция, при которой сервер управляет не только данными в приложении, но и его версткой, то есть формирует экраны и переходы. Этот подход на слуху уже несколько лет.
Спикер…
Автор статьи рассказывает, что Apple заявляла,как язык Swift в 2,6 раза быстрее по сравнению с Objective-C.
Открытых тестов, что подтверждают их слова, никогда не показывали. А разрабы, кто проверял сам, получили совершенно противоположные результаты — Swift может быть на порядок медленнее по сравнению с Objective-C, когда код неоптимизирован
В статье он также делает замеры функций и дает советы как оптимизировать код для производительности:
Я в канале также уже проверял, что Message Dispatch работает медленнней
Please open Telegram to view this post
VIEW IN TELEGRAM
Cleevio
The Power of Static Dispatch in Swift | Cleevio
The article explores the concept of static and dynamic dispatches in Swift, measures the performance implications, and shows the pros and cons of both approaches.
Традиционный changelog что изменилось за неделю в ноушене и комьюнити.
Когда я проходил курсы менторства в авито, то нас учили о главном ресурсе, за которым приходит менти. Это коммьюнити. Менти приходит не только за твоими знаниями, но и за твоими социальными связями. А их дают только навыки и опыт.
Какой смысл всяких закрытых ноушенов, ресурсов, роадмапов, если этим никто не пользуется и работает в вакууме? Главное люди и фидбэк, кто использует их и дает корректировки. Важна среда обитания. Материал, который ее наполняет, служит пищей и упражнениями.
Все это создает крепкую систему эффективного культурного и информационного обмена, где каждый чему-то учит и дает точки роста. Такую роль и выполняет закрытое комьюнити. Поэтому я и решил создать то комьюнити, которое будет максимально полезное для профессионального и личночностного (упасигосподь) роста.
Когда ты ментор, то можешь посмотреть на свой путь вначале со стороны. Найти ошибки, которые допустил и помочь другому.
Когда ты менти, ты платишь символический взнос за то, что готов обучаться и идти вместе с единомышлениками. Учеба — это сложный путь и без любви к ней все терабайты в интернете не принесут пользы.
Чувство жертвенности подталкивает к поиску навыков и импакта, а твой фидбэк более значимый.
Самая главная валюта — это кол-во хороших отзывов. Многие в чате пишут, что это единственный чат, который читают. А кто-то и пишет в личку слова благодарности, тк помогло пройти собес или починить багу.
Чувство значимости растет и это мотивирует создавать и придумывать новые инструменты. Например, тот же роадмап или так я добавил раздел онбординга.
Я с уверенностью могу сказать, что мы самое первое, быстрорастущее и большое закрытое иос-сообщество.
Please open Telegram to view this post
VIEW IN TELEGRAM
Короче. По поводу созвонов комьюнити
Я понял, что выбирать тему для доклада, которую я не хочу, но хочет аудитория пока не мое. Типичный конфликт автора и зрителя.
Контент становится пресным, в нем чувствуется работа для галочки и нет страсти, которая помогает углубиться туда, куда мало кто смотрел. Хочется наполнить созвон уникальностью, а не пересказами слухов и популярных статей.
Поэтому как докладчик я буду выбирать темы, которые будут нравится мне. Если кому-то же захочется высказаться и он считает тему интересной для аудитории, то welcome. Канал может стать твоей трибуной.
Следующая тема про которую я буду делать доклад — это собесы. За много лет у меня есть большой опыт прохождения и проведения. Я собесился на джуна и тимлида. Я собесил джунов и тимлидов. От стартапов до бигтехов. Где-то удачно, где-то нет. У меня набухло и есть что сказать.
Через призму субъективно-обьективного разберем как работают собесы и что от них ожидать. Собираем опыт лидов, рекрутеров, хэдов и СТО. Вынесем универсальные советы и соберем гайды по любым секциям
Анонс позже.
Я понял, что выбирать тему для доклада, которую я не хочу, но хочет аудитория пока не мое. Типичный конфликт автора и зрителя.
Контент становится пресным, в нем чувствуется работа для галочки и нет страсти, которая помогает углубиться туда, куда мало кто смотрел. Хочется наполнить созвон уникальностью, а не пересказами слухов и популярных статей.
Поэтому как докладчик я буду выбирать темы, которые будут нравится мне. Если кому-то же захочется высказаться и он считает тему интересной для аудитории, то welcome. Канал может стать твоей трибуной.
Следующая тема про которую я буду делать доклад — это собесы. За много лет у меня есть большой опыт прохождения и проведения. Я собесился на джуна и тимлида. Я собесил джунов и тимлидов. От стартапов до бигтехов. Где-то удачно, где-то нет. У меня набухло и есть что сказать.
Через призму субъективно-обьективного разберем как работают собесы и что от них ожидать. Собираем опыт лидов, рекрутеров, хэдов и СТО. Вынесем универсальные советы и соберем гайды по любым секциям
Анонс позже.
День неслыханной щедрости!
Мне тут подсказали, что в связи с сезоном собеседований самое время сделать небольшую скидку на middle уровень. Так как конкуренция весной и осенью самая высокая.
На ней вы получите:
С помощью этих инструментов ты сможешь лучше подготовиться, чем конкуренты
UPD: Добавил еще 10 подписок
Please open Telegram to view this post
VIEW IN TELEGRAM
Тем самым став самым большим закрытым сообществом чисто иос-разработчиков с самой большой конверсией. Почти 80%
Please open Telegram to view this post
VIEW IN TELEGRAM
Что выведется в консоль?
Anonymous Quiz
14%
1, deadlock
19%
deadlock сразу
18%
2, 1, 3
35%
1, 2, 3
9%
2, 3, 1
5%
Будет ошибка компиляции
Решил написать серию постов про оптимизацию UI. Пару лет назад я уже писал статью на эту тему, но затрагивал по верхам общие советы. Зависания интерфейса заставляет пользователя задуматься, правильно ли работает приложение. В постах же мы углубимся и освежим древние советы, а также добавим новые.
Начнем с Offscreen rendering.
Off-screen рендеринг это часть отрисовки, которая не может быть выполнена на GPU и должны быть выполнена на CPU.
Низкоуровнево это выглядит так:
при рендеринге layer'a который требует off-screen рендеринг, GPU останавливает процесс рендеринга и передает управление CPU, который выполняет все необходимые операции и возвращает контроль обратно GPU, который затем продолжает процесс рендеринга.
В дополнение к оверхеду по смене контекста, off-screen рендеринг также требует выделения дополнительной памяти.
Кейсы которые приводят к off-screen рендерингу:
Как найти проблему с off-screen rendering?
В случае с corner radius, проблему можно решить отрисовав контент с округленными углами заранее. К примеру, если мы хотим показать аватарку с округленными углами, вместо того чтобы выставлять cornerRadius у UIImageView, мы можем отрисовать аватарку с округленными углами и соотвествущим фоном за ними. Таким образом сделав сделав округленные углы частью bitmap'a.
В случае с тенями, мы можем заранее посчитать и выставить shadowPath у layer'a, либо использовать картику теней для достижения нужного эффекта.
Please open Telegram to view this post
VIEW IN TELEGRAM
🧵 Thread в Swift
В 95% случаев современные разработчики используют GCD как инструмент для многопоточности. Но иногда, нам требуется создать отдельный тред для дополнительных задач. В Swift мы легко сделаем это с помощью Thread.
Собрал подборку статей про:
- Основные советы по Thread: создание, синхронизация, завершение
- Исследование потоков в Swift
- Жизненный цикл Thread'ов
🌿 Еще больше задач и примеров про них тут
В 95% случаев современные разработчики используют GCD как инструмент для многопоточности. Но иногда, нам требуется создать отдельный тред для дополнительных задач. В Swift мы легко сделаем это с помощью Thread.
Собрал подборку статей про:
- Основные советы по Thread: создание, синхронизация, завершение
- Исследование потоков в Swift
- Жизненный цикл Thread'ов
Please open Telegram to view this post
VIEW IN TELEGRAM
Лучший процесс собеседования для поиска универсальных инженеров под любой стэк
Anonymous Poll
7%
Теория по методичке
35%
Только задачи из практики
16%
Алгоритмы
33%
Архитектуру
43%
Теория и задачи
38%
Проектирование
27%
Вопросы про жили были
18%
Собесы это зло
4%
Другое
Протокол Sequence
Мы часто используем готовые коллекции языка, такие как Array, Set, Dictionary. Но что, если я захочу сделать свою? Swift легко позволяет это сделать с помощью протокола Sequence.
Дока эйпл говорит:
Примеры работы в скриншотах.
Полезные ссылки:
- Sequence
- Use Sequence & IteratorProtocol Protocols in Swift
🌿 Еще больше вопросов и задач в самой большой базе для собесов
Мы часто используем готовые коллекции языка, такие как Array, Set, Dictionary. Но что, если я захочу сделать свою? Swift легко позволяет это сделать с помощью протокола Sequence.
Дока эйпл говорит:
Тип, обеспечивающий последовательный итерационный доступ к своим элементам.
Примеры работы в скриншотах.
Полезные ссылки:
- Sequence
- Use Sequence & IteratorProtocol Protocols in Swift
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM