Подготовка к собеседованию на Flutter 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 каналы и чаты
Транскрипция видео:
всем привет вы смотрите открытое собеседования компании ser меня зовут михаил зотов и я текли в поттер команды фатер отделов компании сев я его буду сегодня проводить вместе со мной в этом собеседование будет участвовать федоров константин привет кость всем привет приятно ну и для начала я предлагаю познакомиться познакомиться с тобой поближе нашим нашим зрителям и скажи пожалуйста чем-то занимаешься где-то работали сможет быть да да всем привет сейчас я стажер flat и разработчика в яндекс в команде индекс про до этого я
00:00:04 - 00:01:40
чуть более года разрабатывал приложение в мобайл эта студия соответственно затем я этим видео проект моим под моим началом было аж два человека в пишу приложение на фактор иногда выступая на метопах классный опыт классный опыт ну а сегодня ты будешь выступать ином этапе а мы будем проводить собеседование но и для начала я чтобы мы были все в единых координатах в целом просто обговорю некоторые принципы правило до соответственно когда задаешь вопрос естественно 3 ожидается понимание его они заученная формулировка
00:00:52 - 00:02:29
то есть не обязательно следовать каким-то академическим определением для того чтобы ответить на этот вопрос ты просто передашь суть это будет ничуть не хуже а иногда даже лучше ну и в целом особо то больше и нечего сказать ну кроме того что вопросы могут быть на поразмышлять и не иметь однозначно правильного ответа для того чтобы просто понять что ты думаешь по этому поводу как то так ты готов начинать да я готов круто погнали ну и первый вопрос наверное не кажется каждый со без него начинается по краю меня всегда
00:01:41 - 00:03:09
можешь ли ты назвать основ основные основные принципы объектно-ориентированного программирования да конечно первый принцип это наследование затем у нас идет инкапсуляция и полиморфизм вот иногда относят еще абстракция да вот смотри последнее время вот такой широкой перспективе последнее время на абстракцию как раз тоже к ним добавляют и и вот хочу предложить и сегодня поговорить именно про абстракция чуть подробнее сможешь ты сформулировать что это вообще за принцип о чем он нам гласит что такое как хорошо да конечно
00:02:24 - 00:04:03
абстракция оно представлено почти везде в какой-то литературе в принципах один из принципов салют посвящен как раз таки абстракции абстракция это та штука которая позволяет нам думать гибко делается гибкие продукты не привязываться к чему-то конкретному не зависеть от этого абстракция позволяет нам думать о делать широко и элегантно окей можешь чуть подробнее раскрыть суть абстракции что что вот ты чтобы ты поднимал просто очень что ты понимаешь под словом абстракция когда ты говоришь например я
00:03:16 - 00:05:00
тут создал абстракцию или еще что-то если говорить более на низком уровне действительно приводить какие-то примеры если правильно прямой вопрос то когда я говорю я сделал абстракцию я говорю тогда когда есть что то что может быть применима в разных ситуациях при этом это сделает код как в примере лучше приведу пример если у нас есть какой то бизнес логика будет хорошо если мы будем пользоваться в этом unity например каким-то абстрактным классом какой-то абстракции который будет представлять из себя
00:04:15 - 00:05:54
сервер и затем зависимости от наших потребностей целей и будущем когда мы будем расширять приложением было бы хорошо если бы мы могли подставлять определенную базу данных который будет согла согласно этой абстракции выполняет свою роль и при этом мы можем ее заменить легко на другую чем мы достигнем привязки на непосредственно абстракцию они на конкретную реализацию смотрите в своем примере и довольно таки часто на самом деле люди ставят знак равенства между абстракции интерфейсов так ли это и если да то почему и если
00:05:05 - 00:06:31
нет то почему не совсем я бы еще подумал об экстракция она кстати связано в данном случае будет капсюля ции как о чем то что выполняет определенную роль и мы как разработчики как пользователя кода какого-то другого мы ожидаем от абстракции определенных вещей у нас не особо интересует как это будет реализовано что там будет действительно написано мы просим будем ожидать чего-то и это получать борт а мышц эмулировать тогда что в твоем что в твоем понимании интерфейс то есть про абстракция ты поговорила вот если вы ты формулировал
00:05:48 - 00:07:25
объяснение чем является интерфейс интерфейс я бы определил как некоторый контракт которому определенные сущности которые подпишешься на этот контракт будут обязаны им исследовать вот и также это графике то что чаще всего и действительно implemented а как к некоторой абстракция смотри ты уже немножечко упоминал в своем ответе принципы 40 можешь их назвать все ну для начала да конечно первый принцип и я раскрою их первый принцип сингл responsibility принцип это про то что одна сущность должна отвечать за
00:06:39 - 00:08:31
одну вещь у сущностью должна быть всего одна ответственность которая она хорошо выполняет и она не будет отвечать за что-то еще еще формулирует этот принцип как через этот класс например должна проходить всего одна ось изменения то есть если мы захотим что-то исправить че не так если мы вдруг полезем в этот класс то у нас должна быть всего одна причина это сделать вот затем идет о по классов принцип это о том что классы сущности они должны быть открыты для расширения вот но закрыты для изменения как пример можно привести
00:07:39 - 00:09:15
extensions условном dirty который в которых мы не лезем в код не добавляем методы просто perche ему некоторые расширяющей функционал выполнять роль вот дальше идет рисков substitution принцип он о том что код который например завязан на кайт абстракцию в него можно подставлять под типы супер типа и этот код должен корректно работать и не должно быть никаких проблем вот затем идет интерфейс игры гейш нам принцип потом что интерфейс и нужно разделять интерфейсов интерфейс они должны быть большими они должны быть конкрет
00:08:28 - 00:10:08
конкретными в том плане что у них не должна быть большая ответственность вот они должны отвечает только за какую-то часть вот ну это очевидно позволит нам будущем расширять код не встречаться с какими-то проблемами и затем мы db-1 7 вершин и так ростки об этом принципе я говорил ранее о том что бы мою еду зависели от абстракции и не зависеть от конкретных реализаций и еще этот принцип про то что модули более высокий модуль не должны зависеть от более низких модулей вот ну и как пример например чтобы
00:09:18 - 00:10:52
какие-то зависимости класс получал из дней не создавал их сам рост к примеру окей а я немножко хочу вернуться к принципу постановки барбара лисков смотри мне показалось это видит искал при постановке супер классов по под под классов например окей давай просто немножко еще чуть более подробно про него поговорим знаешь какой точки зрения ты us расшифровал можешь ты провести аналогия с какими принципами пересекается из толпы именно он и немного размышление почему ты считаешь что вот эти принципы пересекаются то есть рисков
00:10:06 - 00:11:44
пересекается с вот этим принципом lp потому что и да конечно например принцип лискова субтитр шаме а пересекается с [музыка] например с наследованием не было viessmann провести параллель почему потому что при наследовании мы пользуемся этой сущностью которая уже была создана чтобы ее как-то расширить дополнить но мы не хотим чтобы эта сущность как-то изменилась прям кардинально чтобы она нарушила какие-то свои обещания которые она дала своем интерфейсе и чтобы так получилось что какой-то пойти в действительно будет
00:10:55 - 00:12:31
рушить скажем так всю задумку автора исходного класса вот еще бы я провел параллели с [музыка] полиморфизм конечно же с полиморфизм потому что это крест ки полиморфизм про то что [музыка] наш код абстракции интерфейсы они позволяют вести нашему коду по разному зависимости от каких-то вещей полиморфизм конечно бывает истинной и ad-hoc несколько есть условный полиморфизм когда мы придаем например функцию что-то им проверяем там iv что-то там тогда делаем одно iv что-то там делаем другое есть пара полиморфизм более крутой вот и так
00:11:43 - 00:13:38
раз таки связан например списка вскипятить ушам когда у нас есть какое-то интерфейс либо что то еще и в зависимости от саб типа вот все отрабатывает корректно ok смотри ещё такой вопрос какие то можешь вспомнить паттерны проектирования может быть какими-то работал для начала просто можешь о который ты вспомнил не расшифровывает просто есть конечно адаптер фабричный метод фабрика в целом фасад символ полне что то еще я изучал [музыка] прототайп [музыка] окей хорошо у них на самом деле еще намного больше я предлагаю решить одну
00:12:41 - 00:14:40
задачку кстати у нас тут есть комментарий но я его выведу да немножко немножко содержит обсценной лексики но все же сейчас собеседование на уровень медовым была договоренность я это не озвучил поэтому да просто константин сейчас пожег в яндексе вот но это не мешает ему заявить уровень medley пройти соответственно уровень долл я бы хотел дополнить на самом деле позиция стажера например вообще грейды разных компаниях они не значит разное и на мой взгляд это просто интересно о чём-то размышляете думать вот я свое
00:13:52 - 00:15:27
время он помог канал на ю тубе mg озвучивать только некий ресурс extreme код в там классные видео пиратский про это это просто как бы интересно и очевидно ну ты возможно и не сможешь знать всех патронов либо принципов но не каким-то естественным образом следует один из другого и просто из-за какой-то здравой логике stada то есть такие да ну на самом деле так и есть потому что во всем этом есть логика это не выдуманная из головы как и любые правила они не сделаны для того чтобы просто быть как и любые правила они обычно написаны
00:14:39 - 00:16:06
проблемами которые были не соблюдающих окей собственно задача смотри мы разрабатываем наверно тебя она будет немножко близко ты со учитывая индекс prada с картами со всем остальным вот у нас есть карта и пользователь на ней может строить маршруты маршруты которые он предлагает для путешествия из какого то города например он находится в воронеже близок этот город я сам тут нахожусь и он предлагает что для путешествия можно поехать например сначала в липецк потом ореол а можно на временной не ехать
00:15:22 - 00:16:44
напрямую торгов в пензу и в другую сторону поехать вот такие маршруты он для города выбирать и заказчик решил что нужен экспорт в различные форматы почему для начала вот вот этот построенный пользователю маршрут он хочет экспортировать в экспорте выдался правильно экспортировать в xml а после этого планируют различные другие кастомные форматы которые будут использоваться с и видишь ли ты какой-то паттерн который мог бы тебе упростить задачу вот этот маршрут экспортировать в различные форматы да возможно я ошибаюсь в названии у меня
00:16:07 - 00:17:47
просто есть некоторая картинка и схема из класс в голове кажется этот парк поттер называется фасад в либо до я точно не помню но если например у меня я могу либо описать сейчас наверное я не совсем хорошо сформулировал имеется ввиду что вот подобный маршрут нужно то есть он фактически строится в некоторую цепочку да то есть человек из одного города идут другой оттуда в третий и так далее то есть некоторая цепочка потом другие другие варианты разветвлений и таких маршрутов может быть несколько и вот начиная с условного
00:17:05 - 00:18:38
года я хочу экспортировать все маршруты из города воронеж который создает пользователей из города орел из конечной точке если и сейчас я правильно понял вопрос я должен описать словами как будет выглядеть от системы ну какой патрон можно использовать для того чтобы упростить процесс этого каждый раз путают возможно сад не люблю себя за это возможно в садках и говорил но я могу ошибаться название арчер а может да я пишу я представляю что мне будет интерфейс с определенной сущности конвертер а вот и затем будут у меня
00:17:51 - 00:19:22
конкретной сущности там джейсон xml так далее конвертеры которые будут непосредственно согласно мы эту интерфейсу конвертировать и эти сущности будет принимать наши маршруты и конвертировать их зависимости от в логике на описанные в этом классе а логику прохождения по маршруту ты кому дашь вот интересно я думал что у меня уже маршруты есть готовые и они где-то у меня лежат мне также надо еще описан у маршрут есть вот смотри пользователи о составил то есть но вот банальный маршрут то есть последовательно едем там узнаю
00:18:46 - 00:20:14
его назвал воронеж орел липецка еще что-то и вот каждый из этих узлов тебе по факту нужно экспортировать в некотором виде то есть ты говоришь что вот список маршрутов которые начинаются из города а вот хоть ты все маршруты которые пользователю начал с этого города экспортировать ты описал больше наверное как тебе может помочь с конкретным узлом на [музыка] подсушенных которую я буду конвертировать можно понимать как узел также можно понимать как и весь маршрут также можно понимать как и все маршрута
00:19:30 - 00:20:56
в зависимости от того что будет мой конвертер принимать мне что мне не мешает в дальнейшем описать конвертер для отдельной например ноды если мы представим это все к граф так и для цепочки над конвертер будет который будет использовать более низкоуровневые конвертеры для но до также возможно я сделаю конвертер который будет конвертировать список цепочек который в свою очередь будет использовать конвертер для отдельной цепочкой которые в свою очередь будет конвертировать отдельную ногу вы такая матрешка ok а то есть на
00:20:20 - 00:21:38
каждый из форматов потом нужно будет еще и по конкретному формату делать подобные подобные вещи то есть сейчас это xml а потом мы какими любые качественные форматы мы будем для каждого просто делал соответствующий конверт да почему это является хороший день примере сейчас которую первое приходит в голову потому что мы во-первых не как согласно прогнозу принципу например мы никак не затронем тот код который уже был написан не будем трогать сам класс который представляет маршрут не уже например существующей xml
00:20:59 - 00:22:25
converter для написания нового джейсон конвертера это будет сепарирование отдельный отдельная сущность вот который выполняет будет выполнять свою строгую одну задачу окей ну на самом деле в целом я еще имел в виду возможность использовать посетителя можешь ли ты предположить предположить как как можно было бы тут его используйте вообще уместно было бы его использовать у тебя в принципе не обязательно единственный да и из точки идет единственный маршрут до вот мы можем дальше из одного города пойти в несколько разных до предположить
00:21:44 - 00:23:15
это будет несколько маршрутов тебе этот пакт на ком нет честная и на знаковость я смотрела не он я не могу сейчас вам оперировать можешь рассказать если это да это это некоторый код который подразумевает фактически действительно посещение каждого из объектов в цепочке но например ты мог это видеть во flat ари внутренней части для того чтобы пройтись по всему дереву элементов например использовать как раз паттерн посетитель то есть там visitor ты говоришь что вот есть функция которая будет посещать каждый
00:22:36 - 00:24:01
элемент и что-то делать и таким образом это замыкается по всем но да это в принципе всегда удобно для различных списков графов и всего остального это вот конкретно направленный на них я просто дополню что да это прекрасное решение и оно конкретно в этом конвертере будете выполнять свою роль это та единственная вещь которая тебе придется которую тебе придется сделать то есть естественно тебе придется добавить метод для приема этого посетителя в но толкнула условный город который выбирает пользователь для
00:23:19 - 00:24:43
составления масса а потом посетитель может быть любой он ну например имплементировать некоторые интерфейс является некоторой функцией создав нужные имплементации под каждой из форматов ты просто будешь передавать конкретно конкретно этого посетителей он будет меняться по всем народом окей давай немножко еще по пишем код и решим небольшую задачку собственно задача примерно следующее у нас есть не пустой массив массив целых чисел то есть список в нашем случае в нем каждый элемент будет встречаться дважды кроме
00:24:09 - 00:25:29
одного-единственного у тебя всегда гарантировано всех элементов по 21 в единственном экземпляре тебе нужно найти тот самый единственный экземпляр требование никаких естественно накладывать мы не будем но чем чем продуктивнее ты решишь тем естественно будет лучше да конечно понятно задача [музыка] пожалуй я пишу сначала некоторые тест кейсы я правильно понимаю что а я повторяющим элементы которые повторяться они не обязательно будут идти и последовательно да естественно тебя в рандомном порядке могут быть написано но единственное что
00:24:54 - 00:26:33
тебе гарантируется это гарантируется то что в как от каждого будет по 2 и 1 единственного единственном экземпляре и то что массив не пустой вот эти вещи тебе не обязательно каким-то образом решать до apple так я предложу такое решение вообще сейчас словами пожалуй я буду probe отца я буду пробегаться по массиву мне потребуется всего один раз то сделать чтобы так как ограничение по памяти нет я буду сохранять непосредственно значение например в попу где ключём будет служить значение вот а в случае если этот кий
00:25:43 - 00:27:26
уже хранится в mapi я пожалуй буду прибавлять 1 к счетчику и значит в кей будет само значение value сколько раз она встречается например соответственно в конце после того как я продержусь пробегусь особенность бы составлять от он по память будет соответственно тоже о от n смену дополнительно память будет задействовано и затем я поэтом api пробегусь и соответственно посмотрю у какого ключа значение равно единице значит тот ключ и будет являться искомым числам что ты думаешь об этом и другом конечно я не я не против
00:26:36 - 00:28:32
[музыка] я описал массив теперь я соответственно по нему проигнорируешь и опаснее время начал готовиться к бочкам на выходе так что возможно если вы где то будете видеть похоже на поэтому скажите конечно и я создам нашу маму которую мы делаем сохраняет значение пускай она будет называться как бы мы назовем просто будем назовем ее склад где мы памятуем ее пес на там intent-а и я из исходные условия и там будут целые числа верно да да да просто носить соответственно я буду этот дак я соответственно возьму
00:27:37 - 00:29:35
сейчас мне нужно случае с 1 секунду мне интересно кое-что [музыка] так а [музыка] сейчас я немного туплю [музыка] соответственно [музыка] все руки водички да конечно можешь принципе подумать и не знаю там пару минут и этому никто сильно не расстроится ребята наверняка сами тоже пытаются решить эту задачу там в чате даже нам предлагают решение различные [музыка] так-так-так-так-так да она по это не было бы это сделать проще [музыка] [музыка] так что-то я туплю купим немного тогда по-другому тогда поступим немного по-другому я
00:28:52 - 00:30:55
[музыка] сейчас думаю на другим решением просто получить значение [музыка] можно соответственно ну из map и по ключу с помощью квадратных скобок на тогда а соответственно в случае же у нас если ключа нет тогда я кли значит мы просто получим нал я прошу прощения маленькая отсылочка в поэтому если мы попробуем так сделать мы упадем с ошибкой поэтому это зависит от языка довести до поэтому по это не есть элемент который мы можем получать я прошу прощение конечно мы просто например возьмем сохраним
00:31:41 - 00:33:24
файл аккаунт мы попросим о склада и в случае если в нац каунт [музыка] будет равняться на у да я просто в наш склад поживу экспертное число и допустим 1 если же там не нал и что-то лежит да [музыка] я просто положу склад и тот же только аккаунт газ один о xt стану повторять твоя получше вам об а затем я по ней а про интегрируясь но сложность по времени никак не изменится вот сейчас и главное чтобы я не сыпался скобочках готово теперь я делаю ну например это у нас не main nokia просто запрещу из искомого
00:32:38 - 00:34:57
естественно я просто любой спо мо принтер с и соответственно map [музыка] так окей значит просто по значку kiswahili us я что-то туплю туплю хорошо а вот да я забыл вызвать [музыка] теперь я просто делаю iv соответственно а и . окей а его ее равняется 1 да я принцу естественно а и . pain вот сложность времени атон по памяти мы проживаем у тебя тут 22 пробега получается можешь подумать что что можно было бы сделать чтобы решить в один пробег да ну если мы говорим о сложности то нсн 2n константы мы отбрасываем но
00:34:00 - 00:36:39
сложность все равно никак не изменится нужно надо устранены будет и в случае сны с двумя гайками когда раньше выйдет этот момент ну теоретически раньше может я дал я понял прекрасно да я понял тебя конечно это было лишним где светлана как я взглянул на задачу по новому в случае если у нас там уже что то [музыка] сейчас не раз пришла идея в голову я такой волк соответственно если у нас [музыка] я подумал можно буду на этом lc сыграть и отловить но мы же до последнего момента не будем знать то ли число мы
00:35:41 - 00:37:37
искали ну грубо говоря в конкретно в этом случае нам все равно потребуется обижает до тройки ну естественно один пробег полный по по списку даст тебе искомый результат без повторных пробегов по результирующего по результирующем api по факту то есть если ты немножко поменяю свое решение то этого легко можно добиться [музыка] да я кажется считал [музыка] сейчас 1 секунду мне просто интересно да все понятно что и как я думал я буду соответственно хранить случае с кем я подумал можно был по месту поменять
00:36:43 - 00:38:37
местами и хранить а ну да кстати что если мы будем хранить в качестве ключа количество повторений этого элемента сейчас я ем примонтируем в количестве кости ключа я буду хранить количество повторений в качестве целью я буду хранится мой числа тем самым я получу по итогу если дарт нигде не будет вызван эксепшен то я получу по итогу мапу состоящую из двух значений из двух пар из двух bucket of соответственно 1 баке будет с ключом соответственно один другой исключим 2 соответственно я беру по ключу 2 по ключу 1 и выигрываю не верно
00:37:55 - 00:39:34
мыслю ну если честно нет я немножко не про это говорил я даже не совсем уверен что это решение будет выгоднее чем то что ты изначально по даже предложил ok смотри давай подсказка у тебя все все элементы кроме одного фактически повторяются четное число раз таким образом ты можешь сыграть на этом четные числа 1 ну да два четное число да да я был каким то есть ты бы не смог с этим сыграть если бы не было сказано что остальные по 2 скорее всего утянул тебе пришлось решать хорошо например первые освоение которые приходят голову я могу
00:38:48 - 00:40:31
придумать конвертировать его и даже конвертировать просто пробег пробежаться по нему посчитайте сколько вхождение текущего элемента есть массив если число вхождений текущего элемента в наш массив будет составляет 2 нам не подходят если один подходит но словарей на самом деле ты смог и хорошо придумал просто и я и единственным ты мог упростить все это это не добавлять какие-то дополнительные значения случае 2 повторения просто убирать это из map ну то есть у тебя есть при первом он добавляется при втором он
00:39:44 - 00:41:08
удаляется на последнюю итерации у тебя останется один элемент в результирующем api потому что он единственный кто не два раза ну то есть если его нет то добавить но он будет ключом все правильно это изначально делал но не считать количество раз тогда тебе нужно и тореро ваться по результирующем api и фактически но еще раз пробежаться по некоторые длине по факту просто добавлять и удалять элемент это будет более более простой способ понятно то есть я получу если например на apple страшное если попробовал как
00:40:28 - 00:41:55
раз за меня заменить нужную строчку которую которая [музыка] сейчас на секунду естественно и органично и газ просто здесь делаю склад remus ай ай да верно но и соответственно у меня потом останется всего один и я там без разницы ну как минимум ты можешь использовать фёст которые по условиям задачи тебя будет гарантированно моему у него должен быть а вот если все было так просто да без разницы я просто free chat ты можешь для начала или к этому они к нему а тебе нужно обратиться к ключам естественно не книг самой мафия
00:41:15 - 00:43:05
список ключей вот почему действительно потому что это это рабом открывшего торговых соответственно и first окей хорошо в целом с кодом и наверно можем закончить и немножечко поговорить ну протона чем мы сначала писали на и это дарт но там немножко еще поговорить про флотар можешь ответить какая у дарта типизация статической или динамической конечно статической типизация довольно строгой окей можешь немножко сказать денег как он укладывается в конце по статической типизации да конечно ты на миг является
00:42:22 - 00:43:57
ключевым словом которая значит что в эту переменную можно положить все что угодно включая на в этом я отличие например на включаю положить можно все что угодно затем мы можем положить туда как другое значение например там положили один потом положили 2 так и значения другого типа и соответственно у нас изменится это можем сделать если можем и попробуем просто затем условно говоря мы пишем динамика ровно 1 потом мы когда были мчаться к конечно же тип не определится это будет условный обжиг вот соответственно
00:43:13 - 00:44:53
это является небольшим исключением из скажем так концепции статической типизации но она есть в языке вот например в случае если у нас есть ключевое слово var и мы изначально никак не проинициализируем эту переменную то значение у него будет roxy динамик вот один из таких моментов ok такой немного вопрос про типизацию если в дар те простые типы и если есть у какие да конечно в гортене а простых типов не все является классом даже нал является класс на ноут и сейчас имеют маленький большой буквы есть классно с большой буквы в
00:44:06 - 00:45:55
нос на уж маленькая это не объект ну если мы говорим о самих и на своим объектом ну да это маленький буквы это не объекта что это я поговорил прошу прощение это объект что за объект ну то есть про него чуть подробнее и возможно еще запутался но как-то раба устроено у нас классы в дартс и все наследуют объект и соответственно его методы и свойства кроме мало год и в этом контексте нам и так всегда было кстати что она не наследует объект или когда-то наследовал касательно прямо история дарта не знаю
00:45:05 - 00:46:45
возможно это отсылка канал серфить а вот я верну на отбор наследником объекту доном съедите я опрос недавно читал бог и все ну тогда то скорее всего увидел как поменялась структура типов с приходом нас есть там обычно 2 там две картинки память не изменяет в дон вы едете по стенам и эмигрировал да конечно получается грубо говоря но все любят картинки действительно как бы морская те седельные дерево типов вот и например мы можем в случае на лбу типов запечь его тем как нам такие не вот и условно единство
00:46:00 - 00:47:45
просекам будет условно нам супер типом простого in the эту переменную которое будет int звезды sky можно туда поместить не со звездочкой собачкам куда можно поместить соответствие соответственно переменную класса просто young ok можешь сказать в чем заключаются отличия понятий и raw эксепшен в удар те да конечно я у нас есть р-н и у нас есть эксепшен р.р. это те ошибки которые вызваны и которые не должны быть перехвачены как разработчика слыша например трагично это те ошибки которые происходят при разработке и они должны
00:46:52 - 00:48:38
быть они должны быть использованы чтобы мы знали как разработчики о том что что призрачная не так exception а же позволяют на мы их конечно же должны обрабатывать и очень устранена ошибка когда [музыка] в случае реке чем мы не убиваем exception-ы а ловим ррр и вот что не очень хорошая идея и соответственно и эксепшен нам нужны чтобы соответственно кидайте шубки сообщает пользователям что что-то произошло не так и ты можешь это перехватите как-то обработать окей ну и довольно и наш последний вопрос про дарт
00:47:48 - 00:49:29
там есть такое понятие как миксин что это такое и зачем оно нужно какие проблемы на может решить миксин соответственно он это квас удачного 100-го зачем нужен чаще всего миксины мы используем чтобы расширить некоторую функциональность вот мы можем туда вынести какую-то логику вот конкретно чтобы создать можем использовать но и бывают другие случаи конкретно можем создать с помощью класса например но тогда мы не можем определить конструктор человек но мы если будем использовать данный класс как миксин с помощью вы из
00:48:40 - 00:50:13
мы тогда не имеем права создавать инстанции этого класса если я ничего не ошибаюсь ничего не путаю также можем пометить причем слова миксин вот ну и указать например на что мы можем указать миксин имя на что-то на какой-то другой класс к примеру когда мы будем там получим доступ к его кива внутрянки поля методом так далее но его флаттере соответственно бензин гитара миксина бюджет биндинг с кедра биндер февраля но и также типа секир провайдер стоит миксину знаменитой окей а можно сказать какую проблему
00:49:34 - 00:51:07
зачем это был вообще делать какую-то цель решали когда добавляли в дар подобный подобный функционал не просто же так его добавили конкретно где я его использовал и прочту к практике и кейсы я слышал другие люди его использовали для расширения и для кого-то дополнительного функционала когда мы хотим получить доступ к чему-то каким-то какому-то коду но не хотим например иметь какую-то зависимость либо там что так станьте станут мы не можем x надеть мало классов в и соответственно тем самым просто можем помочь подключить
00:50:20 - 00:51:46
грубо говоря миксины получить дополнительный функционал вопрос в дар то есть множественное наследование нет окей хорошо но как раз в том числе эту проблему можно решить при помощи банального использования миксина окей давай наверно потихонечку переходить к смотру и [музыка] наверно какой банальнейший вопрос какие деревья или и афла тебе известно до заведи свой канал да я вижу согласно там и пример документации каким-то видосиком на ю тубе есть три дерева это вижу элементы и рендером джек ты но действительность насколько я понимаю
00:51:05 - 00:53:01
дерево видео точно ситуация вот это просто к абстракции которую мы называем вот извествен на дереве дерево виджетов это конфигурация приемных чего то чего она конфигурация она конфигурации элемента вот и соответственно элемент это более губная штука вот которые уже является большим имеют блага больше ответственность и она она связана с деревом рендр объектов который непосредственно уже мы видим ей которые рисуют точнее даже не так рендера джек то это лишь конфигурация того что мы хотим увидеть на экране и
00:52:03 - 00:53:43
действительности все рисуются flat ренжа не найти я проще вспомнил как я недавно смотрел на класс файлы удивлялся тому как много там external все решается на теле и рендера объекта это просто штука которая знает об лены constraint и она знает ну да клён и constraint и ее положение она условно говоря должна что-то отображать либо бренда обжиг параграф какое-либо она просто содержит себе что-то другие рендера объекты вот она является конфигурации того чему чего мы видим ok смотри ну я про самую холивар на тему
00:52:56 - 00:54:42
хочу дальше разгонять давай про дерево которое вроде как будто дерево по документации написано деле мясом говорю дереву всегда говорю дерево вот но как ты правильно сказал прям конкретно деревом которые мы привыкли она не является а можешь объяснить почему не является что им так не деревянного вот а что дерево все-таки есть деревом наверное вы можете называть то что такую структуру данных в которых надо знает условно говоря но это циклический грант все такое где но не знает родителя и стресс начала да ну грубо говоря вот
00:53:49 - 00:55:23
но самом деле виджета и они довольно глупые и тонкие и они не хранят этой информации а точнее они передают все свои данные как то что мы их конфигурируем они придут элементом и вот уже у элементы взять born можешь разговора дробный как они передают то есть они прям берут какие-то параметры которые передали и не парят или и мент вот себе ни в чем себе не отказывают и дальше это все принадлежит элементу или ты что-то подрос под этим умел это другое да да я не оговорился наверное я пожертвовала другое у
00:54:39 - 00:56:14
каждого бюджетного стоит на стоит должен быть соответственно перегнул должен быть метод клеит элемент непосредственно у элемента есть ссылка на виджет вот с которым он связан вот и непосредственно элемент уже как-то работают с какими-то данными но бюджете конечно это и иуд обильная часть может чуть подробнее с какими данными он работает элемента ты же так [музыка] ну например верно сказал встать не так вот ну например возможно какие то нет не могу привести наверно примеру так что я вернусь муки ладно
00:55:26 - 00:57:25
давай еще немножко в эту же сторону ну зачем ты же его ребята из ну точнее по какой-то причине ребята из гугла сидели который флота вписали и даже в документации это назвали дерево вряд ли же ней совсем похоже вещь назвали можешь сказать что в нем похожего на дерево да конечно днем похоже на дерево целом структура возможно которое она описана описано виджета в виджетов есть child of хотя это конечно же просто именование вот и мы можем умозрительно увидеть возможно какие-то вещи они на уровне биллингов когда
00:56:43 - 00:58:22
вы работают но жалую я скажу что просто как-то умозрительно это дерево получается вот ну и в целом когда мы работаем условными виджетами waffle atari переставляем виджеты как-то их меняем это все можно рассматривать как дерево ну потому что очевидно какие-то там циклы не могут быть окей давай мы еще про одно дерево вспомним цветущий и до чтобы еще пара дно может быть еще есть какое-то дерево кроме тех по которой мы проговорили я слышал еще про диагностик был 3 [музыка] она используется возможно какими-то
00:57:33 - 00:59:21
screen ридерами и так далее она используется я сейчас возможно ну да она используется чтобы хранить эту информацию дополнительную вот я слышал о центре это непосредственно то что непосредственно на канвасе вот рисуете а знакомые тебе понятия semantic 30 дерево семантики да да дерево семантики возможно чего нужен да возможно она как раз таки используются либо screen ридерами либо используются то что мы видим в в дар a scream лидером ты что имеешь ввиду сейчас ну возможны какие-то но скорее гидры
00:58:38 - 01:00:35
программы которые отсчитывают какую-то мета информацию ну и для плохо видишь их например для них руки не подавляют интерфейс либо же то что у нас есть бак фил properties я точно не уверен куда эти данные уходят возможно из них как раз таки и строится но в инспекторе ну очевидно вышли баку property сможем инспекторе посмотреть какие-то данные которые мы туда передали костанае вот возможно это дерево является построена на основе диагностику был либо semantic vod-ok я предлагаю тебе еще наверно последнюю
00:59:41 - 01:01:08
задача она будет немножко практической это же по разгонять я сейчас у нас с тобой есть приватный чат вот там справа исправить эти стены ссылочку и мыши и тоже открыть пошарить я переключу выведут в экран будь у меня должны открыться dribble верно да да да это три бога просто первый попавшийся dribble который попался мне сейчас я пошарь экраны готово отлично смотри это просто первый попавшийся макет приложение мобильного которое можно можно например ну например попытаться сделать если мы будем говорить про
01:00:29 - 01:02:06
этот экран с точки зрения ну допустим даже не бизнес-логики верстки мы говорим сейчас про левый экран но проблемы можем чуть позже поговорить смотри можешь просто ждать какие моменты здесь на данном экране с помощью чего могут быть реализованы ну или какие-то моменты которые могут вызывать проблемы в реализации все что угодно с помощью чего бы каких на чтобы ты раз на какие по части ты по разбил экран что снова щучьего мог реализовать вот в таком направлении о разгоняем немножко да конечно пиццы мы видим экран с
01:01:20 - 01:03:04
довольно необычным интерфейсом и нам требуется возможность кастомизировать стандартные виджеты мы видим сверху я бар который является которая и сконфигурирован другому не ожидаю стандартный ниже мы видим список из карточек причем я заметил что тег я карточка должна быть больше визуально чем другие естественно когда мы или блистать эта карточка должна быть больше вот ну и дальше мы спешим видим список уже других элементов сервисов программ вот ну точнее эта транзакция которой мы совершили мы видим
01:02:12 - 01:03:42
иконку какое-то сообщение стоимость ну и внизу мы наблюдаем многие 6 бар вот я вижу что в данном случаем мы кстати можем даже использовать костас кровью из libero почему потому что возможно здесь потребуется какое-то сложное сложное поведение скролла и элементов может быть много и чтобы как то возможно улучшить performances за используемых ну и также у нас списке они довольно разнородные хотя можно это решить и просто listview отвесная бар не уверен что возможно его будет прям полностью возможно реализовать
01:02:58 - 01:04:35
классическим и баром просто передав туда условный wedding либо тайтл таковым не добьемся поэтому я предложу предложу написать скорее за использовать sliver бар миллиона возможно написать свое поведение но свой виджет и поработать над поведением чтобы хотя что требуется то твой бар и вероятно при скроле например вниз к транзакциям мы хотим чтобы и бар и карточки оставались если так что в целом выглядит довольно логично этот условный scaffold роу из аватара двух текстов и иконочки с модификациями затем
01:03:52 - 01:05:46
список тут конечно будет надо будет работать над тем чтобы элемент был чуть больше чем другие я применял какие-то сторонние пакеты из-под до его для реализации этого но мне кажется [музыка] мне кажется это можно будет решить а условным контролем за scroll им и в тот момент когда мы будем скролить например какой-то из элементов будем величать а как ты предполагающих мы говорим про вот вот эту всю штуку да у нас научит его транзакции явно относится к карте единовременный момент только они одна кошка может быть вот такой активный или
01:04:49 - 01:06:42
мы можем посередине как-то остановить мне кажется нет в том плане что если мы остановим на середине то точнее как бы нет мы не можем смотреть на середине да даже если можем у нас все равно будет выбрана и активно всего одна карточка вон но что-то предположить с помощью чего готового можно подобного поведения попытаться добиться сейчас я подумаю конечно [музыка] ну классический пример возможно какое-то p&g пью да если я не ошибаюсь а там как раз вполне можно настроив определенные параметры поищу добиться
01:05:44 - 01:07:22
чуть ли не ноги 21 поведения вот так и есть окей целом наверно можно сказать что мы этот собес с тобой можем потихонечку заканчивать я надеюсь тебе было интересно во всем этом поучаствовать нашим зрителям было интересно это посмотреть ну и естественно огромное тебе большое огромное тебе спасибо и небольшой приз тебя будет ждать чтобы получить напиши на данный момент мне я перенаправлю тебя к никогда не сможет выдать тебе этот приз собственно на самом деле мы сейчас завершаем и спасибо всем кто участвовал
01:06:41 - 01:08:41
надеюсь вам понравилось в данном формате смотреть интервью серая пока я прострел поблагодарить тебя а твои интересное это был интересный эксперимент и с не время начал усиленно особенно сильно что-то изучать и я понял много вещей и этот себя сказал что даже если ты думаешь что ты что ты знаешь и что ты узнал всегда есть что то еще что за этим скрыто в только стимулируют вот и нужно всем всегда по-моему это и истина которую ты сейчас сказала и нужно вот так вот в рамочку и куда то куда то обязательно на очень
01:07:44 - 01:09:22
видное место потому что ты действительно прав всегда когда даже ты пошел наверное скорее мне кажется если ты уверен что что-то знаешь скорее всего всегда найдется информацию о которой ты смотришь это kvoll и я лично так постоянно делал открывает для себя что то новое спасибо тебе на самом деле за то что ты вызвался ему все этом участвовать и всем кто вместе с тобой сегодня присутствовал тем до встречи и всем пока всем пока
01:08:40 - 01:10:05