Подготовка к собеседованию на PHP 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 каналы и чаты
Транскрипция видео:
Всем привет друзья Меня зовут Михаил это проект и вот наконец-то новое видео и оно про собеседование то что вы очень сильно любите Судя по просмотрам предложили мне значит пройти собеседование на вакансию PHP девелопер не сказано кто именно но я думаю это уровень примерно метла ищет короче зарплата от 150 то есть там я так примерно прощупал до 180-190 готовой платить компания небольшая это стартап ему Всего лишь год до этого у них была аутсорная контора которая собственно предоставляла им разработчиков сейчас они набирают штат
00:00:00 - 00:01:10
себе собственно своих разработчиков и я сразу хочу вас попросить прощения за то что в этом видео будут постоянно в середине видео где-то telegram-уведомление вот эти звуки если что это из видео поэтому Простите пожалуйста я читаю забыл замьютить в этом видео будет только Техническая часть и она необычная потому что меня собеседовал тех дир он не пхэпэшник и задавал мне всякие такие общие вопросы всегда стыковались PHP плюс были интересные вопросы по паттерном проектирования которые теорию которых я
00:00:35 - 00:01:39
не то чтобы их хорошо знаю в целом паттерны не так часто и знаю к такое множество которое применял бы на своей практике короче интересное собеседование оно меня натолкнуло то что надо очень много почитать поизучать и надеюсь вам тоже как бы подтолкнет вас на то чтобы вы тоже как бы потянули какие-то моменты если вас интересует то как Мы начинали наш звонок то есть как я рассказывал о себе и какие вопросы я задавал своему интервью Веру то бегом к нам в Telegram канал там все эти отрывки будут в этом
00:01:07 - 00:02:12
видео их не будут Это да такой байт на Telegram на подписочку плюс там же будет сама вакансия PDF к собственно на этом все все соц сетки также есть в описании подписывайтесь на ВКонтакте телеграм как я сказал наш чат в телеграме там общаемся помогаем при необходимости Ну и приятного просмотра Так ну собственно давай начнем с базы принципе [музыка] а ну принципа до принципа 3 это инкапсуляция это полиморфизм и наследованием капсуляция это когда мы можем защитить данные которые находятся у нас в объекте взаимодействовать с ними
00:01:39 - 00:03:00
только внутри этого объекта и не позволять Извне как-то менять Там стоит состояние и так далее То есть инкапсулируем капсулируем то с чем работаем там Как пример приватный соответственно свойства достаточно дальше наследование это возможность расширять возможности класса к примеру путем наследования от другого класса его функционала полиморфизм это как бы так это выразится ну скажем так возможность скорее проще привести пример у нас есть один родительский класс который имеет какой-то метод и мы можем в дочернем
00:02:21 - 00:03:50
классе от этого класса занаследоваться и переопределить этот метод при этом у нас есть два как бы возможных класса от которых мы наследовались у них есть два одинаковых Ну то есть одинаковые два метода но выполняя их выполняется разный код потому что мы переопределили родители фактически переопределение как бы методов дочернего класса вот так сказать хорошо На самом деле капсуляция я все чаще слышу именно такое определение тем не менее базовой капсуляция конечно предполагает скорее включение в один объект полей методов
00:03:10 - 00:04:24
конечно же не исключая как бы вот этой вот принципы приватности полей методов нет имеется ввиду что мы до момента возникновения как бы объект программирования как бы поля и методы это были разные совершенно сущности и объединяя в один как бы в одну сущность эти два разных Две разных как бы сущности тавтологию мы как раз получаем как бы то самое капсулирование то есть прям по названию инкапсулирование инкапсуляция типа это включение в один объект Это полей и функций Это чисто теория это так на будущее В целом ты прав конечно же
00:03:46 - 00:05:29
скажи пожалуйста в своей работе ты используешь наследование и полиморфизм Да причем постоянно я пишу всякие абстрактные классы с набором с базовым набором какого-то функционала при этом обязывающие там например реализовывать часть функционала по абстрактным методам банальный пример вот из недавнего ночами работал у меня была в задаче подключения двух разных платёжек функционал у них абсолютно в целом похоже просто условно поинты разные там идти за платёжные ссылки создавался класс там payment System
00:04:37 - 00:06:02
условно абстрактные с набором основного функционала где есть всё для обработки продукта и там не знаю обработка колбэков Но вот методы гетурал пэймонтурал всё остальное это соответственно реализовывался отдельно уже когда я наследовался также Часто использую э-э обычные классы там когда не знаю часто оказываются В таких ситуациях Когда мне нужно сделать сахар для например работы с базой данных то есть Свою минимальную рмку при этом подключить стороннюю либо я не могу создаю какую-то общую модель
00:05:20 - 00:06:31
от которой потом как в том же laravelle наследуют по своей классы там уже соответственно весь функционал для работы с базой есть там условно в методе gettable name ты указываешь название таблицы и весь функционал для работы с этой таблицы уже в родительском классе звучит супер так хорошо ты затронул значит вот еще какую тему Скажи пожалуйста про четвертый принцип не слышал случайно четвертый принцип Нет наверное честно на самом деле Слышал конечно Судя по тому что ты говоришь я понимаю что просто не возможно не это
00:05:55 - 00:07:13
самое Да конечно это редко называют Обычно говорят Да действительно протреснут в принципе Но это в принципе тоже окей скажи пожалуйста а у тебя вот тоже исходя из того что мы с тобой проговорили А у тебя какой язык программирования ты так Я так понял там попробовал как минимум несколько [музыка] штук какой-то вот любимый Именно прям ну Любимый у меня PHP 8 плюс именно все что ниже немножечко не очень потому что в 8 плюс появляются всякие но мы улучшается типизация всякая вот это вот история которая мне нравится вообще в
00:06:42 - 00:08:18
целом мне нравится typescript но typescript это не язык Мне нравится Она за типизации нравится Sharp но самый любимый то что лежит лежит к сердцу ближе это конечно по ХП вот еще какой-то странный язык не помперов Ну да Хорошо А скажи пожалуйста а почему еще спхп у тебя но почему ты его выделяешь почему тебя любимый ну мне нравится та инфраструктура во-первых комьюнити нравится нравится то как сейчас развиваются фреймворки какой крутой сахар мы имеем там для разработки уже очень быстро разработки
00:07:32 - 00:08:48
бизнесовых задач Мне все это нравится все эти опенсорсные штуки я сам периодически занимаюсь написанием пакетов под Лара или просто пакетов в общем мне всё это комьюнити вся эта история нравится язык сам неплохой опять же начинается с восьмой версии Понятно Окей тоже заговорил протизацию Давай поговорим что Ну как бы так сформулировать Какая бывает можно так сформулировать бывает трогать ипизация и и не явно типа типизация что как-то такого не строгое условно типизация в PHP Я просто не помню как правильно
00:08:17 - 00:09:44
называется строгая типизация прям строгая тебе тебя нет там условно возможности как например в шарпе указать качестве аргумента тип строка и передать мне число в PHP в целом если мы не используем какую-нибудь там не помню как это функция называется чтобы указать более жесткий жесткую проверку типов то перед дефолтных настройках передавая там в аргумент который строка число оно будет конвертировано в срок как сам считаешь какая лучше Ну строго типа На мой взгляд лучше конечно Хотя у нее есть свои
00:09:02 - 00:10:22
минусы скажем так проблемы и сложности при разработке но например ну Как сказать опять же ты не такой гибкий Короче у тебя кот будет стрелять если вдруг с сервака внешне вот у нас был Однажды случай можно быстренько расскажу мы писали на шарпе клиент для одного внешнего сервиса и клиент этот внешний сервис у него был API который был написан на PHP и у него из-за того что это было написано на PHP А как это сказать короче возвращалась я не помню как точно возвращалась в одном поле в одном случае объект ключ
00:09:46 - 00:11:21
значение а в другом случае пустой массив потому что Джейсон код он работает немножечко нестабильно В таких ситуациях и ты соответственно у себя на стороне Шарпа где уже определил что да это дикшинари там Киеве и соответственно ждешь одного А тебе приходит там массив И Опа все ломается Да как бы в этом проблема строго типизации Но это как пример Хорошо хорошо А еще вот ты шаг зацепил ты на самом деле сказал я и прошу прощения меня тут По работе дёргают чуть-чуть буквально пропустил А что тебе все
00:10:35 - 00:11:48
понравился или не понравился шар Мне нравится язык он мощный похож на JavaScript и соответственно и на ПХП знаешь связь typescrip типа typescrips PHP перемешанный вот нормальный но к сожалению я просто у меня не было времени нормально заняться им там тратил время на английский на PHP на C Sharp она не учила нормально так но успел поработать знаешь там открыть пару файликов разобраться в коде так сложно Так значит Смотри такой вопрос сейчас как они называются своими забываю ладно Бог с ним Скажи пожалуйста
00:11:12 - 00:12:45
списочный типы в ПФ есть смотря в каком списочный тип это ну вообще есть наверное Если я правильно понимаю Ну давай давай как ты понимаешь что такое списочный Тип списочный тип это просто набор список элементов каких не знаю массив лист я честно говоря не особо поэтому мне все время интересно и этот вопрос все время вызывает затруднение какой списочный тип ассоциативный массивы это словари шарпе условно Поэтому да Вот хорошо Не суть важно по большому счету Давай предположим что массив ты значит
00:12:05 - 00:13:39
передаешь массив например функцию аргументом потом внутри функции изменяешь значение внутри массива который снаружи этой функции значение поменяется а если мы передадим функцию массив и поменяем внутри функции значения массива вот так да не поменяете если мы не сделаем ее ссылочного типа кого переменные аргумент который мы Передаем функцию хорошо А скажи пожалуйста по умолчанию в PHP Как передаются аргументы по ссылке или по значению по значению по значению то есть создастся копия массива Да и Поэтому собственно снаружи не
00:12:54 - 00:14:18
поменяется Окей принято так что еще такого по теории Как по-русски называется этот ложе Сейчас подожди забыл прям Да это речь про анонимные функции Давайте собственно есть есть стрелочные функции есть анонимные что это такое и зачем используется Ну в PHP появились лямбда функции начиная с версии 7.4 это можно наверное провести аналогию с Джо скриптовым типа стрелочной функции короче ну в общем анонимная функция это функция которая не имеет никакого названия ее можно передать как аргумент в какой-то другое
00:13:38 - 00:15:21
например метод или занести в какой-нибудь переменную и уже вызвать отдельно вот при этом еще в PHP есть особенностью анонимных функций что они имеют возможность У них есть короче оператор с помощью которого можно в тамбэк функцию передать дополнительные данные очень полезно когда какой-то замыкание там Спасибо подсказал мне я вылетает из головы каждый раз и до замыкание расскажи пожалуйста про замыкание Что это такое Ну замыкание это собственно Вот то о чем я сказал в PHP эта функция анонимная которая имеет оператор ЮС с
00:14:32 - 00:15:58
возможностью принимать дополнительные параметры и соответственно она анонимная она может быть спрятана в виде переменной или переданы в виде аргумента какой-то функции и вызвана уже внутри этой функции они посредственно сам механизм замыкания как Что такое что происходит когда замыкание же не только КПП относится на самом деле замыкание в целом просто некий механизм механизм замыкания ну предположим что-нибудь если не знаешь в моем понимании Но это же Может быть я помню ты собеседование мне разъясняли эту историю но я уже очень я
00:15:16 - 00:16:40
понял да это сейчас один из самых частых вопросов фронт фронтам Да потому что это типа там в JavaScript там немножечко другое представление я честно говоря не не помню но да там чуть-чуть другое представление но по факту замыкание ещё раз говорю это механизм который он в целом реализуется во многих языках программирования может по-разному немножечко называться но в целом механизм-то один и тот же фактически это сохранение контекста э ну то есть внешнего контекста и функции то есть там какие-нибудь
00:16:01 - 00:17:16
аргументы которые ты передаёшь ты же анонимную функцию передаёшь а у него контекст теряется фактически внешний когда как когда ты там где-то там в другом месте вызываешь паттерны проектирование Давай поговорим про них Какие знаешь какие типы бывают Какие использовал сам Аля вот сейчас Да сегодня все все против меня видимо да а еще раз паттернов проектирования довольно много они делятся на различные группы я честно говоря не помню я помню структурная группа порождающие есть паттерны еще какая-то
00:16:38 - 00:18:03
вот я в основном работал с [музыка] порождающими паттернами например с абстрактной фабрикой она это паттерн который позволяет как бы создавать семейство связанных между собой объектов и как бы при этом не привязываясь конкретным классам этих объектов создаваемых в общем Сейчас пример наверное не приведу потому что Честно говоря давно уже хорошо Зачем она нужна не знаю выделить создать общие интерфейсы что ли для определенных сущностей и как бы не знаю создать типа семейства для там для каких-то существ например
00:17:33 - 00:19:28
продуктов или не знаю там как-то так это сложно просто сформулировать А зачем создавать Вот это семейство Почему мы Зачем вообще принципиально какую задачу мы решаем используем для того чтобы видимо изолировать логику создания объектов от непосредственной там так сказать от бизнес-логики Видимо да да Надо надо будет самом деле Хороший вопрос Спасибо я после митинга сегодняшнего Сегодня вечерком почитаю потому что запамятовал сильно Да ничего страшного Давай еще какие паттерны знаешь в принципе расскажи вообще просто Какие Какие Ну
00:18:41 - 00:20:14
просто бывают читал про какие-то вспомнишь наш самый частый который Я использовал это Фабричный метод который по сути необходим для того чтобы там на основе какого-то общего интерфейса создавать как бы объекты там каких-то сущностей вот это самый такой часто мной используемый паттерн еще я знаю сингл тон тоже порождающий паттерн его по сути насколько я помню Суть в том что есть по сути один экземпляр класса и этот экземпляр класса как бы глобальный для всего при ложения и ты соответственно можешь им пользоваться
00:19:32 - 00:20:56
давай пока по синглтону поговорим потом по вспоминаешь еще если что не вспомнишь смотри Ну в целом все правильно сказал вопрос такой час часто синглтон называют антипатом Да его довольно часто называют Анти паттерном потому что он глобальный поэтому это из этого порождаются проблемы при тестировании примокании там объектов и так далее поэтому не всегда синглтон как бы такой какой нужен хорошо есть еще семейство там контроллер V7 Ну вообще я конечно сталкивался потому что все-таки работал с фреймворками точно сталкивался
00:20:19 - 00:22:02
с mvc моделью контроллер соответственно там контроллер принимает события от условного клиента как-то обрабатывая через модель и эта модель уже возвращается в виде какого-то представления Ну как пример вот все эти паттерны они тоже были придуманы не просто так можешь приблизительно хотя бы предположить Зачем нам вообще использование например того же Ну вообще в целом это же некоторого рода стандарт которого мы придерживаемся при разработке приложений сам по себе паттерн довольно логичный понятный Поэтому если мы по нему
00:21:18 - 00:22:53
действуем приложение получается логическим потому что разбивается на логически понятные части потому что если бы мы допустим Не знаю там действовали по концепции каких-то просто компонентов и не было бы никакой цепочки по адекватной это могло бы приводить к хаосу поэтому сам подгугли чуть-чуть Ну да все правильно в целом то есть короче мы можем сказать что это архитектурный патент про то зачем он конкретно нужен кроме просто некая организация как бы структуру приложения предположить не можешь почему именно так
00:22:06 - 00:23:26
мы организуем структуру приложения опять же решает этот использование а почему именно так сожалению тут наверное надо как-то в историю податься этого паттерна чтобы понять Я не знаю Ну просто По мне так это звучит логично Хорошо смотри на самом деле архитектурные паттерны вот эти вот конкретно вот эти три они нужны для того чтобы отделить собственно бизнес логику от ее от представления фактически А можешь предположить Зачем нам отделять бизнес логику от представления пользователя Ну потому что в целом плохо если логика
00:22:54 - 00:24:16
исполняется где-то на стороне представления логика это такая бизнес-логика довольно абстрактное От остального приложения вещь которая должна отрабатывать где-то там и возвращать только результат весь ее вся весь ее код условный должен появляться в контексте Почему Вот почему потому что это бизнес логика Ну это ну такой код который представление само по себе это просто рендеринг результата А результат этот формирует соответственно бизнес логика которая абстрагируется от этого И почему нам важно Я тебя подвожу к мысли Почему
00:23:39 - 00:25:10
нам важно как бы именно чтобы представлять представление этой бизнес логики не было [музыка] во-первых представление может быть много Да во-вторых представление мы можем Ну типа менять как-то динамически и для того чтобы как бы Каждый раз при изменении представления нам не приходилось как бы бизнес логику переписывать вот мы пытаемся ее разделить из всех фактически хорошо мы такой вопрос значит вот этот висит Как ты считаешь насколько он применим чисто мы когда говорим о представлении обычно речь идет именно о пользовательском
00:24:23 - 00:25:59
интерфейсе насколько применим такой паттерны такой подход чисто бэкенгу он абсолютно и полностью применим конечно же потому что представление это не только HTML срендерины у тебя на страничке представление может быть может быть вообще пустое тело ответа со статусом 200 это уже понятно что что произошло или это может быть очень сон который вернули xml вот так Ну давай дальше Пойдемте Скажи пожалуйста приходилось ли тебе работать стоп Я работал хорошо но ты разрабатывал самостоятельно конечно тогда расскажи пожалуйста что это такое
00:25:15 - 00:26:57
и принципы основные вспоминать пожалуйста это не обязательно там все все помнишь Ну Начнем с того что Пи это всего лишь архитектурный стиль и скажем так он работает по по http rest API это обязательное условие [музыка] обязательное условие что теперь это те протоколы по которым работает растопи у него есть есть несколько принципов боюсь не назвать какие-то или назвать лишние на самом деле Ну что я знаю я знаю что как бы растапе это какой-то определенный стиль должен соблюдаться там это касается тех же углов
00:26:13 - 00:28:09
интерфейсов там растопию там разрешает кэширование стапе не является каким-то там стоит там свистеть на стороне клиента и в общем все в этом духе так вот чтобы еще какие-то ладно бог с ними с принципами нормально всё ничего их это так чтобы все помнить это это Мы не на экзамене я в принципе понял что ты понимаешь о чём речь Скажи пожалуйста в принципе Что такое стапель Вот ну как бы вообще что это такое вообще да это как бы всё правильно ты говоришь но вот что это ну по сути своей это архитектурный стиль по сути для
00:27:21 - 00:28:44
общения с сервером э-э сам по себе он выглядит Как э request respons то есть мы отправляем какой-то запрос на этот сервер и сервер нам возвращает какой-то ответ в каком-то в понятном для э-э понятным формате Там шесть сон Или xml это может быть чаще он используется Вот и по сути это просто набор поинтов которые разбиты по категориям разбиты по request-метам и мы как клиент с ними взаимодействуем для того чтобы иметь динамику и в принципе какую-то логику в контексте своего приложения Скажи пожалуйста какие методы работы
00:28:02 - 00:29:33
сказал какие бывают самые основные это Get Post Delete putch есть еще Option они это не совсем для для там каких-то запросов это он по-моему options он нужен тоже для пингования сервера то ли что-то типа того пингования запроса могу ошибаться но основные вот я назвал это постпач [музыка] а смотри Давай так я про общем Кстати мне самому надо посмотреть честно говоря с 1000 лет не слышал про него прям реально давно ты в первый кто упомянул вообще это хорошо в консольке в нетворке и я понял скажи пожалуйста вот чем путь отличается от
00:28:51 - 00:30:40
патча на самом деле у них разница как бы фактически физическая разница у них нету то есть у них разница наверное в концептуальной какой-то В общем в концепции применения этих request методов я могу сейчас перепутать что-то из этого то что-то то но вроде бы патч используется для частичного изменения например какой-то модели в базе сущности в базе а пуд Наверное если я их не путаю местами но вроде правильно он создает либо создает эту модель заново либо заменяет эту модель эту сущность в базе полностью но я условно говорю в базе как
00:29:48 - 00:31:26
это правильно ресурсы наверное назвать то есть патч используется для частичного изменения там какой-то сущности под для либо создания либо полного изменения всех данных что есть Хорошо а ты сам прям вот создавал целиком с нуля при этом какие-нибудь там флаги очень такое использовал но к сожалению под laravel сложно использовать Лагер я использую постман сразу заношу всю коллекцию запросами туда и там же рендерию либо там же документацию либо там экспортирую xml который кидаю свагеры свагер уже рендерит на своей стороне
00:30:42 - 00:32:01
О'кей так тут вроде все понятно Давай по базам данных чуть-чуть какими базами данных приходилось работать с mysql постгре SQL больше конечно мой SQL Марии ДБ пост Грецкий так только салляционными я работал с монгой но совсем чуть-чуть потому что у нас пользуется Манго Поэтому сильно за нее ответить не могу Если считаются всякие radise Почему бы и нет тоже база Да к сожалению я там с ради сам работал посредством всякого кодового сахара и как бы сами не умею писать там запросы транзакциями делами
00:31:38 - 00:33:08
Да транзакции это возможность отправить несколько запросов одновременно например два запроса на апдейт и при этом иметь возможность сделать бэк в случае если что-то пойдет и так чаще всего используется если нужно сделать прямо в работе непосредственно в своей как бы использовал Да не так часто Но использовал Да окей давай что-нибудь попроще допустим сейчас сформулирую такое что такое ключи просто Ну ключи это элементы с чаще всего с индексом которые чаще всего хранят какой-то идентификатор записи
00:32:30 - 00:34:11
вторичный ключ чем первичная встречная отличается первичный ключ Это непосредственно идентификатор самой записи вторичный ключ это условная связь между другой табличкой идентификатор первичного ключа другой таблицы для организации связи Что такое индекс ну я не могу сказать точно прямо определение не надо мне определение не надо понимание То есть ты можешь как угодно договориться хоть совсем криво мне чтобы ты понимал что это такое Это некоторая сущность которая позволяет ускорить fatching данных из модели То есть
00:33:47 - 00:35:18
например Прайма реки и чаще всего в зависимости от настроек базой форинке они уже имеют по дефолту индекс и это позволяет довольно быстро делать Селект данных по например индексу с использованием того же также индексы можно добавлять к различным полям для опять же того чтобы ускорить выборку данных при использовании VR ордер бай по-моему нежелательно использовать лайк Да индексы можно делать можно создавать индекс под одно поле можно создавать индекс подгруппу полей и да индексы они соответственно также
00:34:34 - 00:36:10
помимо того что они улучшают Селект они в то же время ухудшают апдейт потому что каждый наш Каждый раз при апдейте записи нужно перезаписывать индекс и это бьет по оптимизации Ну вот хорошо так А скажи пожалуйста вот в зависимости от настроек говоришь допустим дефоринке как бы индекс может строиться автоматически насколько это в целом обязательно и как когда можно не строить например [музыка] Ну наверное для Я даже не знаю там зависит ли это как-то от количества данных ну если мы мало делаем в принципе запросов
00:35:22 - 00:36:56
под этот форин Кейт то не особо Нам нужен ну этот если мы не делаем там условных джойнов каких-то то не особо нужен индекс под это поле если не так часто и массово это дело так хорошо принято так хочу чуть-чуть вернуться к вопросу нормализации потому что это вопрос на самом деле довольно серьезный и местами даже ключевой Я тебе сейчас расскажу что такое чуть подробнее Что такое нормализация соответственно и дальше посмотрим некоторые моменты короче нормализация это процесс удаления избыточных данных
00:36:17 - 00:37:41
говорит нам Интернет то есть метод проектирования базы данных который позволяет привести базу данных минимально избыточности понимаешь Ну для того чтобы наверное не было лишних данных и производительность была лучше в целом смотри пример для нормализации У нас есть грубо говоря какая-то табличка с большим набором полей собственно в одном из полей Мы же можем хранить например данные одного из полей Если они у нас счетные да то есть если они у нас условно заранее как бы известные То есть как как отдельный справочник
00:37:02 - 00:38:40
А можем хранить их прямо в этой табличке фактически сами значения правильно Ну вот нормализация это фактически выделение вот этого столбца в отдельную в отдельный справочник использованием уже внутри конкретно исходной таблице [музыка] нормализации фактически [музыка] и Вот теперь скажи пожалуйста Знаешь ли ты в каких случаях нормализация не нужна и может быть даже нужно скорее где нормализация нужна она точно если у нас есть посты у которых есть категории и название категории лучше хранить В отдельной
00:37:53 - 00:39:23
модели где нормализация обратный процесс как ты понимаешь да то есть типа наоборот У нас есть справочник мы его хотим пихнуть в эту же табличку зачем-то Зачем может предположить Да я пытаюсь придумать кейс ситуации как который можно применить Где нормализацию могу тебе подсказать могу тебе подсказать что у как бы как это называется у То есть у минимизации избыточности есть обратная сторона Ну как бы основная проблема все-таки в том что при минимизации избыточности мы создаем новые таблички новые модели и как это скажется на самой
00:38:40 - 00:40:17
базе по производительности может ударить Правильно Совершенно правильно это может ударить по производительности соответственно предположить из этого что в каких случаях понадобится В таких случаях когда мы там условно от одной модели Идем ко многим другим целям за данными чтобы Да и что мы добиваемся ди нормализации мы избавляемся от лишних моделей все переносим на плечи одной зачем Для того чтобы не делать больше запросов и работать там меньше запросов вообще меньше джойнов В общем для увеличения
00:39:32 - 00:41:07
производительности Да просто для скорости селекта условно Да тех случаях Когда нам важна больше скорость Селект чем избыточности в тех случаях мы как раз можем себе позволить подумать нормализации фактически хорошо [музыка] принято так так на самом деле у нас время постепенно выходит сейчас все тогда с базами данных закончим еще поспрашивать чуть погиб с гитом же работаете да какой командой можно отменить [музыка] гид реверт по-моему или рецепт вроде А скажи пожалуйста а откатить изменения именно в файле можно
00:40:23 - 00:42:02
ли можно но я я пользуюсь айды ешкой и постоянно делаю рулбэк через неё Я понятия не имею какая команда за это отвечает хорошо хорошо Нормально большинство уже так работает естественно понятно хорошо Так скажи пожалуйста у нас есть меньше есть да чем отличаются это наверное самый самый частый вопрос Ну да наверное согласен ну суть следующем когда мы делаем мерж мы просто из одной ветки вливаем Новый год в другую ветку когда мы делаем rebase мы ветку которую ребезим Вот другой ветки перебазируем типа обновляем на основе то
00:41:10 - 00:43:03
ветки от которой Мэри появился и дальше добавляем наши коммиты которые мы добавили то есть мы как будто бы сделали Обновили кодовую базу сделали более свежее относительно например мои ветки условно вот а мерж это когда мы просто слили все там не парясь о том что там не знаю просто влили вы допустим ваша команде каким нас rebase сквошками хорошо Так скажи пожалуйста Я тут сейчас погиту там тоже сильно не буду вдаваться подробности так в общем спрошу допустим [музыка] хотел спросить а они кстати не знаю наверное тегируют
00:42:11 - 00:43:55
как-то по версиям продукт наш основной в наших сервисах за которые мы отвечаем Я да делаю нос чисто Для галочки там на гитхабе своих опенсорных всяких неопытный сортных проектах Да тоже тегирую А зачем чтобы что для создаю релизы для релиза в основном А что такое тег в принципе так это скажем скорее не как отдельная сущность от типа ссылка на на определенное состояние твоего репозитория или типа того Ну в целом все правильно Чем отличается по итогу А ну да точно так он же он же не меняется то есть Мы создали так и всё
00:43:04 - 00:44:35
она как бы потом мы можем менять писать мне коты Ну это так я на самом деле ничего тоже ничего не влияет да Окей в принципе Мне кажется что я все по большому счету Спасибо А вот еще будут такие общие вопросы чуть-чуть скажи пожалуйста у вас этой доки доки вы используешь да наверняка же сейчас по-моему сейчас разработкой бездокиров вообще уже все очень [ __ ] в плане настройки инфры под докер но использую с кубером работал с мини кубом чуть-чуть уже даже не помню К сожалению нет у нас devops за все это
00:43:50 - 00:45:07
отвечает поэтому у нас тоже конечно же Но все равно в целом чтобы понимание было как хотел это удариться потому что у нас была задача такая Но потом подменили меня и я к сожалению этим так и не позанимался хорошо себя сиди Вот в этой области У тебя какой-то опыт наверняка тоже имеется Да я настраивал спецпроект есть наверняка Ну тоже тут никаких углубленных знаний Конечно мне не надо так интересно Да у меня есть набор экшенов по экшены которые делают там как это правильно назвать код стайл короче
00:44:30 - 00:46:02
проходится по поводу делают нормальный код прогоняют тесты всякие вот такие вот проверочки у меня и стен какой-нибудь что-нибудь такое да да И там соответственно я отказался от экшенов которые пушат мне что-то на сервер я сейчас пользуюсь nvoir are you по-моему это штука где ты просто цепля свой репозиторий и он весь всю эту связь сиди весь как бы по кнопке для тебя организует А ты всего лишь настраиваешь руки Ну да в гитхабе настраивал пайплайны в гитлабе тоже настраивал не так много делал максимально простые Потому что я не
00:45:19 - 00:46:46
работаю там над сложными сервисами там надо смарт-катом основным тоже не я работаю у нас там paypeline из хорошо Сейчас ещё по верхам тоже пробежимся скажи пожалуйста документированием проекта Как у вас дела обстоят как ты сам как ты сам в этом участвуешь на участвуешь всё своё в основном это всякие технические типа inpoint и куски кода что За что отвечает там кто за что овнет но документирование у нас есть [музыка] девелопер Смарт катком там вот у нас все это документирование всего Связано с нашим проектом но я к сожалению за это
00:46:06 - 00:47:33
не отвечаю документирование технических вещей типа там как развернуть Как настроить все это да мы делаем потому что сами через неделю уже забываем хорошо Ну то есть как бы [музыка] файл обычный репозитории практика есть такая даже обязательная скорее хорошо что тестированием тесты там Да я очень люблю тесты Я в основном работаю по ТДД OK значит скажи пожалуйста вот еще ты в качестве дебага чем для дебага чем пользуешься Я раньше пользовался когда на Маке работал сейчас я работаю на винде с vsl и мне
00:46:53 - 00:48:29
все настроить дебаг поэтому все профайлю руками Ну смысле дамплю Ну просто лень строить этот багер Хорошо Окей но в целом как бы пользовался и а что касается и сквель дата грипп использую дата грипп Понятно Explay всякие explain ну Редко чаще всего просто мне надо проверить вернет ли мне то что нужно запросы пишу обычно Селект тоже использую хорошо понятно Ну пожалуй у меня наверное вопросы закончились в этом смысле В целом меня очень положительные впечатление как бы большей части вопросов как Молодец моё я
00:47:45 - 00:49:27
давно год не проходил собеседование чувствуя затупил Я просто даже не готовился Обычно я тоже не готовился вот ничего страшного В целом как бы да В целом пока что выглядит так что вероятно пойдешь вопросы могут повторяться и скорее всего будут повторяться вот нашего разработчика надо посмотреть как бы как ему нужно как бы самостоятельно
00:48:36 - 00:49:38