Из визуального:
Новые иконки и сочные обложки для каждой страницы. Единый стиль заголовков. Ссылки на статьи и видосы стали меншенами и теперь сопровождаются датой публикации.
По разделам:
Список ключевых навыков для резюме.
Вопросы по cultural fit.
Вопросы будущему руководителю.
Больше моков по system design + вопросы/ответы.
Асимптотика алгоритмов сортировки.
Задачи «что произойдет» на лайвкодинг.
Битовые операторы: shl, shr, ushr.
Функции валидации аргументов: require, check, error.
Все варианты применения Object.
Про корутины: supervisorScope, withTimeout, Channel.
Про StateFlow: update, collectAsState, collectAsStateWithLifecycle.
Бестпрактисы по KMP, как пересесть с Java, какие androidx-библиотеки уже переехали.
Инструкция как генерировать мультиплатформенные ресурсы, запускать и паковать WebApp.
Иерархия исключений.
Примеры лямбд.
Iterator в коллекциях. HashMap vs Hashtable.
Young vs Old Generation в мусорке, подробнее про StrongReference и PhantomReference.
Java Memory Model, Happens Before, стек, куча, мьютекс, монитор, семафор, deadlock, race condition, stop the world и другие страшные вещи.
Аннотации Stable и Immutable.
compositionLocalOf vs staticCompositionLocalOf.
nestedScrollConnection.
Добавились 2 графических роадмапа.
Параметры манифеста.
Вопросы про пермишены и сервисы.
Новые коллекции: ScatterMap, ObjectFloatMap, IntIntPair.
Вопросы и ответы про отрисовку и состояние
View.Про RenderThread и частоту отрисовки UI.
Плюсы/минусы/различия MVP/MVI/MVVM.
Про подключение зависимостей и модулей: implementation, api, compileOnly, runtimeOnly.
DI vs Service locator.
Добавилась страничка для ExoPlayer.
Подробное описание Hilt: Multibindings, Singleton, Subcomponent, Binds vs Provides, Component vs Module.
Про SavedStateHandle у ViewModel.
Аннотации в Room.
Инструкция как выделить под студию больше памяти.
Ссылка на бесплатный курс по Git.
Инструкция как развернуть свой web-проект на Github Pages.
Тип и краткое описание для всех проектов и библиотек.
Добавились новые проекты.
Дальнейшие планы:
• Оптимизации в Compose.
• Внутренности корутин.
• Многопоточность в JVM.
• Алгоритмы и структуры данных.
• Мультиплатформа: iOS, Desktop и Web.
#roadmap@foundout
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
1. Cтарый набор со 160 иконками в формате PNG перестает обновляться.
2. Ему на замену приходят новые эмодзипаки: РАЗ и ДВА. 400 эмодзи в высоком разрешении. Первый набор про мобильную разработку, второй про техсферу в целом.
Если грузить эмодзи в форматах PNG или WEBP качество будет страдать. Чтобы это исправить, в телеге придумали собственный формат TGS для анимированных стикеров и эмодзи (по сути переупакованный плагином SVG). Грузим статику под видом анимации и на выходе получаем уже не стыдный материал. Также у телеги обнаружилось ограничение на 200 эмодзи в одном паке, поэтому теперь их два.
Новинки:
Apple:
Microsoft:
Производители техники:
Клепатели смартфонов:
Игровые студии:
Крипта и эквайринг:
Языки:
IDE-шки:
#emoji@foundout
Please open Telegram to view this post
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
У эмодзипака появился свой сайт! Работает во всех браузерах
Так как сделано все на коленке за два вечера, могут наблюдаться тормоза с отображением на мобилках. Первый раз иконки грузятся поочередно, потом из кэша.
Главная фича – возможность кликнуть на эмодзи и получить название продукта. Например, тебе не понятно, что за голубой хомчик
michaelbel.github.io/MobileDevEmoji
#emoji@foundout
Please open Telegram to view this post
VIEW IN TELEGRAM
Настроить айфон
В день, когда эппл насыпет нам новых яблочек, поделюсь настройками iOS, которые улучшают мой пользовательский опыт.
Настройки → Звуки и вибрация → Отклик клавиатуры → Тактильные сигналы →🐗
Поразительно, что такая великолепная вещь как виброотклик клавы при наборе текста появилась в iOS только в 2022 году! Я когда перешел с андроида, недоумевал как можно без этой штуки печатать текст.
Настройки → Универсальный доступ → Касание → Тактильное касание → Быстро
Лонгтап во всей системе станет быстрым. Наша жизнь ускоряется, нет сил ждать целую секунду пока интерфейс одумается.
Настройки → Экран и яркость → Поднятие для активации →🐗
Экран будет включаться, когда берешь айфон в руки. Если можно не делать лишний тап по экрану - я его не делаю.
Настройки → Камера → Уровень →🐗
Горизонт на фоточках будет ровным.
Настройки → AirPods → Подкл. к этому iPhone → Последнее подключение к iPhone
Наушники не будут подключаться к айфону автоматически. Особенно полезно, когда смотришь кинцо на маке через наушники, потом на айфоне полез послушать кружок в телеге и эйрподсы не начинают скакать тудым-сюдым. Правда потом меня начинает бесить, что эйрподсы не подключаются к айфону автоматически. Нужен третий вариант для таких как я.
Настройки → Звуки и вибрация → Безопасность наушников → Громкость аудио тише →🐗
Хочется, чтобы во время тренировки музыка наваливала погромче. А эппл со своей гиперзаботой не мешал.
Настройки → App Store → Оценки и отзывы →🐗
Больше ни одно приложение не будет клянчить себе оценку в сторе.
В день, когда эппл насыпет нам новых яблочек, поделюсь настройками iOS, которые улучшают мой пользовательский опыт.
Настройки → Звуки и вибрация → Отклик клавиатуры → Тактильные сигналы →
Поразительно, что такая великолепная вещь как виброотклик клавы при наборе текста появилась в iOS только в 2022 году! Я когда перешел с андроида, недоумевал как можно без этой штуки печатать текст.
Настройки → Универсальный доступ → Касание → Тактильное касание → Быстро
Лонгтап во всей системе станет быстрым. Наша жизнь ускоряется, нет сил ждать целую секунду пока интерфейс одумается.
Настройки → Экран и яркость → Поднятие для активации →
Экран будет включаться, когда берешь айфон в руки. Если можно не делать лишний тап по экрану - я его не делаю.
Настройки → Камера → Уровень →
Горизонт на фоточках будет ровным.
Настройки → AirPods → Подкл. к этому iPhone → Последнее подключение к iPhone
Наушники не будут подключаться к айфону автоматически. Особенно полезно, когда смотришь кинцо на маке через наушники, потом на айфоне полез послушать кружок в телеге и эйрподсы не начинают скакать тудым-сюдым. Правда потом меня начинает бесить, что эйрподсы не подключаются к айфону автоматически. Нужен третий вариант для таких как я.
Настройки → Звуки и вибрация → Безопасность наушников → Громкость аудио тише →
Хочется, чтобы во время тренировки музыка наваливала погромче. А эппл со своей гиперзаботой не мешал.
Настройки → App Store → Оценки и отзывы →
Больше ни одно приложение не будет клянчить себе оценку в сторе.
Please open Telegram to view this post
VIEW IN TELEGRAM
• Список вложенных страниц переместился наверх.
• Добавились вопросы с собесов в те разделы, где их не было.
• Алгоритмическая секция переехала в отдельный раздел.
Добавлен роадмап тимлида.
Как себя вести на лайвкодинге?
Добавлены новые задачи на лайвкодинг.
Добавлены решения для существующих задач на лайвкодинг.
Временная и пространственная сложность.
О-Нотация.
Оптимизация алгоритма.
Структуры данных.
Бинарный поиск.
Бинарное дерево.
Красно-черное дерево.
Подробное описание решения 13 задач с литкода:
• Строки: Longest Common Prefix, Roman to Integer, Valid Anagram, Reverse String.
• Массивы: Two Sum.
• Связные списки: Linked List Cycle, Merge Two Sorted Lists, Reverse Linked List.
• Математические задачи: Palindrome Number.
• Манипуляция с битами: Single Number.
• Бинарный поиск: Sqrt(x).
• Префиксные суммы: Running Sum of 1d Array.
• Стек: Valid Parentheses.
Channels переехали на отдельную страницу.
Описание Rendezvous, Buffered и Conflated channels. Операторы send, receive, offer, poll.
Kotlin Contracts.
Оператор ::.
Делегаты: observable, vetoable и map.
Дженерики: star-projection.
Логические битовые операции: and, or, xor.
Битовые методы: inv, countOneBits, countLeadingZeroBits, countTrailingZeroBits, takeHighestOneBit, takeLowestOneBit, rotateLeft, rotateRight.
Локальные функции.
Data Class: сопоставление с образом.
Coroutines: Жизненный цикл Job и описание методов: start, join, cancel, cancelAndJoin, isActive, isCancelled, isCompleted, invokeOnCompletion.
Boxing и Unboxing примитивов в обертки.
Object: описание методов wait, notify, notifyAll.
ReentrantLock.
HashMap: сложность операций.
Функция mutableStateListOf.
Снапшоты: SnapshotStateList, Snapshot, snapshotFlow.
UI Components: полный список всех Compose-компонентов.
Отдельная страничка для Fragment.
Описание всех видов Drawable.
Как сделать обмен данных между Activity и Service.
Зачем нужен Choreographer.
Как работает Bundle в транзакциях.
Подробно про метод onMeasure у View.
Network: SSL pinning.
Build: Компоненты APK, структура, как уменьшить размер, как взломать. Zygote. Doze Mode, различия miSdk, compileSdk и targetSdk.
XML-теги <merge> и <include>.
LayoutInflater.
Явный и неявный BroadcastReceiver.
Обновилась страничка про ViewBinding.
Инструкция: отключение отображения имен параметров в коде.
Команды поделены на разделы: настройка, работа с репозиторием, работа с ветками, работа с удаленным репозиторием, история и отмена изменений, работа с тегами, продвинутые команды.
Подробное описание файла .gitignore: расположение, формат, настройка для android-проекта.
Список библиотек и приложений разделен на android и kotlin-multiplatform.
#roadmap@foundout
Please open Telegram to view this post
VIEW IN TELEGRAM
Как делать сайт на Kotlin + Compose
С какими проблемами придется столкнуться. И как их решать.
Обо всем этом в небольшом посте с картинками, видосиками и кусками кода.
🐗 Читать на Boosty
#emoji
С какими проблемами придется столкнуться. И как их решать.
Обо всем этом в небольшом посте с картинками, видосиками и кусками кода.
#emoji
Please open Telegram to view this post
VIEW IN TELEGRAM
200 НОВЫХ ИКОНОК
Новинки:
и другие.
НАБОР 1 • НАБОР 2 • САЙТ
#emoji@foundout
Please open Telegram to view this post
VIEW IN TELEGRAM
• В блоке «вопросы на собесе» добавились вопросы с вариантами ответа, чтобы нас запутать (+ правильный ответ). Также добавились новые вопросы и лаконичные ответы на них.
• Ускорилась загрузка страниц за счет оптимизации картинок.
Новая страница – Скрининг от HR c вопросиками про прошлый опыт и будущую работу.
Пополнился список ключевых навыков для резюме.
Решение 10 задач с литкода:
• Строки: Find the Index of the First Occurrence in a String, Length of Last Word, Valid Palindrome.
• Массивы: Remove Duplicates from Sorted Array, Remove Element, How Many Numbers Are Smaller Than the Current Number, Sum of Unique Elements, Merge Sorted Array.
• Связные списки: Remove Duplicates from Sorted List.
• Бинарный поиск: Search Insert Position.
Обновлено описание Sequences: отличие от коллекций, методы asSequence, map, filter, generateSequence.
Обновлено описание Coroutine Dispatchers, CoroutineName, билдеров launch и async, функций runCatching и runBlocking, suspend и Continuation.
Функция suspendCoroutine.
Синхронизация в корутинах, класс Mutex.
Обновлено описание метода collect у Flow.
Обновлено описание inline-функций и reified.
Обновлено описание sealed class.
Ограничения у Extension Functions.
Подробнее про методы data-класса.
Обновлено описание аннотаций @JvmStatic, @JvmOverloads, @JvmField и @JvmInline.
Добавлено описание аннотаций @JvmName, @JvmSynthetic и @JvmDefault.
GC: Reference Counting.
ThreadPool: FixedThreadPool, CachedThreadPool, SingleThreadExecutor, ScheduledThreadPool.
Что такое String Pool.
Инфа про алгоритмическую сложность операций доступа/вставки/удаления элементов в ArrayList и LinkedList.
Операторы управления потоками: doOnNext, doOnComplete, doOnError, doAfterTerminate, doOnDispose.
Операторы трансформации: just, fromIterable, filter, skip, skipLast, take, takeLast, concat, combineLatest, join, onErrorResumeNext, onErrorReturnItem, retry, retryWhen, delay, debounce, scan.
Обновлен раздел про ООП - теперь с примерами кода: class, abstract class, interface, наследование, композиция, агрегация.
Обновлено описание принципов SOLID.
Что такое сигнатура метода.
Как работает UDF.
Reducer и Middleware в MVI.
Приоритеты процессов в Android.
Аннотации для потоков @MainThread, @UiThread и @WorkerThread.
View: методы invalidate, postInvalidate, requestLayout, forceLayout, onLayout.
MotionLayout.
ViewStub.
WebView.
Сервисы: Bound, IBinder, onBind, onUnbind.
Activity: ActivityManager и его методы, taskAffinity, OnBackPressedDispatcher, TaskStackBuilder, Launch Modes.
Фрагменты: методы add и replace.
AsyncLayoutInflater и параметр attachToRoot.
Обновлен раздел про Hilt: Scopes, ленивая инициализация через Lazy и Provider, аннотации @Named, @Qualifier, @IntoSet, @IntoMap, @Subcomponent, @Binds и @Provides.
Adaptive Layouts: BoxWithConstraints, NavigationSuiteScaffold, ListDetailPaneScaffold, SupportingPaneScaffold, NavigableListDetailPaneScaffold.
Обновлен раздел про рекомпозицию и жизненный цикл Composable-функций.
Обновлено описание SideEffects.
BackHandler.
#roadmap@foundout
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Стал ли я умнее? Отнюдь.
Перестал понимать математику, когда там появились буквы. На парах хоть и сидел на первой парте, но больше был озабочен сколько шариков из бумаги мы с корешем успеем накидать преподу под ноги пока не спалимся. Поэтому операции инкремента, декремента и остатка от деления изучались на рабочем проекте.
Задачи на алгосы редко спрашивают на собеседованиях. Чаще дают лайв-кодинг а-ля джун накостылял и ушел в отпуск - разбирайся. Но спрашивают. Например, в Озоне, Авито и Сбере. Попутно с собесами начал готовиться. Каждый день по задаче уровня изи. Первые откровения:
• Алгоритмы работают со структурами данных: массив, связный список, стек, очередь, хэш-таблица, дерево, граф, куча и др. Логичнее сначала минимально разобраться в их устройстве. Например, в связном списке элементы хранят ссылку на следующий/предыдущий элементы. А в очереди элементы добавляются в конец и удаляются из начала.
• Вычислительная сложность алгоритмов может быть временной и пространственной. Как она считают – до сих пор без понятия. Для этого целые курсы придуманы.
• Чтобы упростить себе жизнь, для вычисления сложности придумали О-Нотацию. Я на начальной стадии ее понимания.
• Также алгоритмы можно оптимизировать - находить баланс между временной и пространственной сложностью, так как улучшение одного показателя ухудшает другой.
В категории изи на литкоде в первой сотне преобладают задачи на массивы, связные списки и деревья. Вопреки ожиданию, "вертеть деревья" оказалось весьма просто: поиск минимальной глубины дерева, определение сбалансированности. Моя любимая категория теперь.
Непосредственно о собесах: если мне сейчас дать поискать самый длинный палиндром в строке, только зря потрачу время интервьюера. Но со второго раза мой велосипед поедет. Проблема в том, что время не бесконечное, как и количество вакансий на рынке. Поэтому работающая рекомендация: сделать минимальный предтрен ChatGPT (язык, код с комментами, воды поменьше, оплаченный лимит) и быстрыми ручками скормить ему скриншот алгоритмической задачи из яндекс кода или куда направят на интервью. Только не копируй условие, а делай скриншот.
Если времени на выявление общих закономерностей и структур больше: плейлист тренировка по алгоритмам яндекса, курс основы алгоритмов, курс подготовка к алгоритмическому собеседованию.
Увидимся через месяц
#leetcode@foundout
Please open Telegram to view this post
VIEW IN TELEGRAM