Подготовка к собеседованию на 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 каналы и чаты
Транскрипция видео:
[музыка] Да всё вот ну Возвращение Как говорится не без косяков Давайте еще раз Всем привет меня зовут Кирилл Розов это канал Android broadcast и сегодня мы продолжаем череду тех крутых Я считаю событий где разные ребята опытные разработчики собеседуют ребята сообщества и соответственно Таким образом мы смотрим как вообще проходит собеседование набираемся опыта смелости и наверно понимаем что не все такие супергерои в принципе все ошибки которые делают Вы скорее всего могут делать и другие ребята Это нормально Ничего
00:00:09 - 00:01:18
бояться не нужно Надеюсь что вам это очень много чему помогло если сразу их крутые кейсы которые вам были вынесены вы соответственно смогли научиться чему-то с этих интервью Обязательно оставляйте комментарии очень интересно будет понять и также называется что мы проводим регулярно и обо всем этом Telegram канале Android всех сборов будущих записи можете посмотреть на этом канале но все это я могу делать при поддержке нашего генерального партнера команды инженеров классно ребята делают сервисы огромное
00:01:01 - 00:02:03
количество людей десятки миллионов по всей России за ее пределами держит огромную нагрузку делится своими практиками общеприходить на их сайт ссылочка есть в описании к этому видео ну а мы переходим к непосредственно сегодняшнему нашему формату что нас ждет собеседовать сегодня будет у нас они Жиркова Ань привет Всем привет привет Кирилл Да расскажи пожалуйста немножко про свой опыт и что нас сегодня ждет что ты будешь узнать человека ждет нас сегодня интересный для начала обо мне Я мобильный разработки уже давно более 9
00:01:32 - 00:02:40
лет и я начинала с нативный android-разработки затем занималась разработкой и параллельно с этим вкатывала в кроссплатформенный и затем уже Спустя какое-то время набравшись опыта и к самореане и нативным Android iOS я занялась котлы мультиплата на данный момент я являюсь руководителем разработки в группе компаний юстех и я являюсь руководителем группы разработки на одном очень крутом проекте про который я не могу рассказать занимаюсь я всем чем обычно занимаются для разработки То есть это кроме написания кода это архитектура
00:02:06 - 00:03:26
и также Я выступаю как ментор для своих разработчиков и тех лиц и наверное мать также Я выступаю на конференциях и пишу статьи на мобильную тематику Android iOS и кофе мультиплета Сегодня у нас будет собеседование разработчика будет у нас там блок теоретической части в основном и пара возможно практически примеров будем стараться чтобы было интересно и надеемся что это будет Полезно не только нашему кандидату но и всем кто будет смотреть Потому что вы узнаете правильно проходить такие собеседования Именно
00:02:45 - 00:04:01
какие тематики лучше обратить внимание на позицию а у нас времена поменялись настолько что сейчас по сути человек который собеседуется на позицию Женю разработчика должен знать почти столько же сколько и Мида в плане теории они должны знать примерно одинаково но у мидла уже есть большой практический опыт он уже умеет какой-то мере сам архитектурно проектировать фичи то есть какие-то маленькие вот экраны он должен уже разбивать но в принципе это сейчас требуется В некоторых местах для него разработчика по сути должна быть очень
00:03:23 - 00:04:32
крепкая хорошая теория как языке разработки которым будет оперировать например сейчас это котлин уже мало кто использует Java поэтому котлет и конечно же Android то есть там очень большой теоретический Пласт И даже если посмотреть на те пункты направления которые требуют Google для сертификации Android разработчика Джуниора там довольно много всего то есть это больше практики движение к сеньору и уже больше такой архитектурный Ну и часто милый какие-то вещи просто делают быстрее Как часто тебе сейчас вот за последний
00:04:04 - 00:05:26
год допустим приходится беседовать жену в компанию Ну вот если говорить откровенно то в основном я собеседовала за последние полгода наверное сеньоров и метлов Но вот буквально еще там год-полтора назад джинов довольно много на собеседовали а у вас какая-то жировка это понимаете рынка потому что я знаю многие компании крупные они прямо вот джинов не берут только через стажировку приходишь к нему стажировку или там с их школы какой-нибудь соответственно там тебя учат и потом вот берут жену в компанию это надо ставить
00:04:45 - 00:05:52
прохождение вот это вот непосредственно практического боя Как у вас это устроено Мы берем разработчиков То есть у нас даже некоторые проходили именно стажерами Ну то есть Стажеры это по сути разные позиции потому что стажер Он у него опыт меньше чем Junior вернее опыта чаще всего вообще нет и знание меньше чем Junior иногда это параллельно со студента И эти люди у нас при успешном прохождении технического интервью как компания Так у нас работали у меня в команде работает несколько человек который у нас вырослить один даже мой
00:05:20 - 00:06:42
джун вырос за пару лет доли до команды за пару лет прям очень серьезно или училка нет личной жизни или он гений он просто старательный парень понятно Хорошо тогда переходим к нашему кандидату Лёша привет Привет Да Лёша расскажи пожалуйста про свой опыт вообще какой тип опыта разработки в целом и в Андроиде конкретно Так ну разработка Я занялся с средней школы 5 6 класса я делал игры просто мне было интересно потом и плюсы и пошел работать [музыка] в топ образовании вот там нужно было заниматься мобильной разработкой обучать
00:06:00 - 00:07:38
мобильные разработки собственно пока я обучал сам многому научился И в последнее время это год назад или чуть больше ушел полностью в практику работаю над проектом для Android хорошо в принципе я считаю что нам уже можно стартовать я тут Лишний вот ребят накидываете обязательно в лайв чате ваши вопросы Мы потом все это Разбираем вот какой будет сейчас формат придет собеседование потом они даст свой фидбэк и мы соответственно конце поотвечаем на ваш вопрос примерно все суммарно займет не больше двух часов Поэтому если вы еще
00:06:51 - 00:08:08
не успели сбегайте пока будет разогрев за горячим напитком или холодным потому что как минимум у меня погода сейчас теплая не знаю как у вас и Давайте смотреть как происходит собеседование на позицию поехали что начинаем Мы конечно с теории То есть у нас сейчас будет два блока собеседование Это первый блок посвященный год затем мы поговорим по Android практике и начнем с самого базового расскажи пожалуйста про типы какие есть котлин и что-то про это знаешь в отличие все типы у нас ссылочные то есть Даже те
00:07:36 - 00:08:56
которые примитивные указываем они затем компилятором оптимизируется либо ссылочный тип используется либо [музыка] Ну весь особый типы Юнит нафиг такие вот помню А вот ссылочные типы в котлин что можно про них сказать где они хранятся что с ними происходит при работе в памяти во время работы нашего приложения они должны храниться в стеке это подозреваю чтобы при необходимом то есть ссылки на сами переменные в куче сами значение а ссылки не должны всякие храниться а ты не помнишь как работает карточка
00:08:22 - 00:09:56
лектора в кот Лине и когда он начинает работать [музыка] так Ну вообще строится дерево то есть скормила вода какого-то значения хранятся все ссылки То есть например на объект другие ссылки и карточка лектора А как раз в этом деле проходит и ищет либо зациклены Какие если зацепиться у нас это будет течка памяти ссылки друг на друга вот он ищет переменные получается Куда указывают только одна ссылка это его собственная То есть если на ссылку ничего не указывает кроме коробочка вектора то может очистить
00:09:20 - 00:10:47
память Хорошо давай пойдем дальше расскажи пожалуйста про базовый класс для всех объектов котлин и какие в нем есть методы что они позволяют нам делать базовый класс у него есть методы сравнение код для вычисления он будет приводиться и для чего нам например может потребоваться использование и в каких случаях так Ну да у нас есть по умолчанию Да если мы ворон напишем это будет проверка на ссылочное равенство то есть является одним тоже объект памяти вот что проверить структурные равенство как раз таки
00:10:04 - 00:11:42
вызывается экос в котлине и голос по умолчанию называется когда мы пишем 2 равно То есть это сравнение двух объектов по структуре по значению можно так сказать у него они по размещению в памяти хорошо так идем тогда дальше Давай поговорим про классы дата-классы что это такое чем они отличаются таких случаях используются Так ну класс это просто конструкция вкусу которая позволяет нам объединить несколько полей методов по смыслу вместе делать собственно тип данных дата класс это Ну такой такой для удобства работы он
00:11:05 - 00:12:41
автоматически переопределяет методы вот эти базовые то есть хэш-код to string и ecolas для полив конструкторе который мы укажем но есть ограничения То есть это файл классов нельзя наследоваться должно быть хотя бы одно поле в конструкторе указано вот а силы класс это по аналогии похоже на класс только его можно использовать для удобства работы поставить машину у нас есть несколько состояний но при этом в них можно дополнительно какие-то данные использовать одно значение всегда если силы класс то
00:12:01 - 00:13:35
мы можем его поведение какой Дописать либо данные вложить а ты можешь сейчас показать как примерно с помощью сил класса мы можем реализовывать разные состояния Я имею не стоит машину там какого-то приложения но вот мы можем использовать как своеобразные нам Каким образом Мы это можем реализовать Ну это написать Да могу самый стандартные пример попробовать реализовать которые в Google часто был показан например там вот статус создать потомки могут быть например даже обжиг объекты [музыка] класс данные были загружены у него
00:12:48 - 00:14:42
[музыка] можно сделать некоторые изменения [музыка] смотри у тебя получается при создании и описаний классов указываются разные инициализаторы А можешь искать подробнее про инициализаторы в классах котлин и какая какие различия есть вот в типах которые мы обозначили классы дата классы и сил классы инициализатор Если я правильно понял это блок который не только инициализаторы и конструкторы [музыка] класса какие они у нас могут быть у обычных классов дата классов и [музыка] Так ну обычного класса может быть пустой
00:14:06 - 00:15:53
конструктор напишем А может быть какие-то полезные указаны у нас может быть несколько конструкторов у класса усилит класса Я так подозреваю конструктор приватный потому что просто экземплярно статус мы не можем создать вот можно создать классы объекта Ну я не уверен но он инициализируется всегда одним объектом у него нельзя указать потому что подразумевается что как только мы к нему обратимся он будет создан мы сможем вместе использовать вот [музыка] мы можем сказать личный конструкторы тогда нам нужно указать что мы еще
00:15:46 - 00:17:30
вызовем а базовую конструктор который у нас 10 указан вот если него здесь будет поля какие-то там нужны эти поля Здесь тоже инициализировать Ну и следовательно если у нас есть блоки то они будут выполняться сверху вниз получили сразу после вызова конструктора Хорошо ты сказал что у всех класса конструктор инициализатор приватный А какие у нас целом модификаторы доступа могут быть в котлин типах и использоваться И в чем отличие от Java Ну мало ли Вдруг ты знаешь [музыка] Так похоже типы как жалуется
00:16:54 - 00:18:24
паблик Pride protect Вот то есть паблик это вообще доступное свойство и может его может использовать Любой кто видит объект закрыты можно использовать только внутри класса и протектор это поля доступны наследником этого класса и внутри класса но недоступные извне вот я знаю интернал модификатор который в Java не имеет аналога вот он ржавов является заменяется на паблик но происходит преобразование пакетов чтобы не было конфликтами Ты имеешь в виду Internal котлин или Java никакой модификатор доступ появляется по
00:17:47 - 00:19:38
умолчанию паблик точно в плане если [музыка] [музыка] Оно просто пишем вот так вот вал б равно 20 [музыка] Вот это будет паблик поля а какого модификатора у нас котле нет Ну я нажала К сожалению опыта писать не умею но не имею вот я понимаю куда потому что носи при сахар работал какой там модификатора Нет не помню Нет у нас все эти модификаторы есть это был так просто засыпку [музыка] Хорошо давай тогда пойдем дальше так мы с тобой поговорили про конструкторы инициализаторы на поговорили про какие
00:18:52 - 00:20:31
бывают классы модификаторы доступа Расскажи пожалуйста как в котлине реализуется работа снаулсефите если такое понятие и как мы можем с ней работать если есть например их или просто рассказать если удобно можешь писать пример Ну в общем это как одно из преимуществ которые выделяют [музыка] там типа разделены на 2 то есть безопасные и небезопасные [музыка] получается что когда мы работаем с безопасным типом у нас не может а когда работаем небезопасно мы должны каждый раз проверять контролировать и
00:20:11 - 00:22:04
можно использовать различные конструкции есть вход много удобных удобств для этого Либо можем просто выполнять проверку либо ты можешь показать Каким образом мы можем проверять во-первых показать что это у нас может быть нам или нет Каким образом мы можем эти проверки осуществлять что нам необходимо для этого делать Давайте покажу это у нас самое простое мы можем проверить не равен ли у нас и когда уже будет операцию выполнять Каким образом вот в этом блоке например мы проверяем на не на и если например у нас метод принимает
00:21:11 - 00:23:05
тип например не строка опциональная строка строгая именно то как у нас тогда будет нормально пройдет или нам необходимо привести какой-то преобразование а здесь Ну вот предположим вот у тебя сейчас строка так смотри вот ты говоришь что у тебя строка это Тип который опциональный То есть он может быть равен на если мы Передаем его куда-то на вход где мы ожидаем что у нас будет строго не на элемент нормально ли это работает такое синтаксис либо нам что-то надо будет менять какие-то проверки добавлять так
00:22:15 - 00:23:43
здесь нет здесь котлин поверить там то есть такая ситуация будет то здесь котлин уверен в том что это значение не дал придется [музыка] хорошо А какими способами вот такой код ли не равно нам можем еще либо проверить что это не пустое В смысле не Нал и у нас очень доступ к какому-то значению Я думаю что этим занимается какой-то статический анализатор потому что в теории можно было бы скомпирировать так без проверки так здесь есть оператор не безопасно В общем вот небезопасно вызова и оператором
00:23:05 - 00:24:53
безопасного вызова значит оператор небезопасно вызова мы заставляем код используют исполнить код независимо от того Налетели нет мы хотим обратиться к этому поле здесь если значение будет равно нал тогда будет здесь мы обратимся к этому полю если здесь будет нам тогда мы увидим просто нужно определенных строке то есть безопасный [музыка] если мы используем оператор безопасного вызова обращение к полям дальнейшем идет только если у нас объект не равен [музыка] Хорошо давай пойдем дальше Вот у нас
00:24:03 - 00:25:35
например сейчас такая конструкция Скажи пожалуйста тебе знакомые конструкция с такими может быть считал про такие конструкции тогда Пожалуйста расскажи каких случаях использовать мы получается используем какую-то лямбда функцию которая при мне применится к нашему объекту Вот его можно удобно использовать то есть таким образом с безопасным вызовом здесь параметр само значение если она не ровно на то мы выполним ответ получается так вот это немножко запутался возвращается преобразование [музыка] а Play просто выполнить вернет
00:24:58 - 00:26:40
Unit получается сложно так [музыка] по-другому пишется Вот так и принимает аргументом который мы будем работать но он также использовать лямбда и также выполняет только вот сам объект [музыка] Хорошо давай пойдем дальше Так расскажи пожалуйста какие коллекции котлин Ты знаешь с какими Ты работал базовые коллекции все лист кошмар [музыка] [музыка] Ну и там вот такие котлиновские Интера и лонгрэйс для типа данных а чем Рэй отличается от листа Но это больше внутренним устройством то есть то как он организован в памяти
00:26:34 - 00:28:31
можешь вкратце рассказать если ты знаешь как оперирует листом или реем и на основе этого рассказать Чем именно разница Так ну Рей это массив элементы которого в памяти хранятся непрерывно и мы знаем то есть 10 человек у нас мы знаем размер каждого элемента памяти например сколько он занимает килобайт и мы можем при обращении на 6 элемент мы над размером шестерку и получаем сразу 6 элемент отступаем Это позволяет нам обращаться очень быстро к элементам с скорости от одного список связанный это там элементы памяти разрозненные
00:28:06 - 00:29:42
добавлении элементов выделяется новый каждый раз и он и на него ссылается предыдущий элемент и чтобы получить например 6 элемент Нам нужно будет начать с первого пройтись ко второму к третьему четвертому Пятому и получить этот элемент Таким образом у нас скорость уже линейный доступа но например при модификации при добавлении элементов при удалении нам проще добавить элементы указать ссылку новую Чем брать этот массив непрерывный память должен непрерывно хранится поэтому увеличится нам нужно выделять новую область памяти
00:29:04 - 00:30:27
копируются все значения старых элементов добавлять новые То есть это уже как раз для добавления для удаления список подходит лучше хорошо а вот если мы рассматриваем к примеру хэшмэп и сет что это за коллекция и когда они используют лучше использовать похоже на список Да коллекция в которой все элементы Уникальны то есть там нет повторяющихся элементов хэш мап тоже Там разница в способе доступа к элементу если например я приводил пример массив можем получить 6 элемент список Шестой элемент то флешмаки у нас нет
00:29:45 - 00:31:16
возможности получить по номеру Мы обязаны получать доступ по ключу какой-то ключ использовать то есть какое-то значение чтобы получить сам элемент А вот если мы например Обращаемся к элементу по ключу которого не существует насколько безопасно эта операция Ну наверное зависит от реализации то есть Я думаю стал вернется либо значение по умолчанию каких-то критических проблем не будет [музыка] Хорошо давай пойдем дальше расскажи пожалуйста про то что ты знаешь про наследование в котле так ну в котлин разрешено только от
00:30:40 - 00:32:14
одного класса наследоваться а что рассказать Ну вот ты сказал единичное наследование какие есть возможности у класса наследника как он оперирует функционалом класса родителя и с его инициализаторами конструкторами там методами как их работа взаимосвязано так в котле не каждый класс помочь по умолчанию Final и от него нельзя наследоваться что бы можно было наследовать нужно обвить его опыт либо делать абстрактный класс тогда мы уже только только наследовать от него сможем мы можем переопределять открыт то есть
00:31:29 - 00:32:58
тоже у методов есть у методов и полей Мы можем поставить модификатор Open и тогда мы сможем переопределить их в классе Наследники также можем использовать вызов базовый реализации метода через супер супер вот А конструкторы должны вызываться в порядке базовый класс потом классно конструктор наследника и уничтожаются обратном порядке сначала уничтожается конструктор уничтожается Наследник что это за класс такой какие у него возможности и Какие ограничения когда он используется нельзя создать мы должны использовать
00:32:20 - 00:33:51
его тогда когда не хотим чтобы какие-то методы остались без реализации скажем так то есть обязать программистов других в проекте реализовывать эти не хотят использовать этот класс А каким образом мы это делаем то есть как мы помечаем там поле либо функцию абстракт и мы корм У нас обяжут определить место А как выглядит абстрактный класс например при реализации можешь показать [музыка] попросим сейчас показать экран Алексея это сам абстрактный класс А вот если говорить про его методы то каким образом
00:33:15 - 00:34:45
мы показываем что они переопределению и могут ли у него быть обычными Таким образом мы можем указать интерфейс метода что он например принимает там какое-то значение и возвращает другое Вот а если у на у нас есть какой-то базовое поведение которое мы хотим чтобы не было использовано Ну то есть переопределено чтобы сюда использовать метод можно создать вот В текущей реализации метод B Он позволяет его переопределить или нет Так я помню что в интерфейсе у нас все методы Можно переопределить даже если мы не
00:34:20 - 00:35:54
указываем у них Я не уверен но я думаю что нельзя потому что Мы обязаны будем указать либо опыт либо смотри чем у нас Напиши пожалуйста Open и чем у нас вот эти два метода А и Б будут отличаться для класса наследника определить метод B опционально можем переопределять можем нет хорошо Так ты упомянул интерфейс Расскажи пожалуйста что это такое и чем он отличается абстрактного класса [музыка] Чем отличается [музыка] интерфейса мы тоже можем сделать Поведение по умолчанию разница нам такая больше мне кажется
00:35:25 - 00:37:01
семантическая сейчас наследуется мы можем только от одного класса а реализовывать множество интерфейсов вот как минимум разница такая А чем Это обусловлено если мы хотим именно использовать зависимость Сейчас попробую В общем интерфейс мы можем использовать для совсем независимых не похожих друг на друга сущности чтобы добавить им какой-то функционал который в дальнейшем чтобы они могли взаимодействовать через этот интерфейс класс он больше связывает иерархии наследования То есть наверное такая больше родственная связь она
00:36:41 - 00:38:19
[музыка] В общем здесь такая более тесная связь получается Я думаю достаточно про то что что нам дает классы что нам дают интерфейсы в плане именно реализация функционала не философия Хотя Спасибо что ты про семантику поясняешь А ну смотри вот сейчас ты написал метод интерфейса которого есть и базовая реализация Обязаны ли мы будем так как во-первых мы начнем с того можем реализовывать методы интерфейса добавлять существующему типу котле и если у нас метод интерфейса имеет базовую реализацию то Обязаны ли мы его
00:37:47 - 00:39:08
реализовать потому что мы можем так лучше делать иначе мы можем забыть реализовать этот метод вот если мы укажем реализации то мы можем просто его реализовать и никак не переопределить А первый вопрос как мы добавляем реализацию интерфейса к классу так через И как мы потом перерелизовываем метод мы должны будем просто использовать здесь у нас идет реализация смотри а ты сказал что мы в принципе можем в интерфейсе реализовывать базовые методы какие-то и В каких случаях все-таки это необходимо и что мы в интерфейсе например из
00:38:30 - 00:40:21
конструкции Для реализации базового использовать не может что мы можем задекларировать в интерфейсе что нет Возможно мы не можем задекларировать константные значения Возможно мы не можем операторы [музыка] приватные переменные мы можем декларировать А нет не можем Да в интерфейсе все методы которым объявлены они будут публичные всегда То есть у этого класса даже здесь не сможем изменить модификатор а если например это свойство как мы можем со свойствами оперировать в интерфейсе но также можно увидеть
00:39:49 - 00:41:14
название тип указать А если мы хотим добавить базовую реализацию для свойства Каким образом это должны сделать Через что это уже подсказка была мы видимо должны использовать [музыка] Да это просто было именно вот не относительно того что ты использовал сеттер но правильно молодец Если мы например сделали реализацию метода интерфейса базовую и мы делаем что-то в классе в котором переопределяем Как мы можем вызвать супер реализацию из интерфейса так немножко запутался в общем Ну вот смотри вот ты предположим добавил сюда в
00:40:40 - 00:42:24
интерфейс реализацию базового и ты хочешь вызвать это из базу из какого-то класса который тебя реализует Да А если у тебя при этом несколько методов интерфейса имеют данный метод с похожим названием как Да я понял я понял здесь Вот точно не скажу то есть синтаксический Точно не скажу но мы можем использовать именно название название интерфейса вроде как которым будем вызывать и уже так выжить То есть у нас несколько [музыка] Ну подскажу что здесь будет использоваться острые скобки [музыка] Хорошо давай пойдем дальше Потому что
00:41:39 - 00:43:19
только секция котле на Android но у нас еще пара вопросов будет затем переходим на Android Расскажи пожалуйста Каким образом мы можем в ход ли не разделить методы и свойства которые относятся например к классу и К объекту можем использовать компанию object чтобы создать какие-то поля и методы для класса и хорошо а если мы например хотим чтобы у нашего какого-то класса был единственный экземпляр Каким образом это можем сделать Ну или вернее не у класса у типа мы можем использовать для его объявления
00:42:39 - 00:44:16
Хорошо если мы например хотим добавить какой-то функционал уже существующий но не с помощью интерфейсов Каким образом это можем сделать Какой механизм еще ты можешь предположить механизм расширений и каким образом у нас добавляется расширение и что мы можем добавить к расширению что не можем добавить Каким образом в плане если это в бойкот лежала мы перейдем Нет мы не идем так глубоко у нас собеседование инженер разработчика Я ценю что у тебя хорошая подготовка но в семантики на Женю разработчика котлин вот если ты хочешь
00:43:44 - 00:45:03
если поставили задачу Вот у тебя есть какой-то класс какой-то Тип и тебе необходимо сделать расширение для какого-то функционала как ты это будешь делать я напишу фан либо вал то есть что я хочу создать какой путь его функцию укажу класс который хочу расширить точка название этой сущности Ну и там уже интерфейс то есть тип значения логику А вот в этой логике Какие у тебя есть ограничения Что ты можешь делать что ты не можешь работать возможно я могу работать только с паблик полями этого класса а вот если мы добавляем свойства то это
00:44:30 - 00:46:04
свойство какого именно вида мы можем добавить не знаю Ну примитивные мы точно можем добавлять может быть мы не можем Да нет Можем добавить свойства сектора можем а давай попробуем написать так добавить Я не понял Пока добавить поле свойства как расширение у него нет Back infield Да не может быть инициализирована потому что здесь может быть только вычисляемое свойство это я мы должны использовать [музыка] а тогда должно быть инициализировано можно нет потому что механизм расширений это по сути как либо добавляешь функцию
00:45:23 - 00:47:04
гетер либо функцию функцию методом Хорошо давай пойдем тогда дальше так мы тут основное все посмотрели Расскажи пожалуйста работал ли ты с многопоточностью в котлин Да вот мы сейчас говорится из него рисовать сову мы от Базы переходим таким же были серьезным вопросом Каким образом можно работать что это такое что-то про это знаешь если нужно можно что-то писать так Ну много по точности в принципе это возможность с нашей точки зрения одновременно выполнять какие-то два кода Ну какие-то два года скажем так
00:47:13 - 00:48:52
вот мы можем вход не использовать многопоточность которая например из жало было то есть создавать вручную потоки либо какие-то конструкции использовать либо можем использовать картины как преимущество которые облегчают работу [музыка] при которой мы можем выполнять асинхронно прерыванием функции в общем так здесь не сложно писать инструмент который как бы многопоточный код в стиле однопоточности или синхронного то есть асинхронная копи стили синхронного скажем Хорошо давай попробуем с тобой написать
00:48:08 - 00:49:46
вызов кода который требует использования крутин и будем как раз по элемента разбирать так немножко есть сложно написать код который требует использование картины да Ну вот смотри какие у нас что у нас вызывается в корутинах в контексте Андроида уже можно начинать да да ну то есть у нас есть юань слой то есть которую взаимодействует пользователь и Мы обязаны обеспечить его интерактивность постоянно чтобы он всегда был не зависал Вот и поэтому сложные операции которые долго выполняются требует времени они должны
00:49:32 - 00:51:00
выполняться на другом потоке если мы будем выполнять их потоки он будет ими заняты не сможет работать вот и операции можно отнести например работу сети Хорошо Смотри ты говоришь что это для асинхронного кода Как мы можем такой синхронный код у нас запустить с помощью чего крутим с помощью карантин билды [музыка] что нам дает кодовое слово [музыка] помечает что Функция которую [музыка] мы пишем а будет прерываемой то есть у нас будет возможность ее запустить параллельно с другими функциями такими же со стенками то есть
00:50:16 - 00:52:05
отработать 1 функция даст возможность отработать другой потом отработать другая до встречи и вот так вот они смогут параллельно выполнять каждое свою работу а как мы такой метод можем запускать мы его можем запускать просто в ходе либо нам Для этого необходимо что-то подготовить Вот например представить ситуацию вот у нас есть какой-то наш класс у него есть какой-то метод и в этом методе мы предположим вызываем твой Мы нормально вызовется или нам необходимо будет какие-то дополнительные операции
00:51:17 - 00:52:31
провести [музыка] То есть если мы в обычной функции пытаемся то у нас не получится мы должны использовать каротин корутин Builder например Launch а лаунч у нас относится Почему Извини лаунч у нас это метод каротинского [музыка] очень скоп это объект который собственно позволяет обеспечить вот эту асинхронную работу переключение между этими функциями он контролирует ее жизненный цикл То есть если мы захотим чтобы запрос больше не выполнялся то мы можем вызвать [музыка] а на каком контексте у нас работает
00:51:56 - 00:53:37
сколько рутины контекст В общем контекст это [музыка] составная из нескольких элементов в него входит джол бы представляет собой они позволяют формировать структуру этих картин в общем сложно объяснить В общем Джок нам нужна чтобы на ней как раз и запустить картину потом нам нужно диспанчер Так посмотри вот у тебя сейчас соскоб выполняется На каком контексте каротины В каком контексте не знаю какой-то контекст по умолчанию используется просто А если мы хотим например работать с фоновым контекстом и передать Затем в
00:53:09 - 00:54:45
основной поток выполнения если нам нужно выполнить на каком-то другом Мы можем либо указать здесь его Либо мы можем например здесь получается например диспетчер будем использовать И когда у нас функция liquest работает мы хотим показать ее на мои портоте результат например и в Андроиде у нас будет проблема что с you Live слоем можно взаимодействовать только сделать слоя мы не сможем какой-то например виджет использовать Нам нужно будет переключиться на другой диспакер можно сделать из контекст а ты
00:54:18 - 00:55:45
вот смотри ты сейчас создал скоб который кастомный А вот например Global scope можем такой сколов использовать В нашей работе нам подойдет так да Global scop можем использовать но не очень удобен потому что он не хранит точнее через него если отменим то работы которые мы на нем запустили они продолжили выполнение То есть он не хранить ссылки на свои работы не отменяет их то есть использовать Global скобка плохая практика Вот Но если мы сохраняем например там ссылки на Job и отменяем Можно попробовать
00:55:47 - 00:57:13
хорошо так скотлин частью в принципе разобрались переходим наконец к блоку Android и конечно мой стартовый вопрос Это расскажи пожалуйста про компоненты приложения Android какие-то знаешь основные компоненты Activity сервис контент провайдер братка пещер хорошо Давай начнем по порядку сначала будем про каждый из них рассказывать расскажи пожалуйста про активити что это такое для чего это используется Но активит это компонент для самый удобный для взаимодействия с пользователем мы можем отобрали какую-то
00:56:34 - 00:58:07
графическую информацию [музыка] разместить виджеты чтобы пользователь а какой у нас жизненный цикл Activity так Ну окей жизнь цикл Ну да колбаки вызываются при создании получается Он клеит он стартом изюм если она ставится на паузу либо закрывается то будет он пауз он стоп и он строй а вот что такое фрагменты Чем отличается от Activity фрагмент это виджет получается то есть фрагмент это не компонент такой это класс у него тоже есть жизненный цикл но он обязан быть привязан к какому-то Activity менее самостоятельно
00:57:21 - 00:59:16
его удобно использовать для комбинирования наших виджетов для использования их [музыка] В общем почему он более там больше потому что помимо перед создание своего он еще привязывается как к хосту отвязывается от хвоста создает View которая будет отображаться вот если точно сказать я вот не вспомню только [музыка] приблизительно могу назвать методы так Ладно Activity не помню совсем там должен вызываться В общем также он старт [музыка] И еще есть он клеитью которую возвращает и он вилкой Когда уже осознанно это
00:58:28 - 01:00:28
называется [музыка] так Ну давай пойдем дальше Расскажи пожалуйста вот ты сказал что у фрагмента есть своя View что у нас представляет View что отвечает за ее визуальную часть Ну в плане не понял нас виджет который можем использовать таким образом [музыка] часть вызывает отличает метод а вот то что отображаем мы [музыка] можем однозначно определить как мы хотим И тогда она будет отображать то что мы пишем плане разметки класс указываем [музыка] как это разметка xml в принципе можно назвать для того что мы ловлю показываем
01:00:05 - 01:02:10
Вот хорошо если мы хотим отобразить View который не какой-то уже известный контроль а какой-то комплексный что мы будем использовать в этой разметке в качестве корневого элемента есть обычные групп которые объединяют себе могут размещать себе по определенным правилам другие если Например если мы используем этот View Group который у нас идет как корневой элемент фрагмента что это за вьюгу такое и каких видов они бывают корневой элемент фрагмента вообще описать Да что такое не бывает когда лучше использовать
01:01:35 - 01:03:12
так [музыка] например линия royalt он располагает элементы в друг за другом либо вертикальные либо в горизонтальной ориентации вот к настройке располагает элементы относительно друг друга то есть Нам нужно указать [музыка] относительно Чего будет располагаться элемент по горизонтали по вертикали вот он таким образом настроиться есть фреймвояд где мы указываем непосредственно координаты либо его смещение много больше возможностей он более гипок в настройки поэтому для каких-то сложных представлений нам лучше использовать
01:02:39 - 01:04:37
он проще то есть для производительности он более эффективен вот если немного элементов можем использовать А вот у тебя есть кастомный Ну да можешь рассказать какие-то шаги реализовывал для достижения этой цели в общем были просто скажем так вот кастоминови от югрупп которая объединяет себе несколько других и в общую логику например плашка для фильтрации то есть мы можем там внутри само это View настроить анимации добавить какие-то значения перенастроить чтобы более удобно использовать то есть [музыка]
01:03:46 - 01:05:22
объединить несколько View в одном для нашего удобства например вот либо если нам нужно [музыка] какие-то графики отобразить либо часы чтобы быть как настенные красивые там можем реализовать обычную и переопределить него методы [музыка] и уже используя канвас нарисовать [музыка] Ну мы должны просто с помощью лоятум флейтера его раздуть xml-ку нашу вот и что ну и обеспечить доступ к каким-то полями к виджетам на этом Вот Мы создали например ссылку на вот этот вот View islayout'а Каким образом у нас этот этого достаточно чтобы его
01:04:42 - 01:06:37
соединить нашим либо нам еще какие-то команды нужно использовать ссылка в плане файл [музыка] Нет это не для этого Вот он ты сказал ты использовала что он тебе дал в итоге на выходе [музыка] [музыка] какой элемент вилл да Ну да какой-то орут типа элемент какой-то Вот у него еще есть поля Root получается это обеспечивает доступ уже типа к самой верстки насколько я помню Ну вот у тебя есть например рот он у тебя есть твой класс все они соединены или это как-то нужно дополнительно еще что-то с ними
01:05:59 - 01:07:23
сделать а ну я понял [музыка] добавить эти элементы корневому как Мы это можем сделать Так мы можем вот я делал через [музыка] можно сделать через это [музыка] то есть на самом деле тоже с помощью это добавляется рут Хорошо давай тогда пойдем дальше расскажи пожалуйста про такую и как мы можем использовать это класс который сделан для отображения списков списка данных с его помощью мы можем отображать какие-то списки А какого типа списки мы можем отображать Ну там вообще разнообразные потому что
01:06:57 - 01:08:47
для его использования Мы обычно пили создаем собственный адаптер А вот если мы предположим вот хотим сделать список и его продемонстрировать можешь даже псевдокодом показать как Какие элементы нам понадобятся и как они у нас будут связаны могу пробовать но просто там много достаточно можно не все прописывать можно просто обозначить какие-то элементы [музыка] [музыка] нет для прибить методы [музыка] здесь должен быть он клеит [музыка] [музыка] он возвращает как-то он его возвращает здесь будет [музыка]
01:08:08 - 01:10:06
хорошо как у нас примерно выглядит наш холдер так you Holder это класс тоже отдельный и он наследуется от фихолдера внутри сайта Насколько помню то есть он должен получает [музыка] и вещи так я давно не писал не так есть что-то с типом с типом элемента так было примерно так это выглядит а вот смотри ты говоришь что вот у нас определяется и холдером а положение элементов в нашем лесах с помощью чего мы можем задавать положение элементов положение элементов Я думаю все вот смотри когда вот у нас уже есть
01:10:11 - 01:12:08
адаптеры у нас там есть всякие холдеры мы Передаем поэтому что нам необходимо сделать чтобы у нас элементы показывались на нашем мерцательной нам нужно указать для сайтов менеджер с помощью которого он будет размещать элементы сам адаптер установить и вызвать Ну если у нас меняется значение этом поэтому то нам нужно вызывать обновление то есть Вот и сказал какого примерно вида они бывают Ну вот с какими-то работал они по основным видам разметки то есть венерал ряд менеджер есть Грид и лает менеджер
01:11:39 - 01:13:17
чтобы табличку Хорошо давай тогда пойдем дальше к следующему компонентам расскажи пожалуйста про сервисы что это такое работало ли ты с ними и какие виды сервисов ты можешь называть так сервисы сервисы бывают те которые работают фоне 40 грамм который тоже работает фоне но мы имеем какой-то окошечко вот и получается сервис привязан к этому не работал они Для чего там для общения Для чего нам сервисы вообще нужны мы можем поручить сервису какую-то долгую фоновую работу которую например отвязан от Activity То есть у нас
01:12:28 - 01:14:02
пользователь постоянно путешествует по приложению и пока фрагмент активно использовались то Activity постоянно закрывались создавались [музыка] сервис получается можно положить работу которая будет сейчас время работать хорошо Так давай пойдем дальше когда я начал заниматься Android разработкой поэтому я избегал работы Насколько помню что Отличие в том что он изначально по умолчанию работает фоном потоке обычно сервис если мы запустим то он будет работать на моей Хорошо давай пойдем дальше Расскажи
01:13:39 - 01:15:11
пожалуйста это такое Для чего используется [музыка] Ну это сообщение то есть широкое вещательный [музыка] в общем если нам нужно отследить какие-то события системе например там разряд батареи или подключение исключение от wi-fi то мы можем использовать бродка с ресивера вот Либо мы можем создать собственный Север и внутри приложения отправлять сообщения чтобы их обрабатывать то есть локальным работе я точно использовал бродка ресивер системные собственные не помню Нет Возможно музыка в качестве такого обучающего
01:14:36 - 01:16:31
Ну да почаще тоже А вот смотри для того чтобы у нас ресивер начала получать сообщения как мы его подключаем для этого так нам Но мы его указываем манифесте и если у нас должно например Activity принимать сообщения то мы должны его зарегистрировать то есть регистр ресивер вызвать и передать туда объект экземпляр это потом регистр когда хорошо пойдем тогда к следующему типу расскажи пожалуйста про контент-провайдер контроль Но это такая фракция для передачи для обмена данными между предложениями То есть это он
01:15:45 - 01:17:17
предоставляется интерфейс обычный который создание удаления обновление и получение данных он реализует но не говорить каким способом реализован То есть зависит от нас можем через базу данных сделать а какие типы хранилищ в Android приложение в принципе существуют но есть внутренняя память приложения которую нам выделяют системы и есть внешняя память это общая память для всех интернсторж хорошо Это потому что они у нас бывают внутренние и внешние А вот если говорить про технологии которые мы используем то
01:16:34 - 01:18:14
это хранилище Какие Вот например ты сказал что это используется внутри контент-провайдера Какого типа это хранилище используется механизм Ну насколько я помню при реализации провайдера мы можем любых использовать который нам нравится технология хорошо Давай начнем постепенно Что такое или чего не нужны насколько я помню вообще это настройки то есть пользовательский предпочтение это можем сохранять [музыка] варить до примите примитивные типы данных а ты работал с Data Stop referencestore я не работал
01:17:31 - 01:19:02
[музыка] ладно ты говорил про базы данных Какие базы данных мы можем использовать в Android это из того что встроено то есть мы можем подключить например другие базы данных типа реалом а срум ты работал то есть как-то раз только использовалась [музыка] расскажи пожалуйста про работу потому что это за база данных Как мы можем Но это библиотека для работы с базой данных с той же sqlite по моему она построена на аннотациях на удобстве Ну то есть она использует аннотации пользовательские чтобы автоматически формировать SQL Запрос
01:18:33 - 01:20:16
который вот собственно будут выполняться а какого типа является класс создаваемый нами базы данных ты помнишь [музыка] хорошо у нас относится к библиотекам Расскажи пожалуйста Ты уже успел поработать [музыка] Ну ktx расширение компот Ну на компост немного скажем так работал не на компот сегодня не будем рассматривать у нас собеседование разработчик Кстати может современные плохо помню Вот именно что относится к что нет но основные назвал которые точно Хорошо давай тогда с тобой поговорим про навигацию в Android Расскажи пожалуйста
01:19:59 - 01:21:42
какие Каким образом она осуществляется и какие основные способы решения Ты знаешь Так мы можем осуществлять навигацию с помощью Activity То есть у нас каждый отдельный экран будет отдельный Activity онлайн просто старте очень переходим можем использовать совместно с фрагментами например [музыка] Activity Когда у нас одно активити хостит фрагмент [музыка] постоянно заменяется другой какой-то который мы используем тогда мы создаем фрагменты действий вот ну то есть мы можем библиотеки навигации бывают разные Они
01:21:28 - 01:23:01
тоже по разным принципам построены но в большинстве своем они используют наверно фрагменты ты сказал что ты работал библиотекой навигации Android А можешь рассказать примерно на чем построено это решение и как его можно использовать но она построена поверх обычного пи на фрагмент менеджере но она предоставляет удобство там есть встроенный редактор студии которым позволяет нам построить Граф из фрагментов которые мы будем переходить то есть настроить различные параметры для ферментов будет например один разметке или Каждый раз
01:22:23 - 01:23:50
будет создаваться то есть переходы все настроить передаваемые аргументы данные между фрагментами более удобный можем использовать [музыка] Как называется корневой элемент куда потом подставляются помеченные для реализации не понял в корневой разметки Вот смотри ты сказал что там создается Граф из чего это Граф состоит так Граф состоит из получается Home фрагменты с которыми мы начинаем навигацию а Action переходы между фрагментами Ну и сами фрагменты получается вот этот вот Хоум фрагмент как его еще как он еще
01:23:11 - 01:24:40
называется [музыка] а вот в принципе вот такого подхода когда мы используем навигацию с помощью заданного графа какой у неё есть недостаток и когда ее в принципе лучше использовать может быть неудобно работать с deeplin коме хотя там тоже можно создать фрагмент и настроить его как гибринг но так как мое мнение вот но однозначно будет удобно Если у нас все переходы между с экрана на экран они скажем так задекларированы и никаких неожиданных переходов с одного экрана там другой какой-то из другого под графа
01:24:12 - 01:25:50
нету тогда этого удобно работать хорошо расскажи пожалуйста что это такое и работал с этим [музыка] где модели то модель нашего то есть она хранит состояние виджетов которые сейчас видит и сразу рассказать она хранит состояние View которое видит пользователь и [музыка] обрабатывают события которые пользователь скажем так создает или нажимает на кнопки модель получает эти события обрабатывает обновляет состояние обновляется состояние чтобы мы всегда То есть у нас есть модель View и моделью в это время
01:25:11 - 01:27:29
подписано на состояние и модели то есть для отображения состояния используется паттерн наблюдатель можно сказать так и каждый раз когда значение изменяется видел отображает новые изменения то есть как-то реагирует модель сама при этом это наша скажем так и изменение в нее приходит через две модель а через события которые как раз я сказал на обрабатывает то есть и модель принимает события как-то изменяет модель и отображает для текущей вилл То есть у нас может быть много модель для каждого из экранов и на
01:26:35 - 01:28:15
каждом экране модель будет только кусочек необходимо этому экрану информации предоставлять интересный подход конечно А вот если мы говорим про модель джипаковка какой у неё основное отличие от просто для модели которую мы реализуем в рамках паттерны сейчас сказал именно по отношению к Андроиду что она именно для какого-то экрана хранить его состояние и у нас получается несколько набор для моделей набор фимадей или одного экрана нет для разных А вот именно вот так реализация там есть какие-то дополнительные механизмы
01:27:32 - 01:29:01
которые мы используем для работы то есть вот в той архитектуре которая не совсем корректные истолковал модель хранит состояние Вот и мы подписывались на состояние этой модели в Андроиде на этот механизм накладывается жизненный цикл в нашем случае это Activity фрагмент То есть может или создаст Тогда нужно в общем [музыка] в это время она не пересоздается нам нужно каждый раз отписываться и подписываться на неё заново паковская переживает жизнь цикл фрагмента и у нас регулируется это с помощью скупа и
01:28:25 - 01:30:26
есть ли у нас такой скоб обе модели джипаковской даю именно интерфейс типа вот который реализует часть которая со стороны модели [музыка] он делает удобнее работу как раз таки фоновые внутри модели то есть мы можем запросить данные и поскольку ее модель при смене конфигурации когда человек повернул экран не пересоздается данные будут продолжать подгружаться в это время Вот а если у нас человек уйдет с экрана то vimmodel вызовиться между Англии и этот скобками отменится концу и запрос уже не будет
01:29:31 - 01:31:06
выполняться То есть это очень удобно что когда пользователь данные тоже не нужны мы не будем тратить на них время хорошо а вот кроме С какими архитектурными паттернами Ты знаком [музыка] читал про но всегда старался следовать рекомендациям Гугла по архитектуре поэтому никогда их не использовал а вот Хорошо если мы сравнимем как бы то что у них своя архитектурная Но как бы дополнительно знать насколько я помню зависим зависимость то есть в mvp Model презентер у нас презентер сам манипулирует View
01:30:55 - 01:32:44
возможно этом подписанный модель и свое состояние изменяет самостоятельно то есть вот если говорить У нас есть Презент или модель кто из них про кого знает только про логику то есть не знает [музыка] [музыка] Так давай пойдем дальше Расскажи пожалуйста что это такое и как это можно использовать для чего это Framework Это упрощение дайлера чтобы им было удобнее пользоваться в контексте Android у меня там очень много под Android заточены скопы Например можно выделять То есть он как компонент Activity компонентов
01:32:07 - 01:34:07
ребенка компонент вот [музыка] они помнишь какими командами можно пометить входные точки с помощью и то есть например если нам нужно воткнуть куда-то [музыка] объект просто посреди примеру последний активити можем использовать лайты нет War поле его в мире инжект А если мы в Конструктор какого-то класса хотим предоставить зависимости тоже конструктор помечаем инжект вот для есть Hill to you Model аннотация которая позволяет через делегацию Model предоставлять [музыка] сюда у нас будет править вал там вал и
01:33:42 - 01:35:29
модель [музыка] А вот дагер ты знаком или только с Хилл был в проекте чистый дадлер но я быстро оформил туда Хилл Понятно радикальное решение вопроса Хорошо Смотри когда мы говорили и говорили что там есть возможность карутин а помощью чего осуществляется подписка на какие-то данные которые например получаем асинхронно бизнес логики для нашей вьюшки Street Flow смысле да Какие они бывают и Для чего используется Так ну популярно было Лайф дата это сторонние библиотека не андроидовская не кормушка
01:34:39 - 01:36:22
и стоит Flow это идеализация Flow одна из реализации слов в корне вот ну это обычный Ну как это примеры [музыка] Это пример реализации паттерна наблюдатель У нас есть какое-то значение У нас есть список скрайберов для этого значения когда значение изменяется мы походим проходим по скрайберам И говорим что вот новое значение как-то отреагировать так есть это состояние он всегда имеет какое-то значение и когда и оно может заменяться на другое sherflow это такой типа [музыка] поток событий как-то писать
01:35:36 - 01:37:28
Я боюсь использовать слова горячий холодный горячий поток можно так сказать то есть в него мы будем отправлять события которые Если есть скрабберы то они его увидят Если нет то не видит когда то есть у него может быть значение текущего хорошо Так ну и то что мы если не затронули в Android приложение мы поговорили про Activity фрагменты мы поговорили про хранилище многопоточность поговорили мы не проговорили просить Расскажи пожалуйста какие решения для работы сети под Android Ты знаешь что там используется
01:36:48 - 01:38:18
для работы тогда Я использовал то есть мы можем писать просто URL адрес и типа арест Red text 2 Мы тоже выполним запрос это уже Java больше чем Android Ну да Android он найдет из Java Java родственна котлину А если мы например говорим про нативные решения для реализации сетевых запросов то есть прям нативная из sdk ты что-нибудь такое делал я с таким сталкивался да это Урал connection Ну то же самое получается нужно указать и выполнить [музыка] перейдем на более современные более ходовых можешь рассказать примерно как делать
01:37:35 - 01:39:25
сетевой запросы с помощью ретро fito Так нам нужно создать клиент настроить его то есть указать будет использовать какая-то библиотека там стерилизации будут какие-то [музыка] указать потом мы с помощью аннотацию указываем по которым будем делать запросы Вот то есть указываем метод типа Get Plast нужно and Point параметры можем передать аргументом функцию например встроить их запрос заголовки через headers то есть там на аннотациях можно так сказать строится А эти мутации мы ими помечаем Какие сегменты нашего кода между в интерфейсе
01:38:42 - 01:40:25
ретро Fit что наш метод интерфейса ретровит нам возвращает Ну мы можем использовать различные там вариации то есть мы можем использовать функции если работаем с корутинами тогда можем вернуть сразу 10 реализованных в общем случае он возвращает или даже В общем можем какой-то либо реализации [музыка] можем указать типа выполнять с помощью результат так хорошо в принципе у меня вопросы закончились и можно возвращаться уже к фидбэкудем Кирилла а вот и да да Так ну что можно сказать в принципе вот мы прошлись не По всем
01:39:36 - 01:41:25
вопросам которые заходят на собеседовании по Android потому что где-то уделяется больше внимания колину где-то уделяется больше именно Android возможно многих многих возник вопрос Они собеседование ли это на уровне Мида Но на самом деле реально для того чтобы пройти на современное собеседование joom там уже они стажер если мы используем на стаж то что раньше Вам необходимо хорошо подготовиться по теории и знать практически вот эти многие темы То есть это и теория по Android sdk этой теория котлин
01:41:01 - 01:42:23
и вопросы могут быть именно такие что от вас ожидает интервьюер интервью Red вас ожидает что вы будете отвечать зная базовый синтаксис вы можете написать например простое приложение в котором использованы основные все компоненты да возможно наизусть вы все команда не знаете Но по-хорошему вам необходимо синтаксис и вот эти вот базовые команды знать какие-то вещи конечно запомнить сложно но про то как компоненты соединяются как Что называется и что именно что означает от вас будут ожидать именно этот плане
01:41:42 - 01:43:13
для того что как оно работает внутри то есть не сильно там байт код потому что все-таки собеседование уровня Джон а не сеньор подкапотная это уже другой уровень этим оно и отличается от следующих категорий Но вот именно наименование нейминг вот эти все вещи базовые команды знать следует в том числе и то когда это используется для каких целей Какие могут быть подводные камни ограничения если говорить про фидбэк по Алексею Алексей я советую тебе уделить внимание именно базовым синтаксису Android смотри у тебя
01:42:27 - 01:43:49
есть опыт ты уже ел какие-то проекты это распространенная ситуация когда человек имеет практику какую-то но ему надо подтянуть теорию Я думаю тогда все будет хорошо потому что есть некоторые пробелы в знаниях в нейминге в особенностях работы тех или иных элементов то же самое архитектуру про хранилища и про вот те же самые фрагменты это надо подтянуть по котлинно у тебя ситуация получше но тоже надо как-то просто вот Раз ты к нам пришел именно как подготовка к другим собеседованиям то у тебя вполне вот зная
01:43:09 - 01:44:38
про то что там могут спрашивать Подготовиться и подыскать себя на довольно хорошее прохождение потому что в принципе видно что ты знаешь но просто не ориентируешься именно как это называется по теории а интервьюеры они в принципе именно обращают внимание к именно очень часто бывает что пренебрегает каким-то практическими заданиями Или например не проводят лайткодинг Хотя деньги очень тяжело мне растеряться это стандартная практика Так что мы можем даже списать на вот волнение потому что все-таки
01:43:55 - 01:45:13
публичное собеседование они что какие-то вещи могли забыться также Вот именно по тематикам которые мы не успели затронуть потому что это дальше бы именно вошло Я бы рекомендовала посмотреть еще про вот такие вот базовые компоненты и Android приложение на проект тоже самое манифест ресурсы про особенности работы с ними и мена если говорить уже далее про котлин то там уделить внимание Вот именно вот современному состоянию языка и какие-то возможности Есть какие нет потому что Да понятно что ты это называешь какие-то
01:44:37 - 01:45:55
вещами но некоторые могут требовать тебя полные наименование и полную ответ на вопрос как она называется чуть ли не по тому гайду где написано в целом Я думаю тебя весь потенциал есть и как бы немного еще подготовиться и ты готов вкинул дополнительно Я например всегда еще с джунами разговариваю на то как они развиваются как обучаются и в целом типа насколько из них можно что-то будет получить насколько они готовы в этом плане потому что для меня это джун это вот типа этот как у меня женами всегда
01:45:25 - 01:46:36
ответственно синдром маленького принца типа мой ответственности за тех кого приручили А вот соответственно Джона дел в команду с ожиданием какого-то там рост зарплаты развития всего и соответственно нужно понять будет там даже понять любой джун это всегда инвестиция какая-то в человека и тут происходит такой меч должен понимать Стоит ли инвестировать Вот время твои команды время вообще своё в него там или в неё то есть действительно хочется там человек куда-то развиваться интересно ему это да он не может там не хватает знаний это
01:46:04 - 01:47:03
нормально бывает развитие самостоятельно курсах это не всегда пул Ну практически нереально да хорошего Продакшен уровня Вот и поэтому нужно понимать Главное вот Готов ли ты взять ответственность за этого человека какой-то часть даже как мини свадьба Такой типа берешь ли ты этого человека себе в жены Это мое отношение Вот это чисто У меня такое вот чувство ответственности есть но я всегда общаюсь на такие темы типа развития как человек развивается что ему интересно куда копать хотелось сделать реализовать интересно Чтобы понять
01:46:33 - 01:47:43
Вообще насколько ему этой теме вот есть страсть в этой теме Да согласна абсолютно еще можно добавить то что есть ли компании которые берут джинов но потом они используются у них как милы поэтому тут как раз вот хорошая теория она только будет плюс хорошо прошел в каких-то частях Вот либо хорошо сыграл но в любом случае то есть да то есть он как Что входит в целом действительно Все неплохо было показано поэтому от меня тоже плюсую как бы в принципе мы тут тоже активно то есть накидали то тут масса все то все знают опытные ребята из
01:47:11 - 01:48:38
другие которых я лично знаю поэтому тоже все плюсуют все хорошо Так что ты молодец да я вообще буду заявку на собеседование до того как зашел анонс что она для джина Возможно если бы я сразу увидел что я бы собеседовать вообще на собеседованиях собеседование собеседованиям трудно подготовиться потому что там наговорила что Пласт теории Android очень большой и на всех собеседованиях спрашивают в разные и разные очень части где-то больше протофрагмент где-то больше про многопоточность и ты вот несколько собеседование может только
01:48:00 - 01:49:33
скажем так понять что могу спросить большое они только я получается результат положительный вот именно как раз я думаю что Ну вот если говорить про как раз Вот именно что в основном бы скорее всего взяли но опять же тут зависит Какая потребность у команды потому что где-то например какие-то какие-то например вещи которые Леша не ответил они прям критичные и прям ожидает что человек подключит и он будет сразу это все делать то есть ему просто будут ставить задачи и он уже там будет сам развиваться и расти потихоньку то
01:48:48 - 01:50:10
что разные есть везде подход где-то Например если это не критично и есть довольно много времени на рост то вполне можно взять человека с условием Что смотрят и как оно у него дальше проходит но мы тут еще не смотрели код чем вас в компании принципиально отличается Middle от жена вот смотрите Джон по сути это у нас человек который делает небольшие задачи чаще всего это если мы берем на Когда у нас есть люди которые делают задачу более серьезные металл он уже может и сам декомпозировать и сам спроектировать
01:49:51 - 01:51:18
даже часть печи либо например подбирать адекватное решение или по тем инструкциям которые ему дается Давайте именно такую реализацию что скажем так у него чище код меньше багов это факт потому что у него есть опыт он уже знает какие-то подводные камни реализация тех или иных элементов Разумеется мы с вами не говорим про какие-то сложные фичи например Типа если вам поставили сдачу подключить какой-нибудь там Open TV настроить мы говорим про адекватную стандартную разработку Android жена начинает Сначала с каких-нибудь
01:50:38 - 01:51:52
небольших задач типа сделай простой экран сделай верстку Но если необходимо потребность в том чтобы жена подключить какой-то части фичи то есть там уже бизнес логика работа с такими сетью например использование уже того инструментарий который в проекте есть Почему бы и нет то есть во-первых это рабочие руки во-вторых если он отправляется то это хорошо и обычно джуны цена дорастают наверное за полгода и то в основном как бы джун который сейчас требуется многим это такой уже больше джун идущих джунами глупо потому
01:51:18 - 01:52:41
что джун Который совсем другом все-таки стажер Кирилл Мы тебя не слышим тут есть актуальный вопрос который очень часто задают Нужно ли учить всякие новые технологии там компот и мультиплеер форм и вот эти вот все новомодные веяния вот но вот если говорить про конкретно про Джуна то Джону котле мультиплеер Не нужен совсем потому что код для мультиплеер Это для таких старичков как я или Кирилл Или Леша Гладков который уже имеют хороший грант в Андроиде поработали с айосом и могут разобраться как нам эту штуку настроить что там
01:52:02 - 01:53:26
использовать сырого Джуна котлин мультиплеер как его флаттер нельзя это жестоко человек должен знать сначала базу Android А вот на примере если говорить про компост то почему бы и нет конечно от него требовать что-то типа хорошего такого знания полного умения сейчас еще про такой говорить рано пусть сначала джун знает базу Андроида и как вот работать с базовыми компонентами создать проект настроить бизнес логику просто подключить делать там элемен базу данных с каким-то там простым Но потому что
01:52:51 - 01:54:14
часто там Какое требует от Джуна тестового задания сделай например там приложение адресная книга либо приложение что-нибудь еще какую-нибудь справочник то есть стандартная работа стандартная же новая работа компот все-таки можно начинать для себя изучать но пока еще трудно говорить что именно компосс с композа нужно все только делать это база то есть Пока это далеко не база То есть в принципе можно для общего развития я к этому отношусь немножко по-другому То есть я считаю что джун как минимум должен потрогать хотя бы компот хотя бы
01:53:34 - 01:54:46
немножко представляется чем это отличается от какой-нибудь там не знаю сделать простой экранчик или что-то Ну хотя бы иметь представление что это такое компост что чем он там что в нем происходит отличие как-то не Вообще пишется иметь представление о технологии А вот но ситуация с ними она нельзя сказать что прям вот не нужно учить типа комков сюда все то есть это те же корутина про не появились в 2018 году То есть там Спустя 3-4 года в принципе они уже для нас как бы стандартно Android разработки такой то есть да и рык жаба
01:54:10 - 01:55:09
скейт которая была популярна она ушла на второе место в принципе скампол не кажется что будет похожая ситуация но намного даже мне кажется быстрее потому что в принципе Google намного агрессивно продвигает эту технологию всеми всякими способами задвигая Вью как можно дальше и прячь И вообще стараюсь не рассказывать про них больше нигде Вот кроме как там на какие-то частях документации и всё И поэтому это будет естественная эволюция скорее всего от вас кому полз потребует Если вы пойдете куда-то в
01:54:39 - 01:55:37
женом на проект где прям компот First и вот вам тогда скорее всего нужно будет это учить Скорее всего в компаниях где множество проектов вам могут что-то подобрать Ну либо могут может сойдутся на том что готовы будут дать какое-то время подтянуть эту область знаний Но вот как раз таки Посмотрите на кого проект пойдете Скорее всего я у меня был проект там на Композит на корутинах на всём этом и у меня как бы не было возможности особо ждать или там вкладываться в человека что он лучше учить новый стек Вот это всё и непонятно
01:55:08 - 01:56:05
как быстро произойдёт Я бы очень сильно задумывался брать до такого Джуна или нет Поэтому как минимум смотрите что В вакансиях требуется если будете видеть очень часто встречается с компом прям требуется нежелательно а требуется тогда вот как бы время всё больше и больше настаёт наступает на пятки Ну кстати Да я сама забыла что моя первая работа была Самарина Android и меня просто очень повезло что я с этим самарином успела поработать за месяц пришла Так что я согласна что потрогать Конечно нужно
01:55:37 - 01:56:49
Да вот но игру пару лет и мы эти вопросы уже ну эти вопросы уже будут не актуальны потому что на мой взгляд 2025 это уже будет compos как стандартом разработки и войска и типа те кто это не делает это будут Legacy проекты в которые людей придется заманивать такие как бы и доплачивать за то чтобы они совсем этим работали но просто я уже даже знаю сейчас есть курсы какие-то вещи где даже прорыв жабу при Android разработке вообще просто не рассказывают то есть Раньше она была как части потом разговаривать про рутины
01:56:14 - 01:57:13
Flow там стандартный подход который с механизмы и про вот эти подходы рксовые не говоря то есть немножко даже там только джагу задевают которые есть и все вот поэтому время убьёт само старые технологии а Google в этом поможет Да так ребятки осталось еще вопросы накидывайте их у нас есть тут пару минут Сейчас посмотрю что было интересно еще такого [музыка] хотел еще сказать пока не отключился Что Очень приятно когда ты затупил или не знал чего-то на собеседование поясняют хотя бы немножко подсказывают
01:56:44 - 01:58:10
как это правильно как на самом деле У меня кстати если интересно вопрос на вопрос Вот что для Джуна важнее И в какой степени теоретические знания или практические то есть типа уметь что-то сделать или понимать как еще это или Почему так нужно сделать вот этого два вопроса мой взгляд на то что именно вот практически навыки First и типа ну разбираться в этом Почему делается так это уже как бы типа то чуть дальше это Осознание придет вот как бы знаете API и уметь их использовать правильно А не понимать
01:57:29 - 01:58:35
Почему так за использовать конкретно все вот этому типа мой вариант Джуна характеристики Да я согласна что джун во-первых должен это уметь То есть если мы от него ожидаем что он там делает какой-то экран то он заложил сделать Просто он должен рассказать что я сделал Как оно работает под капотом Да я согласна что Джон он как раз от этого отличия следующий кридов он может не до конца понимать что там происходит Вот например если мы там возьмем про глубины какой-то там анализатор или там какой-то рендеринг это ему знать не нужно или там
01:58:06 - 01:59:21
например при рассказе про то же самое кастомную Как зарендерить рассказывать там про то какие порядки идет там огромная Но вот именно что я использовал то-то для того чтобы сделать вот это вот это мне нужно вот эти компоненты потому что это делает тот это как раз вот и есть практика и достаточное количество теории если он блестящий конечно отвечает на все теоретические вопросы то для того чтобы все это запомнить Я думаю все равно у него должна быть практика Но это даже не нужен это уже какой-то
01:58:45 - 01:59:55
Ну потому что сложно заполнить Да без практики запомнить что-то очень сложно Казалось бы читал там потом Спустя время без практики ты будешь подход который Я рекомендую Я про какие-то вещи читаю Вот и что-то потом начинаю кодить и потом когда с теми вещами поупражняюсь практике и возвращаясь к той же абсолютно там книге статье вот на основе которой все это там разбирал делал У меня намного больше приходит понимание Осознание глубины вот этого то есть на основе того когда ручками уже закрепил такой О так а вот
01:59:25 - 02:00:27
так Почему это делалось типа вот почему такие вещи происходили вот тоже фундаментальную литературу всякие там паттерны проектирования чистый кот это вот всё я тоже рекомендую перечитывать особенно там первые пару лет там раз в год просто перечитывает Потому что когда вы развиваетесь с уровнем вашего сознания понимания всех этих вещей вы соответственно Вот как это будете проникаться то есть Самый наверное ещё вот хороший всем женам что я советую типа как индикатор понять Вообще развивайтесь Вы или нет Или там даже ещё
01:59:59 - 02:00:55
не жены когда вот только найти попасть посмотрите что вы написали там Не знаю 3 месяца 6 месяцев 9 месяцев 12 месяцев назад посмотрите если вам стыдно за этот код вы явно с прогрессировали если не стыдно что-то идёт не так Если вы не можете понять тоже всё нормально вот да на этом в принципе наверное все вопросы больше этики особо не вижу таких на которых мы что-то можем ответить они лишь Большое спасибо вам за потраченное время я считаю что ребята точно заслужили ваши громкие аплодисменты В комментариях Вот если вы хотите попасть
02:00:27 - 02:01:33
на следующее собеседование то обязательно подписывайтесь на телеграм-кана Android broadcast я там делаю все анонсы и я придумал Короче мне захотелось тряхнуть стариной Короче я решил по кому тут сидели слушал вас и такой а Давайте попробуем протестить меня каким-нибудь экстремальным способом собеседования вот короче пойдем в Android broadcast на днях я всё это заношу и там будем искать для меня какой-нибудь интересную информацию собеседование Ну которую я вытяну конечно не то что типа там как космические корабли строить а что-нибудь
02:01:06 - 02:02:03
интересное кто меня может захочет какую-нибудь интересную теме прогнать вот посмотрим на что я ещё способен вот став я или как это или синдром самозванца у меня будет всё на этой ноте у нас всё Всем большое спасибо пока
02:01:34 - 02:02:10