Проводим собеседование в Android-команду Тинькофф в прямом эфире

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

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

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

    00:00:00 - 00:00:54

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

    00:00:28 - 00:01:23

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

    00:00:55 - 00:02:03

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

    00:01:31 - 00:03:05

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

    00:02:25 - 00:03:53

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

    00:03:14 - 00:05:00

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

    00:04:25 - 00:06:28

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

    00:05:57 - 00:07:42

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

    00:07:05 - 00:09:07

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

    00:08:20 - 00:10:01

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

    00:10:02 - 00:11:56

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

    00:11:30 - 00:13:34

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

    00:12:49 - 00:14:31

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

    00:14:02 - 00:15:39

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

    00:15:37 - 00:17:38

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

    00:16:41 - 00:18:24

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

    00:17:55 - 00:19:45

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

    00:19:13 - 00:20:55

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

    00:20:20 - 00:21:51

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

    00:21:06 - 00:22:50

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

    00:22:52 - 00:24:35

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

    00:24:12 - 00:25:35

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

    00:25:33 - 00:27:14

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

    00:26:49 - 00:28:19

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

    00:28:02 - 00:29:46

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

    00:29:45 - 00:31:38

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

    00:32:18 - 00:34:09

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

    00:34:33 - 00:36:30

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

    00:36:50 - 00:38:29

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

    00:38:22 - 00:40:23

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

    00:39:59 - 00:41:47

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

    00:41:19 - 00:42:50

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

    00:42:33 - 00:44:08

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

    00:43:44 - 00:45:39

  • мы ничего не наследуем мы просто там принимаем на вход и получается Это намного более гибче если у нас есть какой-нибудь контейнер подожди сейчас немножко запутался Окей Расскажи мне чем отличается композиция [музыка] Как правильно языком даже объяснить в композирование Я себе представляю Так что мы получается в класс Передаем какие-то объекты Ладно я не знаю композиция с помощью композиции мы можем расширить функционал класса не изменяя его при наследовании мы меняем класс на самом деле с тобой

    00:45:14 - 00:46:59

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

    00:46:58 - 00:48:44

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

    00:48:35 - 00:50:36

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

    00:51:04 - 00:52:26

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

    00:51:56 - 00:53:51

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

    00:53:01 - 00:54:11

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

    00:53:55 - 00:55:38

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

    00:54:46 - 00:56:41

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

    00:56:00 - 00:57:46

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

    00:56:59 - 00:58:37

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

    00:57:55 - 00:59:38

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

    00:58:57 - 01:00:36

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

    01:00:00 - 01:01:00

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

    01:00:30 - 01:01:41

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

    01:01:21 - 01:02:17

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

    01:01:51 - 01:02:47

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

    01:02:19 - 01:03:22

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

    01:02:50 - 01:04:19

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

    01:03:35 - 01:04:44

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

    01:04:09 - 01:05:13

  • знать вообще меди и 5 лет Победы на не тянет он только знает что медиаплеер Вот примерно такая же схема и здесь то есть с оценкой происходит да Да вот кстати есть интересный кейс просит пояснить вопрос с контекстом самом начале А то что было обсуждение промоки контекст А вот эту часть было Ну там я видел вопрос почему нельзя передавать Application Contex для передавать Activity контекст потому что можем первое получить утечку памяти если создастся у нас там объект сохранен контекста вот Ну собственно тестирование Ну почему не

    01:04:42 - 01:06:23

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

    01:05:34 - 01:07:02

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

    01:06:20 - 01:07:29

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

    01:06:57 - 01:07:49

  • Если вы хотите быть уверенным что вам Прикинь что прям не контекст писать Application класс хотя бы вот тогда это хоть какой-то Гарант что это будет Application Work менеджер просто называет контекст и надеюсь что ему передадут методику Форса через Application класс То есть это уже лучше потому что мы прямо на уровне типов прямо на уровне кода форсим какому-то конкретному переданному типу То есть applications у нас только один в приложении на процесс поэтому мы особо никуда не уже не уйдем от этого

    01:07:22 - 01:08:25

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

    01:08:00 - 01:09:49

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

    01:09:14 - 01:10:20

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

    01:09:47 - 01:10:48

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

    01:10:21 - 01:11:29

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

    01:11:03 - 01:12:12

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

    01:11:40 - 01:12:37

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

    01:12:15 - 01:12:58