Cобеседование Android-разработчика. Максим Качинкин, Dodo Engineering

Подготовка к собеседованию на Android Developer

Транскрипция видео:

  • [музыка] Всем привет Ну что закончилось лето пора отпусков кто-то может что-то отпускивается догуливает отпуска В общем не знаю как вы назовете но уже пора вкатываться уже начался учебный год рабочий скоро уже конец года подведение итогов и всякие премии А мы как раз то потренируемся Как нам проходить собеседование в очередной раз какую-нибудь новую интересную компанию для Это я позвал нового классного прям хорошего эксперта Я думаю понравится с новым интересным опытом из Фуд тех Макс Макс привет

    00:00:12 - 00:01:30

  • Привет соответственно Максим сегодня проведет собеседование это будет Макс ты расскажи что будет за собеседование сегодня Итак сегодня мы проведем собеседование на позицию android-разработчика уровня Middle Middle Plus это у нас часто бывают вакансии которые как раз мы и таких таких разработчиков ищем в целом это можно обозвать но мы так назвали собеседование продуктовую компанию то есть у нас будет такой небольшой фокус на то что как бы мы должны какой-то баланс иметь и технические знания Мы хотим проверить

    00:01:02 - 00:02:25

  • что были у кандидатов и в то же время какое-то желание сфокусированность сделать какой-то законченный конечный продукт для бизнеса вот цель собеседования такая если какой-то стек или там какие-то требования к кандидату вообще в целом который целишься Да ну требования вот я могу их повторить которые мы описывали да то есть там от двух лет разработки под Android но это чтобы как бы в целом какой-то минимальный уровень обозначили потом нам важно и собеседование будет важно уверены знания именно Android фреймворка

    00:01:46 - 00:03:12

  • немножко с фокусом на систему View на юань Вот потому что сейчас тоже смещается на это фокус но в целом Ну про комполус мы тоже можем поговорить Если кандидат захочет мы на него плавно постепенно переходим не спеша как бы вот то есть тоже как бы важная часть но пока еще не основная еще такой момент смотри зачастую опыт считают по-разному Вот как раз есть компании которые например фриланс опыт не считают за опыт Как ты считаешь Стоит ли считать фриланс за опыт полноценный Хороший вопрос Ну да действительно особенно если бывает

    00:02:28 - 00:04:06

  • сложновато оценить когда еще знаешь даже наслаиваются опыт там есть фриланс еще как и там два фриланса как это суммировать тут два года два года он еще наслаивалась год поэтому сложновато конечно более Просто когда ты видишь кандидата типа там два года в такой продуктовые два года в такой Ну фриланс я думаю Тоже опыт Нормально просто надо будет внимательнее спросить чем занимался человек тогда давай позовем Артем сегодня будет проходить собеседование Всем привет друзья Всем привет Артём расскажи пожалуйста про свой опыт

    00:03:19 - 00:04:36

  • чтобы мы тут все представляли Примерно какой кандидат у нас сегодня будет пробоваться на роль Андроид разработчика еще раз Всем привет Меня зовут Артем в данный момент я работаю в Авито начал свою карьеру Android разработчика с 21 года пришел на стажировку в Тинькофф успешно там проработал какое-то время и дальше перешел как раз таки его вид То есть суммарно у меня где-то примерно как раз таки два с половиной опыта года опыта продуктового разработки вот на фрилансе я не работал в основном работал как раз в компаниях в

    00:04:00 - 00:05:17

  • команде продуктовых командах Максим еще такой финальный вопрос стартовать Какая задача сегодняшнего интервью что ты должен выяснить в рамках собеседования Ну я ставлю две задачи одна такая публичная просто как бы ну познакомить аудиторию что есть разные типы собеседований У нас вот оно вот такое например такие есть особенности Почему ожидают чего ожидать но в целом цель собеседования в том чтобы понять Подходит ли кандидат Да компанию то есть Ну понятно что это сейчас публичное такое можно сказать Ну не совсем

    00:04:40 - 00:05:56

  • официальное собеседование но я его рассматриваю максимально как бы близко к настоящему и вопросы сам формат будет максимально близко к тому как мы реально проводим инжиниринге Вот и отзыв и фидбеки будут давать прям такой же как бы я дал бы если был настоящий собеседование в мою команду или в соседнюю тогда если у вас есть какие-то предложения накидывайте будем отвечаем на ваши вопросы Все я удаляет если что зовите а Итак Давай начнем Артём у нас значит я сначала расскажу еще будет состоять собеседование ских

    00:05:21 - 00:06:47

  • блоков первый блок по сути будет стоять из таких из трех основных но можно сказать из четырех первый блок это будет про твой технический опыт то есть ну хочется послушать какие-то сделал интересные технические задачи за последние там год-два чем тебе прямо хочется сказать допустим Если ты был с коллегами да то есть чем бы ты с ними поделился и мы вокруг этого обсуждаем второй будет блок про непосредственно уже более такой технический про Android вопрос ответа но я постараемся их делать более интересными такими

    00:06:11 - 00:07:26

  • скупыми как обычно бывает на собеседованиях и третий блок будет такое Ну мы называем творческое задание Ну по сути такой будет небольшой систем дизайн Вот и покажу пару экранчиков пару скриншотов фича такая небольшая фича надо будет ее как-то проектировать и будем обсуждать как бы ты ее делал и вот это было обсуждать вот после каждого блока предлагаю чтобы я давал фидбэк у кого-то чтобы интереснее в конце уже можно большой фидбэк ты можешь любовь спрашивать вот такой план Ну тогда погнали давай с первого этапа

    00:06:49 - 00:08:20

  • расскажи пожалуйста про какие-то про свой опыт но с точки более фокуса с технического да то есть Какую бы что-то делал за последние время такое интересное вот не обязательно какой-то там про официальность Ну просто чем бы ты поделился муж какой-то проект даже такой немножко по поводу Могу ли вообще рассказывать в деталях что я прям реализовывал из такого чем хотелось бы наверное похвастаться когда работал Тиньков мы реализовывали достаточно сложные функционал оплаты оплаты именно юридических лиц

    00:07:39 - 00:08:52

  • на самом деле я не думал что в банках Бывает такая большая ветеленная структура различного Flow Вот и нужно было это все сделать не то чтобы сложность технической точки зрения больше сложно с точки зрения вернее сложность продуктовой точки зрения с технической в том плане что куча была переиспользуемого кода это нужно было все красиво как-то опрятно выносить правильно составлять зависимости в лагере и вот это вот все это было очень круто и Мне прям вот за это тоже какая-то гордость есть что мы смогли реализовать

    00:08:19 - 00:09:36

  • достаточно сложный функционал платежей и при этом это было сделано хорошо с технической точки зрения это было расширяемого поддерживаемо Вот и в целом очень радовало было сложно именно в том что часть Flow встраивалась другое Flow то есть скажем так было именно вот такое дерево что ли принять решение каких-то и это постоянно Все динамически настраивалось настраивал зависимости там от предыдущих выборов плюс это нужно было сделать скажем так абстрактно что ли от платформы и больше чтобы логика была перенесена наверное

    00:08:58 - 00:10:26

  • на Back and с той целью чтобы можно было потом это все конфигурировать и поддержать скажем так очень наверное выразить такое обобщенный обобщенное слово Зачем обобщенными данными скажем так то есть большая задача между больше что-то связанное с навигацией да то есть float имеет Что какая-то навигация была сословиями какими-то про это Ну вот как это было сделано То есть Вам приходил какой-то конфиг со сценариями как надо было перейти или что это было как вот да сложно было сделано да то есть грубо говоря приходил некое дерево

    00:09:48 - 00:11:14

  • с бэкэнда нужно было его скажем так правильно распарсить разложить в нужные скажем так другие модели и плюс на этом все накладывает ограничения сам Android Framework то что мы используем какие-то возможные иногда фрагменты где-то иногда Activity и нужно было это все соединить в единое что очень гибко настраивалась со стороны именно бэкенда ггер был еще что-то Круто было сделано и сложно было сделано с даггером да что именно было наверное крутого сделано то что было правильно архитектурно выстроены все возможные

    00:10:33 - 00:11:50

  • провазинги зависимости очень хорошо был разложен получается весь Граф по модулям по компонентам не было такого что ты иногда не понимаешь почему у тебя нет такой зависимости берешь просто Подключаешь какой-то обобщенный модуль и все собирается в итоге потом не знаю месяца два разработки даже не можешь разобраться где у тебя из какого модуля Что проводиться и почему проект не собирается все было скажем так очень понятно очень логично и легко Это все было читаемо читать и поддерживать потом Ну а можешь какой-то краткий пример

    00:11:16 - 00:12:26

  • привести то есть было какое-то запутанное диайграф а вы сделали простой и понятный вот за счет чего то есть за счет того что именно выносили раскладывали некий функционал по модулям какие-то модули мы объясняли объясняли объединяли Вот и в целом как бы распутывали то что было до этого до Тори дизайна Вот и превращали в что-то такое более-менее читаемое и понятное а ты еще сказал было в итоге сделали эту фичу классно Круто расширяемо вот как-то Оценил что таких Классно расширяем еще одна итерация дизайна мы поняли что

    00:11:52 - 00:13:31

  • круто очень легко поддерживать очень легко что-то изменять действительно в начале скажем так когда принесли нам эту фичу самый первый дизайн понимали что будет больно будет очень много неопределенностей и будет очень это долго а потом когда уже принесли после реализации вторую итерацию мы такие уже просто тоже все готовы почти что давайте просто немного допишем коды Окей То есть даже было приятно потом пользоваться функционалом с точки зрения как бы расширение для разработчика Ну а как за счет чего так это получилось сделать

    00:12:47 - 00:14:06

  • Может быть вы там тестами прям покрывали прям более классно изначально или что-то еще вы заложили То есть как всем такое делать замечательное решение как бы скорее всего тут был основной Point в том что подошли изначально скажем так с архитектурной что ли точки зрения не сразу полезли писать код то что мол Ну вроде Понятно Все как делать Давайте писать было очень много потраченного времени сил на то чтобы придумать вообще в целом архитектуру как нам абстрагироваться от от функционала который сейчас есть как

    00:13:26 - 00:14:48

  • абстрагироваться от того что будет приходить новые значения какие-то новые функционал но в этом не знаю типы страницы прочего то есть было скажем так проделана большая работа над архитектурой приложения фичи изначально а вот в этой фиче какая была вот ну и в этих решениях Какая была твоя роль ты был часть группы которая придумали ты там инициатором был каких-то решений не на самом деле куда проще я тогда приходил еще стажером скажем так Я скорее был больше человеком который находил муж какие-то детали на которые

    00:14:07 - 00:15:34

  • ребята постарше не обращали внимание Вот так [музыка] в целом скажем так я был там не основной единицей который придумал это все именно архитектуру А вот во время реализации То есть я внес свой вклад хорошо потом так Ну так наверное сходу даже и не вспомню это другой подскажу А был ли кейс Ну наверняка ты говоришь тебя опыт там два с половиной года когда у тебя был какой-то факап что-то не так пошло было кстати там на самом деле не особо такой прям чтобы технический как сказать не архитектурный что ли какой-то факап

    00:14:50 - 00:16:18

  • небольшая проблемка В общем я с точки зрения скажем так данных хотел указать что данные приходят в сетах то есть уникальный тип данных нам приходит можно было пойти объявить это как лист можно было пойти объявить как с Вот и хотелось прям показать что мол здесь уникальные данные только давайте объявим как сет и Ну конечно не стал использовать лист по сути дела В ходе никакой разницы бы не было Там просто проверка на контент и прочее Но именно из-за моего решения Как сделать это листом вроде как оказалось

    00:15:51 - 00:17:06

  • верным мы ловили получается ошибки на стадии запроса то есть идет запрос все идет верно Бэкон все дает хорошо и у нас почему-то не отображается экран там получается на старте экрана просто грузился этот запрос был очень долго не понятно Почему Здесь наверное можно сказать что какой-то плюсик что ли этого Бага то что пришлось пообщаться с множеством команд пообщаться вообще внутри комьюнити разобраться что это может быть из-за Чего это происходит обложились всеми возможными блогерами и поняли что почему-то нам приходит

    00:16:29 - 00:17:41

  • все-таки сайт но сон пытается парсить его как реалист и говорит что мол тут ожидается реалист какой сайт и мы такие Ладно хорошо лист так лист давайте так поправим проблему вот такой как бы сделать так чтобы такие вот факапы не происходили в будущем такой вопрос Ну конечно варианты не очень это никогда не используется как бы вроде как есть такая у нас структура Почему мы не хотим использовать вариант получше это надо все же разобраться до конца почему так происходит Возможно это пофиксили не знаю в новой версии библиотеки возможно

    00:17:04 - 00:18:39

  • еще что-то вот так в целом не знаю мне почему-то кажется что именно такие факапы это как будто бы ну опыт опыт или как иначе как на ошибках ты сможешь получить Окей но допустим Не знаю какие-то варианты Может ты предложил тестами заранее вкладывать какие-то моменты взаимодействия клиенты сервера или что-то еще такого рода вот тестами [музыка] была изначально идея обложиться тестами да то есть условно когда получается мы пишем какие-то не знаю коллекция то есть и прочее можно было пробовать но проблема в том

    00:17:57 - 00:19:24

  • что этот баг очень странно воспроизводился то есть у меня сегодня я могу открыть У меня не открывается приложение Ну вот эта фича могу там завтра открыть она открывается То есть это было что-то такое непонятное Вот и пытались запускаться тестами Я даже прям ловил запросы которые подходят вернее Ну ответы которые приходят Этому пользователю которого крашится опрокидывал получается через uitest mocal все проходило все было Окей то есть как-то иногда почему-то это стреляло вот и даже я находил такие

    00:18:49 - 00:20:07

  • статейки что это есть что это прям досконально изучать проблему я не изучил еще вот но казалось каким-то очень прям странным багам То есть это ну скажем так это не за наших там условно каких-то флагов что нас там какие-то свои парсеры кастомные используются иногда это не используется вот [музыка] то есть Да действительно очень странный был И вот вывода даже такого как такого не получилось сделать потому что есть магнит тесты проходит всегда вообще запускал 100 тестов подряд все проходят все зеленые ты сидишь и не понимаешь что

    00:19:27 - 00:20:43

  • за прикол Окей ну еще напоследок это секция спрошу Я говорил нас фокус будет немножечко в сторону как-то его я делал ли может быть Вот в этом смысле какие-то вещи Интересные там может кастомную вилку рисовал или дорисовывал существующую или что-нибудь или занимался перфомансом смотрел в этом было я когда-то был скажем такой ну непродолжительное время был фанатом кастомных фишек вот на как-то было интересно то есть как-то она там берется происходит все рисуется И вообще было интересно понять как у тебя

    00:20:06 - 00:21:24

  • есть кнопка То есть как ты прожимаешь ее у тебя меняется Немного цвет ее там ripple эффект происходит и прочее и стал такие несложные кастомные вьюшки и вот меня получается был опыт создания кастонов вьюшки скажем такого слайдера может кто-то пользовался не знаю каршерингами арендами там есть такой слайдер Аля ты проводишь по экрану и там условно бегунок пробегает у тебя происходит какой-то экшен вот я получается помогал другу он работал в компании небольшой там нужно было сделать примерно такой же

    00:20:47 - 00:22:12

  • слайдер то есть там тебя просто есть Слайдер и в конце происходит было в принципе круто то есть понять порисовать вот это вот скажем Вот именно порисовать что ты ведешь по экрану тебе ведется собой иконка не отрисовывается расскажи хотя бы Об чем мы потом поговорим получается Просто обрабатывал смотрел в какой момент получается происходит Touch какую область происходит тач То есть если ты внутри получается этой картинки которую тянешь то она тянется дальше запоминаешь получается запоминаешь координаты там условно

    00:21:32 - 00:22:44

  • только по иксу нужны были вызываешь методы [музыка] даже не вызываешь метода на самом деле Просто понимаешь координаты и у тебя потом все происходит в методе Это все он Draw единственная был такой момент такой скажем так Корнер кейс там когда ты отпускаешь эту кнопочку она должна назад возвращаться это все делалось с помощью обычного аниматора были аниматора вот и опять же потачу на кнопку если ты получается в области этой картинки останавливаешь таймер все также двигаешь рисуешь координаты и все

    00:22:21 - 00:23:41

  • Окей круто Тогда наша первая первый опыт у нас проходит примерно 15 зачем я спрашиваю что вот как сейчас ответил Артём На мой взгляд в целом Почему мы это спрашиваем то есть интересно понять Да приходит кандидат рассказывает какие-то вещи и мы хотим Понять насколько кандидата что рассказывает реально знает глубоко то есть сказал я сделал такую тысячу начинаешь спрашивать там более подробно А как именно ты сделал Какая твоя роль в этом и бывает очень разные ответы и на один и тот же вопрос там приходит Чарли как угодно то

    00:23:05 - 00:24:40

  • есть невозможно так сказать поэтому Мы спрашиваем А как именно сделал какие там были сложности Какая твоя роль Это уже тебе какой-то дает впечатление Вот и можно примерно понять какие-то может быть сильные слабые стороны Техническая сторона или наоборот там инициативно взял какой-то процесс и второе конечно важное про какой-то факап потому что факапы у всех есть И когда мы на нем человека будет моим напарником и будем вместе работать всех у нас будут факапы и вот как нам с ними жить Поэтому пока под это тоже

    00:23:58 - 00:25:09

  • важно У нас они у всех есть и важно то как мы после них себя ведем да то есть что каким уроки из этого извлекаем вот по тому как все Артем я конспектирую по записям вот рассказал про сложную фичу [музыка] с оплатой все прикольно все довольно таки ну классно Сказал действительно видно что я понял как она работает зачем вот важно было конечно Понять насколько его была роль да то есть Артем сказал что был еще не главным решальщиком Но это как бы здесь нету правильных неправильных лет мы пытаемся докопаться второй профокап Ну факап пока

    00:24:34 - 00:26:13

  • был такой очень стремный плавающий бак вот в идеале Конечно хочется услышать какой-то прям вот историю где я понял как бы я извлек какой-то артефакт из этой то есть извлек урок из ошибки сделал это артефакт не знаю там написал статью в каком-то внутреннем ресурсе научил что ребята не делайте вот так потому что может быть Вот так вот встречу рассказал этот как бы ну идеальный ответ не у всех так если ты его не заготовил бывает сложно но в целом некий средний просто бак из которого даже сложно было может быть сделать

    00:25:25 - 00:26:55

  • выводы Хотя какие-то можно думать всегда можно выводы какие-то там написать тесты какие-то другие решения хотя бы их предложить может их не приняли Я предлагал вот это вот это вот это уже неплохо вот ну и последнее про вьюшкину Я просто спросил то что у нас есть фокус OK там слайдер Это прикольная штука У нас тоже кстати в одном приложении приложении drinkit которым я сейчас работаю тоже есть слайдер быстрая плата поэтому сейчас знакомые Ну мы пробьюшки поговорим Поэтому вот такой фидбэк просто сложилось впечатление что Артем

    00:26:10 - 00:27:33

  • действительно с тем опытом с которым он есть он как бы уверен вот поэтому мы продолжаем дальше так следующий у нас блок он называется как бы Техническая секция она у нас [музыка] обычно больше про Android Framework так или иначе немножко такое многопоточку и что-то такое ну крутимся вокруг Андроида Вот и некоторые вопросы прям Действительно прям чтобы они не были прямо Один в один но Будьте уверены что это максимальная примерно Итак погнали вот Артём представь встречаешься такой Exception где-нибудь

    00:26:52 - 00:28:32

  • в Cross литике или к тебе кто-то приносит называется транзакшен ту Ларчик section первый вопрос знакомый с таким если нет Я тебя сам с ним познакомлю Но если знаком скажи об этом транзакшен Да мне кажется я так понимаю что это когда переполнение бангла происходит Да вот Представьте такой увидел такую Exception в прошли эти напротив не у себя допустим где-то как бы Какие твои действия где ты будешь их его ловить исследовать Какие места так Ну я так понимаю что крышки все равно как-то указывается по крайней мере

    00:27:51 - 00:29:24

  • откуда он пришел если там есть какая-то возможность зацепиться Возможно не знаю там Activity фрагмент Откуда это пошло Наверное начну с этого так а так как я понимаю на самом деле в какой именно момент возникает этот Exception я сразу же так сходу не скажу Мне почему-то кажется что это происходит либо в момент вызова комита и прочего фрагмент менеджер либо Возможно это происходит во время старта Activity Ну что там что там у нас есть банда и вот мне почему-то кажется что именно в этот момент происходит

    00:28:40 - 00:29:57

  • возможно этот Exception Окей вот в чем его фишкой почему его можно переполнить делает такая штука в которой хранятся значения как условно в мапе там есть ключ значение него можно положить примитивно можно положить какие-нибудь про силы был объекты вот в чем его штука штука в том что мы условно так можем общаться между активити можем общаться между активити можем так не открывать какие-то фрагменты с нужными нам данными входными Вот и наверное еще такой интересный бандла допустим условно У нас есть Activity сейчас у нас

    00:29:21 - 00:30:53

  • новомодный есть vie модель и прочее как новомодные кажется тоже давным-давно стандарт Вот и может привести такая ситуация что условно [музыка] у нас будет фрагмент у него будет и модель и это Вью модель хранит в себе заголовок этого фрагмента Вот и у нас два варианта Первое это мы каким-то образом каким-то образом будем сохранять это вави модель то есть стоите и потом отрисовывать есть вариант у нас положить там не знаю в методе состоит фрагмент и вот если у нас произойдет смерть процесса то U модель не приживется между процесса у

    00:30:11 - 00:31:29

  • нас остановится фрагмент благодаря фрагмент менеджера и условно нас придет не стоит скорее всего модель как раз таки эту всю историю сохранит детали прям точно не скажу как это работает скорее всего это записывается каким-то образом систему вот ну то есть на физическое физическую память Вот и потом скорее всего достается Окей То есть ты сказал кейс он стоит да типа мы в момент когда пересоздается завершается там фрагмент Activity мы складываем Представь что А если мы ничего не складываем вот мы не

    00:30:51 - 00:32:11

  • используем Save in State и все равно получаем такую такой Exception каких случаях такое еще может произойти интересно вопрос то есть мы не используем не используешь ты такой код не писал ты вот в своем фрагменте Activity Окей Возможно мы какую-нибудь стороннюю библиотеку используем не знаю экран допустим оплату на стороне библиотека если оплаты и то же самое в принципе там может происходить то есть условно нам какие-то нужны аргументы дать На старт номер карты и прочее а у нас случайно туда залетел не номер карты а не знаю

    00:31:30 - 00:32:48

  • там словарь ожего то есть такой и в таком случае тоже может произойти Ну то есть скажем так Exception сторонней библиотека я этот код написал Давай такое я буду чуть-чуть как бы надо руководить наоборот как бы сужать есть вот мы запускаем фрагменты допустим не пользуемся Navigation Мы хотим руками фрагмент создать и вот как нам создать фрагмент и какой-то данные ему передать мы создаем с помощью на самом деле пишем конструктор Ну как бы скажем Фабричный метод создается обычный фрагмент и у него в аргументы кладется наш банду Вот

    00:32:16 - 00:33:49

  • и дальше уже не знаю в методе Мы достаем из этих аргументов это банда нужны нам данные и работаем дальше с ними а зачем мы так делаем Почему не можем просто там конструктор передать в поле засветить Зачем нам класть Аргумент на самом деле мне кажется почему-то мы можем сделать так с конструктором только если мы используем какие-то специальные гугловские фабрики и прочее которые никто не делают а так на самом деле вся суть в том что при смерти Activity Ну перевернули экран у нас же слава богу есть фрагмент менеджер

    00:33:02 - 00:34:18

  • который создастся фрагменты вот весь стек там восстановится круто сделает Но его Проблема в том что он использует конструктор по умолчанию вот он просто возьмет вызовет наш конструктор туда нужный нам бангла передаст мы уже Вот его таким образом и [музыка] получим наш фрагмент вот поэтому к сожалению мы передадим это все в Конструктор то у нас эти данные просто все пропадут То есть получается ты говоришь что аргументы нужны чтобы при создании они опять нам пришли откуда правильно то есть конструктора потому что он по

    00:33:41 - 00:34:56

  • умолчанию значит кто-то их сохраняет Это я к тому что Откуда можно Откуда можно переполнить этот самый бандал Я наверное понял Окей есть такой Ну мне кажется скажем так может быть я даже понял условно если мы даже явно не сохраняем что в том же самом том же самом фрагменте ноки мы можем что-то положить в банду дальше его как мы не используем Но когда у нас начнется там смерть процесса Я так понимаю все банлы фрагментов как-то своими фрагмент менеджерами ниже это переживает они Скорее всего вкладываются в даче вернее

    00:34:19 - 00:35:41

  • в родительские и в итоге вот может получиться Так что у нас есть Activity с большим вложенным количеством фрагментов и у них у всех есть свои Аргументы и вот при перевороте крайне смены конфигурации там не знаю смерти процессы его восстановления у нас получится Так что слишком много данных пришло Ну просто система сохраняя слишком много данных банков которые просто не помещаются а ну да вот мы раскопали как бы истину последний Здесь вопрос бандал Вот он уходит куда знаешь ли ты вот это вот ты говоришь он где-то хранится на на диске

    00:35:14 - 00:36:28

  • поподробнее ты знаешь то есть куда он уходит и откуда он потом к нам приходит кто этот человек который нам дает и отдает вот на самом деле наверное скажу точно я не знаю можем просто попробовать погадать это не особо то и получится Я думаю банду Ну понятно дело системы как сохраняется вопрос Где он живет наверное даже так не скажу а да я ну я вкратце отвечу на самом деле тоже маленький offtop Я люблю сразу отвечать на вопросы отвечать у всех по-разному в общем здесь речь вот такую сущность как биндер есть

    00:35:54 - 00:37:19

  • такой компонент у Android архитектуре биндер через который это называется принтер транзакция упаковываем и Передаем этот Bundle дальше или получаем и общаемся мы тебе транзакциями с разными Android сервисами в данном случае Activity менеджер сервис Но другие сервисы тоже также работает через транзакции вот Окей поговорили про бандлы и прочее Давай поговорим про теперь чуть ближе к юаню есть списочек Что делать Как сделать так что мы хотим в горизонтальной ориентации в одну колонку когда мы разворачиваем он

    00:36:39 - 00:38:14

  • получается две колонки Хмм так сейчас подумаем на самом деле я так понимаю это все решается с помощью layout Manager но наверное самый такой способ попробовать окей Наверное первый вариант который мне приходит в голову можно проверить то есть условно В какой ориентации мы находимся в Escape или портрет и подставляет тот или иной я вот менеджер тут скорее всего могут возникнуть некоторые проблемы Что такое Зачем он нам очень нужен из него ничего не будет работать у нас скажем так разделены немного не Как

    00:37:29 - 00:38:57

  • скажем сама наверное вьюшка даже не вьюшка вот этот комплекс всех классов разъединен немного То есть у нас есть какая-то фишка Которую мы прописываем xml у нас есть какой-то адаптер У нас есть какой-то я вот менеджер по сути дела девушка нам нужно что мы вот объявили У нас есть какой-то там не знаю место на экране адаптер нужен чтобы условно из одних данных не знаю из юанях Nokia Может не у всех есть военные данные из каких-то данных нам чтобы их прибавить к нашей вьюшке То есть к отображению Вот и есть layout

    00:38:24 - 00:39:34

  • Manager который как раз таки отвечает за то как мы будем именно размещать эти данные в списке то есть Можем там в одну строку в две строки слева направо справа налево сверху вниз снизу вверх то есть вот именно яд менеджер отвечает за расположение элементов вот и опять же вопрос что мы хотим в одной ориентации одну колонку в другой две наверное самый опять же вот вариант то есть условно в одном используем линии а в другом используем Мне почему-то кажется что это не супер эффективный способ просто почему-то кажется что подменять

    00:38:59 - 00:40:17

  • менеджеры из-за ориентации но мне кажется есть вариант как мне кажется если мы подменяем менеджеры у нас будет layout И вот вопрос нет подожди когда мы меняем ориентацию как вообще происходит уже как нам обработать вот Какие способы обработать смену ориентации Activity вот мы работаем Мы развернули сохранить нет вот допустим нас был вертикальный стал горизонтальный вот мы раньше обсуждали там пересоздается или не пересоздается Вот какие Что делать если как лучше сделать может быть надо создавать лучше наоборот не

    00:39:40 - 00:41:03

  • надо создавать и как там руками но лучше на самом деле пересоздавать урону потому что ну то есть часто встречается такая вещь Ну то есть условно та же самая Инстаграм не знаю как сейчас Но раньше у них было только вертикальная ориентация горизонтально не было Вот они просто брали и блокировали не знаю как это было реализовано в коде но условно мне кажется если вы связыватесь на то что Вас никогда не будет смена конфигурации то есть условно вы никак не сохраняете состояние экрана то мне кажется рано или поздно это может

    00:40:26 - 00:41:31

  • где-то выстрелить условно человек поменяет язык вы это не обработаете можно просто это не учли может еще что-то пойдет не так извини пожалуйста фрагменты какой будет ты говоришь может привести к вызову квест даем новый Ну да здесь Мне кажется просто заранее начал оптимизировать скажем так на спичках потому что все явно и так и так перерисуется при смене конфигурации вот вопрос все же в том же да насколько это сколько это хорошо зависимость от конфигурации тут Наверное такой момент насколько это

    00:40:59 - 00:42:25

  • хорошо при том условии что если нет другого пути использовать один и тот же то есть условно Мне кажется что в grilla яути там есть такой метод который отвечает за количество вроде спаннов и скорее всего его можно определить просто да использовать у нас будет один и тот же Grid layout-менеджер с определенным вот этим методом и в зависимости от конфигурации возвращается то или иное количество спанов то есть этот вариант кажется лучше чем в зависимости от конфигурации использовать либо линейла я вот либо

    00:41:48 - 00:42:53

  • Потому что почему кажется потому что не знаю некрасиво как-то второй момент Сохранится ли текущий он же сохраняет при смене конфигурации позицию И вот вопрос при сменил я от менеджера сохранит он или нет просто не такой часто кейс Ну нет он по-любому сохранит как мне кажется один из моих вопросов Как сохранять для этого есть давай ладно менеджер поговорили Давай поговорим про анимации вот есть у нас айтомы Я хочу делать анимацию в айтами с помощью чего мне это лучше сделать про рессор договорим Да надо пролистайл

    00:42:21 - 00:43:54

  • вот у ячейки У нас есть айтом аниматор самом деле мне кажется очень редко используемая какая-то штука в том плане что всем хватает как мне кажется стандартных анимаций по дефолту они есть вот мне кажется чаще их просто отключают чем немного переопределяет поведение этих анимаций Но вот смотри нет такой вопрос если я буду делать Просто анимацию на вьюшки Да там скажем так чем это хуже то есть какие здесь есть проблемы то есть его бы не придумали Если бы у тебя был умеешь делать анимации пожалуйста делай

    00:43:24 - 00:44:49

  • вьюшка мне почему-то кажется либо Ну два варианта либо Первое это будет просто некорректно работать анимацию То есть у тебя же вьюшки переиспользуюсь второй вариант Возможно не будет работать сам механизм ресайтлинга То есть даже вижу как бы захвачено возможно то есть по-моему слышал про такой кейс что условно когда ты делаешь какую-то анимацию у тебя вьюшка не освобождается и там смотрит что у него нету пустых юг Значит нужно создавать новую нагружать систему и прочее а тут он использует это как раз таки так оптимизируем

    00:44:13 - 00:45:21

  • Ну да вот получается наоборот что лучше использовать аниматор если ты выбираешь для этого был создан Как можно вот допустим ты сделал списочек и он тормозит лагает у тебя В какую сторону ты будешь копать чтобы Какие у тебя есть шаги идеи Как можно оптимизировать Nokia наверное самый такой как мне кажется правильный путь пойти в профайлер посмотреть что он занимает больше всего нет времени Допустим мы не хотим идти в профайлер мы просто так скажем на опыте хотим куда-то быстро тыкнуть что-то поменять Мне

    00:44:48 - 00:46:10

  • кажется надо менять именно что-то в методе banding То есть это самый часто вызываем метод как правило условно методы создания в юг то есть холдер не так много вызывается то есть условно опять же чтобы не соврать скорее всего там создается количество виг тот который помещается на экране плюс-минус там по 2 сверху снизу как мне кажется в этом пуле лежит вот а метод binding вызывается То есть каждый раз вызывается когда у тебя появляется на экране новая фишка Это самый такой часто вызываем метод надо смотреть именно в него

    00:45:40 - 00:46:53

  • Возможно там происходит какие-то не знаю очень тяжелая операция которая не подходит для этого что говоришь ты говоришь получается как лучше делать У меня есть разные типы [музыка] элементов разные типы айтомов и я думаю как мне их разбить по типам То есть у меня есть могу 100 типов придумать или могу сделать их разбить два типа они будут немножко похожи но я там я в одном Немножко там спрячу одно другое другое и у меня будет там не знаю реально два типа либо могу там вообще на каждый чик сделать каждый тип

    00:46:17 - 00:47:38

  • [музыка] Мне что-то кажется что просто очень хороший на самом-то деле прям задуматься я скажу так мне кажется все-таки правильно с точки зрения Наверное я сделал Я бы сделал наверно несколько типов потому что есть такой вроде как негласное правило не рисовать то что не увидит юзер А если мы типа условно делаем два типа у которых там куча которые скрывается раскрываются то это как будто бы Ну не совсем что ли правильный путь с другой стороны если мы создадим много вот этих vuit of много вьюшек у нас как мне кажется может

    00:46:57 - 00:48:23

  • произойти проблема что ресайтлеру нужно будет создать куча куча этих реализаций что как раз таки может привести к торможению так я даже Почему сходу не могу ответить Как правильно сделать Но на самом деле это правильно размышляешь и это есть ответ потому что тяжелая операция одна из тяжелых операций будет много типов то типов ты будешь постоянно если будет мало типов ты сможешь использовать ты будешь меньше будет так Окей давай поговорим проговорили тормозит все такое вот мы хотим допустим такая задача на экранчике где-то сверху

    00:47:59 - 00:49:29

  • показывать FPS нашего юаня наши приложения вот хотим показывать как бы если у тебя идеи как бы ты это сделал хотим реализовать FPS размышляем слух что такое FPS и как бы ну то есть что нам нужно сделать для этого да Окей но FPS freemper Seconds то есть количество кадров в секунду [музыка] Мы хотим вывести именно этот цифру какой-то такой вариант То есть получается Окей Где мы можем еще посмотреть то что вызвался вызвался отрисовку это в какой-то наверное Великий то есть методе вызывается не всегда бывает так что он

    00:49:01 - 00:50:33

  • смотрит то что нужно перерисовывать или не нужно перерисовывать то есть какие-то возможно кадры он будет специально но система специально будет пропускать они будут перерисовывать а вот смотри ты говоришь есть он тро А вот здесь кадр вот как бы рендеринг кадра это Это где происходит это как это на него конкретные девушки конкретные просто есть Такая сущность хореограф Может это не то да это по ту сторону в ту сторону да ох как-то давно я смотрел как вообще рисуется прям до уровня там можно примерно не обязательно

    00:49:59 - 00:51:28

  • на память помнить просто суть вот как мне кажется есть Ну понятно дело фримворк который отрисовывает вообще все это дерево и вот вопрос в том что как бы нам до него Достучаться Как правильно искал хореограф нужно посмотреть какие у него наверное есть методы на самом деле немного так затрудняюсь допустим смотри я тебе скажу есть метод типа подписаться на метод допустим который я могу Ты можешь подписаться на этот окей расскажу Да ты можешь подписаться Что дальше делать Так нам по сути дела мало что остается

    00:50:42 - 00:52:15

  • тогда реализовать надо просто трекать время то есть условно У нас есть какое-то время старта есть получается какой-то текущее время которое нужно там вызываем систем каранда Мелис на каждый душем есть код аккаунтер Каждый раз когда вызывается duframe просто считаем Когда у нас доходит до секунды количество кадров в секунду появляется это можно обернуть даже условно тот же самый то же самое модель каким-то образом можно заправить просто подписываться подписаться где-нибудь очки на это и отображать

    00:51:41 - 00:52:55

  • те кто знает там как работает дальше Давай поговорим про анимации в целом вот я хочу сделать Я хочу знать как сделать разные анимации есть варианты в Андроиде сделать анимации есть аниматор так есть насколько я помню properties Даже аниматор Такая сущность есть библиотеки по моему лоте Что такое которая делает анимацию в принципе можно пойти вообще какими-то прям такими страшными методами прям создавать поток внутри него там цикл как-то изменять вьюшкина это прям страшно вообще какой Поток Поток чтобы не грузить текущий поток

    00:52:24 - 00:54:07

  • как-то это все делать там то есть вообще прям страшная вещь Ну так ни разу не использовал только слышал вот первым назвал такая одна штук А вот как она работает как они связаны как мы именно по перерисовываем так Ну окей у нас но опять же были аниматор у него можем подписываться на возможные как она называется точной лай по моему velius changender что-то такое там приходит значение мы можем либо а куда-то сохранять эти значения и потом в методе ondraw как-то Ну есть новые значения мы как-то перерисовываемся

    00:53:24 - 00:55:01

  • вот такой вариант вариант есть еще такой что мы можем в хороший вариант Нет нормальный вариант откуда туда попадают откуда он как бы знает что вот надо анимировать Кто дергает или Кто управляет то есть условно кто передает значение в этот или нет да да ну кто придает значение кто его дёргает в нужное время потому что ну это на самом деле все вот все что обсуждаем последние 10 все связано вокруг одного кручусь это как раз таки тот самый может быть хореограф нет Да он здесь тоже причем да интересно

    00:54:41 - 00:56:07

  • Ну возможно возможно это еще и как бы как бы хендлер используется для всего этого оверни хендер лупер чтобы сделать Ну чтобы получается значение эти появились в аниматоре Ну во-первых он так как сбоку припекло в целом работает и их тоже Ну окей давай давай не будем томить на самом деле так или иначе тоже аниматоры там через свои там базовые некие классы подписываются на на условно говоря потому что в этом он фрейме как раз обрабатывают сначала все импульты все анимации потом идет траверс всего дерева такие так есть отрицовке

    00:55:53 - 00:57:40

  • фрейма любого фрейма фрейм наступает время фрейма вот такие поэтому анимация там это как бы отдельный такой важный пункт который как бы отдельный Окей давай поговорим теперь про вьюхи Представь есть такая Круговая диаграмма типа знаешь мы хотим нарисовать такую круговую диаграмму сколько Какие твои любимые пиццы были за последний год как бы ты нарисовал что для этого нужно сделать так для начала как мне кажется таких Готовых реализаций нет которые можно расширить то есть скорее всего здесь придется писать именно то есть кастомную

    00:56:55 - 00:58:19

  • прям с нуля на канвасе рисовать прям условно эта ручками вопрос в том Ну мне кажется можно опустить тот момент там есть у нас входные данные то есть там условно для сеттинга передаются но я имею ввиду опустить плане что как бы не обсуждать тот момент как она будет разбиваться на части наверное там нормализироваться и прочее Да давай не будем детали У нас есть наш любимый на нем в принципе есть куча разных методов с помощью которых мы можем рисовать и насколько я помню есть методы это как раз таки скорее будет про эту

    00:57:42 - 00:58:53

  • историю раз мы хотим рисовать Круг частями самом деле можно рисовать с помощью пасов то есть там же есть друг пас задавать его ручками Мне кажется данном случае проще будет рисовать как раз таки измерить и разместиться если мне надо Окей Расскажи Ну да Самый наверное такие значимые коллбэки он Major Major layout по сути дела измеряемся Мы скорее всего на основании того вообще как как не то что как хотим У нас есть какие-то настройки вьюшки допустим нас они приходят с нашего а я понял что вопрос

    00:58:26 - 00:59:49

  • скорее всего насколько я помню опять же в методе приходит нам две спики спеки ширины и спеки высоты межреспект это условно просто большой инт как бы просто обычный и у него по-моему первые Окей самый старшие 4 возможно бита хранят маску То есть это проспект состоит из двух составляющих из маски из размеров маска это вот Наши Любимые есть когда мы выставляем в раб контент когда матч когда физические физические какие-то конкретные цифры там 44 и прочее У нас есть получается спеки это лист и а это вот один к одному такая связь ты

    00:59:19 - 01:00:53

  • говоришь там wrap Content это всегда это mox или нет А как это работает так сейчас будем вспоминать все это Ну примерно хотя бы откуда то есть вроде разные слова тут называется wrap-контента тут точно скажу что вот есть так спики опять же это мост просто так враг контент нет в Контент это у нас Смотри такой наводящий вопрос Контент это что за параметры они для кого они получаются для Ну они как они получаются для родителей и Ну да окей Да не для родителей потому что условно мы сообщаем родителю сколько мы

    01:00:14 - 01:01:46

  • хотим занять место он говорит Окей я понял и выделяется только это место То есть как бы мы говорим родителю сколько мы хотим А родители потом говорит нам сколько мы можем То есть если мы выставим матч паранд мы сможем быть во всю ширину экрана может быть во всю ширину получается только родители вот то есть не всегда эта связь прям один к одному со спеками вот опять же если возвращается к спекам есть классные Статик методы в межспектах то есть Можем достать все хорошо что дальше делаем мы измеряем

    01:01:24 - 01:02:42

  • Да окей Допустим мы у нас есть размеры вьюшки мы измерили и в конце метода он межор нам надо вызвать обязательно метод сайт менеджер Dimensions если мы его не вызываем мы падаем с исключением то что мы забыли его вызвать то есть условно непонятно как рисовать сколько рисовать Каких размеров После этого мы должны мы должны происходить вызов методом где относительно родителям и будем располагаться Вот ты делаешь просто вьюху не бью группу А вьюху у тебя вызовиться методом нет получается что мы там да

    01:02:03 - 01:03:24

  • нет как раз таки наоборот у югрупп которые он кстати именно как раз таки в югрупп абстрактный который необходимо реализовать обязательно вот он отвечает за то где какой ребенок будет размещаться то есть условно то же самое просто бежит по всем своим чадам и размещает их так как вертикальный горизонтально условно Да переборщил Обычно он не вызовет Вот и в конце вызывается метод который как раз таки на основании наших размеров у нас будет поле канвас на котором как раз таки можем рисоваться Давай буквально парочку коротеньких

    01:02:52 - 01:04:19

  • вопросов мы много говорили про юань чуть-чуть поговорим про многопоточность так вот резко скотню допустим ты делаешь Ну я так сразу завожу какой-то сценарий допустим ты делаешь какой-то объект паттерн репозиторий У тебя есть какой-то класс какой-то синглтон в каком-то локальном скопе не знаю И вот он должен уметь отдавать изменять какие-то данные вот есть допустим предстательная связь данные и ты захотел их кэшировать такая реализация Как можно какие есть инструменты работы с тем что у нас есть какой-то кэш какие-то данные

    01:03:44 - 01:05:12

  • и к ним могут приходить Тут приходит сразу два механизма Первое это синхронизация [музыка] синхронизации второй метод это метод это сейчас еще подумаю смотря на руки условно если у нас хранятся какие-то сложные данные список что Он позволяет а в алтайл вообще как говорится это целый мир мне кажется как и в целом javare Model есть такие понятия valtale Right valutaile read то есть условно у нас есть valtel переменная в которой мы что-то хотим записать и вот у нас идет на нашем потоке мы условно что-то пишем

    01:04:27 - 01:06:07

  • эту переменную но не в эту перемен вернее что-то пишем какие-то данные Вот и у нас идет обращение после этого переменные обращения переменная обозначает что у нас происходит условно тот снапшот который мы сохранили изменения Вы должны условно Не отправить а применить к реальным данным которые лежат в памяти То есть у нас как у нас же есть процессор ядра у них есть свои каши то есть условно такая оптимизация каждый раз не ходить до оперативной памяти у нас просто хранятся хранится какое-то значение

    01:05:29 - 01:06:48

  • каша ядра вот и получается Если у нас перемены помечены как мы идем читать мы будем читать не из нашего кэша который есть мы идем читать именно из те значения которые находятся в оперативной памяти То есть те которые источники единственный источник Правды потому что у нас условно в оперативки лежит там число один на одном в одном один поток выполняется на одном ядре у него же там число 42 а у другого будет получается число 43 и вот закончим и допустим у тебя репозиторий работает что делать ты хочешь синхронизации

    01:06:06 - 01:07:31

  • использовать окли это работает ли это проблемы будут насколько я помню что рутины Это не совсем рабочие история совсем Рабочая история вопрос в том как бы нам тогда в таком случае обезопаситься туда же Проблемы в том что опять же насколько я помню допустим я вот у меня там бахнул просто хороший Но единственное наверное такое основное что я помню так это то что условно если мы используем какие-то Локи по джававски мы должны захватывать Ну вернее монитор захватывать и освобождать на одном и том же потоке

    01:07:00 - 01:08:19

  • С рутинами К сожалению такой не получится у нас может поток просто поменяться где-то как-то и у нас будут к сожалению с этим проблемы [музыка] там есть на самом деле такие же условно условно Локи называются Да я слышал ну скажем К сожалению Все равно большая часть проекта проектов Мне кажется даже написано еще на RX Вот и Так постепенно сюда проникают вот да и поэтому я слышал Да я даже Насколько помню я читал и как-то пытался этим на это посмотреть на все вот ну прям около понимания работы а так у нас тайминг этой секции подходит

    01:07:54 - 01:09:25

  • концу Поэтому я предлагаю завершать все равно хочется всегда поговорить больше никогда этого не получается вот Давайте тогда я подведу к это промежуточный итог и расскажу что-то Ну да как я говорил здесь в основном Как вы видели мы общаемся про Android Framework потому что у нас нету четырех разных интервью Где мы можем со всех сторон пообщаться работать нам так или иначе очень много надо с Андроидом его фреймворком не только семью и поэтому мы делаем упор на это мы поговорили про пересоздание Activity привод

    01:08:54 - 01:10:22

  • биндер транзакции про то как это все передается то есть про это поговорили проговорили про ресайк про обычную анимации попытались про шпифонс в этот хореографы как оно работает вот и немножко про concorents и поговорили иногда и побольше если бывает время уделяем поменьше там получается что я скажу фидбэк по Артему значит обсуждали в целом Артем знает что у них есть лимит и они как бы они существуют есть бандал и уже как бы ну то есть как пользоваться этим точно знает я думаю если докопался мы представляли Такой сценарий что если

    01:09:44 - 01:11:24

  • в целом там такой целый мир огромный как все работает в какой момент ситуация запаковывается отправляется и так далее провисайкью мы поговорили там в целом все ок вот про анимации чуть-чуть как бы так ну это да я например спрашиваю вопрос и если человек отвечает немножко неправильно Я так наталкиваю и человек отвечает Правильно я считаю что это правильно Это норм чуть-чуть немножко с первого вопроса не так понять да про то что флейт тяжелый пришлось тоже по подсказывать [музыка] FPS Ну что мы дошли до хореографа хорошо

    01:10:35 - 01:12:17

  • просто вся система бьюона строится от хореографа от того как он запускает Техническая неполадка так Окей меня слышно видно да да вот конспект откроется и про многопоточку говорили Ну да В целом как бы все базовые вещи сказал про организацию памяти знает иногда бывает мы поглубже упарываемся докопаться вот поэтому предлагаю двигаться дальше то есть меня такие бы в целом ответы устраивали сейчас у нас будет секция называется творческое задание он оно же System Design небольшой Я бы хотел сейчас Кирилл попросить вывести

    01:11:30 - 01:13:20

  • экран вот Вот смотри есть у нас три давай даже может быть вот так вот такая фича представь есть вот слева экран это экран сделанного заказа Мы сделали заказ у нас вот такой экран как раз номер семь и так как мы сделали седьмой заказ по номеру или там неважно какой то какого-то какое-то условие мы даем скидку типа отныне у тебя будет скидка 7 процентов и появляется вот такой экран и слева происходит анимация как бы это должно выглядеть вот представьте себе такую задачу дают продукты вместе с дизайнерами вот Артем

    01:13:17 - 01:15:00

  • надо сделать как будешь поступаться чтобы сделать как бы реализовывать сейчас еще раз посмотрю анимацию достаточно интересная анимация Окей окей так первый момент наверное которую бы хотелось понять заказ номер семь номер шесть хотелось бы именно понять конфигурацию номера заказа то есть условно то есть мы как-то будем на на клиенте то есть данном случае на мобилах понимать что вот нам нужно показать экран или же не знаю моментом создания заказа нам приходит какой-то ответы мы такие Окей нам нужно показать красивую анимацию

    01:14:12 - 01:15:37

  • допустим данные Я так понимаю что вот опять слева у нас сверху слайдер это наверное прям история заказов Скорее всего И вот у нас человек зашел сформировал заказ у него открывается экран заказов и у него как раз заказ номер семь нам приходит с бэкенда та самая моделька Окей тогда такой вопрос условно если у нас опять же Это вся история заказов человек когда будет листать свои заказы и зайдет заказ номер семь у него же не должно быть это анимация Но тогда Хороший вопрос Ну смотри допустим вот видишь там есть кнопочка

    01:15:10 - 01:16:30

  • Great нажимаем открываем допустим если он ее не нажал то мы опять будем показывать пока не нажмет А если он нажал то все мы считаем увидел больше не показываем тогда скажем так два пути есть первый путь Ну я пока что вот эти детали хочу обсудить первый путь при нажатии нагреет мы можем дергать запрос говорить что человек пользователь нажал на эту кнопку и следующий раз когда у нас будет открываться экран списка заказов нам будет приходить моделька безусловно вот этого флажка показать анимацию либо второй вариант мы

    01:15:57 - 01:17:10

  • можем хранить лучше хуже хранить можем просто на клиентах то есть в префах базах данных впрочем о том что человек нажал на кнопку Great и уже смотреть локально нужно показывать или не нужно то есть OK OK тогда как это все происходит у нас загрузился список открылся первый нам пришел флажочек о том что нужно показать мы должны каким-то образом показать после того как мы показали произошло нажатие на кнопку Great записали в префы следующий раз уже Мы не показываем Окей Теперь наверное годится подумаем подумаем о том Каким

    01:16:34 - 01:18:01

  • образом вообще можно сделать все эту анимацию два момента наверное Первое это то что у нас так очень красиво подъезжает все это сейчас подумаем скорее всего скорее всего есть возможность это все сделать [музыка] куда проще Вот либо вариант сейчас подумаем как можно это лучше сделать даже секундочку на самом деле мне так кажется это может сделать с помощью двух фрагментов с помощью двух фрагментов Как именно фрагментов Да есть можно добавлять анимацию при получается транзакция Вот и мы можем сделать именно

    01:17:28 - 01:19:06

  • добиться эффекта вот этого слайдинга то есть один фрагмент меняет второй фрагмент это именно про вот эту смену двух фрагментов а как бы ты добился того что видишь там немножко элементы такие разъезжаются они резиновые как бы Вот они видишь как бы такие кнопочки тексты что в первом стоите что во втором если делаешь через фрагмент транзишен как это сделать хороший как можно добиться именно разъезжание вот этих вот элементов какие варианты есть анимации можем пойти Да вот можно как из вариантов условно

    01:18:39 - 01:20:00

  • сделать с помощью обычного даже вылью аниматора наверно попробовать сделать То есть у нас опять же какой момент у нас появился диалог появился диалог сейчас сейчас мне кажется что есть Кит клубе то что Enter Animation или интернзишен возможно Вот и То есть можно завязаться на какие-то колбеки получается показа начало показы экрана вернее скрытие экрана попробовать поиграться с анимацией по поводу этого сердечка Мне кажется есть возможность задать анимацию с помощью даже есть что это за сердечко на втором экране

    01:19:43 - 01:21:21

  • не спросил да наверное опять же несколько вариантов как мне кажется самый плохой если это видео но это самый прям плохой но это явно не видел это видео вот так так Окей если это видео на самом деле кого-то я даже и ни разу ты не работал с видео насколько я помню есть Эхо Player такая штука интересная вот возможно с помощью нее мы можем как раз таки показать это видео так оно зациклена кстати или нет Да считаю что видео показать это мне кажется что есть Ну хорошо Допустим мы будем использовать fpr для

    01:20:40 - 01:22:07

  • показа видео Кстати да откуда нам его брать будем брать его я так понимаю просто хардко один на клиентах то есть на Андроиде с не будет никакая ссылка приезжать ничего такого Давай рассмотрим вариант что ссылка приходит Скорее всего я просто пока что не отвечу на этот вопрос Нужно смотреть Умеет ли Эхо Player работать с ссылками на видео либо Возможно есть какие-то другие фреймворки либо Возможно есть какой-то внутренний фреймворк который умеет с этим работать а какие здесь еще могут проблемы с видео

    01:21:44 - 01:23:00

  • Ну допустим он умеет вот все-таки видео какие здесь могут быть проблемы проблем скорее всего могут быть с медленным интернетом нам нужно что-нибудь подставить там пока не загрузилась возможно какой-то можно placeholder сделать Ну то есть типичное состояние с тем что логин контент Error что нужно показывать пока грузится видео что-то нужно показать случае ошибки смотри допустим такое требование так не подходит Мы хотим показать сразу видео готовое чтобы красиво было мы не хотим сразу же готовы видео

    01:22:26 - 01:23:42

  • интересно можем на самом деле скорее всего хотим готовы увидеть Окей можем наверное сделать какой-нибудь дефолтное скажем так видео загрузить именно телефон то есть поставлять условно вместе с ним Мне кажется тоже не особо хороший вариант какой-то хранить видео вместе с ПК и прочим Ну то есть Окей Возможно есть такой вариант мы пытаемся загрузить видео с определенным тайм-аутом если у нас то не получается мы показываем видео которое как бы за хардкоженная но нам приходит не с бэкенда а именно есть на самом

    01:23:10 - 01:24:30

  • устройстве а если получилось в тайм-аута то есть мы ждем какой-то тайм-аута предварительно То есть ты хочешь закачать его Да заранее когда оно готово показать это всё правильно можно Нет я да Окей Можно да таким образом Нет я хотел что-то нас было какое-то видео которое Ну скажем так могло какое-то видео есть на телефоне и мы его подставляем вот возможно такой вариант как работа с крышом У нас у нас есть У нас есть фреймворк который умеет как раз таки загружать видео и мы можем пытаться грузить это видео

    01:23:51 - 01:25:26

  • на старте крана Ну старте общем приложение в ходе его работы и прочем то есть чтобы у нас было либо какой-то а дефолтное видео либо б было видео которое уже которое действительно Ну нам приходит бэкенда но оно было немного подгружено Да но на самом деле Здесь было важно Я хотел поговорить что что мы хотим дождаться ты как-то это дождешься что видео скачается после этого запустишь [музыка] Ну как бы обычная такая скажем экран обычное состояние лозунг контент Error то есть либо что-то грузин либо

    01:24:47 - 01:26:04

  • показываем либо как-то показываем ошибку и обрабатываем это состояние вот туда тут просто просто Как скажем так можно технически реализовать следующий запрос что вот мы хотим продукты хотят чтобы у нас не было никакой не было никакой загрузки а именно чтобы видео было сразу же загруженники хотим или красиво Или подождем Тогда просто у нас будет экран загрузки в начале возможно какой-то Loader возможно [музыка] Ну в общем какая-то модификация пользователя там что-то происходит что-то грузится там возможно кнопки

    01:25:26 - 01:26:43

  • Loader возможно какой-то Ну то есть это скажем так наверное на лодку дизайнеров как это будет сделать красивее Вот Но в любом случае до нужно учесть то что у нас может ну вернее будет происходить загрузка и то что нас может этой загрузка еще произойти с ошибкой Вот и тут тут скажем так продуктов Как нам лучше это обработать потому что окей мы показываем загрузку загрузку мы показываем по кнопке по нажатию вернее нет открылся заказ и пошло грузиться видео как будет отображаться лодырь если он будет Full Screen как тогда поместить

    01:26:07 - 01:27:16

  • пользователя о том что что-то потом произошло то есть если показать ошибку он такой скажет А что грузилась я не понял у меня вроде заказ открылся но не открылся вот это вот Great картинка Если же показать не показать ошибку он такой А что грузилась просто экран Ну ладно хорошо этот вариант возможен то есть мы опять же человек сделал заказ скрывается экран этот заказа который налево картинки можем дальше я так понимаю без вообще показал просто грузить фоново а видео после того как видео у нас загрузилось мы уже можем как раз таки

    01:26:44 - 01:27:59

  • Показать этот красивый экран то есть в случае ну мы никак не отображаем пользователь о том что мы что-то грузим потому что мы по сути дела Ну не так это важно Это не его какой-то действие и случае ошибки Мы тоже ему ничего не покажем то есть такая Окей но про эту тему поговорили про видео Вернемся чуть про анимацию мы начали говорить вот можно были аниматором Можно ли это сделать или аниматора или ты будет очень тяжело очень тяжело каким-то образом новый фрагмент коммитить фрагментом как будто бы кажется что это

    01:27:21 - 01:28:34

  • прям знаешь так консистентно то есть два разных экрана и вот как бы их просто хочется подменить один на другой Ну либо же либо же Ну да хотя на самом деле можно в принципе оставить один и просто с помощью выли аниматоров переносить его и там можно с помощью же еще интерполятора поиграться в конце чтобы именно так скакала картинка по завершению интерполяторы грубо говоря это Такая сущность которая Ну вот Окей у нас там Мы хотим значение брать от одного до единицы Вот и мы хотим понимать то есть задать функцию с

    01:28:06 - 01:29:26

  • помощью которой эти значения нам будет отдаваться они могут отдаваться линейно могут по синусоиде как-то отдаваться могут вообще по-разному то есть середине ускоряться в конце замедляться Вот и с помощью интерполятором можно настроить чтобы у нас в конце Вот был именно такой скажем так обратное что ли движение То есть у нас же картинка уходит вроде Вверх а потом она чуть еще раз сползает вниз Я имею в виду про сами эти текстовые текстовые поля теперь такой вопрос вот просил тебе все это ответили Ты придумал

    01:28:54 - 01:30:00

  • как ты будешь делать и тебя спрашивают вопрос Ну что сколько займет по времени скажи как ты будешь отвечать тут наверное очень такой комплексный вопрос из разряда если у нас Ну смотря что наверное у нас готова то есть Что есть в дизайн системе То есть если все эти кнопки в дизайн системе [музыка] Да это наверное основное а если вот все эти стили которые здесь используются если вьюхи которые там дрип-кофе тоже ведь не особо простая вилка допустим экран слева есть экран по центру нету дизайн система есть

    01:29:27 - 01:31:09

  • Окей тогда наверное при условии опять же что будет готов чтобы кэнд сделан нам остается сделать что нам остается сделать именно этот переход нам остается сделать сохранение в префах информация о том что мы уже показывали и нам нужно каким-то образом разобраться с видео на самом деле так как я не работал с видео Как таковым я бы наверное заложился вначале бы денечек либо два преследовать возможность ускорение просто денечек исследовать то как работает сейчас видео как тут лучше всего будет это сделать

    01:30:16 - 01:31:39

  • вот а все остальное почему-то Мне кажется тоже самореализация была бы не более с двух дней Мне кажется может это супер конечно амбициозно может наоборот Ну кажется что здесь не так сложно то здесь по сути дела простой экран но это даже по сути дела один и тот же экран просто нужно расширить несколькими фишками и написать анимацию вот обработать состояние загрузки и в принципе да и все вроде смотри допустим Ну ты говоришь два дня Ну допустим реально ты почесал голову там исследовал ты понял что не два дня

    01:31:00 - 01:32:22

  • больше там реально получается Например тебе говорят окей Мы хотим быстрее чтобы ты предложил отрезать из этого функционала что тебе бы помогло сделать так Ну сама мне кажется тут сложно все же будет это видео оно именно займет такую большую часть наверное еще в целом во-первых исследований во-вторых в принципе ты по реализации Мне кажется тоже не просто второе сложнее всего что это именно сделать вот эту анимацию вот такую скажем так плавную еще из таким пружинищем таким эффектом вот а все остальное как мне кажется

    01:31:44 - 01:33:14

  • почему-то звучит очень даже просто то есть опять же дорисовать дополнительные вьюшки сделать просто обычную линейную анимацию и добавится хранения информации о том что видео страницы было показано в таком порядке видео самое кажется будет трудоемкое потом анимация все остальное звучит не так сложно а все На этом этот блок тоже мы завершаем давайте я его прокомментирую значит творческая секция слэш ем дизайн Мы спрашиваем потому что это реальный какой-то кейс Который столкнется наш сотрудник буквально

    01:32:32 - 01:34:07

  • завтра послезавтра и мы хотим увидеть и условно говоря самый плохой отец такой ситуации смотреть это если сразу человек говорит Веру вьюху рисую там анимацию туда-сюда То есть когда сразу решает если человек сразу начинает решать то это как бы самый плохой самый плохой вариант ответа Ну может еще хуже если он молчит вообще но в целом это как бы вот шкалу возьмем поэтому это вот такая часть то что хочет услышать Я хочу услышать и скорее всего любое интерьер сесть на дизайн хочется слышать это то

    01:33:25 - 01:34:44

  • как человек будет размышлять подходить задачи как он будет уточнять требования потому что задача специально как бы вот есть и все как бы вот тебе условия там два предложения сказал думать сам дальше здесь важно чтобы человек посмотрел внимательно подумал какие есть кейсы есть там условия все такое И после этого когда такой все собрал еще раз уточнил уже реализацию И кстати реализация она может быть действительно с какими-то с пробелами чего-то не знает Вот как Артем отвечал в целом он довольно можно реализовывать

    01:34:07 - 01:35:27

  • можно писать анимашки и так далее дальше Мы спрашиваем про Ну как как про саму реализацию здесь как бы Я не уверен что это можно было так вот классно сделать на транзишных фрагментах сейчас ну я не уверен я хоть Ну может быть не самый в мире крутой чувак по транзишенным Но только я знаю сложновато будет сделать вот ну Motion я вот вылью аниматор эти все варианты они мне кажется хорошо решат задачу поэтому не очень сложно вот в целом Сколько времени но это такой вопрос здесь неважно цифра Хотя 2 дня это такая

    01:35:32 - 01:37:14

  • немножко странная но важно что Артем еще повторил спросил что готова что у нас нет он перечислил еще раз все что надо сделать Это же круто Вот И там изложил даже что-то по исследовать скорее всего Как правило что-то надо потому что мы делаем вот поэтому на этом блок заканчиваю и теперь можем дать общее что скажешь Кирилл переходим к общему фидбэк Да давай а Ну на самом деле у нас еще обычная секция вопросов начнем да да Ну там было Если честно один чувак начинал А я закончил после [смех] а сколько занимала кстати

    01:36:27 - 01:38:18

  • Ну там пару недельку не полностью но много Если хочешь Поэтому она такая как раз в процессе миграции Да вы пока Кстати в комментариях можете себе подписать как вам что скажете кидайте Да обсудим и вопросики конечно Окей фидбэк А я такой дам что Артем в целом Ну то есть по всем трем секциям мне понравился сначала Артём везде были какие-то небольшие небольшие минусы которые я отметил прокомментировал Вот и в целом Я не очень люблю эти вот прям бейджики там Middle Middle плюс синер но в целом как бы просто всех компаниях Они разные

    01:37:45 - 01:39:26

  • Вот но в целом Я думаю что Артём точно отличный крепкий металл вот дальше можно уже разбираться Я бы Оценил и в каком-то написал Вот в целом я думаю ну я уже дал каждый секции я бы точно был рад видеть официально Я пригласил бы дальше Очень приятно Приятно слышать это Артём Поделись своими впечатлениями на самом деле очень прям такой душевный собеседование действительно было круто что ну вопросы прям нестандартные как мне показалось какие-то Ну про тот же самый ресайтлер то есть два варианта создадим много Few type of или одну

    01:38:54 - 01:40:34

  • вьюшка будем скрывать интересно действительно Вот и в целом очень так как-то легко прошло мы сидим полтора часа оказывается я думаю мы полчаса только сидим скажем так только познакомились уже Я даже Узнал много всего интересного вот поэтому мне очень понравился круто вопрос вы потратили довольно много времени такой вот анимацию какая цель преследовала Ради чего вопрос про фичу которая показывал да да как бы непростая анимация много времени потратили вот ради чего типа вот как у какая цель в итоге типа его реализации

    01:39:53 - 01:41:22

  • или потому что мы можем а цель такая что есть как бы Vision и Фокус по проекту приложения то что мы держим Вектор на то что делаем Что называется красиво то есть мы стараемся последнее время не экономить на именно визуальной составляющей эмоциональной составляющей вот Поэтому собственно и собеседование сейчас упор есть фокус на какую-то ювенную часть что человек разбирается и это важно в том смысле что если он скорее всего если он разбирается скорее всего ему это интересно вот и то есть подумать со стороны что Да блин показать

    01:40:51 - 01:42:21

  • скидку Да просто покажи Вот текст и все что-то там визе был везде был и все показал но нет сейчас фокус у проекта вы потом как-то меряете вообще типа вот эффект этого пользователями запрашиваете и для понимания или так в одну сторону просто мы такие мы так решили что будет классно сделали но есть часть решения действительно идут на вижене вот Ну вот такая часть это как бы сложно померить анимацию Ну то есть мы не делаем АБС там а хорошая анимация какая-то супер простая такого мы пока такого не делали

    01:41:38 - 01:42:59

  • другие проблемы устройствах слабых каких-нибудь бюджетники там старенький Android 9 какой-нибудь там недорогой смартфон Ну в целом нет у нас там есть типа хлещи какие-то моменты в приложении Ну а если ты хочешь сказать что она более слабеньких устройствах могут там и видео простреливать какие-то Джанг фреймы они могут идти кто может прострелить если вы когда их делаете то есть сначала делайте простое пешку рабочую и потом уже следующих операции добавляете ли это сразу было в первом релизе все завезено

    01:42:19 - 01:43:35

  • все анимашки Ну вот да Ну да я понял вопрос Мы хотим делать постепенно насколько это возможно но вот данном случае как бы она вот вот эта печально вот как есть так и выходит как то есть разово вот какие-то другие более Длинные истории дамы конечно по возможности стараемся бить Но в данном случае это разовая цельная атомарная в принципе которых мы не ответили еще я не вижу на этом можем завершать Большое спасибо Артему если вас вопросы оставляйте в комментариях запись всегда остается на канале можете посмотреть Если будет

    01:43:02 - 01:44:20

  • что-то интересное такое прям ребят позову чтобы они поотвечали в комментариях еще поэтому никто не будет забыт и все комментарии смотрю читаю Вот на этом У меня все Всем спасибо что были здесь Спасибо ребятам пока пока Всем пока Всем спасибо пока пока

    01:43:54 - 01:44:28

Менторы

Специалисты своей области, которые смогут помочь вам

  • Нигма Нурия
    Нигма Нурия

    Middle .Net Developer

  • Сущенко Татьяна
    Сущенко Татьяна

    Senior Product Manager

  • Гудков Денис
    Гудков Денис

    Middle Python Developer

  • Курочкин Константин
    Курочкин Константин

    Ведущий программист

  • Гудман Макс
    Гудман Макс

    Backend Software Engineer (PHP)

  • Гребенкин Антон
    Гребенкин Антон

    Senior .NET/C# developer

  • Ахназаров Фёдор
    Ахназаров Фёдор

    Middle DevOps Engineer | Tbilisi, Georgia

  • Шорохов Дмитрий
    Шорохов Дмитрий

    Middle C# .NET

  • Жуков Александр
    Жуков Александр

    Senior PHP-разработчик

  • Мазикин Павел
    Мазикин Павел

    Middle python developer

© 2024 HireGuru. Сделано в Санкт-Петербурге с hireguru.ru