Подготовка к собеседованию на 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 каналы и чаты
Транскрипция видео:
привет друзья и перед началом ролика небольшой дисклеймер я не пытаюсь ответить на вопросы быстрее со беседуем ago короткие паузы между вопросом и ответом это результат монтажа я уважаю ваше время и не хочу чтобы вы тратили его на паузы и на раздумия со беседуем ago и второй важный момент я буду снимать подобные видео примерно раз в месяц пока буду видеть вашу активность если я буду видеть ваши лайки и комментарии о том что вам эта рубрика нравится я буду приглашать за беседу им их разного уровня чаще всего это будут
00:00:00 - 00:01:05
frontend разработчики и проводить подобные собеседования всем приятного просмотра всем привет сегодня у нас собеседование junior backend но джей с разработчиком игр пожалуйста представься всем привет меня зовут рекорд я являюсь джуниором backend разработчиков расскажи о своем опыте и как давно ты этим занимаешься я у меня образование совсем непрофильное гуманитарная полгода назад но чуть больше 7 месяцев назад решил заниматься этим занимался самостоятельно от сном это более книги по джессу и какие-то курсы на ю тубе логично тогда
00:00:33 - 00:01:57
я сразу говорю что будет в этом собеседование это сначала будет блок по java script у несколько вопросов потом будут вопросы по алгоритмам оценки сложности алгоритмов поговорим немного о структурах данных по некоторым операциям и в этих структурах бобра поговорим про http ну и в целом такие вопросы правой я тогда сразу начнем и начнем с java скрипта несколько простеньких вопросов в чем разница между операторами сравнения 2 равно и 3 равно внутри равно учитывает тип приводит строгому равенства на 2 нет
00:01:15 - 00:02:37
то есть двойное равенство но у нас с приведением типов очень наоборот тройное равенство это из привидений тип двойное с приведением все правильно смотри у нас есть какой то объект и в нем есть какие-то поля и допустим у нас есть массив состоящий из вот одинаковых объектов и в каких-то объектах оля есть а в каких-то объектах этого поля нет и нам надо проверить какой-то функции например что у нас это поле в объекте находится и только потом выполнять какие-то операции с помощью какими способами мы можем проверить есть
00:01:55 - 00:03:08
ли поле в объекте сделай если до массив объектов да ну не важно вообще просто нам надо проверить есть ли поле у конкретного объект но если это просто обед то можно воспалиться метром хасан property вели до либо бы просто воспользоваться оператором просто если указать имя объекта через . указать поля если она ее сделать что-то если нет ничего не делать но у нас в этом поле может лежать сноу или антифа int или пустая строка мы можем тогда вы точно проверить что мы там ожидаем увидеть если это не та
00:02:34 - 00:03:48
выполнять это лестер с помощью his own property да мы можем точно проверить ну да но это идет еще также можно с помощью оператора in может слышал да конечно а в чем недостаток у этого оператора почему лучше проверять все таки через новым property но помоему потому что алан property проверяет мне точно не помню возможности она что-то с прототипами но я почти не могу сказать вот как раз косован property проверяет конкретно в этом объекте а вот и радара и по цепочке смотреть да это типах хорошо тогда следующий вопрос как можно
00:03:10 - 00:04:30
поменять контекст какой-то функцию можно его перебить с помощью метода bowen указать контекст и что будет в таком случае но если мы укажем какой-то контекста он будет использовать контекст собственно какой мы указали а какие тогда есть еще способы но если честно я знаю что конечно есть метод call от лари но я с ними еще не сталкивался по сути пользу толка бандам а коли player признать что они из тогда для подписчиков поясню колы и плане вызывают сразу функцию а байт возвращает нам новую функцию привязанную к
00:03:50 - 00:05:12
контексту которую мы передали еще уколы apple а есть отличие кол принимает аргументы через запятую в неограниченном количестве а и плай вторым параметром принимает уже массив аргументов и это выгодно если нам не известно заранее количество аргументов которые нам необходимо передать в эту функцию например как-то динамические ходе работы программы массив формируем вызываем функцию в эту функцию этот массив передаем тогда лучше использовать вот как раз и play но основное отличие от колы plant bine
00:04:31 - 00:05:35
как раз в том что байт возвращает нам новую функцию уже привязанную к контексту вот на следующий вопрос какие способы работы с асинхронным кодом ты знаешь ну а синхронно hot wheels of представлена на promise сами ну или bastide тайм-аута me ну а сном это прогрессе накал бейки например ну и да и калмыки ну колпаки тоже когда не было про мясо все из-за ли call back а сейчас выходом кроме saw я стараюсь отправимся а вот а синклит что это код для чего это нужно но это обертка над функция которая то есть ты
00:05:04 - 00:06:27
можешь сделать асинхронный функцию и внутри этой функции использовать операторы и операторы ведь это то же самое что за только если ну то есть о когда выполнится какой-то promise тогда он будет неправильно выразился это такая оболочка для функции которая позволяет использовать синтаксис передать выполнение promise с помощью ключевого слова и white в чем тогда разница между осинка выйти например кроме сами не знаю ваню обладающих продать на уровне java скудного да и в принципе это я хотел услышать
00:05:45 - 00:06:59
осинка вид это просто синтаксис для работы с примесями по фактам избу да и тот же promise тогда следующий вопрос поскольку ты но джейс разработчик тебе наверно приходилось работать с событиями mogers лечение не приходилось да то есть право r and event emitter ты ничего не знаешь ну я знаю что конечно он есть но еще я его не трогал поэтому особо я не знаю что происходит утрата кратенько расскажу с помощью винта метро можно создавать какие-то события на эти события подписываться и в нужный для нас момент
00:06:22 - 00:07:37
это событие вызывать например можно реализовать long pulling с помощью винта питера так тогда давай перейдем структурам и алгоритмам данных тебя вообще как по теории но потерь у меня хорошо и же работа недолго чуть больше месяца поэтому теория там есть практика тогда немножко абстрагируемся java скрипта такие общие по kinder ские понятия вот у нас есть массив а есть связанные списки нужны массивы для чего нужны списки для чего в принципе используют списке какие недостатки есть у массивов какие есть
00:07:00 - 00:08:13
недостатки у списков расскажи в принципе все что знаешь я понял я начну с слинки 300 список или связанный список нужно как правильно вина связаны но отличие в том что каждый элемент этого списка содержит два значения да то есть это сам сам какой-то целью и ссылка на следующий элемент и соответственно поиск по этому списку осуществляется сначала то есть из какой-то хочешь это я скорости если ты хочешь что-то найти списке тогда ты должен интегрироваться с начала этого списка потому что с каждый последующий
00:07:37 - 00:08:58
элемент этого списка содержится в предыдущем элементе чтобы на него выйти свою очередь массив это когда мы создаем массив у него четкая структура ну точнее в памяти создается если ты создал массив у тебя отводится место в памяти и если ты хочешь обратиться пункта элементу то это происходит быстро в отличие от почты от связного списка но если ты хочешь добавить элемент массив тогда вообще в целом когда создается массив памяти не знает сколько там будет элементов и он допустим отводит 55 как то еще это для этого массива
00:08:17 - 00:09:43
если мы добавляем 5 эти элементы в массив память заполняется но если мы добавим чувству и тогда памяти придется сделать новую новые ячейки они но он еще не удаляет старые он просто отводит место для нового для новых элементов потом копирует старых или старых элементов новые и удаляет их а весной список насколько я помню он добавляет это все при добавлении элемента происходит быстро у них сразу имеется ячейка новая поэтому при да бог предал ссылка при добавлении у нас ну в общем если ты используешь список то тогда это означает
00:09:00 - 00:10:23
что ты очень редко обращаешься поэтому описано к этому списку и просто добавляешь какие-то элементы а если ты работаешь на 7 тогда ты часто явишься по нему потому что легче тебе достать копытами все что хотел услышать не услышал тогда следующий вопрос знакомо ли тебе такие структуры данных как сет и мы да конечно давай начнем сета для чего он нужен носит точно сказать все дома тефну коллекция да скорее всего эта коллекция каких-то данных которые содержат только уникальные значения соответственно map
00:09:41 - 00:11:02
ну то есть всякие не может они могут повторяться одинаковые элементы все они будут уникальными map это можно сказать это тот же объект но он содержит он может в качестве ключей содержать у любой тип данных слушая для полгода обучение очень даже неплохо я теории зная хорошо от практика у меня хромает но это уже можно подтянуть вопрос вот нам необходимо получить элемент из мы пока будет сложностью этого алгоритма операции наверное это будет как в небе я не помню что там используется или учитель и на
00:10:22 - 00:11:48
одна это медальку понесло в общем скорее всего это будет о а1 до константное время потому что здесь по аналогии с массивом мы четко знаем какие у нас есть поля и эти поля словаря грубо говоря за константное время мы можем вытащить вот как раз ты начал в про очередь и простых можешь рассказать какой принцип работы для чего нам эти структуры данных нужны вообще конечно стык в очередь они вообще структуры данных они сами они могут использоваться в строй например в графе используется что-то какая-то структура
00:11:05 - 00:12:13
данных в массиве еще пока это стек и очередь в принципе они похожи на друг друга но они монет они не похожи в общем начну с т.к. он поддержит если мы говорим о массивах операции по шипов его все у него такой девиз это последним зашел первый вышел то есть и добавляю при добавлении ты добавляешь элемент в конец убираешь его сначала господи ты добавляешь конец в конец элемент и забираешь элемента с конца очередь я по девизом просто запоминаю на не про девиза ноты полиса первым вошел и первым вышел то есть это пуш i-shift то
00:11:39 - 00:13:22
есть и добавляешь в конец а забираешь в начале первый элемент да все правильно тогда следующий вопрос есть такая структура данных тоже как бинарное дерево поиска слышал слышал но если честно ничего не знаю а не то есть задачки с деревьями ты решать тоже не сможешь рекурсией может знаком если курсе конечно да но может быть знаю ну может я знакомился но так чтобы я некоторые некоторые структуры прям хорошо знаю некоторые я решил что пока они мне не понадобятся и поэтому я буду их учить по мере надобности ну давай
00:12:30 - 00:13:46
попробуем решить задачку подготовил для тебя тут удочку откроем sandbox вот есть у нас вот такой вот объект тебе видно все нормально да общем как этот объект выглядит сейчас я вот это вот лишнее уберу у нас есть объект у кота а есть поле вилью это какое-то значение есть life i right соответственно это левое поддерево и проводе по дереву свою очередь left и right также являются деревьями и у них тоже есть значение тоже есть левая и правая по дереву эта структура может продолжаться бесконечно зависимости от глубины дерево
00:13:09 - 00:14:27
и вот собственно в чем заключается задача необходимо сделать такую рекурсивную функцию которая по этому дереву пройдется и просуммировать все значения и по итогу из функции нам вернется сумма всех вот полей вилью попробуем да по параметрам эта функция будет принимать как раз дерево хорошо так у нас есть объект у которого есть вылью электро которые в свою очередь лет содержит пылью и так может продолжаться долго у каждого под дерево вот у каждого узла обязательно должно быть в илью но не обязательно может быть право и лево под
00:13:50 - 00:15:10
дерево они могут отсутствовать то есть это может быть как это называется list то есть последний последний узел потери но значение в или должно быть обязательным так ну тогда мы будем на каждой грубо говоря вызов у нас будут условия для и курсе если у нас есть целью получается целей есть всегда целью всегда а ты-то да а может может не быть левого или правого под дерево но в или весь всегда так ну начнем сначала если мы это рекурсивно да будем решать даже когда нам нужно условиях с которым рекурсии закончится надо
00:14:29 - 00:15:52
наверное сначала над ним подумать а потом подумаем над тем чтобы делать дальше какой у нас может число и если у нас всегда есть в голове и дала не иди нет да вот давай тебе тогда дам подсказку смотри у нас эта функция параметрам принимает дерево то есть у нас right и left свою очередь тоже являются деревьями это эту функцию рекурсивно будешь вызывать но что если у тебя этого дерева нет как раз то о чем я сказал left и right тебя могут они отсутствовать тебе необходимо вот эту функцию рекурсивно вызывать до тех пор пока у
00:15:11 - 00:16:26
тебя есть либо life либо райт это и будет прям раз ловим выхода из гуси да я почему-то провели подумал так хорошо можно воссоздать тогда это условиях [музыка] а то мы можем тогда использовать то что ты спрашивал начале я зову здесь здесь можно использовать так вот как то изначально хотел поскольку у нас подразумевается что лифт в принципе отсутствует и тогда условия вернет правильное значение . вот так и хотел до когда мы просто завершим эту функцию ну подумай сейчас ты сделал если у тебя его есть
00:15:48 - 00:17:15
надо если о нет но я тебе пуска а то условия было корректно с ним тебе работать проще было бы такое условие если все-таки под дерево существует вот провода откроем тапочки так если у нас и но существует тогда мы с каждого с каждого объекта берем поля valve складывал куда мы его складываем ну создадим тогда резал не по каждой итерации получаться рекурсивно вот у тебя сначала ты берешь родительская диего узел тебе сразу необходимо достать из него вэлью бываешь а от дерева тебе из него тоже надо в или
00:16:39 - 00:18:18
достать и все это вот так вот по цепочке просуммировать логичнее будет смотри давай начнем с условий часто сделал условия для левого поддерева но также у тебя может быть ситуация когда у тебя нет и правого под дерево тебе надо посчитать и вправо и влево и и в левом направлении давай сделаем второе условие тоже только его вынесем отсюда из меча играешь право теперь следующий этап вот ты например посчитал для левого поддерева у тебя здесь вот свой счетчик и объявил а как ты будешь его суммировать справим под деревом если у
00:17:42 - 00:18:54
тебя область видимости этого счетчика вот этот вот блок ну да вынесем этот продались это счетчик можно было рисовать может блокаут теперь смотри когда ты вызываешь функцию сам 3 что нам тебе должно вернуть вернуть она должна вылью вот как тогда сразу из этой функции возвращаем каунт теперь вот уже каркас функций готов у тебя есть какой-то счетчик ты что-то внутри этой функции делаешь и по итогу то этот счетчик возвращаешь и у тебя есть два условия выхода из рекурсии теперь внутри этих условиях тебе надо
00:18:29 - 00:19:45
посчитать сумму под деревьев есть идеи как это сделать да сумма под деревьев представь что для каждого под дерево у тебя будет вызываться вот эта функция у каждого под дерево будет свой счетчик свой ризал который будет из этой функции возвращаться и не забывать что эта функция рекурсивно то есть тебе вот в этот колонна дошло до груди нам нужно в этот раунд тогда сделать сейчас счетчик и вызывать эту функцию еще раз до тех пор пока у нас будет love ну давай попробуем легче секунду я просто с рекурсии так как не
00:19:16 - 00:20:33
работала очень сильно я плаваю в этой теме ну да обычно тему проблемно для всех ну смотри еще подсказку тебе дам у тебя эта функция принимает дерево да ты будешь выживать 1 1 3 да передашь как раз вот это дерево войны retry это будет узел и у этого дерева есть под деревья left и right ты также можешь передать в эту функцию и эта функция тебе будет возвращать kahoon лифт от каунт по итогу надо положить вот сюда первое сейчас в первом условии мы добавляем в каунт 1 1 вы или до и потом мы будем просто вызывать функцию
00:19:56 - 00:21:29
еще раз только нас уже с под деревом только тут у нас будет лэп [музыка] ну и третья тоже а уже прорисовывается давай для правое дело они тоже самое только ра за сразу вопрос есть ли смысл каунт вот так вот два раза дублировать нет попробую сделать красивее окно вот имя сюда просто вынести его но ты можешь сразу вот здесь сделать 3 . если сразу даешь и значение а за дерево ну почти хорошо но пока что еще это работать не будет по итогу ты из этой функции возвращаешь опять же функцию но такими темпами ты вот до сюда не
00:20:52 - 00:22:34
дойдешь а если дойдет что ты вернешь не то значение эта же функция вот здесь и вот здесь у тебя возвращает какой-то результат и этот результат куда то необходимо записывать от и получается просто возвращаешь результат функции он никуда не уходит сейчас получает это никуда не записываешь смотри предстоит представь поэтах ноты функцию зашел ты с узла достал его значение и потом ты просто эту функцию вызываешь вызываешь вызываешь и по итогу возвращаешь просто корень так но я вообще плыву не могу понять что происходит когда мне нужно
00:22:02 - 00:23:17
просто результат выполнения функций переменной положить то в какую аккаунт наверно да келли остро уложить ты должен его резюмировать а да да да да смотри что получается что было понимание ты зашел первый раз функцию ты положил сразу вот на примере нашего дерева шестерку у тебя в к он любит уже шестерка потом ты идешь попадаешь в этот блок вот эта функция вызывается уже для левого под дерево при вам под дереве у нас в илью равняется пятерки эта функция у тебя возвращает по итогу пятерку и в твоём county уже получается 6 плюс 5
00:22:39 - 00:24:00
и ты получаешь за этот сам 3 вызываешь до тех пор пока у тебя есть левое под дерево потом эта функция останавливается ты идешь дальше и попадаешь уже вот в этот блок и здесь ты делаешь абсолютно тоже самое прививкам говоря записать результат этой функции по итогу у тебя вот так вот и по деревьям продвигаешься у тебя к в county накапливается сумма это эту сумму из функций возвращаешь здесь вот можно открыть консольку давай попробуем ток и функция возвращает один это правильный результат примерно так
00:23:22 - 00:24:37
та ниточка решается да в рекурсии конечно я плыл очно себя очень мало округе курсе это такая нетривиальная тема достаточно тачка будет поджечь смотри у нас есть функция абсолютно не важно что это за функция и она влоги на вводит моменты которые в эту функцию передают например попробуем его вызвать и передать сюда arkadian а например массив сейчас в ты увидишь как раз объект в котором есть поле арк 12 и массив собственно необходимо реализовать функцию которая будет делать следующая должны уметь делать
00:24:01 - 00:25:37
мы вызываем функцию сам fn вернее обращаемся к ней вызываем функцию delay и сюда передаем какую-то задержку например 2 секунды передам в миллисекундах и вот эта функция delay должна вернуть на новую функцию ура будет вызываться через две секунды то есть вот эта функция у нас должна будет отрабатывать точно также блоге выводить просто аргументы но она должна вызываться через две секунды более условия или еще раз объяснить но в принял воть так я вот нет подвинется я не понял и сам fn вызывает функцию или а вот это вот
00:24:56 - 00:26:16
функция delay она должна быть абсолютно любой функцией например у нас будет тут еще х нибудь c can function у нее тоже должна быть функция delay то есть у любой функции в нашем приложении должна быть функция делай которая просто будет и сходную функцию вот это вот самых н собственно говоря вызываем нос задержка через две секунды я понял это просто против я понял пойдем смотреть и мы вызовем сейчас самый файл везде лей она вызовется не сразу а через 2 секунды я понял так то я просто функциям прототипа не писала это наверное будет
00:25:38 - 00:26:50
выглядеть так . delay [музыка] это у нас будет функция до ворот проблемы со правления которая будет принимать функцию до какую-то и делать я тебя сразу поправлю дело у нас принимает задержку в миллисекунд а задержку за задержку до belay тут будем вызывать сайт и mode да будем передавать я сначала мы должны эту функцию из контекста вызывай до из porsche оо господи сейчас так до даты а и часть самого все тайм-аута ну точнее не передавайте вызывать эту функцию секундочку эти желательно комментируя
00:26:15 - 00:28:05
мы с да так чтобы мы вызываем тайм-аут и дела и передаем тот который к нам приходит и это какая-то просто простая задача но и неимоверно туплю и мне нужно просто вызвать эту функцию но вот с этим делаем просто обмен нужно вызвать функцию р-на это будет вот так ну практически но теперь смотри у нас вот есть функция сам эфенди с задержкой но у тебя смотри задача в том что когда ты вызываешь функцию delay у тебя возвращается новая функция которая записывается сюда сейчас у тебя вот эта функция она ничего не возвращает
00:27:41 - 00:28:58
орехами лофант случае у тебя вот этот вот call back который ты передаешь стать тайм-аут возвращает эту функцию а функция вот это вот она у тебя возвращает по-прежнему он define тебя же вот здесь смотри call back да и когда ты делаешь ритер ты делаешь ведь он из этого call back a дам подсказку здесь уже тебе надо понимать как работают замыкание может быть тебе это о чем то скажет это сориентируешься я все буду дальше тупить дам если нет ну тогда давай я тебе дам подсказку . вот есть функция делай
00:28:20 - 00:29:43
и судя по вот этой логике тебя она должна вернуть новый пункт значит мы из этой функции возвращаем новую fun ну да внутри мы можем в этом и в этом с этой молодой да сделай что выглядит вроде как красиво но что будет если мы передадим сюда какие-то аргументы не куда-то мне от видишь у нас логов по-прежнему пустой объект нам сделать чтобы эти эти параметры дошли до нашей функции здесь fan чем передать в них в качестве аргументов так но нам нужно передать аргументы поэтому мы просто можем передать их сюда и здесь
00:29:04 - 00:30:35
вызывать что-то пошло не так аргумент это у нас получается резервирование слова и вот так параметрам его не может передавать а как видишь у тебя теперь один параметр остальные два три четыре они куда то пропадают да мы можем рис там воспользоваться наверное а теперь да теперь правильно я немножко усложним и вот этот вот здесь фанк уберем отсюда и как бы ты сделал из каких-то промежуточных переменных вызов функции вот исходной функции внутри сет тайм-аута в безличных переменных ну вот без переменной здесь фанк тебе внутри сеть
00:29:55 - 00:31:18
тайм-аута надо вызвать функцию как будто ты сделал методе ну ты сможешь просто вот так вот здесь вызвать и передать туда рогатина во всех ну да я просто думаю что это слишком легкий будет ответ в таком случае у тебя не будет работать приложение как ты думаешь почему функция не будет работать дам подсказку здесь уже понимание стрелочных функций контекста колба into play она не будет работать не знаю у тебя вот это вот функция объявлена через фанкшн и у нее здесь это уже абсолютно другой контекст и он называется на исходную
00:30:54 - 00:32:22
функцию какие есть способы чтобы сделать как сделать так чтобы через зис эта функция вызывалась исходная функция c сложные передать давай попробуем ты говорил что наша память возвращает новую функцию поэтому нам нужно использовать наверное от лайк давай я не помню как он пишется вот теперь вопрос какой контексту да передай это сделаю на 6 совсем пополнит давай я тебе расскажу способы которыми можно это реализовать смотри но самый простой был бы это вот эту функцию превратить стрелочник а иногда на внешний контекст блогов
00:31:43 - 00:33:14
ссылалась на внешний контекст и это всё работало вот как видишь влоги у нас вывелись все параметры но если идти по более сложному пути оставить фанкшн то тогда лучше вот этот function забанить к текущему контексту внутри функции контекст будет нужно для нас как вещь это работать тоже правильно после сложного да конечно это не я это задача душе понимаешь что я понимает я в свое время сам на этой задачки тупил и там уж простительно двигаемся тогда дальше поговорим немного про http что ты вообще знаешь прожить и теперь
00:32:33 - 00:34:02
расскажи что это такое для чего это нам нужно нож и петров от акул посредством которого происходит общение между в интернете грубо говоря передачи данных рот ну в принципе все так хотя конечно да следующий вопрос сразу из чего состоит http-запрос имя сюда из методов каких нет вот сам http-запрос он но он же с чего-то состоит что он из себя представляет вообще ну ваще теперь запрос мы можем передавать пела запроса можно передавать какие-то параметры это бери параметры и так далее ну это как бы общей такие слова до
00:33:23 - 00:35:04
конкретно http-запрос состоит из трех скажем так подразделов может сможешь поконкретнее их назвать да он состоит из за get запроса а или не такая масса у нас post запрос яркими как методом перешел и так страдаешь я понял поставить 1 это ты укажешь метод какой который ты хочешь послать второе это заголовки собственно говоря приседать чем я говорил и третье это но кстати необязательно я по-моему это от имена оба не доводи не обязательно поясню для подписчиков http-запрос состоит из трех скажем так подразделов
00:34:16 - 00:35:54
это стартовая строка выглядит это примерно так мы указываем метод затем указываем что-то типа такого http и затем мы указываем ост да мы отправляем запрос там например pvp сервер точка com затем у нас тут какие-то хедиры например of the relation он кент тает и так далее и затем у нас уже идет тело запроса здесь мы уже указываем ricoh или в каком-то другом формате по типам form data уже какие-то поля собственно из этого состоит ощутить и запросы тогда сразу следующий вопрос есть ли у нас какая-то разница между
00:35:06 - 00:36:38
запросом и ответом сервера ну конечно запросе когда ты указываешь и если один например и передышкой the body to server обрабатывает эту информацию и возвращает тебе уже объект response to с обработанными данными которые и который ты хочешь получить а вот и сказал что у запроса есть поди а у ответа нет на youtube с тату и у испанца тоже из бани но вот с точки зрения http есть какая-то принципиальная разница между ответом и запросам или на самом деле абсолютно нет запрос и ответ они выглядят примерно это не
00:35:55 - 00:37:14
страшно тогда еще будет несколько вопросов непосредственно про но джесс с каким framework amd и собственно говоря работаешь только с экспрессом экспресс express на сколько мы знаем построен вокруг middle веер все концепции там связаны как раз вот микс-медиа vr как ты понимаешь что такое металла er для чего это нужно но я скажу совсем такими простыми словами хорошо я я думаю мне дверь можно представить как какой-то фильтр которые принимают себя какие-то данные обрабатывает их а каким-то сценариями но вот фильтрует и
00:36:40 - 00:37:59
потом отдает на дальнейшую обработку грубо говоря он просто принимая данные обрабатывает их по тем параметрам который ты сам указал их дает дальше по цепочке тогда собственно следующий вопрос у меня про авторизацию приходилось ли тебе реализовывать и но джейс на авторизацию поможет какой 300 перевал с авторизацией как бы ты это реализовал расскажи доделал конечно но сначала рассмотрим до зама действия клиент-сервер допустим у нас на клиенте есть поля которые мы вводим логин и пароль ну то есть при
00:37:20 - 00:38:42
перерегистрации вот при если мы нажимаем кнопку submit to отправляется вот это формы с этими данными на сервере мы ее ловим испанцы оттуда забираем нужной напали а именно на примере e-mail и пароль потом допустим проверяем если этот пользователь уже то есть сделаем запрос в базу данных ищем в базе данных пользователь с таким емейлом если мы не находим там мы идем то мы создаем собственно его ну вот как то так ну и естественно можно использовать кучу медальеров там для поверх email'ов хэширования
00:38:00 - 00:39:19
роли отдали а вот что-нибудь проживите talkin' может слышал да не слышал и видел один из самых таких сейчас популярных и современных способов авторизации может расскажешь что-нибудь ну живите токен это джейсон объект он передает нам он состоит из лидеров и пилоты полезные данные только поправлю тебя сразу это не jison объект это просто строка которую можно распарсить уже в газ null object на вот а когда мы регистрируемся либо логинимся он создается 9 talkin' с уникальным каким-то значением присваивается этому
00:38:40 - 00:40:21
юзеру и когда мы делаем запрос copy например мы при перезагрузке страницы не будем вводить заново логин и пароль если вы уже зарегистрированы а клиент будет смотреть джейсон токины если он его найдет у этого пользователя то тогда он просто ему без без повторной авторизации пропустит на сайт ну как то так смотри у нас есть как ты сказал 9 состоит из 3 частей хедиры какие-то данные и сигнатуры когда я забыл сигнатуру да вот эти вот данные можем ли мы их вытащить на клиенте истоки на ну насколько же вытащить только из файла до данные а
00:39:40 - 00:41:10
именно и заметно сигнатур мы не можем и носик редкий читать и так далее соответственно тогда бы смысла ведь это кино бы не было ну да собственно говоря этот ключ секретный ключ должен знать только сервер чтобы talkin' верифицировать и убедиться что он валидны хорошо тогда потоки но у меня вопросов больше нет у меня вопрос по реал там взаимодействию существуют разные способы как можно это реализовать для тех кто не понял real-time это например вот чат пользователь отправляет сообщение и все участники chateau сразу
00:40:25 - 00:41:34
это сообщение получают какие есть способы такого функционала добиться может ты знаешь может и использовал какие-то ну если я знаю что есть такой фрейм на это уже устаревшие насколько я помню технология то есть она раньше использовалась но их на самом деле по моему но к но я знаю только про выпсуке и слышал точнее что то читала только про высокий цифры но что-то поподробнее право pocket расскажешь ну работать еще не приходилось но я знаю что скоро придется поэтому я вот постепенно начинаю изучать принципы
00:41:00 - 00:42:09
работы то он создает постоянное подключение через которое мы можем передавать данные в обе стороны и то есть сервера клиенту и клиенту от клиента к серверу соответственно как бы построен как бы над архетипе протоколом но используя протокол без а если какие-то способы но скорее всего это не знаю что я уже сам сказал сделать тот же самый функционал через http но скорее всего до ханоя не знаю ну я тогда добавлю есть еще такие способы как long pulling и been surfing кстати спойлер в ближайшее время выйдет видео я расскажу про то как
00:41:34 - 00:42:58
реализовать подобный функционал как раз через лунку link р-н surfing и через сокеты на примере чатов реализуем все три способа да ладно двигаемся дальше еще у меня есть несколько вопросов по базам данных и наверное на этом мы уже закончим приходилось ли тебе работать с реляционными базами данных do it чуть приходилось именно уже на работе одну неделю я работал спас грех потом пересел на мобах ну то есть у тебя какое-то представление есть реляционных базах данных что-то абстрактное а может тогда
00:42:19 - 00:43:34
расскажешь про отличия реляционных вот а вот кстати манга какого типа это база данных это новость кремль мне реляционные базы данных ну новость queen база данных бывают разные там с 10 не делится на это документы ориентированная базе данного документа ориентирована база данных и вот в чем собственно отличия документы ориентированы базы данных от реляционный например как тот же пост греть ну давай тогда начну в принципе мне так будет легче с определения а потом уже скажу чем они отвечают собственно как я
00:42:58 - 00:44:09
понимаю что как я понимаю реляционная база данных это просто набор взаимосвязанных какие точнее это набор данных которые и у них есть какая-то предопределенная связь в процессе организации процессе построения самого приложения пишешь ты уже на этом этапе точнее составляешь какие-то таблицы и так далее и запись границ запись в этих таблицах между собой связано то есть таблица между собой связаны в каждом таблицах допустим есть какая-то информация в объектов которые и собственно базе данных и каждом столбце таблицы хранится
00:43:34 - 00:44:58
во первых определенный тип данных и и еще значение атрибута и в принципе строки в реляционных базах это какие-то связанные значения которым которые также относятся к одному объекту иди к сущности какой-то а документа ног манги это представлено в виде документы которые представляет собой джейсон формат и похоже просто на объект у которого могут быть поля любого типа могут быть все что угодно то есть если ционных у тебя в одной таблице находится представление об одном каком-то объекте то в манге ты можешь а разных объектов в одном в
00:44:17 - 00:45:38
одном документе все это содержать [музыка] когда еще вот я хотел тебя спрашивать ним по реляционным базам данных нового опыта как я понимаю тебя мало но вдруг ты ответишь вот ты говорил про связи между таблицами может что-то про эти связи рассказать какие ты знаешь какие бывают ну связь у них в принципе плохо представляя но я постараюсь ответить скорее всего базах есть представлена связь в виде прайма реке допустим то есть это какой-то ключ донецк с на и скрыли базы я не настолько хорошо знаю внутри поэтому ну в принципе а
00:44:58 - 00:46:30
наверное могу догадаться но не буду сейчас пытаться сказать добавлю что есть три типа связи это один к одному ты проекта всё я понял это я знаю тогда рассказываешь это простая не просто подумал да это один к одному то есть когда один ко многим и многие ко многим это когда возможно 3 неправильно это когда давай на примере из реального мира то есть если если есть какой-то учитель то у него есть предметы которые он ведет это может быть русский литература но у этого у русского и литературы есть только один учитель в этой школе
00:45:44 - 00:47:12
допустим и поэтому есть связь один ко многим это учитель и предметы а у предметов и связь только с учителем 3 я подзабыл ну ты скажешь я вспомнил много ко многим смысле да да да а собственно говоря вот эта связь за счет чего осуществляется ну знаешь ну вот как он у нас вот например есть пользователь и есть у пользователя есть какое-то количество постов на сайте и к куда я понял что у нас получается отдельная сущность пользователь отдельная сущность пост и как нам узнать что пост принадлежит конкретно вот этому
00:46:28 - 00:47:46
пользователю в каждой таблице есть а эдик и связь можем я так понимаю сделать если у каждого в таблице например постов и какого-то юзера из таблицы будет уникальный номер собственное поста и также будет ссылка на айди озеро который мы эти посты принадлежат до называется внешних ключ да да да ну в целом в принципе это все вопросы которую я хотел тебе задать на самом деле я расчитывал что собеседование будет побольше и отвечал достаточно быстро и для джона достаточно неплохо подавай тактика формально подводя итоги
00:47:07 - 00:48:33
до кода мы писали сегодня мало но в теории я вижу что ты понимаешь о чем идет речь и не плаваешь и подводя итоги хочу сказать что ну джун из тебя точно уверены думаю не зря ты работаешь как бы позиция оправданная вот может ты что-то хочешь про собеседование сказать как тебе в целом как ощущение как ты себя оцениваешь спасибо все за возможность просто это но и я такого никогда не делайте сыром где не было такого опыта собеседования на окон формате мне конечно очень понравилось лишний повод что-то узнать где такие слабые стороны
00:47:50 - 00:49:10
что тебе нужно подтянуть и так далее по себе могу сказать что у меня слабая сторона ну скорее всего эта практика точнее ее отсутствие но каждый день я что-то пишу каждый день у меня повышается собственно знания и так далее и я на работе что-то каждый день новые узнают приходя домой также занимаюсь занимаюсь занимаются поэтому я думаю что скоро этот недостаток и устраняю все бы так и а тебе большое спасибо это очень круто что ты проводишь такие смеси да ну и в заключение хочется добавить еще несколько слов как видите человек по
00:48:30 - 00:49:43
образованию историк войти он всего полгода но за это время он успел неплохо так прокачаться найти работу что в очередной раз доказывает что если человек чего-то хочет что если он прикладывает для этого достаточные усилия то рано или поздно у него все получится главное не заниматься самообманом и действительно работать над собой но и относительно самих собеседований это уже второе собеседование на канале я увидел что первая вам понравилось первое видео было с frontend разработчикам и чтобы не повторяться я решил сделать
00:49:07 - 00:50:14
второе собеседование с бэк-энд разработчикам ближайшие две-три недели снимать собеседование я точно не буду но если я увижу на этих видео от вас хорошую отдачу я наверное буду приглашать все-таки frontend разработчиков разного уровня опять же все зависит от вашей активности как видите ролике я уже маю вырезаю все лишнее чтобы для вас был концентрат полезной информации я трачу на это по несколько часов и если ты оцениваешь мои старания то пожалуйста поставь лайк и желательно напиши комментарий неприятное в читать а
00:49:41 - 00:50:50
алгоритмом youtube а тем более еще уточнение по поводу следующих собеседований шанс попасть на него есть абсолютно у каждого и когда решишь снять следующее собеседование я во вкладке сообщества на канале сделал пост котором будет ссылка на форму там будет буквально несколько полей вам эти поля необходимо будет заполнить и уже среди тех кто заполнил эти поля я выберу человека и приглашу его на собеседовании это в принципе все что я хотел сказать спасибо что выслушали жду вас в следующих роликах
00:50:15 - 00:51:25