🎧 Публичное собеседование #12: Android junior, MVP, and Sockets

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

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

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

    00:00:00 - 00:01:42

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

    00:00:52 - 00:02:33

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

    00:01:55 - 00:03:38

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

    00:02:47 - 00:04:17

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

    00:03:34 - 00:05:14

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

    00:04:25 - 00:06:10

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

    00:05:22 - 00:06:43

  • видит framing б . старт там fight на контроллер и все если много если какие-то еще 2 или параметров но зато так удобнее а если тебе нужно в runtime и динамически делайте какие-то экраны формы которые не были предусмотрен у метро до контенту который игр приходит не какие-то списке или там логический решает но обычно если если это более-менее структурированный какие-то список или супа и то есть она recyclerview очень удобные меня там через него он бы очень удобно работает можно дописать до него еще класс там gif

    00:06:02 - 00:07:36

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

    00:06:58 - 00:08:30

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

    00:07:43 - 00:08:57

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

    00:08:21 - 00:10:05

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

    00:09:16 - 00:11:00

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

    00:10:18 - 00:12:01

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

    00:11:14 - 00:12:48

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

    00:12:06 - 00:13:35

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

    00:13:04 - 00:14:42

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

    00:13:59 - 00:15:52

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

    00:15:06 - 00:16:48

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

    00:16:14 - 00:17:50

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

    00:17:01 - 00:19:00

  • применения ну например у меня часто бывает или обычно этими списками русалка the war is a clear view мне надо когда получить какой-то информации я часто бывает что это огромный список но сверху и снизу амелии еще как-то у меня должны быть совершенно другие вещи и то есть я создаю какой entity класс для каждого элемента списка а он засох дырку еще и меня запутал бета путаться может быть не знаю давай какие-то вещи допустим обзор каких-то антипатр что ты считаешь плохим в коде когда встречаешь когда хочется зари factory

    00:18:03 - 00:19:45

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

    00:19:31 - 00:21:11

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

    00:20:38 - 00:22:21

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

    00:21:29 - 00:23:10

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

    00:22:36 - 00:24:09

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

    00:23:27 - 00:25:23

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

    00:24:31 - 00:26:06

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

    00:25:31 - 00:27:04

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

    00:26:21 - 00:28:04

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

    00:27:15 - 00:28:48

  • это я делал но если речь про такого есть ли есть через rest например через растопи есть замечательная библиотека ретрофит на android она по флаг на очень удобно сразу можно и настройки и сразу чтобы она джейсон например джейсон то есть за в объект этот удобно так же я работал в тисе пи пи и т.п. немного вручную еще там два года назад я боролся какой штукой что писал на джаве сервер socket то есть теперь ты про такое соединение ставил на видео сверток virtual детей к сер мне был когда я писал на джаве

    00:28:05 - 00:29:50

  • сервер для банально какой-то примитивные руль игры и пола морской бой онлайн и по тисе пи пи по порту приписки с телефона соединялся какие особенности увидели протокола bgp она не гарантирует то что информация дойдет но она ты пробовал на провал но немного и конечно взаимодействие тесты просто tcp использовал до какой-нибудь шифрование tls то они не сохранен сошка соки т.д. какие классы у нас обеспечивают работу но сока сервис socket на серверной стороне вот как нам написать сзади когда-то писал о супер

    00:29:00 - 00:30:39

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

    00:29:56 - 00:31:50

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

    00:30:58 - 00:31:46