Валентин Удальцов, Виталий Лихачев: Публичное собеседование Senior Software Engineer (PHP)
HTML-код
- Опубликовано: 24 авг 2024
- Публичное собеседование на Senior PHP. Разберемся какие сейчас актуальные вопросы по PHP обсуждают на собеседованиях - паттерны разработки, полиморфизм/вариантность в чистом PHP, SOLID, DDD, микросервисные паттерны.
Проводить собеседование будет Валентин Удальцов - активный участник сообщества PHP, преподаватель. Автор каналов Пых (t.me/phpyh) и PHP Point ( / phppoint , контрибьютор различных проектов экосистемы PHP (github.com/vud....
Проходить собеседование будет невероятно крутой - Виталий Лихачев 🔥 Fullstack разработчик. Работал и в стартапах, и в крупных компаниях. Пилил сложный динамичный фронт в стартапе, настраивал CI/CD и aws, оптимизировал бэкенд и проводил технические собеседования - поэтому понемногу знает жизнь программных проектов со множества сторон.
Канал с анонсами t.me/megdu_skobok
Boosty boosty.to/megd...
Ламповый чат t.me/backend_m...
Полезные ссылки
📖 Пых t.me/phpyh
📖 PHP Point / phppoint
📖 Как разобраться во внутрянке php www.phpinterna...
📖 Что еще почитать про устройство php npopov.com/
📖 Как держать растущие нагрузки www.scalingphp...
📖 Как начать по-настоящему понимать работу postgresql на больших проектах postgrespro.ru...
📖 Возможности pg • Один PostgreSQL, чтобы...
📖 Если вы хотели свитчнуться в go, middle+ с опытом, но не знаете с чего начать, welcome slurm.io/go
📖 PHP weekly www.phpweekly....
📖 Postgres weekly postgresweekly...
📖 K8s weekly learnk8s.io/le...
📖 Software lead weekly softwareleadwe...
Полезные ссылки
📖 Пых t.me/phpyh
📖 PHP Point ruclips.net/user/PHPPoint
📖 Как разобраться во внутрянке php www.phpinternalsbook.com/
📖 Что еще почитать про устройство php npopov.com/
📖 Как держать растущие нагрузки www.scalingphpbook.com/
📖 Как начать по-настоящему понимать работу postgresql на больших проектах postgrespro.ru/education/books/internals
📖 Возможности pg ruclips.net/video/HKfgZrqVkP4/видео.html
📖 Если вы хотели свитчнуться в go, middle+ с опытом, но не знаете с чего начать, welcome slurm.io/go
📖 PHP weekly www.phpweekly.com/
📖 Postgres weekly postgresweekly.com/
📖 K8s weekly learnk8s.io/learn-kubernetes-weekly
📖 Software lead weekly softwareleadweekly.com/
Господи, чего только сейчас не вешают на бедных PHP-шников: и настроить *nix под работу, и html, css, js, и вью всякие, теперь вот и ci/cd настраивать... Что дальше будет, возврат от фронтендер/бэкендер/девопс к веб-мастерам?
От вакансии и компании зависит. Могут и принтеры заправлять заставить, если вы на такое подписались ;)
@@aragnophy Собес называется Senior Software Engineer (PHP). Я так понимаю, что вакансия PHP-шная, причём тут CI/CD?
@@solvex8304 , от **современного** Senior PHP я ожидаю, что он хорошо разбирается в современных инструментах PHP и готов сказать, что должно быть добавлено в пайплайн для успешного Continuous Integration. Это часть методологии dev-ops. По-вашему ops должен знать специфику PHP? Всякие линтеры, статанализаторы, фреймворки для тестирования? Нет, конечно, это ответственность разработчиков. И вместе с ops-ами они заинтересованы в том, чтобы прод всегда был в отличном состоянии, насколько это возможно. При чём тут html/css/js я вообще не понял.
@@vudaltsovПочему, PHP-программист же не пойдёт в компанию, где питон или нода на бэке. Если девопс идёт туда, где используется php, то да, должен знать специфику. А html/css/js - при том, что такая тенденция пошла, всё это вешать на php-шника. Откроешь практически любую вакансию PHP-программист и в них это всё указано в требованиях.
@@vudaltsovты как та женщина с видео 😂 половину слов на английском, половину на русском😂
Я 20 лет в IT и делаю вывод, что часть людей это энергетические вампиры, а остальная часть жертвы для этих энергетических вампиров, которые медленно из жертвы вытягивают жизненные силы с изощренностью маньяка!
Даже здесь это происходит!
Мой синдром самозванца крутанул на максимум))
Крутой собес. Кот очень любит, доверяет❤
Спасибо, очень интересно!
Прекрасное интервью!🎉
40:25 @vudaltsov, забавно было услышать, что cache->get() вместо cache->has()/cache->get() решает проблему гонки в мировозрении пхп-шника :D
1:04:00 - очень хороший подход.
где почитать про version в запросах
1:04:19 А как на уровне ивентов сделать батчинг? Куда будет накапливаться декремент? Консюмер же будет убивать инстанс
Вы нашли ответ. Повторно смотрел стрим, тоже интересует этот момент
@@SemyonF89 сейчас пересмотрел, и не помню, что у меня было в голове тогда и почему я этот вопрос задал). Я предполагаю, что можно накапливать хоть в тот же редис или любую другую БД, а потом резолвить по крону
А обязательно половину слов использовать английские слова русскими буквами? 😂лухари лайф
@@snikitin32 культуру письма не отменяли, но графоманить нас не заставляют, большинству, предположу, пофигу. Мы тут в курилке вышли перекинуться мыслями) Энтропия от транслита на русском не падает. Вся програмота давно привыкла к таким профессиональным приемам. Човы, подколоть так решили, не заточенным шилом) .
@@snikitin32 естественно.
Крутое видео! Спасибо! Плиз, на будушее решайте заранее вопросы с микро... а то бубубу бубубу... не блин... 2024 год же... а ошибки все теже...
А чей именно звук не понравился?
@@mezhdu_skobok У Виталия конечно, хотя в целом разобрать всё можно было.
30:00 Мутационное тестирование это fuzzing?
Каким образом лучше создавать DTO'шки: передавая аргументы в конструктор при вызове new или путём цепочки вызовов сеттеров (текучий интерфейс)?
DTO желательно чтобы были иммутабельные. Так что только через конструктор. Менять через with методы, получая новые инстансы.
@@vudaltsovНо ведь если у нас не все свойства DTO будут задействованы, то в случае, когда возникает необходимость юзать пару-тройку и они в конструкторе будут в конце, то придётся проставлять null'ы / дефолтные значения для тех, которые перед ними. Выглядит такое грамоздко и некрасиво. А так, вызов пары сеттеров и всё супер
@@sergeykozhenkov371 если в DTO очень много ненужных полей, то её нужно декомпозировать на несколько DTO, по одной на юзкейс. Для дефолтных значений в PHP >=8.0 есть именованные аргументы, при помощи них легко изящно пропускать необязательные параметры.
@@sergeykozhenkov371 Используйте именованные аргументы и все будет красиво. Плюс если у вас настолько разное поведение метода, принимающего DTO, возможно стоит разбить его на два и более и для каждого создать свой DTO.
Если у вас есть сеттеры и геттеры, то зачем они вообще нужны? почему бы просто не сделать поле public?
Круто
38:20 - а зачем тут проверка только на null? А если cache->get(...) отдаст false? То он выдаст false наружу.. что не дело.
Ну там по контракту возвращается default из метода get. И он по умолчанию null. Так что можно предположить, что кэш вернёт ?Report. Но поскольку дженериков в этом месте нет, то, строго говоря, лучше проверить instanceof.
Скиньте ссылку на курс)
Ссылка на slurm есть в описании видео, в комментарий не смогу приложить, автомодерация ссылку не пропустит
Люди добрые, подскажите где можно подписать петицию "за дженерики в php". Как долго нам придется писать эти громоздкие аннотации? По хорошему, их вообще при компиляции можно опускать. Они в 99% случаев, нужны лишь для удобного написания кода, чтобы не стрелять себе в ногу. Да, PHP интерпретируемый и с них толку практически нет, но как же удобно будет писать код. Атрибуты перекочевали с аннотаций, в чем проблема то же самое сделать и с дженериками?
А вам гофер не нужен?
Если интересно пройти собес по го, пиши в телеграмм @Gskoba
45:48
Классический сеньер, ивент-драйвинг😂, тип вообще не дупляет, что в мире последние 20 лет происходит, в описании написано солиды, ддд, архитектура, по факту, еле продукт разбил, инкапсуляция и инварианты - слова видел, как и кохижин собственно, вообще все базворды на уровне чтения документации, просто слова знает, да и за ооп тоже, есть класс значит ооп, в общем прискорбна, что индустрия таким вот переполнена, очень прискорбна😢😢😢 тупа 99 из 100 вот такое, в лучшем случае, а самое главное, что Валентин прекрасно понимает, но лицемерит говоря все топ, просто поощряет бестолковство
Приходите на похожий собес. Расскажите, как нужно, я с удовольствием послушаю квалифицированного специалиста. Чужой опыт всегда полезен! Все контакты в описании
На самом деле действительно есть такой момент, что интервьювер сглаживает углы, но это нормально, это психология)
К интервьюируемому тоже вопросов немного, учитывая что это вообще не основной его язык, а забывать то, с чем долго не работаешь это нормально)