СОБЕСЕДОВАНИЕ по PHP: к каким ВОПРОСАМ готовиться?

Фильм және анимация

🤚 Привет! Вы на канале "TeachMeSkills Школа программирования"! И это новый выпуск рубрики НАТИВ в формате подкаста. Сегодня поговорим об Aйти и не только. Вас ждет разбор вопросов и ответов с технических собеседований. Обсудим такую область знаний из IT, как язык программирования PHP. Какие могут задать вопросы на собеседовании? Что должен знать PHP-разработчик? Какие типы данных существуют в PHP? Чем отличается инкремент от декремента? В чем разница между интерфейсом и абстрактным классом? Для чего нужны Трейты в PHP? Что означает ссылочная целостность? В чем разница использования ключевых слов WHERE и HAVING? Также больше про переменные в PHP, операторы сравнения PHP, пространства имен в PHP и выполнение транзакций. Поделится своим опытом работы и поможет во всем разобраться наш наставник по курсу Веб-разработчик и Software Developer из Andersen Lab Игорь Алексейчук. Приятного просмотра!
❗️Ссылка на курс Web разработчик - teachmeskills.by/kursy-progra...
🧔Профайл Игоря - / igor-alekseychuk
🧔Telegram Ильи (для ваших предложений по контенту) - @ilyarublevsky
Что еще будет в видео👇
0:00 - Вступление
1:33 - Про отношение к собеседованиям
3:58 - Типы данных в PHP
5:52 - Про интерфейсы
6:20 - Инкремент/декремент
7:25 - Динамические переменные
9:00 - Рекурсия
9:55 - В чем разница =, ==, ===
11:19 - Модификаторы видимости
11:22 - Про систему типов в PHP
11:51 - Про абстрактный класс
14:06 - Про магические методы
17:03 - Про traits
18:36 - Про обработку ошибок и исключение
20:56 - Про Namespaces
23:45 - Про транзакции и уровни изоляций
26:51 - Про СУБД
29:09 - Про типы связей в Laravel
31:56 - Про middleware
33:39 - Про различие where и having
35:00 - Про работу с чистым PHP

Пікірлер: 195

  • @teachmeskills
    @teachmeskills Жыл бұрын

    Тайм-лайн👇 0:00 - Вступление 1:33 - Про отношение к собеседованиям 3:58 - Типы данных в PHP 5:52 - Про интерфейсы 6:20 - Инкремент/декремент 7:25 - Динамические переменные 9:00 - Рекурсия 9:55 - В чем разница =, ==, === 11:19 - Модификаторы видимости 11:22 - Про систему типов в PHP 11:51 - Про абстрактный класс 14:06 - Про магические методы 17:03 - Про traits 18:36 - Про обработку ошибок и исключение 20:56 - Про Namespaces 23:45 - Про транзакции и уровни изоляций 26:51 - Про СУБД 29:09 - Про типы связей в Laravel 31:56 - Про middleware 33:39 - Про различие where и having 35:00 - Про работу с чистым PHP

  • @sovrinfo
    @sovrinfo Жыл бұрын

    Спасибо за видео. Коммент в поддержку!

  • @loadmore
    @loadmore Жыл бұрын

    Теперь я знаю кто такой крепкий джун )

  • @jerrylaniakio
    @jerrylaniakio8 ай бұрын

    Ещё одно интервью-викторина. Самый яркий красный флаг, который означает, что придется работать не с опытными ребятами, а теми, кто любит активно готовиться к интервью-викторинам и что качество кода в проекте ниже плинтуса. Забавно, что сам синиор офигенно так плавает при ответах на эти бесполезные вопросы. Ещё более забавно то, что он явно готовился отвечать именно по этим вопросам.

  • @spitzer4077
    @spitzer4077 Жыл бұрын

    Весьма позитивно вышло, ничего нового так и не узнал..

  • @rinatsarmuldin2280
    @rinatsarmuldin2280 Жыл бұрын

    Крутая встреча!!!

  • @olgalazuk8927
    @olgalazuk8927 Жыл бұрын

    Спасибо, Игорь, за полезное видео))) очень актуально, чтобы освежить матчасть!

  • @user-em1wj5ll4q

    @user-em1wj5ll4q

    Жыл бұрын

    Спасибо, Оля, я старался )))

  • @alextopsite
    @alextopsite Жыл бұрын

    Хорошее и очень полезно видео! Спасибо!

  • @Epenckorn
    @Epenckorn6 ай бұрын

    Спасибо огромное! А то 4 года отработал на одном проекте. Напрочь выветрилась из головы куча теории из универа и предыдущих работ. Вот сижу, восстанавливаю. С вашим видео всего за полчаса почти всё в голове всплыло.

  • @teachmeskills

    @teachmeskills

    6 ай бұрын

    и вам спасибо за просмотр)

  • @user-co3kd1ej7o

    @user-co3kd1ej7o

    5 ай бұрын

    Та же ситуация. Удачи!

  • @i_programmer
    @i_programmer2 ай бұрын

    Некоторые ответы от текущего "Синьора" неверные. - "МОЖЕТ ли абстрактный класс содержать частный метод?". Ответ тут: ОДНОЗНАЧНО ДА, а не "Нет". - Блок finally не всегда будет выполнен. Есть условие, при котором программа туда не попадёт. Например если в try или catch был произведён выход из программы через exit() или die();

  • @leonid5114
    @leonid511411 ай бұрын

    Есть поправочка, 15:50 __call() и __callStatic() срабатывают, когда мы пытаемся вызвать несуществующий/приватный метод/статический метод у объекта, а не вызывать объект как метод.

  • @gromfer708

    @gromfer708

    10 ай бұрын

    Видимо перепутал с __invoke()

  • @suleymanaliev1459

    @suleymanaliev1459

    6 ай бұрын

    Возможно у вас ошибка, сомневаюсь насчет приватного метода. Метод __callStatic() не срабатывает для приватных методов. Они срабатывают только в случае вызова несуществующего или недоступного (например, защищенного) статического метода.

  • @sergeblack1777
    @sergeblack1777 Жыл бұрын

    Про приватный (частный) метод в абстрактном классе Игорь не прав. В абстрактном классе МОЖНО написать приватный метод. Вызываем его также как и всегда внутри самого класса.

  • @MyElectromaster

    @MyElectromaster

    Жыл бұрын

    Написать можно. Вызвать нельзя. Потому что нельзя создать объект абстрактного класса.

  • @sergeblack1777

    @sergeblack1777

    Жыл бұрын

    @@MyElectromaster Вызвать тоже можно! И к созданию объекта это никакого отношения не имеет

  • @MyElectromaster

    @MyElectromaster

    Жыл бұрын

    @@sergeblack1777 так вы наследника создали и костылем через публичный метод вызываете приватный. Разговор был конкретно про абстрактный класс

  • @sergeblack1777

    @sergeblack1777

    Жыл бұрын

    @@MyElectromaster Тогда, интересно, как вы собираетесь вызывать ПУБЛИЧНЫЕ не статические методы у абстрактного класса? У абстрактного класса всегда будет наследник, иначе нет смысла в абстрактном классе.

  • @sergeblack1777

    @sergeblack1777

    Жыл бұрын

    Приватный метод нужен для выполнения работы самого класса, и не зависит от того абстрактный это класс или нет

  • @user-lp7ug2rd7s
    @user-lp7ug2rd7s Жыл бұрын

    Коментарий в поддержку канала и видео. Вылучшие господа :)

  • @teachmeskills

    @teachmeskills

    Жыл бұрын

    Спасибо большое!)

  • @xenm85
    @xenm8510 ай бұрын

    Вопрос про абстрактный класс и интерфейс нельзя задавать на любом уровне. Точнее можно, но в разном контексте - джуна можно спросить по смысл про технику , сеньора когда и зачем он это использовал

  • @user-wb5dh1ps4x
    @user-wb5dh1ps4x Жыл бұрын

    В интерфейсе нельзя объявить свойства? Опечатался кажыся

  • @meteysh
    @meteysh Жыл бұрын

    Хорошее видео. Если бы мне задавали такие вопросы на сеньора, я бы уже подумал что могу на любую работу устроиться 😃

  • @hacktivist86

    @hacktivist86

    Жыл бұрын

    такие и на мидла не задают) ну или не так поверхностно)

  • @Vladimir-yh2dl

    @Vladimir-yh2dl

    10 ай бұрын

    а какие тебе вопросы задвали на сеньёра ?

  • @meteysh

    @meteysh

    10 ай бұрын

    @@Vladimir-yh2dl не сказать что они были какими. О особенными. Просто их было очень много и их разных областей. Например что такое acid, блокировки бд, уровни изоляции, луковичная архитектура, какие то тонкости симфони, очень большой список. Плюс требуют реально опыт, вопросы на которые не ответишь, если не имел с ними дело лично

  • @mzaytsev

    @mzaytsev

    3 ай бұрын

    Когда человек рассказывал разницу между абстрактным классом и интерфейсом, то стало понятно что он сам даже до мидла ещё не дотянул)

  • @xenm85
    @xenm8510 ай бұрын

    10:00 - 2 равно - с приведением типа сравнение, 3 равно без приведения типов. Очень много слов, оно кстати, говорит о скиле чела, лично для меня

  • @MrVstas
    @MrVstas5 ай бұрын

    Про изоляцию транзакции, тоже думаю что вопрос в другом. Это про набор требований к транзакционной системе ACID. И тут нас интересует буковка I - Isolation. У нас с СУБД могут вести работу сразу несколько клиентов. И поэтому встает вопрос в том как они будут работать с данными. В идеале для достижения транзакционности надо воссоздавать полностью аналог базы и пока ты с ней работаешь, то его поддерживать. Но это очень дорогостоящая операция. Поэтому есть уровни изоляции которые приближают нас к ней. Нужно рассмотреть аномалии которые возникают при многопользовательских транзакциях: потерянное обновление, "грязное" обновление, неповторяющееся чтение, фантомное чтение. Ну и отсюда выработаны уровни которые решают эти и другие проблемы: read uncommited, read commited, repeatable read, serializable.

  • @teachmeskills

    @teachmeskills

    5 ай бұрын

    спасибо большое за пояснение и ценное дополнение)

  • @Dimontius1
    @Dimontius17 ай бұрын

    THX for video. But most question is too easy even for junior level

  • @makkapoya
    @makkapoya Жыл бұрын

    Харош

  • @Fr0stick
    @Fr0stick Жыл бұрын

    Не хотите сделать формат тестового интервью, это когда вы проводите собеседование желающему по одной из технологий? Я бы по c# поучаствовал)

  • @teachmeskills

    @teachmeskills

    Жыл бұрын

    Можно попробовать)

  • @Fr0stick

    @Fr0stick

    Жыл бұрын

    @@teachmeskills Как с вами связаться?

  • @teachmeskills

    @teachmeskills

    Жыл бұрын

    @@Fr0stick напишите, плиз, в ТГ - @ilyarublevsky

  • @xenm85
    @xenm8510 ай бұрын

    Про SQL - должны ли мы указывть все поля из GROUP BY в SELECT. Без привязки к СУБД)

  • @snikitin32

    @snikitin32

    3 ай бұрын

    Нет

  • @sparkygames945
    @sparkygames945 Жыл бұрын

    Насчет субд типичная (хоть и не критичная) ошибка. Реляционные базы данных действительно от слова relation, только вот под этим понимается не связь, и уж точно не связь между таблицами. Relation - это "отношение", математическая абстракция, аналогом которой (не совсем точным) является таблица. К этим самым отношениям применяется специальная теория, логика, множество операций, на основании которых строиться работа базы данных. Т.е. база реляционная не потому что там что-то с чем то связано, а потому что в основе ее работы лежит понятие "отношение" (relation) и множество операций, определенных над ним.

  • @mihastifler

    @mihastifler

    Жыл бұрын

    я думаю он просто перепутал relation с reference

  • @blockycms
    @blockycms6 ай бұрын

    В приципе...и как бы...ну в принципе...ну и это...в принципе. Мой счетчик его "в принципе" сломался на 3-й минуте

  • @michaelmyers717
    @michaelmyers717 Жыл бұрын

    Такой вопрос. Насколько глубоко нужно знать тему веб-серверов и окружения: nginx, apache, fpm, linux? Я просто работаю битрикс-разработчиком, но у нас есть сис.админ, а как в других компаниях? Хотелось бы в будущем перекатываться в мейнстрим php-разработки, но страшновато из-за того, что есть только общие знания обо всём этом, а какую-то нормальную литературу даже на английском особо не нашёл

  • @user-em1wj5ll4q

    @user-em1wj5ll4q

    Жыл бұрын

    Этот момент не является критическим, но любой разработчик должен уметь создать для себя локальное окружение. Мой маленький совет - попробовать развернуть LAMP/LEMP самостоятельно с нуля. Потом тоже самое попробовать собрать на docker. Для начального уровня не требуется какой-то супер экспертизы, но должно быть базовое понимание как это все работает.

  • @michaelmyers717

    @michaelmyers717

    Жыл бұрын

    @@user-em1wj5ll4q спасибо, будем пробовать)

  • @vikont2448

    @vikont2448

    11 ай бұрын

    ​@@michaelmyers717, если ты работаешь в теме по bitrix, то разработчиком тебя сложно назвать. Ты обычный кодер, как бы оскорбительно это не звучало. Рекомендую долго не засиживаться с битрикс и развиваться, как разработчик. Уметь настраивать сервера, работать с докер, писать апихи и использовать фреймворки. В Битрикс можно как в грязи завязнуть и потом сложно будет с поиском работы с другим направлением

  • @Wivern11

    @Wivern11

    8 ай бұрын

    перебрался с битрикса на symfony 2 года назад. сложнее битрикса нет ничего. в нормальном фреймворке если ты что-то не понимаешь, то это не ты тупой, а тот, кто писал документацию. в битриксе считают иначе.

  • @Epenckorn

    @Epenckorn

    6 ай бұрын

    В теории, неплохо бы знать, как развернуть проект у себя на локале. В крупных компаниях, как правило, за инфраструктуру отвечает devops или админы. У меня на прошлом месте например даже ось и сетевое окружение на рабочем ноуте ставили и настраивали админы, самому не пришлось. Но если компания не имеет такой практики (предоставления рабочего оборудования) или если ты хочешь развивать собственные проекты или предпочитаешь работать на личном железе, то никто кроме тебя рабочую среду (в том числе для тестов) не настроит. Так что знать надо.

  • @Have476
    @Have47610 ай бұрын

    7:20 сразу выключил спасибо не интересно... Мотиватор Сеньоровский от "Бога" 🤣🤣 послушаешь таких точно перестанет возникать желание ходить на собеседования))) А можно узнать так для справки?)) Я Джуниор. Мне говорят не парень ты должен не с заученного примера, а с пониманием и опытом отвечать) Вопрос - откуда? Если я образно иду на Джуниора?) Понятное дело 90-то процентов опрошенных будет отвечать то как в учебниках или документации написано

  • @Uh_Ty
    @Uh_Ty Жыл бұрын

    Если я это всё знаю и могу развёрнуто объяснить. Но при этом никогда не работал программером. Учил всё как хобби, для расширения кругозора моего. Для обслуживания и допиливания своего интернет магазина. Мне 40, знаю php на уровне начальном практическом, могу сделать интернет магаз на Laravel. Вёрстку само собой сделать могу. Куда податься на фриланс или на удаленку?

  • @leshen_deaf

    @leshen_deaf

    Жыл бұрын

    Я бы советовал на удаленку, сэкономите нервы и время

  • @user-em1wj5ll4q

    @user-em1wj5ll4q

    Жыл бұрын

    Я бы попытал счастья в компании и в офисе. Просто для того, чтобы набраться опыта. Чтобы всегда было у когг спросить совета, получить фитбэк после ревью кода. Вы получите гораздо больший рост, чем просто на фрилансе. Когда уже технически окрепнете - тогда и делать выбор

  • @Kleolit

    @Kleolit

    Жыл бұрын

    Уже нашли работу?

  • @Uh_Ty

    @Uh_Ty

    Жыл бұрын

    @@Kleolit пока не искал. Для себя что-то пилю по вечерам пока. Если буду рассматривать работу, то только на фрилансе, отдельно по заказам. Не в долгую на три месяца и тп. Не готов менять пока сложившийся образ жизни, денег пока хватает. Но кто знает что ждёт в будущем, как бы не пришлось искать запасной аэродром в дальних далях...увы

  • @eugenex8892
    @eugenex8892 Жыл бұрын

    Лайфхаков - 😂😂😂 Костылей! 😊

  • @testdeim
    @testdeim5 ай бұрын

    про мидлвейр ответ не верный. вы описали частный случай мидлверов реализованный в Ларавеле. и не описали его суть. в общем случае мидлвейр это часть кода, которая принимает на входе данные, в себе их использует (модифицирует или просто использует для чтения) и передаёт по цепочке следующему мидлвару. мидлвар может передать управление следующему мидлвару либо прервать цепочку. обычно конструкцию мидлваров использует пред и/или пост обработку какого то процесса.

  • @AlexanderBusygn
    @AlexanderBusygn Жыл бұрын

    22:10 Dependency injection и инверсия зависимостей это разные вещи

  • @user-em1wj5ll4q

    @user-em1wj5ll4q

    Жыл бұрын

    Согласен, оговорился

  • @user-em1wj5ll4q

    @user-em1wj5ll4q

    Жыл бұрын

    Хотя Di является одной из разновидностей IOC

  • @OOOJohnJ

    @OOOJohnJ

    Жыл бұрын

    Do это внедрение зависимостей?

  • @vesh95
    @vesh959 ай бұрын

    Вот до сих пор не понимаю final в try catch, если мы обработали исключение, то мы продолжаем выполнение скрипта и можем там произвести нужные действия, если же мы обошли блок catch, то так же продолжаем.

  • @olegs7470

    @olegs7470

    9 ай бұрын

    Это если все, конец пути, скрипт умер, то все равно выполнить этот кусочек напоследок. Например удалить все.

  • @aragnophy

    @aragnophy

    5 ай бұрын

    @@olegs7470 Если скрипт умер то finally не выполнится тоже. Finally выполняется после веток try\catch в любом случае пока скрипт жив. Классический случай, закрыть коннект к базе, даже если был Exception или его не было.

  • @deminanton13
    @deminanton13 Жыл бұрын

    О, Иван Дорн в айти пошел)

  • @MrVstas
    @MrVstas5 ай бұрын

    Насчет приватного метода в абстрактном классе. Можно. Но сам я так не делаю, но вот пример

  • @KP-qo9ow
    @KP-qo9ow Жыл бұрын

    Классный ролик очень полезно для учеников php

  • @xenm85
    @xenm8510 ай бұрын

    Вроде норм сначала все говорил.(PS: у меня уже лет 20 опыта разработки). Нельзя сеньорам и джунам задавать одни и теже вопросы. Сеньор тебя может послать просто, если ты спросишь его про какие типы данных есть в ЯП, хотя для джуна это норм вопрос.

  • @Wivern11

    @Wivern11

    8 ай бұрын

    пошлет и останется без работы.

  • @Kondratyevv

    @Kondratyevv

    5 ай бұрын

    Пойдет в нормальное место

  • @mzaytsev

    @mzaytsev

    3 ай бұрын

    Когда человек рассказывал разницу между абстрактным классом и интерфейсом, то стало понятно что он сам даже до мидла ещё не дотянул)

  • @xenm85

    @xenm85

    3 ай бұрын

    @@mzaytsev кстати, да, очень слабо рассказал, видно, что не часто с этим работал

  • @imanalimamadiev1679
    @imanalimamadiev16799 ай бұрын

    От интерфейса нельзя создать Новый объект

  • @Sunsonar
    @Sunsonar Жыл бұрын

    Чувак сам не понимает назначение абстрактного класса и интерфесов, вот такие типы начинают собеседовать, которых самих приходится учить на собеседовании, а они с открытыми глазками, вы нам не подходите)))

  • @tordok7158

    @tordok7158

    Жыл бұрын

    Почему вы так думаете?

  • @user-ii9xu7be1g

    @user-ii9xu7be1g

    Жыл бұрын

    @@tordok7158 наверно потому что конкуренты перспективнее себя любимого не нужны 😜

  • @meteysh

    @meteysh

    Жыл бұрын

    Да все правильно он ответил.

  • @leontyd8203

    @leontyd8203

    9 ай бұрын

    ​@@meteyshнет. От абстрактного класса нельзя создать объект.

  • @kekivanovich9222

    @kekivanovich9222

    8 ай бұрын

    Поплачь, слабый

  • @xenm85
    @xenm8510 ай бұрын

    Вот хорошая тема про __destruct. А когда он вообще может быть нужен?

  • @gromfer708

    @gromfer708

    10 ай бұрын

    Я в логгере использовал, был кастомный класс для логгера и в destruct прописал запись лога в бд. Т.е. при жизни класс собирал в себе логи но мой подход гарантировал что операция сохранения лога была последней

  • @Alex6636

    @Alex6636

    22 күн бұрын

    Чтобы память освободить например

  • @HoochieMen
    @HoochieMen6 ай бұрын

    22:10 - не инверсия зависимости а внедрение зависимостей. Инверсия зависимостей это что то на SOLID-овском)

  • @teachmeskills

    @teachmeskills

    6 ай бұрын

    спасибо)

  • @PSPlayer
    @PSPlayer8 ай бұрын

    это вопросы на какой уровень?

  • @teachmeskills

    @teachmeskills

    8 ай бұрын

    Джуниор

  • @hsjsudve837d
    @hsjsudve837d Жыл бұрын

    После 3 лет работы все эти вопросы просто как данность, обыденность. Но все равно интересно послушать, тем более когда коллеги с большим опытом отвечают так же как и ты :)

  • @teachmeskills

    @teachmeskills

    Жыл бұрын

    Спасибо)

  • @Loutistic
    @Loutistic4 ай бұрын

    13:36 - ответ "нет" неправильный - в абстрактном классе можно создать private method. Разумеется он не должен быть абстрактным и будет доступен только внутри самого абстрактного класса. Но в этом и смысл абстрактного класса - содержать часть деталей реализации. Если нужен контракт потомкам класса - нужно будет шарить доступ через протектед.

  • @teachmeskills

    @teachmeskills

    4 ай бұрын

    спасибо большое за уточнение. будем исправляться

  • @user-im9np6tp6r
    @user-im9np6tp6r Жыл бұрын

    Эх, горе-учитель. Вопрос: "Могут ли приватные методы использоваться внутри абстрактных классов?" - ответ: "Нет".

  • @OOOJohnJ

    @OOOJohnJ

    Жыл бұрын

    Ответ да на самом деле

  • @Apokall777

    @Apokall777

    8 ай бұрын

    В своих публичных методах , абстрактный класс может реализовать свои приватные методы

  • @vitaliishveider6384
    @vitaliishveider6384Ай бұрын

    Частный метод? Первый раз такое слышу. Если тут про приватные методы. То может.

  • @teachmeskills

    @teachmeskills

    Ай бұрын

    да, он самый. спасибо за замечание!

  • @xenm85
    @xenm8510 ай бұрын

    А если это комментарии пользователя? Надо их их удалить и какие есть варианты решения этой проблемы на уровне СУБД? PS: ну тут крепкий мидл, далеко не сеньор, уже про каскадное удаление и его вариации нужно знать сеньору

  • @user-ou3jn8lt3d

    @user-ou3jn8lt3d

    7 ай бұрын

    На уровне СУБД это не решается. В целом, плохая практика выносить бизнес логику в слой хранения данных. А если говорить конкретно за ФК, то это ещё и причина для отказов бд, как только нагрузка будет чуть больше тестовой/стартаповой.

  • @LifeDebugger
    @LifeDebugger Жыл бұрын

    Про динамические переменные смешал всё в кучу: и динамические имена и типизацию. public, private, protected - модификаторы доступа, а не видимости. К модификаторам видимости можно отнести global и static. Разницу между интерфейсами и абстрактными классами рассказал на уровне джуна.

  • @hacktivist86

    @hacktivist86

    Жыл бұрын

    абстрактный класс - это класс, интерфейс это интерфейс) и не поспоришь)

  • @OOOJohnJ

    @OOOJohnJ

    Жыл бұрын

    Да вроде все рассказал, что ещё там можно добавить?

  • @LifeDebugger

    @LifeDebugger

    Жыл бұрын

    Для уровня trainee/junior норм, всё рассказал. Но чувак позиционирует себя как senior/lead и такие ответы смешно слышать.

  • @OOOJohnJ

    @OOOJohnJ

    Жыл бұрын

    @@LifeDebugger private одинаково работает что для Джуна, что для сеньора. И public тоже

  • @LifeDebugger

    @LifeDebugger

    Жыл бұрын

    @@OOOJohnJ При чем тут private и public? Я не говорил, что он что-то не правильно сказал в этом месте. Но это не ответ сеньора. Это ответ на уровне заучивания документации, что допустимо для джунов. Назвался сеньором - соответствуй. А то потом по таким сеньором судят всех пхпешников

  • @MrAirrussia
    @MrAirrussia8 ай бұрын

    вопрос и ответы не на сеньора никак, типичные джуновские-мидловские вопросы и ответы, единственное в чем у меня вообще замешательство вызвало это транзакции и некие end point, дичь какая. Ответ например про interface, как по мне расплывчатый как и про отличие его от abstract class, про private in abstract class, то вообще ответ на тоненького, на самом деле в абстрактном классе использовать приватный метод можно, как минимум можно вынести какую-то логику из публичного метода который реализуется в абстрактном классе. вообще отличие интерфейса от абстрактного класса в том, что абстрактный класса содержит имплементацию интерфейса(ов). на сеньора надо как минимум спрашивать про шаблоны проектирования, а именно где юзал, когда юзал, почему юзал, тот или иной шаблон. за SOLID должен пояснить, было упомянуто Depency Injection, хорошо бы спросить, что это, что такое IoC, как реализуется в Laravel. Задать вопросы про SPL не мешало бы. Можно также спросить основные этапы интерпретации php, что такое opcache, zend vm, уточнить что-нибудь по php.ini. За php-fpm бы спросил, это мне, что первое в голову пришло за php. вообще сейчас на одном php не уедешь без окружения, соответственно как минимум Docker сеньор должен знать и уметь запечать свой продукт в него. За Unit тесты бы спросил.

  • @Wivern11

    @Wivern11

    8 ай бұрын

    за шмот бы еще спросил)

  • @TheJabberwahh
    @TheJabberwahh3 ай бұрын

    я думал все эти "синьоры" уже ретроградство. но нет, некоторые ещё меряются синьорством. хорошо хоть у нас на конторе такого нет

  • @xenm85
    @xenm8510 ай бұрын

    про try catch finally - вот есть функция в которой есть все эти операторы: в try я пишу return 1, в catch return 2, в finally return 3. Что вернет функция в итоге при вызове?

  • @pm18studio

    @pm18studio

    9 ай бұрын

    Если в finally есть свой return, то функция вернёт его. Если return есть только в try и catch, то finally выполнится, а потом вернёт return из try или catch, в зависимости от того, куда уод пошёл

  • @xenm85

    @xenm85

    9 ай бұрын

    @@pm18studio все верно, только слишком много если. Я четко описал что и где есть

  • @xenm85
    @xenm8510 ай бұрын

    Про транзакции если уж глубоко то - в последнии несколько лет многие стали любить микросервисы. Вопрос, как реализовать транзакционость там? БД разные, т.е. тут вообще про смысл транзакций. Вот мне кажется такой вопрос более хорошо характеризует сеньора

  • @VitaliiGrigorev
    @VitaliiGrigorev10 ай бұрын

    вызывается конструктор явно, при наследовании parent::__contstruct(....)

  • @user-nx4ki2qv7i
    @user-nx4ki2qv7i Жыл бұрын

    "Трейт это почти что интерфейс". ЧТО? Интерфейс описывает поведение и только.

  • @sychsiarhei6208
    @sychsiarhei62085 ай бұрын

    Вот к чему пришли просто к тестам , которые по большому счету вспоминаются только на собеседовании, а в реальности это не используется.

  • @nik_fine
    @nik_fine3 ай бұрын

    После фразы «сравнение двух переменных» разжаловать типа до стажера.

  • @GreatOsmanSultan
    @GreatOsmanSultan11 ай бұрын

    Спасибо! Хачу тоже стать синьером🎉😅

  • @olegrudev
    @olegrudev10 ай бұрын

    А можно чисто по фану пройти собес?))

  • @teachmeskills

    @teachmeskills

    10 ай бұрын

    Можно все)

  • @isergeyv
    @isergeyv5 ай бұрын

    Ехал в машине, Ютуб включил это видео. Думаю, послушаю, что тут молодежь слушает Ответы на уровне джуна - нет понимания, зачем, к примеру, нужен абстрактный класс или интерфейс. Пример: молоток - он железный с деревянной рукояткой. А что забивать им гвозди - забыли сказать! Почему не сказать, что абстрактный класс или интерфейс удобно использовать, когда работаешь группой разработчиков? Есть архитектор, который накидывает названия методов, а ты, как программист, их реализуешь. Четкий контроль архитектуры и т.д. Или что от абстрактного класса нельзя наследоваться - и это прекрасное свойство можно понять, пощупав на практике при реализации паттерна "одиночка"... Зачем повторять то, что написано в каждой книге!? Сансей, давай реальные примеры, реальное понимание, практику! В любом случае спасибо :)

  • @teachmeskills

    @teachmeskills

    5 ай бұрын

    не спорю, есть над чем доработаться) но мы как раз и снимали видео для джунов в свое время

  • @vladsarosek9521
    @vladsarosek9521 Жыл бұрын

    Помню свой собес, мне задали поистине нестандартный вопрос. Для чего нужен полиморфизм. То, что используется для методов с одинаковыми именами, это классно, но это не то. В каких случаях и для чего нужно реализовывать полиморфизм. На вопрос я не ответил, но меня взяли, в итоге работаю несколько месяцев, а уверенно ответ дать не могу

  • @user-em1wj5ll4q

    @user-em1wj5ll4q

    Жыл бұрын

    Вариантов тут может быть куча и сюда можно притянуть много паттернов. Но осмелюсь предположить, что ждали примерно следующее: Все классы выполняющие одну и ту же задачу (к примеру расчет площади фигуры) должны иметь один и тот же метод (имя метода). Таким образом появляется некое подобие абстракции. Либо когда несколько классов реализуют один и тот же функционал, к примеру логирование, но используют разную механику. К примеру один хранит логи в БД, второй в файле и тд. Тогда один файл сервис можно легко заменить другим. Такой список можно продолжать бесконечно, понять бы контекст вопроса

  • @hacktivist86

    @hacktivist86

    Жыл бұрын

    Вполне стандартный вопрос)

  • @OOOJohnJ

    @OOOJohnJ

    Жыл бұрын

    Люблю задавать такой вопрос на собесе. Ответ простой: благодаря полиморфизму мы можем использовать различные объекты в одном и том же алгоритме, не нужно под каждую сущность разветвлять его

  • @yashkevich8164

    @yashkevich8164

    Жыл бұрын

    Я думаю требовать от Джуна именно полное понимание этого термина не совсем честно по отношению к нему)) Я только после первого года серьезной продуктовой разработки стал готовиться к собесам. И о чудо!! меня осенило, я действительно стал понимать что это и зачем, так же осознал SOLID при изучении(до этого тупо заучил определения). Так что ничего страшного что не понимаешь, главное держи вопросы в своей голове и наступит прозрение. Сначала должна быть некая база своих реализаций и уже на основе этого начинаешь осознавать

  • @Epenckorn

    @Epenckorn

    6 ай бұрын

    Полиморфизм - это переопределение методов. Самый простой пример - когда в родительском классе есть метод со своей реализацией, а в двух его наследниках этот метод со своими реализациями. При вызове одного и того же этого метода в контексте каждого из этих трёх классов он будет работать по-разному. Вот тебе и полиморфизм.

  • @xenm85
    @xenm8510 ай бұрын

    И последний вопрос - если Laravel - то в нем же AR используется, а это же антипаттерн - вы используете doctrine всетаки или почему тогда laravel, а не symphony? PS: Уровень мидла, слабовато на самом деле

  • @snikitin32
    @snikitin323 ай бұрын

    13:35 абстрактный класс может содержать частный метод. Он лучше бы свои щëки и ноги прибрал и сам почитал книжки.

  • @teachmeskills

    @teachmeskills

    3 ай бұрын

    За уточнение спасибо, оскорблять не стоит, это лишнее. По этому моменту уже писали ниже в комментарии

  • @snikitin32

    @snikitin32

    3 ай бұрын

    @@teachmeskills просто чувак раскинулся, самоуверенно, отвечает на вопросы, а из-за таких потом люди не получают офферы.

  • @teachmeskills

    @teachmeskills

    3 ай бұрын

    @@snikitin32 ну не могу сказать, что из-за него именно) но везде бывают свои случаи

  • @rebus1985
    @rebus198510 ай бұрын

    Ведущего не слышно

  • @Denis_V_S
    @Denis_V_S6 ай бұрын

    Про уровни изоляции совсем не туда ушел.

  • @teachmeskills

    @teachmeskills

    6 ай бұрын

    Спасибо! Исправимся

  • @litvinenkow
    @litvinenkow Жыл бұрын

    "некоторые банки" - это не тинёк случаем?)))

  • @teachmeskills

    @teachmeskills

    Жыл бұрын

    не скажем однозначно)

  • @xenm85
    @xenm8510 ай бұрын

    Вообщем, ужасные вопросы для сеньора, но не плохие для джуна.

  • @user-qo6zz2hk2w
    @user-qo6zz2hk2w6 ай бұрын

    Нормальный средний разработчик ) не более. До сеньора и Лида подтянуть надо знания )

  • @teachmeskills

    @teachmeskills

    6 ай бұрын

    есть куда стремиться) спасибо за комментарий)

  • @testdeim

    @testdeim

    5 ай бұрын

    здесь не было вопросов для синьйора или лида. синьйор или лид это уже не про знание языка.

  • @MrAirrussia
    @MrAirrussia8 ай бұрын

    Что за end point у транзакции, о чем говорит этот человек? По определению транзакция это атомарная операция. Какие нах end point нигде такого не встречал, где можно почитать, да и для чего это если нужна атомарность именно, а если мы можем откатиться и не полностью в чем смысл? Транзакции в транзакции, это да, можно, но как правило это используется для логирования.

  • @Wivern11

    @Wivern11

    8 ай бұрын

    тоже первый раз слышу. endpoint это вообще url, на который фронт делает запрос и получает json

  • @meirbek241

    @meirbek241

    4 ай бұрын

    savepoint

  • @user-st5ly6fm1h
    @user-st5ly6fm1h7 ай бұрын

    Мне, кажется, он не сеньор, а мидл+. Неуверенно говорит, и путается немного. Себя считаю мидлом, и всё это знаю тоже.

  • @aliakseiprybytkou7552
    @aliakseiprybytkou755211 ай бұрын

    судя по ответам, это точно не сеньер и как он учит людей очень сомнительно

  • @olegs7470
    @olegs74709 ай бұрын

    Ну такое себе собеседование, для джун+ нормально.

  • @soversus5374
    @soversus53745 ай бұрын

    Все магические методы, кроме конструктора считаю костылями. Если они используются, значит это кривой код с плохой архитектурой. Вообще видео интересное, своеобразная подача дискуссии.

  • @teachmeskills

    @teachmeskills

    5 ай бұрын

    Спасибо большое! учтем)

  • @testdeim

    @testdeim

    5 ай бұрын

    вся красота и удобство нынешних фреймворков реализовано благодаря магическим методам.

  • @soversus5374

    @soversus5374

    5 ай бұрын

    @@testdeim , костыли существовали и до магических методов. ) Я этими костылями пользовался, когда еще не было современных фреймворков, когда думать было лень. ) А теперь, это магия. )

  • @testdeim

    @testdeim

    5 ай бұрын

    если у вас вопрос чисто к слову "магические", то это их официальное название из документации пхп@@soversus5374

  • @barackobama2722
    @barackobama2722Ай бұрын

    После того какие сейчас люди в ИТ, мне хочется юзать их как рабов которые ничего не стоят!

  • @xenm85
    @xenm8510 ай бұрын

    Бля, менее 4 минут посмотрел и думал не будет такого вопроса - но всетаки он состоялся - тупой вопрос для сеньора про типы данных ) Это печально на самом деле

  • @alaingraychannel
    @alaingraychannel Жыл бұрын

    С объяснения магических методов, мне стало понятно что передо мной чел который не понимает о чем он говорит)))

  • @teachmeskills

    @teachmeskills

    Жыл бұрын

    Можно более развернутое пояснение? Нам до сих пор непонятно почему)

  • @alaingraychannel

    @alaingraychannel

    Жыл бұрын

    @@teachmeskills 15:40 человек озвучивает __call и __callStatic а описывает __invoke (и то не совсем правильно изъяснился) что говорит о полном непонимании как, для чего и когда эти конструкции отрабатывают

  • @teachmeskills

    @teachmeskills

    Жыл бұрын

    @@alaingraychannel спасибо! Учтем для себя!

  • @OOOJohnJ

    @OOOJohnJ

    Жыл бұрын

    А где подробности?

  • @alaingraychannel

    @alaingraychannel

    Жыл бұрын

    Читайте а моём ответе выше :)

  • @rin2004able
    @rin2004able6 ай бұрын

    Чуваку надо срочно бросить курить.

  • @kashey63723
    @kashey6372314 күн бұрын

    "я люблю использовать рекурсию".... синьор блять...

  • @alexyerin3475
    @alexyerin34759 ай бұрын

    Он вообще ничего не знает ))

  • @Techpowers
    @Techpowers Жыл бұрын

    Чувака спросили сколько типов есть в php? Чувак: Ну в пхп типы делятся на простые и сложные … бла-бла Депутат в мире в программирования

  • @OOOJohnJ

    @OOOJohnJ

    Жыл бұрын

    Потому что чёткое количество никому не нужно, нужно именно понимание того что он ответил

Келесі