Tech Interview Fest | Моковое cобеседование Android Junior |Solvery+Coffee&Code | Иван Попов, Яндекc

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

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

  • Итак я запустила сейчас его поймаю что на YouTube все отлично супер важно начинать Ребята всем привет Мы Продолжаем наш техест в его рамках мы проводим моковое интервью 10 партнеров 10 технологий на протяжении двух недель И сегодня у нас мог интервью на позицию Android разработчик вот здесь у нас я представлю в принципе что будет происходить сейчас будет собеседовать Дениса Панова И основная часть самого собеседование а далее задавайте свои вопросы и мы в конце будем отвечать на них ставьте огонечки задавайте вопросы я буду за

    00:00:14 - 00:01:42

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

    00:01:06 - 00:02:20

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

    00:01:43 - 00:03:19

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

    00:02:34 - 00:04:06

  • порог хождения что-то изучал то есть язык первый твой JAVA да правильно Ну вообще нет мой самый первый язык это Поэтому вот Я на нем копался в сторону бэкенда потом постепенно перешел на Java и меня затянуло в Android сейчас и здесь и я разрабатываю данный момент на котлине Окей можешь рассказать почему именно вот Android разработка Почему от меня iOS мобильные там если выбрал Почему не ест почему Android в чем преимущество для тебя были вот этого выбора Но почему не iOS Ну причина довольно простая у меня не было Мака Вот и сейчас

    00:03:22 - 00:04:50

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

    00:04:05 - 00:05:31

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

    00:04:49 - 00:06:25

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

    00:05:42 - 00:06:59

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

    00:06:24 - 00:07:56

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

    00:07:10 - 00:08:47

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

    00:08:06 - 00:10:07

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

    00:09:08 - 00:10:54

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

    00:10:08 - 00:11:46

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

    00:10:57 - 00:12:39

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

    00:11:56 - 00:14:05

  • собственно Map Set Q они все наследуются от collections от Collection интерфейса вот ой Лиз да да извиняюсь не назвал лист Вот и есть также коллекция которая не наследуется от этого интерфейса это место листа как раз таки назвал вот Окей поводу реализации Какие знаешь реализации реализации но собственно возьмем от лист какие у него есть реализации самые известные двери это линкет лист и релиз в чем разница Ну собственно две разные структуры данных линки лист это структура данных в которой по сути каждый объект ссылается

    00:13:08 - 00:15:06

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

    00:14:11 - 00:15:44

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

    00:14:59 - 00:16:41

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

    00:15:54 - 00:17:39

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

    00:16:56 - 00:18:25

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

    00:17:43 - 00:19:09

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

    00:18:32 - 00:20:11

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

    00:19:22 - 00:21:15

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

    00:20:22 - 00:21:59

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

    00:21:11 - 00:22:52

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

    00:22:10 - 00:23:58

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

    00:23:08 - 00:24:49

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

    00:24:03 - 00:25:48

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

    00:24:58 - 00:26:31

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

    00:25:47 - 00:27:30

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

    00:26:45 - 00:28:44

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

    00:27:54 - 00:29:34

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

    00:28:50 - 00:30:26

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

    00:29:46 - 00:31:21

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

    00:30:36 - 00:32:22

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

    00:31:37 - 00:33:30

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

    00:32:44 - 00:34:20

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

    00:33:38 - 00:35:10

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

    00:34:37 - 00:36:24

  • статический метод который опрокидывает в параметр текст юшку внутри метода этого А вот самореализация метода то есть уже прокинут это тексте ушка и к ней присваиваются все параметры которые ты там прописываешь в данном случае наверное там писал присвоение текста до отчет [музыка] а вот ну собственно здесь вот вывод Какой можно сделать в чем отличие собственно extension метода от обычного метода в котлине то есть в чем разница вот есть у нас обычный метод есть и он несет себе тип он требует определенного

    00:35:34 - 00:37:07

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

    00:36:32 - 00:38:12

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

    00:37:22 - 00:38:57

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

    00:38:12 - 00:40:01

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

    00:39:07 - 00:41:07

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

    00:40:24 - 00:41:57

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

    00:41:15 - 00:42:44

  • по поводу еще дата класса можем поговорить чего он вообще можешь рассказать основные дата класс по сути нужен для того чтобы какие-то модели в него записывать модели данных допустим нам приходит какой-то Запрос который мы должны распасить из рисона и соответственно по какой модели мы это будем делать мы легко можем [музыка] под работу с моделями он требует хотя бы в качестве параметров Вот и у него переопределены при определенной ряд методов это Hash Code equal scopy to string то string там по-моему для Fancy вывода

    00:42:07 - 00:43:51

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

    00:43:08 - 00:44:40

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

    00:44:01 - 00:45:36

  • структуру проекта Какие Из каких частей состоит и качать За что отвечает вот этому Слушай ну короче проект в Андроиде по сути состоит из нескольких частей часть короче говоря часть где мы пишем код часть ресурсами И Android Вот честно говоря Может я сейчас наврал чет не так сказал Вот Но по моему восприятию это так собираем как кот с помощью Хорошо давай тогда ты расскажешь поду манифеста зачем она нужен есть понимание Да ну манифесте мы объявляем короче основные компоненты приложения прописываем

    00:45:00 - 00:47:06

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

    00:46:10 - 00:48:01

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

    00:47:17 - 00:49:00

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

    00:48:13 - 00:49:47

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

    00:49:10 - 00:50:56

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

    00:50:07 - 00:51:48

  • вот Далее по поводу еще братка С ресивера и контент-провайдера братка С ресивер существует для того чтобы принимать какие-то сообщения от системы например то что устройство в авиарежиме или выключен wi-fi допустим такие системные сообщения Собственно как название Вот и контент-провайдер позволяет нам файловой системы взаимодействовать то есть мы можем что-то записывать и забирать какие-то данные системы Окей А контент-провайдер я про него сейчас и сказал ты про поводу записи файлов контент провайдер Да

    00:51:13 - 00:52:42

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

    00:52:11 - 00:53:42

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

    00:52:59 - 00:54:23

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

    00:53:47 - 00:55:36

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

    00:54:55 - 00:56:09

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

    00:55:38 - 00:56:59

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

    00:56:19 - 00:57:59

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

    00:57:10 - 00:58:28

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

    00:57:50 - 00:59:19

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

    00:58:40 - 01:00:25

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

    00:59:32 - 01:01:13

  • кусок кода оттуда выносится вот то есть удобно Вот сейчас вроде как люди массово отказываются от nvp в пользу других либо архитектуры либо вот не знаешь тонкости Почему отказывается что Что им не нравится Вообще считается устаревший Вот Но почему я не знаю откуда-то из Веба вообще подразумевает собой сохранение Вью степейта какого-то и вот несет за собой большие проблемы потому что если ты используешь Макси или еще свое напишешь там вот как раз проблема в том чтобы ходить состояние вот ну плюс ко всему колбеки Если ты захочешь как-то

    01:00:30 - 01:02:20

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

    01:01:29 - 01:03:17

  • плане какие методы Да представляют как его реализовать но у нас короче говоря есть холдер вот он ответственен за то чтобы держать себе какие-то данные вот Описывать как бы Ну вот это короче говоря описывать ту модель данных которую мы хотим видеть в одном айтами Вот соответственно он как правило inner Class versire View Вот и в самом ресеплер View 3 есть адаптер который собственно определяет как он будет работать с данными Вот и в самом адапторе есть Ну вообще есть два адаптера решает адаптер и лист адаптер Вот и у них есть отличие

    01:02:35 - 01:04:31

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

    01:03:34 - 01:05:04

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

    01:04:27 - 01:05:56

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

    01:05:16 - 01:06:51

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

    01:06:14 - 01:07:33

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

    01:06:55 - 01:08:44

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

    01:07:58 - 01:09:47

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

    01:08:59 - 01:10:32

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

    01:10:06 - 01:11:41

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

    01:10:58 - 01:12:26

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

    01:11:45 - 01:13:18

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

    01:12:41 - 01:14:11

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

    01:13:31 - 01:14:59

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

    01:14:21 - 01:15:43

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

    01:15:08 - 01:16:38

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

    01:16:01 - 01:18:04

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

    01:17:10 - 01:18:37

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

    01:18:03 - 01:19:45

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

    01:19:05 - 01:20:56

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

    01:20:07 - 01:21:47

  • рутин А если он тебе вернет Ну значение да то ты будешь там как-то данные иначе доставать или выдавать ошибку Ну мы не будем сейчас конкретным каким-то ошибкам можно вообще создать еще свою какую-то обертку которая у тебя будет ну стоит какой-то хранить Да она будет себе содержать несколько состояний состояния там вот как раз то что сказал Error и уже таким как раз решается вопрос можно сделать допустим там несколько секунд не получаем данные и получаем ошибку [музыка] данные получил У тебя Интернет отработал

    01:20:56 - 01:22:15

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

    01:21:43 - 01:23:08

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

    01:22:27 - 01:23:58

  • если нет Интернета Да вот по поводу базы данных ты использовал в каких проектах [музыка] своих каких у тебя там тестовые были не тестовые может и использовал Room Room да А можешь рассказать в целом что она из себя представляет Есть понимание библиотека встроенная или что это вообще что там под капотом не знаешь но под капотом там по моему Light Вот это по сути Просто обертка над skylight в Андроиде в принципе можно использовать по поводу поговорим давай У тебя есть Ну допустим мы хотим базу сохранить данные как бы ты сохранял

    01:23:12 - 01:24:53

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

    01:24:11 - 01:25:50

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

    01:25:07 - 01:26:42

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

    01:26:00 - 01:27:18

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

    01:26:39 - 01:28:06

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

    01:27:21 - 01:29:03

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

    01:28:14 - 01:29:27

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

    01:28:51 - 01:30:11

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

    01:29:31 - 01:30:56

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

    01:30:16 - 01:32:04

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

    01:31:11 - 01:32:30

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

    01:31:49 - 01:33:23

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

    01:32:44 - 01:34:01

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

    01:33:24 - 01:35:01

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

    01:34:22 - 01:35:54

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

    01:35:16 - 01:36:47

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

    01:36:02 - 01:37:33

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

    01:36:56 - 01:38:27

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

    01:37:52 - 01:39:28

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

    01:38:47 - 01:40:13

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

    01:39:34 - 01:41:18

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

    01:40:29 - 01:41:57

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

    01:41:12 - 01:42:45

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

    01:42:02 - 01:43:37

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

    01:42:55 - 01:44:25

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

    01:43:44 - 01:45:12

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

    01:44:33 - 01:45:55

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

    01:45:19 - 01:46:55

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

    01:46:07 - 01:47:23

  • всем кто из Питера в общем Приходите на кофе и кот нас сейчас довольно мало ребят кто интересуется Андроидом Всех приветствую все Всем спасибо всем пока

    01:46:45 - 01:47:08

Менторы

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

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

    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