Подготовка к собеседованию на Node.js 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 каналы и чаты
Транскрипция видео:
и сегодня мы с вами проведем импровизированным мини собеседование на должность middle бэкенд mogers разработчик по просьбе наших подписчиков на самом деле формат со беседы здесь немножко изменен и все моменты которые мы будем обсуждать я буду дополнительно пояснять чтобы дать не только какие-то вопросы которые вам могут встретиться на собеседовании но и полноценное развернутые ответы на них вперед [музыка] итак у нас сегодня небольшой импровизированное собеседование на но джесс разработчика но импровизированная
00:00:00 - 00:01:12
потому что на самом деле михаила я к сожалению не могу брать на работу нас на текущий момент нет вакансий от разработчиков но михаил действительно ищет работу как многие из разработчик какого уровня наверно где-то на beltline себя чувство на midland замечать поэтому сегодня у нас такое небольшое открыты собеседование по вопросам и сначала пройдёмся по может быть простым для мидла такой женским а потом уже более таким middle но джесс разработчик вначале расскажу о себе и о своем опыте и вообще что ищешь качестве работы
00:00:35 - 00:01:48
в качестве опыта у меня за плечами почти шесть лет 1с а так исторически сложилось как любят говорить [музыка] очень много там всего познал с многими ребятами познакомился но и за дениса вытащен для себя в основном как раз таки и понимание как работают базы данных в это принципе самое основное чтобы тэнасе можно узнать и понять а до этого вуз и колледж был где в основном писал примерно год на шарфах на плюсах вот а потом так получилось что переключился на ноту подвернулась так вот поносе опыт сейчас где-то полтора года
00:01:13 - 00:02:59
поработал много с чем в основном работал именно с typescript а мы фреймворком с микро сервисной архитектура позвонка с манга чутка одесса до фронта не дотянулся поэтому пока что fools тпк но не full 100к backend поставим будет зависеть не отлично кого ты снова ok хорошо но начни тогда наверное стоит бисквит не будем считать что бы java script детализированным и проходится не будем а вот по typescript у как я мне кажется основному языку на которые мы действительно можем описать хорош приложений на ноги - пройдемся во
00:02:08 - 00:03:28
первых такой каверзный вопрос ноду может исполнять typescript ну по сути может потому что ну чистый так typescript они по моему добавляют в новую версию или наоборот а typescript те в новой версии по моему появляется возможность прям чисто на ноль и писать там какая-то интерпретация меня после путаешь fps-модуль и поддержку в 3 с модом до этого дойдем до нет вот чистоту написал код на typescript и как вообще расскажи процесс после так написал код что происходит за этим чтобы она исполнилась у тебя на
00:02:50 - 00:04:03
ночь есть на сергий по сути typescript сам компилировать тебе весь свой код в java script вы уже но до запускает как раз таки вот этот скомпилированный typescript он скифский кот-о-фе правильно то есть на нем это может делать соответственно typescript компьютер может еще кто то результате есть у нас компиляция хорошо а как вообще после того как есть поскольку то глубоко понимаешь что происходит после того как java script at передается в ноду из того что я помню и что у меня наверное собеседование спрашивают это
00:03:30 - 00:04:46
как раз таки оптимизация кода которое выполняет но до в своем движке то есть но даже состоит из многих различных компаний давай если зато сам движок v8 либо уфа по-моему так называется штука который event лук 1 cpu losing синхронно этом вот вывод потом там почти теперь парсер я помню ссн всякие штуки для си си плюс плюс интеграции как я помню сама фишка но джесс еще zip но вообще не помню что это такое это уже детали хорошо предположим вот джесс код мы соответственно запускаем наш компилирует темп skytop джеймс говорим
00:04:12 - 00:06:07
но ты исполнил вот этот код что происходит дальше ну изначально но до его пытается оптимизировать поэтому чем хорош typescript тем что оптимизаторы внутри но да они проверяют все эти функции на то какие у тебя данные приходят и если тип данных всегда один и тот же она это оптимизирована самом деле не оптимизирует его до исполнения то есть оптимизация процесса исполнения и это не надо делает на самом деле а что внутри но ты как разделать вот эту оптимизацию вообще которые ты говоришь точно наверное не либо в
00:05:12 - 00:06:23
я наверное не скажу точно что и какая составляющая внутри но да это делает но вы 8 самом деле сама потому что и местный кто исполняет java script код внутри ноды это v8 он их в нем как раз таки optimize ради оптимизаторы все эти штуки на и до исполнения он никак не поймёт можно оптимизировать или нет а в какой момент вообще так происходит оптимизация ну если так посмотреть ту наверно как-то но должно по-хорошему делать до запуска приложения как-то все это проверять но мне не всегда не думаю что это
00:05:55 - 00:07:15
происходит до запуска это скорее всего в ран тайме и он как-то это все перестраивает потому что там какие-то древовидные алгоритмы как я помню используется для всего этого и как раз таки связано еще с очисткой памяти и возможно там он тоже это пытается оптимизировать сейчас давай разделим значит у вас есть джесс код для того чтобы его вообще движок мог скушать его что преобразуется это java script код чтоб потом уже ближе ближе быть движку как разбирает во что разбирает его в 8 как я представляю по моему но
00:06:41 - 00:07:59
естественно все разбивается в итоге в байтовые к финальной совершенно верно баритовый код до перед ним все равно тут еще есть между можно джесс джесс по моему его разбивают все или все плюс плюс как раз таки и он разбивает в абстрактно синтаксическое дерево потому что то что мы написали как бы для нас словами движку нужно как-то понять поэтому он берет и преобразует наш java script код в абстрактно синтаксическое дерево и дальше уже там зависимости от конкретной радиатора преобразует бойкот определенные оптимизированы или нефти
00:07:22 - 00:08:34
мизерный код удобренную оптимизации егэ оптимизация что это глубоко не вникал в это но как оптимизация это то что он в этом древе как раз таки если тебя функцию приходит один и тот же тип или один и тот же объект ну то есть всегда статично то он и так он пытается оптимизировать точно не скажу что он это делает но если тебе вдруг потом в этот в эту функцию и так далее пролетает другой тип данных он уже понимает что его оптимизация неверное он отдает обратно нади оптимизацию я так понимаю что в древе как раз таки для другого типа
00:07:59 - 00:09:21
данных строится другая абстракция ну не совсем так ты у вас растет этической деревня строится один раз а дальше там зависимости от исполнения он может быть передано разным движка но тогда из глубоко не капал для того что движки можно не разбирать там на самом деле внутри v8 есть несколько компиляторов которые отвечают за разные стадии поэтому давай ближе тогда к чуть выше верхнего уровня миноги самый интересный вопрос но дата 1 по точно ту приходе тут всякие сишарпа разработчики говорят влада ваше но да вообще
00:08:42 - 00:09:43
однопоточный но она как бы одна поточная но на самом деле у нее есть потоки и которые как раз таки в ее конфиге задаются которые обычно устанавливается на то сколько у тебя ядер на устройство на котором ты запускаешь поэтому в принципе она многопоточная но не совсем ну а вот уже о декады один поток что имеется ввиду то есть она может одновременно обрабатывать там один входящий запрос на http или что нет наверно скорее про то что ну да то по точно это простых вызовов наверно больше говорят то что его очень легко
00:09:13 - 00:10:33
заблокировать он весь исполняется в одном потоке он как и верную основной поток у нас один хорошо а можно и вообще создать несколько потоков или как вообще реализуется многопоточность многих случае необходимости но да как я помню сама автоматически выводит в отдельный поток работа с файловой системой и как я помню есть объект типа working пэдов которые позволяют тебе вывести все это в отдельный поток никогда на практике ими не пользовался только на теории слушал и видел от red bull такой сталкиваться с понятием треку вообще что
00:09:53 - 00:11:13
это такое ну наверно нет но это правда и де ривера ван их трейдов которые могут выделяться на определенные операции то есть у нас на самом деле когда работает но да она может работать на самом деле основной поток один но обработка http работы с файловой системой это на самом деле выполняет уже не v8 а вообще кто выполняет и кто администрирует все вот эту последовательность и вызовов ну последовательность вызовов это по сути либо как раз таки потому что вне иван тут крутятся и она под посадку тоже
00:10:33 - 00:11:45
в ней что теперь возможно http парсер судя по названию него попадает у нас в определенном библиотеки которые работают с http дальше le beau и крутится и обрабатывать ще расскажи про любимую видишь что узнаешь как можно ли как-то оценить производительность приложения поли пюре и так далее ну как обычно это такие теоретические вопросы которые на самом деле не так много спрашивают на мидл оф наверно это больше к сеньором в основном про ли бувье спрашивают то ли костаки про иван клуб потому что при ловле . но да и так
00:11:13 - 00:12:41
далее ну плюс мосинка боясь информирование event log это главная фишка но да это то где твои приложение как бы все исполняется по сути это такой цикл который постоянно крутится и проверяет что он должен сейчас сделать что он должен там с так вызова дать что он там должен был отдать таймера хотите поставить и все это проще то есть у него он разделен на несколько этапов этот таймер и pending колы idol и пол чек клаус callback и между всеми этими проверками он всегда проверяет на как раз таки асинхронные вызовы и
00:11:56 - 00:13:26
такая низком уровне войну моря штука процессных stick который именно следующий тип исполнения команды используем никогда нас точнее то да окей все верно если что-то искала что это то где исполняется код на самом деле исполняла все равно v8 мы понимаем но там пиве он администрирует как раз взаимодействия v8 с другими внешними системами там действительно цикл который ты правильно описал u-key а вот кстати в этом цикле например есть таймер до 1 из фаз допустим ты сад поставил таймер что я хочу чтобы таймер сработал через
00:12:41 - 00:13:56
10 секунд через сколько сработает таймер он сработает минимум через 10 секунд максимум до бесконечности правильно потому что можно вдруг заблокировать потом а блокировка потока я думаю самая большая боль те кто никогда не знакомился с mogers общак работает у любви это то что мы можем блокировать наш единственный потока и нашей вин клуб останавливается мы можем это наверно это наверно больше боль не только но да это боль наверно всех кто вообще не представляет как асинхронность работает и взаимодействия клиент-сервер но если
00:13:19 - 00:14:36
брать языки голода у тебя там отдельные ты-то можешь выделить трек под каждый запросов дожить у тебя какой-то один из трендов в результате заблокирован у тебя предложение продолжает работу потому что и другие thread'ы которые это делают поэтому тут не такая боль в моде это прям особенно актуально многим при sharp разработчики видео-вопрос используют синхронная запись файлы а потом уделяет почему м and loud так медленно работа вот кстати про медленно стивен глупо как общаться нити что твои приложение
00:13:57 - 00:15:02
начинает тормозить с точки зрения оптимизации особо сильно не подходил всегда на практике выяснял но каких моментах у меня все когда сервер так складывается гармошкой [музыка] это обычно забивается именно с так вызовов то есть по нему можно понимать где у тебя очень сильная задержка гностики стек вызовов ручья может не забиваться забивается когда ты начинаешь делать рекурсию например очень длинный у тебя рекурсия далеко не всегда оксид стек а вопрос больше что у тебя есть какие-то например в том приложении медленные
00:14:30 - 00:15:58
операции которую ты например неэффективно описал к примеру ты перебираешь матрицу двумя циклами не очень эффективно операций кстати какая сложность такой операции перебор ними циклами все время забываю как это рассчитывается но там что-то palm 10 во второй степени или как-то так она оказалась ссылками квадратичной сложность не distar а квадрат то есть и следить один цикл и просто сложность о из квадратичного квадрат вот например вот такая неэффективную операций она может тормозить сильно твои приложение и если
00:15:20 - 00:16:29
какая-то метрику ноты который тебе это покажет скорее всего есть но никогда тоже с ней не сталкивался ну хорошо а это если логически как бы прийти вот смотри у тебя длинный цикл туда то есть длинна вызывается строка вызовов работает у тебя в это время что сын клубом происходит идёт перебор массива перебор максим ну то есть он просто платит постоянно одни и те же функции не вот иван он и завяз event log проверил на первом grade таймер и каким-то прошли не прошли доходит соответственно ду где начинается уже перебор иван клуб как
00:15:57 - 00:17:16
продолжает крутиться обрабатывать запросы если ты перебираешь массивы по сути нет он должен пока он не выполнит эту операцию он дальше не перейдет до весны я уж он грация в intent фактически ждет то есть ты можешь пробить протестировать берешь экспресс запускаешь там длинный перебор массива по одному запросу пытаешься отправить второй второй запрос не доходит потому что у тебя все в and look ждет так вот если вы учите продолжай скорее всего я просто из того что я видел из того что я знаю это обычно ставились какие-нибудь там
00:16:39 - 00:17:48
таймеры на проверку выполнения кода и так далее а вот именно какое-то средство для просмотра что тебе конкретно повесил назад и я никогда не встречал ну тут даже не вопрос что повесил на самом деле это тоже можно с помощью chrome и бак тула ты можешь подключить knot узкому процессу и посмотреть стык вызовы длительность выполнения той или иной функции больше вот что сын то есть если у тебя много медленных операций the event лук будет как работать медленно не будет работать если у тебя напрягает операции твой event лук
00:17:16 - 00:18:19
начинает очень медленно функционировать и вот этот оборот иван глупо как раз может служить метрикой того что твое предложение написано эффективный и 2 где-то действительно блокируется и для решения всего такого используются как раз хотелось спросить вот если тебе нужно перебрать все таки квадратичный массив что ты будешь делать но если она все равно нужно и никак это не оптимизировать то отправляем все в синхронность подробнее что-то делаешь так как я не так долго на ноги я в основном из видел только
00:17:50 - 00:19:05
синтаксиса sing a way to и слава богу я пропустил colbert hell он так назывался помощью никого эволюции руление не перебили уж прям как массивчик ну понятно мы создаем асинхронную функцию которая нам должна вернуть какой-то promise условно то есть прогресс это обещание того что нам должно вернуться такое значение и там где нужно мы отправляем это во синхронность плюс если мы хотим это оптимизировать мы можем как ты наверно перебор с двойным циклом допустим второй цикл итерации каждая отправлять отдельным потоком и затем и
00:18:26 - 00:19:51
давайте когда ты говоришь вот даже если дело синхронную функцию с перебором у тебя будет как бы все все но подняться в том же потоке или что произойдет асинхронная функция она когда выполню когда мы ее вызываем она уходит по моему в отдельную штуку не не помню точно куда она там уходит забыл как называется но она уходит она просто не блокирует ивенту то есть иван тут продолжает работать как работала эта функция отдается на исполнение и в какой то момент когда оно исполнится она виде callback а вернет
00:19:09 - 00:20:31
нам какое-то наше значение то что мы ожидали и в ын сук его уже обработает через вот этот вот callback его достану результат сказал правильно единственное что можем ли мы вообще все что угодно как бы отправить фиг знает куда или как бы и все таки есть какие-то определенные операции которые там делегируются а которые типа перебор массивов напрямую так ну нельзя сделать с точки зрения не смотрел очень к сожалению такие пиратского тирион нужно выполнить два слова потоки типы перебора массива то есть ты либо должен как-то
00:19:54 - 00:21:11
сделать сижу на библиотеку сделать билдинги на эту личную библиотеку и передать это выполнение session алиби через этот а если все таки хочешь это сделал и снова потоки то там у нас есть выделение либо процессов либо working трейдов с ними думаю не сталкивался с можете отрядами только просто слушанием ну то что как я и раньше это то что но то как бы одна по точно novartis freedom можно выделить отдельный потом да совершенно верно мы можем действительно сложной операции выделить в отдельный поток если занимает у рублей на самом
00:20:38 - 00:21:41
деле выделение тоже занимает какое-то время потому что нужно прежде не и потоков там просто выделить потока и следует мы хотим создать новый под процесс то это клонирование процесса переключений ночи еще коммуникация между этими процессами хорошо вот например кстати поговорим про раз уж мы говорили про производительность мы например захотим на ноги конвертировать картинки классическая задача которую мы наделали из png ввп используем какую-нибудь библиотеку скажем sharp как самом популярном библиотека которые нам это делает за
00:21:09 - 00:22:23
счет чего вот эта библиотека sharp на ноги работает даже производительнее чем какой-нибудь нативные библиотеки на сишарпе почему но даже 1 по точно не страшно ты меня прям в тупик поставил где вообще будет выполняться конвертации кто будет выполнять эту конвертацию но документацию явно будет делать не надо какой-то отдельной раз таки движок который под это все предназначен поэтому скорее всего все это запускается в отдельных маркер fredag так как это наверное какая-то работа с файловой системой
00:21:48 - 00:23:02
отдельная библиотека как раз таки наверно там что-нибудь на всех написано уже наверное 1000 библиотека была совсем говорит маркер трейды будет это вызов с лишней библиотеки а ok а за счет чего мы можем так делать почему мы можем вызывать консультацию изображение что есть у многих что позволяет это делать как раз когда взял структуру но да ты правильно сказал что там есть бен денги верно венки на эти прекрасные библиотеки поэтому да окей ну производи стоит с синей будем хорошо короче поговорили примерно во
00:22:30 - 00:23:55
внутренности движках как бы на самом деле понятно что в на практике из этого используются не все тоже конечно мы обсудили поэтому это абсолютно нормально что детально можно не погружаться в какие-то вещи но вот по потоки почему это быстро это полезное знание для любого разработчика хорошо так и джейсон что это пока jison это по сути штука которая тебе описывает всякие библиотеки которые ты туда ставишь зависимости описания твоего сервиса то есть твоего приложение какая там лицензия его название версия
00:23:21 - 00:24:52
авто окей аптеки джейсон зачем нужен пока чеснок джейсон это когда мы используем какой-нибудь менеджер пакетов типа npm а то когда мы устанавливаем вся наша зависимость и он создает пока число кв-1 которой он записывает то какие версии сейчас у нас установлена а зачем если уж сгибу коммитить один из частых вопросов которые мне это раньше спрашивали типа а вот у меня тут лук файлы овощи камень вот файл точно комитет не надо потому что это именно это грубо говоря файлик того что у тебя сейчас установлена для твоего приложения
00:24:05 - 00:25:33
соответственно в прокате штуки мы указываем version на steam это можем через такую стрелочку галочку указать то что мы можем использовать более высокие версия но это означает что мы можем использовать никакие это не мажорные версии а как раз таки минорной версии bug fixes которые не сломают ничего нам и при установке то есть используем какую-нибудь команда типа npm а и мы можем получить более высокую версию и как раз таки папочки пока челку мы это все сравниваем и смотрим нужно ли нам обновляет что-то не нужно нам обновлять
00:24:50 - 00:26:08
что то что у нас установлен то есть просто лишние операции убирает комитете ну так как коммитить его не надо потому что по сути каждый раз когда мы тестируем наше приложение или развертываем его вдохе решить все пакеты нужно ставить с нуля до ну вот тут как бы вот этот человек благодаря которому может сломаться все зависит массив проекте но смотри то есть ты теоретический сыр правильно что типа и мы ему там есть в prison несколько аннотаций которая позволяет писать что мы типа поднимаем там например баг
00:25:30 - 00:26:42
только fix только минор или мажорную там уж разными этими указать и теоретически конечно же минорное обновление библиотеки не должно сломать обратный совместимость но это же ты же понимаешь теория npm это большая дыра любой паттерн и тогда программирование про любой протокол на самом деле кору чемпионат большая помойку многие пакет имеет версия 0 . там 14.1 а когда обновляет какие-то крутые версии они такие 015 один становится и проекте шлок на самом деле большая ценность которой многие почему-то недооценит когда ты
00:26:05 - 00:27:24
устанавливаешь ммм как и шлок фиксирует текущей установленные версии но соответственно то запускаешь если твои приложение работ дед-то этот пик из шлок хоть необходимо закомитить и в рамках сборки использовать уже команду не npm install чтобы заново сгинете 5 штук а and mc and mc возьмет зафиксированные зависимости из и пейджа и установит только их то есть если например у тебя все работало а потом какой-то нибудь не хороший разработчик библиотеки обращаюсь к вам разработчики или отёк скажет что короче я подниму минорную
00:26:45 - 00:28:02
сделаю breakin changer то следующий твой pipeline с простым кем он стал он упадет в ноль поэтому чтобы такого избежать лучше всего при сборках использовать in persian дипика чувак ты всегда точно знаешь что то что эти работу на компе будет работать и вроде а вот сантим он стал им уже нет кто то что то поменял вне все твои приложение собралась по-другому функционирует по другому поэтому рекомендую к америке тоже спорный вопрос зависит от того какие библиотеки используются если народ к не библиотеки используются особо
00:27:23 - 00:28:32
комитете его не нужно но все равно у тебя ж ты не можете на внутренних написать реферат внешне зависимости да а твое внутрь все равно содержит кучу внешних а если посмотреть на все дерево вложенность на 10 уровень и вниз там будет 1000 библиотек поэтому ты к сожалению не сможет контролировать каждую прядь и куш проверять поэтому самое оптимальное работают у тебя к метешь log file is значит точного тех кто установлю будет камень главное чтобы другие разработчики когда себя восстанавливали они тоже пользуюсь нет
00:27:58 - 00:29:01
демон стал npm сиань для того что установить фиксированной версии они бедно одна из главных наверно проблема да пока челкой поэтому обычно просто p-cad же хардкоре от нужная версия и стараются их не трогать хорошо тогда теперь будет прикладном любимый фреймворк и почему но мест потому что он очень заставляет разработчиков писать по правильным паттерном то есть там даже больше не фишка dependency injection а скорее всего фишка в том как приложение должно само строится то есть он тебя заставляет описывать
00:28:30 - 00:30:02
контроллеры сервисы модули все это разбивать все это становится структурирована красиво правильно любая твоя ошибка в структуре очень быстро и легко обнаруживается то есть какие-нибудь фигур сильной зависимости кота с которыми я постоянно сталкиваюсь когда как раз таки дорабатываю задачки с женами и это очень все хорошо улавливается + код не какой-то там 1000 строковый один огромный файлик а все раскидано все понятненько наверно вот по насту вот именно вот это вот самое главное то что нравится ты
00:29:17 - 00:30:37
упомянул детальность injection расскажи что-то спасибо такая штука которая наверное тяжело вообще описать это условно такая вещь которая подтягивает тебе инстанции классов по необходимости в другие твоей модули и именно не создает новый инстанса уже существующей то есть это по сути и производительность увеличивает ее объем памяти который использует приложение уменьшает скорее всего какие-нибудь еще проблемы в рандами решает то что использующими на 1 инстанции этого класса они плодишь их несколько на
00:29:57 - 00:31:12
каждый вызов и если не нужно каждый вызов отдельные чё делать-то то по сути ты можешь также сделать как же можешь все равно взять через и new дернуть этот instance класса создать себе в новой но мне в нее нужно ещё 4 зависимости передачу делать я хочу и станции ровать какой-нибудь я не знаю сервис которого 4 зависимости у самого так команде репозиторий не знаю ребят рынке у контроллера еще чего-нибудь а по-моему там где то в настройках можно было указать как ты все это инициализирую что есть можно это
00:30:39 - 00:31:57
глобально за инжектить можно в каждый отдельный сервис отдельный инстанции загнить соответственно если тебе нужно какое-то уникальное то по сути можно указать что мы хотим от за инжектить именно в этот сервис какой-то другой сервис именно в новом инстанция ну та самая обычная это наверное самая распространенная тема и с практиками который встречался как раз таки какие-нибудь глобальные модуля глобальные dependency injection используется для каких-нибудь сервисов перевода допустим то что у тебя сейчас
00:31:17 - 00:32:30
работаю у нас там много языков поддерживается соответственно у нас есть отдельный сервис который глобальная проводиться чтобы мы могли перевод везде использовать ну глобальный правой youtube это у нас вот модули injection ноги ты ты правильно сказал относить того что действительно мужем инстанциировать на каждый использование сервис свой instance более того мы можем использовать на каждый входящий запрос у нет нас там есть такой скоб которые каждый запрос и на самом деле что нужно уточнить не обязательно
00:31:55 - 00:33:03
это может быть класс не приносит же action может работать не обязательно с классами и ты можешь использовать просто константы или ты можешь использовать factory фабрики который позволяет создать а вот кстати правую фабрики вообще паттерн и какие паттерн и на практике использовал парочка in the wake up и конечно же потому что мы все-таки ближе к нас туда лишь группы теоретически по паттернам очень мало изучал то есть как бы два основных это соль и цедрой ну наверно это всем известный это не совсем паттерн и это принцип
00:32:30 - 00:33:38
залитый принцип ту ночь репетиторов я больше про поведенческие паттерны и структурные паттерны для структурирования кода который там при больших приложениях места при дождались у меня с этим а очень запутано все выходит потому что для меня есть сам по себе паттерн такой в котором есть еще какие-то парочка момента как то говорил можно фабриками можно вот так вот просто классами и сервисами инжектить можно отдельно за проводить какую-то там константу с помощью которой потом сделать instance то есть описать
00:33:07 - 00:34:27
интерфейс дать ему константу с названием этого класса который мы будем делать сделать его от него какой-то уже свой instance свою реализацию ее тоже уже проводить как это на самом деле называется никогда не интересовался даже не на месте на самом деле предоставляет архитектуру есть как бы устоявшиеся паттерн и вот например при непростые простейший пример потребность энглтон который реализуется в рамках архитектура места . разделенности injection где у тебя один сервис задается всего один из сервиса и во все места где ты его
00:33:51 - 00:35:20
используешь он проводится это как раз реализация паттерна синглтона поэтому ok хорошо если говорить про окружение не стану не принципиально основной фреймворк мест какие вообще есть мнение о рынке которые достойны внимание какие использовал ну самое популярное то естественно the player и и наверно везде абсолютно используют плюс мы не она на самом деле плюсы-минусы они там как раз на твое мнение мне она не понравилась когда нужно было работать с ней зависимостями то есть когда мы именно делали таблицам и нет у
00:34:36 - 00:35:59
меня там начинаются некоторые проблемы со всем этим также у нее проблема с безопасностью то что иногда нам нужно писать какие-то очень сложные запросы и большинство людей там используют банально вот этот кьюри и никак не экранируют данные то есть мы параметры там вставляем в текст запроса ну как бы если кто то знает про такую дырочку то тебе в api могут прислать вместо какого то значение которое ты ожидаешь там какой-нибудь айтишник пользователя еще под запрос который тебе выдаст все данные ли чего-нибудь все сотрет
00:35:22 - 00:36:52
трон кейт красивый type r имеет как я помню очень тяжело экранируется и на самом деле я не видел нигде красивые реализации как его используют возможно в этом минус но у той прм а также плюс то что ты описываешь свои структуры баз данных сразу париками которые ты можешь использовать в коде то есть интерфейс и до того что там и так далее это в принципе все описывается ты это можешь всего использовать в коде у тебя база данных будет прям один в один к тому к тем объектам которые ты используешь в коде это вот из плюсов
00:36:07 - 00:37:26
миграции достаточно тоже удобно и которые стоим стоим с темпами авто генерятся вообще никаких проблем запускаешь приложение если кто-то делал какие-то дополнения базу данных изменения то при запуске приложения оно у тебя автоматически все это в базе данных генерит но если локальную базу данных у себя поднимаешь и тестируешь в принципе удобная штука но не для всего наверно подходят некоторые вещи очень тяжело реализуется как раз таки вот эти все было решено связанные с ними и наверно не очень наглядно раз таки тоже вот из-за этих
00:36:47 - 00:38:16
всех relation 2 который как раз использовал это было призма призма наверно поинтересней больше возможностей дает проще реализация всех связей тоже миграции есть но вот с ними разобраться не получилось все что призма мне подавала это очищала то есть на пустую базу данных отлично ложится на уже существующую вы ходили какие-то проблемы именно с миграциями но призма в отличие от той поры мат требование отдельный файл в котором на своем собственном синтаксис ты описываешь структуры базы данных и она
00:37:32 - 00:39:12
потом при выполнении и специальной командой инициализации ты этот файлик преобразует уже в клиент призма и вот в этом клиенте уже есть интерфейсы для написано в тобой структур не всегда это удобно потому что пока ты не заинициализируем ты не увидишь по факту что у тебя там происходит каждый раз нужно пекине ци лидировать на самом деле вот это над чем-то и и минус плюс то что у тебя почище все то что ты в одном файлики все описала и она все генерить все правильно ну наверно в разработке с этим возникает
00:38:21 - 00:39:57
иногда проблема не сразу мне наглядно условно с ней очень тоже много получается работал потому что она даст относительно свежая и все компании сейчас все таки на той программе сидят дома с той поры по моему мнению есть более то что никак не выкатит новую версию них вообще как бы проблемы с моим тренингам многих уровень такая проблема призма на этом фоне как бы так поддерживается компанией все-таки более стабильный если пишете новый проект лучше брать prism ну если вы конечно бегаешь не проект если проект на мангой
00:39:09 - 00:40:24
но тут мангуст поклонник все бы ничего только надо так при замахе шаманку тоже помощь сейчас подложена но зачем если есть более удобный инструмент этот как бы ты берешь микроскоп забивает гвозди атому техники есть готовы как бы инструмент мангуст проверенный огромным числом сообществом годами к коннекторы команда нас джеймс маркус который позволяет тех классами описывай там его фантастических поэтому по г геморрой с ней призма вот для мозга все таки не надо но и там denis тот же очень сильно ругался на
00:39:49 - 00:41:12
мангу за ну как бы тут вопрос тебе зации агрегации то что говорил эту основу типизация агрегации она будет такая же проблема и на призме прям тут пускай а скорее проблема манга войну любого любая типизация группировок она и в поддержке ты все равно должен руками до типизировать чтобы иметь в не оптовых на typescript и хорошо а вот кстати власти везде используются декораторы вообще штука декоратор декоратор это по сути то которая делает что-то либо с классом либо с функцией либо с переменной s функции из любой
00:40:30 - 00:41:58
ну как то есть мы как бы пишем декоратор для каких-то определенных средств ну то есть ну допустим горда и всякие для авторизации обычно делаются через декоратор да она они навешиваются на производную функции ли это не funk не совсем функция метод это медно класса самом деле декораторы работают сметные класса тебе спасибо большое за имитацию собеседования по крайней мере я думаю что для зрителей мы раскрыли какие-то вопросы которые могут задаваться наверное мой вопрос это не сто процентов что спросит на каждом
00:41:16 - 00:42:39
собеседований но как бы на уровень металл наверное я бы спрошу но вот когда я себе следующие задаю по крайней мере
00:42:02 - 00:42:19