Подготовка к собеседованию на Android Developer
Менторы
Специалисты своей области, которые смогут помочь вам
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
Каналы
Полезные Telegram каналы и чаты
Транскрипция видео:
всем привет с вами алексей гладков это значит вы смотрите канал мобайл developer сегодня у нас будет необычное видео как я вам и вы уже поняли из названия у нас будет собеседование это будет первое видео из подобного цикла таких видео будет много мне прислали реально много резюме и очень долгое время никому не отвечал потому что у меня просто не было времени теперь время начала появляться и постепенно шаг за шагом я буду добавлять всех кто мне скинул и проводить с ними собеседования я думаю что я проведу их достаточно
00:00:00 - 00:00:49
большое количество ну типа около пяти или семьи потом скажете скорее всего она потом ds потому что вопрос и одни и те же я же один и тот же человек да и те кто с разные собеседования паровое да люди вот разные они разные вопросы задают вот я задаю определенные вопросы мне по ним поняв на самое главное цельсию сегодня понять сможет человек работать в своей команде или нет по вопросам которые я задаю мне понятно сможет ли человек работать в команде или нет поэтому вот это все а я бы вот это спросил или там моя как фу фу господи вы
00:00:25 - 00:01:22
что такие вопросы задаете там примитивные или не примитивные несу это слишком сложно слишком просты мне понятно еще раз говорю это самая главная цель поэтому я именно такие вопросы задают на собеседовании ok сегодня у нас александр козы risky это человек который сейчас уже учится в geek brains он уже где-то 9 месяцев отучился и вот насчет но предвосхищая некоторым я знаю да что сейчас вы увидите человек и в явно учился очень хорошо то есть нельзя не в коем случае делать выводы общей системе образования geekbrains по одному
00:00:53 - 00:01:54
только александр вы увидите потом наки вопрос он там смог ответить на какие не смог ответить прошу вырастить огромный респект александру за то что он согласился он был самым первым и поэтому он ну как бы сам самым первым сюда идти тяжело поэтому пожалуйста напишите в комментариях огромный респект александр ну а мы не будем долго складывать поэтому поехали [музыка] расскажи немного о себе как вообще пришел в такой жизни что стал android разработчикам как дошел до такой мысли из чего начал вообще в общем история
00:01:24 - 00:02:51
такая что я еще когда учился в школе была мысль после школы поступить наш местный g помощи тогда на факультет пацан технологии в банковской системы но такая жизнь на ситуация сложилась что не было денег и всякого такого видим получилось поступить как в школы милиции потом вот 12 лет милиции полиции за это время на самом деле был опыт и и html и css и этом даже в интернете или даже какая какие-то деньги на рекламе то есть ну но это все под таком уровне любительском пытался потом python в общем пытался
00:02:06 - 00:03:35
android несколько раз но он понял что без каких-то курсов по тяжелому ты каешься куда ты не знаешь куда дальше идти не все потом получилось так что у меня служба была документам густав как за полтора не надо было до песен 2012 выслужился до пенсии и был какой-то путь надо было подойти дальше пошли полиция очень-то итоге все я скопил какую-то сумму денег и решил что вот я увольняюсь вот я феврале уволился с февраля пошел на курсы не все вот теперь занимаешься плотным а вот там напичканы так далее
00:02:52 - 00:04:24
это были кита фриланса вы и заказы или просто тебя бросили а в полиции не пробовал там применять свои навыки все но как же автоматизации есть есть но мяч в этом преступников ловил мне было не до этого я понял вот но android получается почему во первых выбрала фронт да они бег вот почему то в итоге что нравится делать на фронте и почему выбрал в итоге давай так почему фронт потом почему не сайты тем более есть навыки до кита и почему не айос в итоге вот в общем ситуация с сайтами такая что мне просто
00:03:38 - 00:05:04
не нравится вот это не знаю почему мне нравится быть на самом деле то есть я андрей дворе этом пишущая какой бы сервер дарю так тоже опять же бег для своего собственного приложения для android мне нравится джар-джар мне мест на самом деле товарищ ушел из полиции года три-четыре назад и сейчас спички программисты я с ним со звание самого уже после того как поступил на android и он не говорил что он пытался он учил полгода java пытался устроиться на какие-то вакансии бен то есть не получил ни одного предложила предложение
00:04:21 - 00:05:29
там за несколько месяцев потом он пришел на печке и буквально там месяц 2 3 ст он устроился его обработать полне себе но в общем нравится java нравится почему не а ios на самом деле то что я не пользуюсь союз устройствами помимо мака то есть нет хотя на самом деле у меня вот сейчас постройки а там отправил несколько штук 15 гр застал у меня появилась мысль что почему то мне кажется на ios как-то меньше конкуренции ну как не кажется но там было разработчиков миллионы порог входа туда подороже как бы да то есть устройстве
00:04:58 - 00:06:13
все хотя у меня была возможность и прикупить себе iphone это у меня есть мысль только непонятно куда дальше летит растить и вправду платформе нас типов лотара либо все-таки идти против типа в их правды задач пропорционально меньше потому что далеко не все и из приложения делают окей я понял ну давай продукт про android тогда поговорим начнем наверное с манифеста окского главного файлика в android приложение можешь рассказать какие основные четыре сущности из манифесте и начнем наверное этот пир
00:05:35 - 00:06:47
миссии имею ввиду на 3 прим тега апликэйшен дата есть activity сервисы контент-провайдеры и бродкаст ресиверы ну давай маленько про activity чего может рассказать про жизненный цикл как они вообще существуют в андроиде живут там что происходит жизненный цикл окей это типа он греет активити создается потом она стартуем потом он изюм видимо появляется потом она ставит на паузу канаты с ну типа когда-то и он либо шторки свернуть сворачиваешь типа там выбирают убираешь уже совсем есть назад нажимает что она идет вон столб
00:06:10 - 00:07:41
потом есть ли ты обратного появляешься на идет вон рестарты ну опять стартует томсон старта он изюма ну ну и в конце концов она там идет фонды стран оон дестрой вот то есть вот 9 уничтожается только когда ты закрываешь или кит еще и случае ну когда вы наверно памяти не подаю уничтожать но опять же быстро и такой метод который слушал может быть про изменение конфигурации измененного курации языка или ориентации android она тогда optics вот ты говоришь убиваются из памяти до любой activity можно убить из памяти или
00:06:56 - 00:08:27
там какие-то из градации и честный top ten скажем ну вот да по логически то есть можно ли вы может ли сборщик мусора убить activity которые юзер на экране сейчас видят они только та которая не показывать [музыка] допустим я хочу передать с одно activity на другой какие-то данные да например намасте ради толко список деталь к смысле которые классические такие вот две штуки в android приложениях и не надо передать тот объект который я выбрал в списке до чтобы он наткнулся на читалке соответственно как я не могу
00:07:41 - 00:08:59
сделать стартовать стартовать другой активе через startactivity передать через банк это данные и там через intent и то есть this guitar strap вытащите мной через мой следующий activity посетили любые данные могу в экстра положить ну примитивы и объекты которые можно на которых можно который реализует интерфейс там про свои было ли сериала зиму на чем вот торцевые было терялась забыл отличается более на просил выключается я знаю что по-своему амбар по легче чем вот прям отличается вот корни и наверное
00:08:20 - 00:09:56
ночь полет что-то michelin ну то есть ему проще и так понимаю наверно проще разобрать и проще потом собрать тему ну по крайней мере как я понял он быстрее работает просто ну да окей я понял так ну а если допустим но у нас есть помимо activity ну как бы грубо говоря мне надо вот получить некие результаты выполнения от следующей activity как это можно сделать активировав так ну в activity у нас фрагменты даете то есть вообще слышал про подход сингл activity до пытался пытаюсь реализовать вы как получается ну
00:09:10 - 00:10:36
есть какие-то проблемы плане наверное непонятности как фрагменты потом вот как вставлять постанов то есть переставлять этот бэкстер с фрагментами тоже непонятно то есть я даже пытался ну или то есть вот сам как-то activity реализовать потому что как потом возвращается то есть вот эти фишки что ты кнопки подряд три вида нажимаешь туда сюда туда сюда до сюда и бэкстер стенд забивается и то есть потом это когда нажимаешь назад сюда по очереди возвращать ну да кисло окей как мне допустим также вот передать
00:09:57 - 00:11:12
та же самая ситуация только с фрагментами как мне передать данный фрагмент фрагмент недавно у меня был оправдан такая тема что мне надо было вернуть данные и deal он фрагмента и я обнаружил что есть оказывается такая вещь как сортамент обмен и надо туда положить внутрь надо запустить через точнее отметить этот фрагмент как считает фрагмент и потом через опять же он activities он activity резал получить данные то есть вас будут которые возвращают тот момент погодя отыскала через интента как ты стартуешь
00:10:35 - 00:11:55
фрагменты через intent через реку activity а там дальше что ну вот recore activity это вызвало дальше у него что вот я им и может быть я так не скажу так то есть вот так все на тему когда ты печатаешь ты как-то нам понимаешь может быть даже скажу малинку там дальше с такая штука саппорт фрагмент менеджер все вот эти вот штучки да надо его там но нет интента куда-то изданной складываешь ты мне сейчас ступор поставил просто самое интересное что это самая сложная задача что это буквально вот наверное недавно я это дело там
00:11:24 - 00:12:51
создает фрагмент прям просто создаёшь его как обычный конструктор вызываешь итамар фрагменты из такая сущность которая позволяет в не складывать какие то параметры и доставать их потом внутри фрагмента что это за сущность ну аргументом есть такая штука типа можно положить в органзу вот попытки даже вот и только которыми гейши компонента вроде называется одна вещь где вот эти кончики просто рисуешь как нам и там даже есть отдельный вроде пункт отдельно там брат логин есть отдельный для аргументов которые можешь
00:12:09 - 00:13:29
сразу прописать ok с этим вроде разобрались более-менее давай перейдем к кстати вот насчет фрагментов все у них жизненный цикл как-то ну типа сам по себе существует или как с activity связанных он привязан к activity там есть мир как он detach которые привязывают фрагмент к activity и отвязывает соответственно и плюс еще есть он activity cry этот вот я смотрю картинкой радиус что он есть какой-то метод onactivitycreated пофармить можно он вьюг рейд в принципе использовать простая ну естественно как-то
00:12:49 - 00:14:17
подготовиться к сегодняшнему мероприятие и посмотрел на какой-то там обтекай не видел ok давайте перейдем немножко к сервисам да то есть насчет сервисов вот сам по себе сервисом клички для каких нужд нужен то есть зачем этот класс нужен он для того чтобы запускать сформулировать получать какие-то данные и в первую очередь на для того чтобы он работал отдельно от самого водяные как приложение отдельно от activities он работал на нотка сервис в основном служит для таких длительных задач фоне которые вот там типа проигрывания музыки
00:13:32 - 00:15:06
и так далее здесь работа сервисом него невозможно не затронуть вопрос многозадачности но многопоточности многозадачности и так далее давай наверное разберем такую штуку перед тем как дальше к сервису пойдем что такое white red и бар фильтр эту мощь рассказать нам не эритроциты это он он это главный потом в котором работали весь пользовательский интерфейс и он же потом этом потом в котором необходимо запускать все долгосрочные рации такие как series работа с базой данных и всякие такие вот а сервис стартует ей
00:14:23 - 00:15:57
crazy или на фоновом три дня на фоновом треде потому что есть сервис и intentservice intense сам создает поток не надо создавать а если травма запускать просто все места необходимо самому создавать поток иди уже в нем работать так все таки сервис она получается на эйд ради стартует тем стартует но стартуешь ты его из юар . но работает он по не то есть данным систем так он все-таки работают но иной треки тебя надо перейти на фанаты собрали скала надо перейти на фоновый поток и в нем уже выполняет работу то
00:15:10 - 00:16:22
есть внутри запустить какую-то задачу которая выполниться фоновом потоке получался до intentservice он сразу на фоновом потоке строки как допустим но вот какая-то задача выполнилась да например и скачивал файлик и как мне теперь усну уведомить юзера показать ему кайта визуала что мол файлик скачался там вот если он в приложение находится показать толстикова не на виду и сервисы как мне ну так я закончил свою тачку и мне надо юзеру давал поток из которого нам надо перейти по 5 я и поток и показать но это да я
00:15:47 - 00:17:07
имею в виду из сервиса как не уведомить activity что задача завершилась и надо юзеру показать тот самый достиг сделать какой-нибудь интерфейсе подключить ну давай давай вспомним что у нас еще есть две сущности внутри манифеста вот и мы в принципе можем использовать одну из них для этого бродкаст ресивер да мы можем зарегистрировать бродкаст ресивер на так сказать в activity и на него отправлять сигнал соответственно окей очень мало с текстами работал я пытался как-то делать сервис меня была идея как
00:16:27 - 00:17:58
такие приложения как вот саму то есть крупные какие-то почтовые сервисы присылают ими до мнения то есть тестировал такую вещь как запустим создать сервис и чтобы работать она приложение например у тебя есть сервер да это сервера мог стать какие-то уведомления но и про что сейчас android спасение версии данию починить неплохо прививают ли там сервисы которые очень долго ничего не делают и поэтому с этим и по программам а можно ли сделать в новом андроиде так чтоб сервис не прибивало суп он все-таки
00:17:12 - 00:18:18
работал все время да там шторки должно взять уведомление тогда окей ну push-уведомлений маленькой вернее совсем по-другому делать но этого одному потом пони поговорим вот давай маленько многопоточности вернемся вот ты сказал что чтобы отобразить какой-нибудь достиг надо вернуться данный и от пред а почему надо вернуться на этот почему я не могу завершить задачу и прям оттуда же чего не поменять например в текст фил я прям такие вопросы нам концептуально не скажу почему надо ok ну допустим надо окей ладно а как мы это
00:17:45 - 00:19:14
можем сделать как мы можем вернуться на борт но на этот как мы можем создать новый поток вообще какие способы у нас есть в андроиде для этого как мы можем потом вернуться на е3 ну из простых я создавал просто тройными обычными трек ран до этого ты берешь хендлер запоминаешь или потом потом берешь трек и когда выполняется задача ты возвращаешься к мухаммеду вьi гуляешь там не быть коронован ей тренд ли будет либо через рамы и трек если ты находишься там вообще есть вот дебаты просто через finder возвращаешься
00:18:30 - 00:19:46
тот потом с которым эта волна а почему хендлер может работать главным потоком откуда у него такая возможность вот этот прям очень глубоко cooper он там где-то крутится вот как мы это прямо точно разложить и честно верно кей про 3d вот там ты грешна то внутри передавать функцию рану буду там рана была надо передать внутри которую из функций уран вот ну почему зачем такие сложности почему необходимо в трек чего-то добавлять и почему нельзя прямо просто функцию культа запустить и все почему в трек ну
00:19:08 - 00:20:30
да почему почему на трек я бы чтобы у него кинули рано был зачем этот рано был нужен типа есть класс проект и в нем есть метод который надо запустить но но это не метод это абстрактный класс фактически которые надо в него внутри него создать передать в именно в тред и запустить соответственно это не просто функция то есть еще три надо обязательно вызвать старт иначе что-то не произойдет вот почему почему нужно старт вызвать почему нельзя ну просто как-то но потому что поток сам себя не стартует ты должен его запустить
00:19:52 - 00:21:03
а кто его должен запустить я должен мне ну подожди ты же не русский мир красиво не с толкача запускаешь правильно то есть его запускает кто-то по твоей команде star покрой его запускает правильно вот по сути весь контроль за трендами находится внутри android и поэтому нужно рано был кидать вот окей ладно а какие еще у нас способа есть поработать вот то есть когда у тебя много to suck асинхронных еще желательно допустим и чтобы они там парочку синхронизировались да и так далее ну вот эта вся конструкция страдами тендерами
00:20:28 - 00:21:42
она довольно такая неповоротливая получается да там клубы кхл и всякие образовываются и прочие неприятности вот так как ну еще можно разделить библиотек каких например sing to sing to звонки заработался syntax коми ну не работал но очень мало то есть у нас нет ни было нам показали что они есть что они вызывают в памяти и все это давай интересно интересно как они вызывают утечки памяти они как то вызывает вызывает гордон был такой слышь что они называют утечки памяти и все таки с ними там раньше была
00:21:09 - 00:22:44
популярна но очень запустите каждый поток надо было делать отдельно пожирал запускает синтез говорят что много коды было потом пришел rx да вот пришел rx и давай про ирак немного удалось или поздно удалось ли рэксом попользоваться до удалось рак сама пользоваться но на уровне таким что связки наверно нет были в случае когда мы создавали какие-то сами создавали источники там это подписывались а то как все там субскрайб обзор он все-таки мендон completo ms access и всё такое но чаще это то есть на уровне ретро pedo добавляешь
00:21:58 - 00:23:30
туда же вакула доктор факты factory то есть и возвращаешь метод уже там либо сингл дали боксер угол 1 подарок раз про это вот чем все они из капера сколько вот этих вот сущностей существует сингл дома все робу и чем они все между собой отличаются их вроде сейчас точностью вроде гчп четыре сингла обзору был флору хаббл и еще какой-то вот 4 назовут комплит его компьютеру и мои вещи их пять давай какие-то популярные такие ко всем углу это символ да то есть давай в чем между ними отличия основная то что
00:22:43 - 00:24:20
у сингл три метода он примет 3 методом возвращает были давайте вычислим какие три метода сингл возвращают это он комплит an error и dice он-де сполз или как-то называется в общем он возвращает объект чтобы можно было подписаться это наверное саму функцию имеешь виду то есть когда ты субскрайб вызываешь у тя там генерится объект dice полосу был который уже можно там два носит про это тоже отдельно поговорим он в зависимости по для если это в линде то есть опять же ситов подлине то это он возвращается
00:23:31 - 00:25:09
дадут функция если например там царит он идет там отдельно вроде отдельным методом так и себе целям и вают окей да он комплит ты говоришь а он возвращает что ну то есть внутрь oh completo что нет возвращается или там просто воет условного функция он возвращает то что ты ждешь ну то есть если ты складываешь туда какие-то что три generic кладешь ну-ка выглядишь так что ты ждешь то есть какой тип данных the zone туда и возвращает стринги и стилиста и соответственно так серо был тогда какие функции имеет там еще есть он это вот
00:24:22 - 00:26:04
это отличие он next и но там нет комплит на салатом до отличие в том что символом возвращать один раз это комплекте если если удачно то возвращать complex него народ то есть все рубль он принимает данные стой стороны то есть и столько привил там данных то есть может быть несколько итераций там этих данных и соответственно столько там вон компьютер я окей ну вон экстерн да допустим на flow был тогда можешь сформулировать чем зачем нужно наверное не окей нисон ну и completo было may be соответственно тоже ты ими не
00:25:13 - 00:26:42
пользовался да окей допустим мне надо но у меня большие это данные то есть новый рецепт а про потоки данных фактически да это такая концепция не просто библиотекой прямо определенная ну прям концепция парадигмой программирования на вот и допустим не пришел один поток данных я хочу его трансформировать в другой поток данных то есть не в другой тип потока данных не сингла во все робот а просто например там сингла лист string в символ list in например как не это сделать там есть операторы не могу воспользоваться
00:25:58 - 00:27:10
оператором map и грамотность в эти да а если я хочу вот прямо с другой из например там полученного какого-нибудь типа все ро было переделать этот сингл например тогда как тогда скажу я понял а если мы допустим надо дернуть три или четыре запросу одновременно такое бывает периодически дергать надо делить к вы нас как я вот с помощью rx а могу это сделать нет окей в разгар оксана не знаешь там есть такой scheduler и у него есть разные всякие ооо там completely шиндо далее о чем аниме для чего их столько нужно почему нельзя там одним
00:26:34 - 00:28:14
обойтись интересно вопрос наверное можно от него обойтись чего для разнообразия города честно не скажу просто обычно это берут шуплер им тут опус все на нем все запускает и возвращает в интернет прощает все окей хорошо так ну ладно и парик суд а дальше мучить не буду давай поговорим то что у нас код ли не появился еще один способ взаимодействия с асинхронной эта картина вот что можешь сказать про крути на в чем их отличие то что они завязаны на стенд функции которые прерываются то что по факту опять же это насколько мне известно что
00:27:24 - 00:29:19
к рутина они были как это сказать что они ошибочно не прерываются но это они когда останавливаются они не занимают поток а они то есть дают возможность поработать какой-то другой функции у них есть свободное время то есть какая-то другая функция может выполнить какие-то свои там действия ok допустим а что тогда такое вот скупы в к рутинных для чего они нужны и честного с к рутинными курсе что здесь кручинского есть там bubbles коп но вот как они пользоваться не очень но акила давай тогда секцию многопоточности в
00:28:23 - 00:29:54
этом остановим погну закончим и перейдем к памяти ты сказал что устройство удаляет activity из памяти и там начали вот а как вообще устроен а ну и про утечки еще сказал вот момент а вот что такое вообще утечка памяти в джаве то есть не как осин тосковать создает вообще что это такое но это это понятно потерянные потерянные ссылки на какие-то объекты а как ну кто занимается вообще вот работа с памятью внутри android есть там какой-то специальный специальная сущность для этого какой-то гаррош коллектор до какой-то garbage
00:29:15 - 00:30:30
collector а вот какой то garbage collector как он может потерять ссылку на ресурс ну на какой-то объект памяти нет потеряет на самом приложении абордаж корректор когда она ж сколько потеряно она то есть когда туда могут появиться и почистить то что все дрона что потеряно лицо а в чем утечку памяти тогда если garbage collector возьмет и почистить все это ну наверное в том что коробочка лектор может очень долго это сделать и какое-то время там типа будет много объектов будут я записные ну нет на самом деле кто бы снижение памяти
00:29:53 - 00:31:08
произойдет у тебя в activity даже есть такая отдельная функция жизненного цикла он low memory который где-то можешь вызвать не принудительно продлить на garbage collector нельзя вызвать но рекомендовать ему вызваться скажем так вот поэтому в любом случае когда куча начнет заниматься то у тебя это вызовет и garbage collector и почистить все что плохо лежит в том числе activity всякие не нужны а вот в чем тогда утечка памяти то больше не знаю я понял смотри как вообще garbage collector принимает решение
00:30:31 - 00:31:53
начистить ему объект или нет это заложено в gillet как он там называется нам как-то запрограммирована чтобы называться определенные времена понимаем же не может через все подряд вот он например не убьет activity который есть на главном экране почему почему он ее не может убить не пойми что ему мешает бог странное с вам предела странно конечно пускайте есть до определенные исключения для текущая где эти но там ещё есть такой механизм работы ссылок то есть если на объект никто не ссылается то его можно
00:31:10 - 00:32:39
соответственно того почитать кроме только сборщик мусора да про него знают вот смотри что будет у нас допустим состав объекта ссылается на объект б объект b ссылается на объект же объект ссылается обратно на объекта и никто больше на них вот всех троих не ссылается соберет такую воду циклическую зависимость сборщик мусора или нет динара нет зачем нет ну на самом деле собираться того что никто на них больше не ссылаются они просто так друг на друге зациклен и это можно сравнить с тем что отпуска травля оторвался кусок
00:31:56 - 00:33:14
чего-то там в космосе болтается просто вот да там конечно все детальки взаимосвязаны друг другу но в целом это мусор вот окей давай тогда немножечко поговорим про про такую штуку как dagger она тоже очень популярная библиотека используются для такого паттерна как инъекция зависимостей вот что можешь рассказать зачем этот паттерн ужин для того чтобы передать весь функционал зависимости то есть какому-то определенному модуль номер но то назад то есть чтобы не саму никлас подтягивание к себе каких-то зависимости
00:32:35 - 00:34:16
а чтобы отдельным отдельная сущность какая-то сама передавала тебе вот эти зависимости а в чем тут плюс зачем-то ну почему нельзя просто все что нужно в классе конструировать да и все ну в том что эти отдельный класс долго заниматься там к тем чем для чего создан из он там можно на провал данном и должен он не должен заботиться о том что и мы должны пить зависимости он должен обрабатывать до тем было responsibility новых проекта же до поговорим чуть попозже ok можешь вкратце описать вообще структуру dagger из чего у него там
00:33:28 - 00:34:48
состоит из основных компонентов и что происходит когда я нажимаю кнопку собрать build есть модуль модуль и есть которых в которых ты описываешь те классы готов которые тебе нужны зависимости и когда нажимаешь создать создается файл и которую без не все эти зависимость про весну опять же есть файлы 10 классов которых есть зависимости по аннотации джей шиндо тебе нужны teens какие-то зависимости есть файл в котором файл в котором у тебя все классы прописанные в общем создается отдельный файл который все зависимости
00:34:08 - 00:35:49
создают и потом они оттуда подтягиваться погоди сделать много раз сказал слова файл куда вас с какого файла все начинается то есть какого вообще класса или интерфейса все стартует сборка то есть модули же много может быть как мы знаем сколько модулей надо собрать там и так далее но все модули пишут прописываются в одном классе потом но по тем нам нужны обманули магазине водном может быть его зам и потом ты просто подключаешь в applications много где-то запускаешь билт как этот один класс обычно называется
00:34:58 - 00:36:29
а вот класс где все все подтягивается и который мы публике шни потом прописываем как он обычно называется класс дагера ну да да да ну вот где мы все модули подтягиваем на основании которого dagger генерит все что нужно менять так и не скажу что как называется об компонент обычно называется он вот ладно допустим то есть вот мы все это создали раб компонент внутри модули в модулях подземную зависимости всякие а вот скажи там есть допустим зависимости типа pro white и типа бенз чем money вот ну между собой
00:35:43 - 00:37:10
отличаются окей ну допустим вот мы все это создали прописали даже написали inject и и вот мы нажали запуск вот там повсюду до аннотации вот который мы помечаем ее компоненты и модули и так далее вот как происходит работа с аннотациями что делает компилятор компилятору компилирует ну он создает класс зависимость этих аннотаций там зависимости [музыка] наверно как то так ну вот а если у нас допустим внутри за из зависимости которые он создавал то этих классов есть еще аннотации как там происходит дальше
00:36:23 - 00:38:01
окей я понял смотря есть еще другие может быть знаком другие способы другие библиотеки для его реализации этого паттерна там кодеин queen может быть рыбу но за такое надо работали о чем ковенанта gear отличается то что то что мир построен на как генерации coin по принципу service locator а сервис то что он проходит в меру поймал томи он проходит по всем модулям и ищет зависимости то есть если таких сразу создает класс зависимости зависимостями такое это делает типа рандами а в чем вот обыскал плюсы и минусы и
00:37:20 - 00:39:08
того и другого подхода минусы дотера то что создается очень много лишнего года издается он же автоматом создается какая нам разница но там же есть какие-то ограничения на количество методов и всяких таких чтобы знаю насколько это связано с этим сучкам вот этот ограничение в биг си до который начнет пятничном 535 методов она типом как только ты пару библиотек добавляешь автоматически это израсходует цветы multifix используешь поэтому в этом это уже вообще не играет роли там заколишь столе на сейчас выше лукойл там
00:38:12 - 00:39:30
и которые вместо байда пикассо там на 2000 лет дав меньше чем лайнера ну да и рэкс на 45000 методов больше и поэтому разницы вообще помни существенно но архи еще от плюс есть того что вот куда генерации а там рефлексии используется до вера не скажем ну ну как сказать подумать то есть прикинь вот и запускаешь приложение и у тебя там не знаю десятки там сотни даже аннотации по ним и по ним все время что-то генерится да вот в это же время компиляции происходит от езды какое что что к чему это может привести должен долго будет
00:38:54 - 00:40:22
собираться проекта в соответственно в runtime и когда ты пытаешься через рефлексии достучаться там до поле какого-то там что может произойти он наверно это может занять какое-то время большое вам нет на самом деле большого времени вряд ли займет а вот если там не будет поле до которого ты хочешь достучаться документ [музыка] ну да собственно в этом плюсы как раз и минус вот этих двух подходов так давайте это такой вот вопрос перейдем немножко код вину то есть вера комета что ты все на код линии практически пишешь ну
00:39:37 - 00:40:54
сейчас старались код есть такая сущность когда-то класс для чего нужен и в чем отличие от обычного классу но он автоматически генерирует все центры гитары и курс cascade необходимые данные самом деле так что за эклз хэш-код зачем кашпо для того чтобы можно было использовать различные как мы такие коллекции как флэшмоб адекватные как-то складывается и они были разные то есть чтобы он был правильно за вычетом у данного там класса и там объекта до чтобы сравнивать молодым сравнивать объекты по значению а если ну в обычном
00:40:16 - 00:42:10
классе как они сравняются по ссылке а почему тогда если сравнить 2 ст ринга это ну два разных объекта они но будут равны хотя сравнение идет по ссылке ну потому что видимо там переопределена нет не совсем не составит окей окей то есть ну да ты класса да такие специальные как раз вот для таких вещей сделаны а вот флешмоб это говорит что есть для корректного определения а что ли что иметь сюда под корректным определением то есть в как вообще раб механизм работы шмо по выглядит то есть что будет если я положу флешмоб у два
00:41:12 - 00:42:46
объекта с одинаковым значением хэш-кода возможно перезапишет либо создаст 2 под второе значение в одном ключе да ну в общем-то да окей так тогда давай еще поговорим про кошку как сил в класс еда для чего это надо то есть что такая за веселая сущность у нас вход ли я вот сейчас я пишу даже пришлось что его использовала но что-то как-то давай так с чем сил в класс в целом отличается от иного ну зачем нужно еще такое дополнительное на ароматы в запас и можно типа отличается от нам что в него можно складывать другие класс
00:42:13 - 00:44:03
[музыка] значит можно склада других в основном принципе тоже можно сейчас в код ли не положить в параметры чего угодно в принципе хоть объект хоть хочу окей я понял так давай тогда дальше про онлайн функция ты зачем в код листа к штука онлайн функции зачем наверное не скажу они нужны хотя бы что они делают то есть им сдачи под зачем я имею ввиду что они делают такого то есть они вместо того чтобы создавать отдельный стек у вас текстиль для данных этой функции они просто берут код и встраивают его то
00:43:16 - 00:44:41
есть в год где ты прописал функцию окей давай теперь немного поговорим про списке вот нас в android есть такая штука списке достаточно популярная почти везде используется и так далее скажи мне можешь рассказать механизм работы recyclerview то есть как он защитным чем он так крут почему его и стали использовать между list view то есть еще как работают списке на android но он он перри используя или спида понимаю что переиспользовать переиспользовать ну саму а этом самом самую чайку то есть он скрывает и снизу показывает сверху
00:44:06 - 00:45:47
вскрывай снизу показывает арестовать создает новые и часто использует тех пуск что типа скрыть допустимо можешь описать подробнее то есть вот я вот я листаю пальцем вверх до как ну то есть что к ячейке скрывается сверху и типа а не снизу появляется ли как-то выглядит зависимости он берет данные из какого-то источника и по позиции вставляете то есть вечеринка это снизу появляется новый дом он вставляет нос новые данные вот наверно вот как-то но вариса типами растет то есть он вот какой то вот на по размеру экрана ли
00:44:56 - 00:46:52
как-то ну там буфер еще есть вот а что будет если я в бинт функцию снова то он bindview holder вставлю какую-нибудь очень сложное вычисление там ну не настолько сложно что прям application note испанцев вызвать до ошибку но достаточно сложное чтобы он не успевал это вот так вот быстро например не зная перемножить числа от одного до 1000 хотя это не очень сложно будет но я примерно дел на каждый дом 2 holder ну так не надо делать до однозначно потому что это будет лагать вот что с точки зрения от операционной системы
00:45:53 - 00:47:09
android вообще такой лак то есть почему видим лаги но не успевает что-то отрисовывать ну в принципе да какой у нас с требование стандарта по отрисовку чаще всего по отрисовке экранов сквозь чистотой нужных отрисовывать 60 кадров в секунду ну да да и вот допустим от успели адресовать только 40 вот из вот этой вот функции что произойдет ну наверно будет какое-то смазывание ну да ты так всегда просто это отвечаешь типа наверное . тяжело сказать что может произойти потому что я не пробовал я понял окей хорошо такая допустим не
00:46:39 - 00:48:22
надо реализовать там не знаем 10 разных ячеек в одном списке как это сделать можно ну вот стандартный пример какая-нить лента вконтакте идете там новости новости с картинками новости с видео новости просто картинки там репост какой-нибудь и куча разных вещей внутри одного списка я скажу я я у тебя видео даже можете про это есть но вот я дошел то ли не опыт такого не было был обычным то есть ой там сайт и заполняем и ставим мужская для чего нужен такой класс как div utils тоже не спали то есть со списками
00:47:35 - 00:49:15
получается только вот такие вот самые самые обыкновенные получается просто окей хорошо он тогда такой вот вопрос еще будет использовал ли ты firebase где-нибудь в своей работе да да а что использовал из этого письма из affairs то он попал к назвать клан пуш или да уж и на сюжет и говорил вначале что жизнь как вот с автомата дали присылает уведомления ну вот так же присылают через я просто я понимаю что на android запущен то есть автор google да у них есть свой то есть play сервис да то есть несколько запущен
00:48:24 - 00:50:02
просто который мы не видим и то есть они могут переслать все что они хотят ну да просто интересно неужели такие крутые активов компании копаться и телеграмм пользуется ты стандартными какими-то вещами то есть но я про это но к используется зачем писать вы велосипед заново ну то есть но чтобы там хранить какие-то данные ниши в telegram любит абсолюта на себя зачем нам пользоваться какими сервер оле булла чтобы хоть и давай там это ничего не передаешь там микро сервис которую тупо пушу расовой ты ему просто конфигурации присылаешь
00:49:14 - 00:50:28
айди и говоришь вот этому отправить текст и все но и в общем того что тебя там также небольшие крупной компании пользуется возможность сделать своим ну да наверно ночью сервисов таких не очень много угла только сил хватило ноги смотри допустим у нас есть вот обычный фрагмент да и нам надо какие-то данные загрузить показать их списке там еще какие-то операции юзер тут все время нажимает куда-то такие запросы дергает и так далее как сделать мне это прям все во фрагменте писать там и запросы и ответы на них и дергать его и так далее
00:49:51 - 00:51:19
или низко кликните по интереснее подхода хочешь узнать про это правильно не намекаю на это активного не пойти и паттерны да ну на этапе пользовались пользовался им нравится о чем отличие в 5 ключевой о том что в мире где модель не знает о бью [музыка] больше никаких все стрелочки остальных те же стороны направлен на картинке но вот во всех этих mvp и мы видим это дали есть такая часть как модель что из себя представляет модель то есть если там какие-то паторны которые эту модель там разделяют скажем так
00:50:38 - 00:52:25
наверное это репозиторий ну допустим сложной широкий а слышал про может быть чисто архитектуру там вот это за разделение на слои так далее слышал но честно я еще не дошел и а потому придерживаться вещей как провайдеры репозитории но блин часто когда ты работаешь с какими приложениями которыми принтом две-три activity фрагментов ну того что он небольшое и тяжело представить то есть что еще куда можно впихнуть то есть какие то там но это же как сказать несколько от объема за и стоит приложение сколько от
00:51:33 - 00:52:50
того что тебе хочется использовать просто опять же тяжело наверно как бы то не работал с большими приложений для мисс приложения которые использовали такие вещи тяжело то есть где то что то посмотрел на пытался использовать новый при нырянии еще не ну не прогнулась что-то больше там репозитории провайдеры это мой дар то есть такие вещи окей то есть ли получается найти все это написано в модели 0 до этих там тэннели да мы были были приложений smtp смог си с рексом с дамиром ну и оси вот код лента же было дарксайд ладно я модель то
00:52:18 - 00:53:53
есть водопад все а вот там где была mvp и мокси вы использовали там есть такая штука как стратегии можешь рассказать про них до страны стратегии которые повторяют все записывать действия и просто и повторяет она сохраняем там сос в свой отдельный свой отдельный новую модель в президенты все цифрами есть такие которые все повторяет стратегии который повторяет это последнее действие стратегии 100 рублей которые ничего не повторяет смотри , задачка такая но наверно последнее на рассуждении вот у нас есть какой-нибудь список ну давай
00:53:09 - 00:54:52
это будут товары какие нибудь например одежда нам приходит сервера одежда и мы на ней там отмечаем типа понравилось понравилось понравилось пожалуйста какие то которые понравились да вот и у нас такой как бы век до интернет еще не везде илон маск космос старлинг не запустил поэтому пока еще и соответственно интернет имеет свойство пропадать периодически да и мы хотели бы чтобы юзер ну там все что вот он натыкал да пока интернета не было чтобы она край интернет появится она синхронизировалась с сервером вот то
00:54:02 - 00:55:25
есть получается он собирает данные сервера и отдает данный на сервер когда юзер лайк а чего тогда соответственно вентера пропадает нам чтобы она была синхронизирована как бы ты спроектировал вот такое вот приложение простенькая ну наверное я добавила бы что то что сохраняете быть какое-то место куда можно сохранить на те данные время пока нет интернет ну а что например например базу данных какую андроиде базу данных и скилла да а ты бы прямо вот на голом иски light это все писал народу писалось
00:54:43 - 00:56:01
на room ok допустим и вот not сделал ты базу данных и что дальше и сохранял бы туда потом проверял бы есть нет сети и когда есть отправлял как будто проверял есть все эти нет сети с помощью кет сервис и проверять есть сеть элементы прикинь чувак есть метро в нашем любимом московском да где вот это вот mt free надо подключить то есть и сеть есть вай-фай есть но сигнал не уйдет потому что ты не авторизовался как тогда быть ни на есть же возможность проверять это сложный образ не придумаю как это но подумай как бы у
00:55:26 - 00:57:09
тебя есть запросы ты их кидаешь через retrofit тебе там сервер воды что-то присылает завить правильно он не присылают что тебя нет нет ничего а что в базе данных было записано то есть вот ты записал какую-то шмотку это ж какие выдавая поля прямо в таблице буду базе данных куда ты что-то пустота хочет сохранять и для чего туда обретает что у одежды есть пока всего две вещи ты артикул назвать threading и картинка это вот по умолчанию эти поля ясен пень надо сохранять или кстати может не надо сохранять можно только
00:56:23 - 00:57:35
артикул сохранять ноги у сущность как заказ наверное теперь с телом там хочешь заказать сомнение пока приложение максимально простое просто список одежды и ты просто лайков и что что тебе понравилось даже pagination нет просто вот одна страница грузится не наверное должна быть еще какая-то представь что мы идем приложения для соцопросов людям выкидываю 20 каких-то шмоток и а них просто оценивают типа понравилось понравилось понравилось по 1 низкую корзины ничего не добавляют просто вот тупо оценивают сложно
00:56:59 - 00:58:27
сообразить его но он добавил ok молодец которое будет то есть ну показывается отправленная или не отправлено то есть то есть более годовой да правда появится отметка какая то что типа пакете мы там отправили какие-то запросы там с какой-то периодичностью отправляться сравниваться там сервером то есть отмечено там на серве что это отправляет но то есть получено не получится то есть ну допустим теперь давай ситуаций усложним представим что у нас есть второй телефон и там есть аккаунт с аккаунт неважно какой но он
00:57:44 - 00:59:15
один общий и ты вот в двух разных телефонов два раза чайка но с одного аккаунта тоже сидят такие хоп-хоп лайк лайк лайк лайк это же у одного интернет плохой 2 интернет плохой нестабильный соответственно может так получиться что вы один на грубо говоря этом like снял со шмотки а второй наоборот поставил как такие вот вещи синхронизировать не знаю тут нет правильного ответа тут вот на именно на как будто такое спроектировал слишком сложно для меня ну я спроектирую наверно так как я спроектировал а вот как это мы потом работала это вот
00:58:29 - 00:59:50
уже наверно проволокой понятно но меня интересует как вот как бы ты это сделал то есть я понял идею станется со статусом что типа отправлено не отправлено вот здесь такой момент вот допустим все либо ты сохранял базу данных или бы ты что-то пролил есть направлена только не отправлены сохранил ну да и потом потом когда это все будет отправлено видимо потом удалилась базу данных как будто отправку организовывал типа раз в 90 секунд например или ну например просто тут вопрос вот больше просеять наверно то есть
00:59:09 - 01:00:32
как определить что у нас есть сеть или нет сети вот такая сложность но ты же можешь гарантируется только на ошибки от сервера но те же не важно какую причине ошибками не дошла не на просто окей тебе пришла шибко такое блин ну надо же как-то отправлять равно можно часто отправлять поставить управляете отправлять отравляется творишь где прибегают админ такую горит вы че творите вы мне там задудосили сервер курицу вот у человека денег на интер ну типа указкой он сжег типа ответа делать значит ничего
00:59:50 - 01:01:17
не пришлось ему ответ есть но ошибка короче там так запускаем сервер там свой ремонтируешь тип ошибок на клиенте проверять ошибки не надо ни на этой но мне мы проверяем ошибку пришла у ким они отправили наши publish сам вы и отправляем дальше пошел ты дальше справляя пока не достучишься до сервер черпает ошибка значит типа сервы плохо работает а ты бы пачкой стучал ну типа все там допустим 20 запросов которые тебя в базе данных для это или по одному очень зависим от рави пришел к но если загрузился 2 следующий
01:00:35 - 01:01:53
а вот этот механизм тепла досталось базы данных отправил на сервер очередной где под его реализован где-то в модели модели но она же не просто абстрактно в воздухе болтаются она прикреплена скорее всего к президенту рулевые модели объем модели прикреплена к фрагменту или activity то есть где вот такие это должно болтаться не просто бомба какой-то классном объект модели там который отличается доставку данных он хорошо я свернул получается приложение hop у меня умерла все включая отправку этих статусов я все что не
01:01:13 - 01:02:41
успел я такой уверенный у меня это все локальное отобразилось что я правда пролайкал я такое свернул приложение и закрыл его и все умерло включает свой объект потому что он сам по себе не может существовать он должен быть чему-то прикреплен вот желательно чему-то живущему потому что больших мусора мы помним соберет да все что о том случае можем сервис какое-то запустите там сервисом отправлять хорошая мысль да смотри давай теперь маленькой переделаем наше приложение у нас не не менее лайкаем одежду большим и
01:02:05 - 01:03:10
водитель который находится на маршруте и ему нужно проставлять статус и но там типа забрал товар довез товар там отдал товар следующий заказ и так далее и вот у нас та же самая ситуация водители покупают самый дешманский телефон сам хреновым интернетом там и так далее тоже еду по городу in связь постоянно отваливается а статуса надо чтобы приходили именно в определенном порядке сам понимаешь у нельзя такого чтоб на сервер складывалась вначале и не знаю там заказ отдал да потом заказ типа взял на складе но это же бред как
01:02:38 - 01:03:48
бы ты эту проблему решил как бы тот реализовал приложение а сервер простенький он просто универсальная пи х которая торчит наружу она тупо статусу принимает но сначала вот этим своим статусом пока он не даст учить собираю а потом показал вас качался на следующей станции я боюсь что водители могут прийти настучать по голове потому что они выехали интернет пропал они отмечают что они как скотину воняет заказ отдать не могут потому что приехали в какую-нибудь там тьмутаракань где интернет не ловит
01:03:12 - 01:04:16
их там короче клиент возмущается они возмущаются в общем все возмущаются ну это сложно какие-то условия очень реальные условия вот буквально вчера такими заниматься честно меня это как то вот прямо совсем словно где вам позвонить работает потом они просто скорее я бы там не вижу гордость пророк нам до представь у тебя таких водителей 3000 до вот и ночью они все будут звонить так ни на какую колл-центр денег не наберешься вот за свой счет они есть ясен пень звонить не буду да потому что но слышат этим они снова рабочий телефон
01:03:44 - 01:05:08
с него за это деньги дополнительные гораздо проще дать ему приложения где он будет тупить статус он типа я принял с нормальным интернет да вот как бы ты ну это плохой разработчик то есть такого бы уволили как бы ты сделать чтобы приложение работало просто тяжело заставить приложение работать если нет интернета к его но интернет есть он просто нестабильный да у тебя грубо говоря там ты где жку это участок дороги хоп интернета нет потом the hub интернет появился потом приехал в эту деревню таракан там
01:04:26 - 01:05:45
5 интернет не ловит потом выехал там можно можешь позже этот запрос отправить просто я просто не уверен если такие инструменты в android и которые позволяют чего проверять-то есть три типа лист мирно интернету на связь насильно связь на работали при я не работала и честно ну тяжелое то есть да я отправляла бы пока не отправится но я в конкретной ситуации ну вот и в принципе правильно мыслю начал что можно базу данных сохранять а потом отправлять как появится как часто это делать я например ну я пошёл бы
01:05:09 - 01:06:41
потом товарищ как это сделать ok now it хотя твои на самом деле пока не достучится окей так ну у меня по вопросам принципе все пасибки огромное тащи лютый красавец что согласился тем более самый первый ну вот такое вот интервью получилось пишите в комментариях что вам понравилось что не понравилось такие может быть вопрос вы бы задали такие вопросы вам надо прояснить ответов дополнительных роликах это вот самая важная поскольку у нас и так это частота он занял а я не стал особо отвечать прямо по ходу данным
01:05:55 - 01:07:02
вопросы которые сам задаю возможно вы что-то заметите что захотите в роликах увидите ответы какие-то и так далее вот но с вами был алексей гладков канал мобайл developer всем большое спасибо и пока
01:06:31 - 01:06:53