Библиотека собеса по PHP | вопросы с собеседований
3.17K subscribers
180 photos
6 videos
121 links
Вопросы с собеседований по PHP и ответы на них.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/9f3affba

Для обратной связи: @proglibrary_feeedback_bot
Download Telegram
Что такое транзакция?

Транзакция — это последовательность операций чтения и записи, объединенных в единое логическое действие. Транзакция должна быть атомарной, согласованной, изолированной и долговечной (ACID-свойства).

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

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

Изолированность гарантирует, что транзакция ведется в отдельной среде и не вмешивается в работу других транзакций, одновременно выполняющихся в системе. Результат выполнения транзакции должен быть таким же, как если бы она была выполнена последовательно.

Долговечность обеспечивает сохранение результатов выполненной транзакции даже в случае сбоев системы или отключения питания. Результаты транзакции должны быть сохранены в базе данных и доступны после восстановления системы.

Транзакции обычно применяются для группировки логически связанных операций, чтобы гарантировать целостность данных при работе с базой данных. В языке программирования PHP транзакции могут быть реализованы с использованием соответствующих функций и методов для работы с базами данных, таких как mysqli или PDO.
1
Что такое stateless?

В контексте PHP, термин «stateless» относится к тому, что каждый запрос к серверу обрабатывается независимо от предыдущих запросов. Другими словами, сервер не сохраняет состояния между запросами от клиента, что означает, что он не будет запоминать информацию о клиенте после обработки запроса и не будет использовать ее для последующих запросов.

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

Большинство веб-приложений на PHP по умолчанию являются stateless, как и множество других веб-технологий. Однако, в PHP есть способы сохранения состояния, если это нужно для приложения. Например, использование куки (cookies) или сессий (sessions), что позволяет сохранять информацию между запросами от клиента.
🤔1
Что такое Copy-on-write?

Copy-on-write (COW) — это стратегия оптимизации, применяемая в операционных системах и языках программирования для улучшения производительности и управления памятью.

В контексте PHP Copy-on-write используется для управления переменными и массивами в памяти. Когда переменная или массив копируется, они сначала ссылаются на одну область памяти, и только при изменении одной из копий происходит действительное копирование данных. Это позволяет избежать неэффективности при копировании больших объемов данных.

Пример использования Copy-on-write в PHP на фото

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

Использование Copy-on-write позволяет оптимизировать работу с данными в PHP.
Media is too big
VIEW IN TELEGRAM
🔥 Закрой пробелы в математике за 8 недель

Валишься на вопросах про математику на собесах?

Proglib Academy запускает курс «Математика для Data Science», чтобы помочь тебе получить вакансию мечты!

🔎 Тебя ждут:

→ топовые эксперты, один из них на видео — Мария Тихонова. Мария — кандидат компьютерных наук, руководитель исследовательского направления SberAI, доцент факультета компьютерных наук и преподаватель НИУ ВШЭ;
→ живые вебинары, на которых можно задать вопросы спикерам;
→ доступ к материалам в записи, если не успели на лекцию и чат;
→ 3 задания с практикой на Python и финальный проект с подробной обратной связью от экспертов курса;
→ актуальные знания: программа разработана в ноябре 2025г;
→ программа без воды — 2 месяца только самого нужного для старта.

👉 Пройди короткий тест и узнай свой уровень математики.

Приятные бонусы:

🎁 скидка 40% до 30 ноября;
🎁 оплати до конца ноября → курс «Школьная математика» в подарок.

🔗 Подробнее о курсе
🥱2
В чем разница между Eloquent и Query Builder в Ларавеле?

В Laravel Eloquent — это инструмент для объектно-реляционного отображения (ORM), который предоставляет простой и удобный способ взаимодействия с базой данных с использованием PHP-кода. Eloquent позволяет определять ваши таблицы базы данных как классы, а строки таблицы как объекты. С другой стороны, Query Builder предоставляет более низкоуровневый способ создания SQL-запросов с использованием цепочки методов.

Основное различие между Eloquent и Query Builder заключается в том, что Eloquent предоставляет более высокоуровневый, более выразительный API для взаимодействия с вашей базой данных, в то время как Query Builder предоставляет более низкоуровневый, более гибкий API.
Как использовать array_merge() и array_combine() в PHP?

array_combine(): Она используется для создания нового массива, используя значения одного массива в качестве ключей и значения другого массива в качестве значений. Самое главное при использовании array_combine(), что количество значений в обоих массивах должно быть одинаковым.

array_merge(): Объединяет один или несколько массивов таким образом, что значение одного массива добавляется в конец первого массива, и если массивы имеют одинаковые строки-ключи, то последующее значение отменяет предыдущее значение для этого ключа.
👍2🥱1
Как реализовать паттерн проектирования «Адаптер» на PHP, и какие распространенные случаи его использования?

В PHP вы можете реализовать паттерн «Адаптер», чтобы обеспечить работу несовместимых интерфейсов вместе.

В нашем примере:

Adaptee — класс с несовместимым интерфейсом.
Target — интерфейс, ожидаемый клиентом.
Adapter — класс, который адаптирует Adaptee к интерфейсу Target.

Распространенные случаи использования паттерна Адаптер включают:

🟢Интеграция с легаси-кодом: Когда у вас есть старый код с другим интерфейсом, который нужно использовать в новой системе.
🟢Использование сторонних библиотек: Когда вы хотите использовать стороннюю библиотеку, которая не соответствует требуемому интерфейсу.
🟢Мокирование объектов при тестировании: Когда нужно создать мок-объекты, которые реализуют определенный интерфейс для целей тестирования.
🟢Масштабируемость системы: Когда нужно переключаться между различными реализациями функциональности без изменения кода клиента.
Что такое компоненты Symfony?

Symfony Components — это коллекция разрозненных и многократно используемых PHP-библиотек. Это программное обеспечение с открытым исходным кодом, которое призвано ускорить или ускорить создание и поддержку веб-приложений, заменить повторяющиеся задачи кодирования, создать мощные и надежные приложения в корпоративном контексте и предоставить разработчикам полный контроль над конфигурацией.

Компоненты Symfony — это разрозненные библиотеки для PHP-приложений. Тысячи проектов были загружены миллиарды раз и являются основой основных PHP-проектов. Symfony предоставляет компоненты от простых функций, таких как файловая система, до расширенных возможностей, событий, контейнерной технологии и инъекции зависимостей.
Что такое CQRS?

CQRS (Command Query Responsibility Segregation) — это архитектурный паттерн, который предлагает разделить операции записи и чтения данных в приложении на две отдельные ветки. Вместо того, чтобы использовать единый интерфейс для обеих операций, CQRS предлагает использовать различные модели данных для команд и запросов. Это позволяет оптимизировать каждую модель для конкретных задач и улучшить производительность приложения.

Применение CQRS может быть особенно полезным в системах с большим количеством операций записи или при необходимости распределенной обработки запросов. CQRS также может облегчить сопровождение приложения, так как изменения в одной части системы не будут влиять на другие части.

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

Интересная статья на эту тему
🔥1
Какой шаблонизатор поддерживает Symfony?

Шаблонизатором по умолчанию в Symfony является Twig. Мы также можем использовать обычный PHP-код. Twig — это актуальный и современный шаблонизатор для PHP.

✔️ Преимущества Twig:

Быстрота: Накладные расходы на регулярный PHP-код были сведены к минимуму, так как Twig помогает компилировать шаблоны в простой оптимизированный PHP-код.

Безопасность: Twig как язык шаблонов используется в приложениях, где пользователи могут изменять дизайн шаблона. В нем есть режим «песочницы» для борьбы с недоверенным кодом шаблонов.

Гибкость: Twig позволяет разработчику задавать пользовательские теги и фильтры и создавать свой DSL, что разрешается гибким лексером и парсером twig.
🔥1🥱1
Что такое интерфейсы?

Интерфейсы в PHP являются структурой, которая определяет методы, которые класс должен реализовать. Они предоставляют способ определить общие контракты для классов, не определяя их конкретную реализацию.

Интерфейсы объявляются с использованием ключевого слова interface и могут содержать только методы без их реализации. Класс, который реализует интерфейс, должен реализовать все методы, определенные в интерфейсе, в противном случае он будет считаться неполным.

Интерфейсы позволяют достичь полиморфизма, что означает, что несколько классов могут реализовывать один и тот же интерфейс и использоваться взаимозаменяемо.

Использование интерфейсов способствует лучшей организации кода, а также повышает его гибкость и переиспользуемость. Они позволяют определить общие методы и стандарты, которые должны быть реализованы в классах, что упрощает сопровождение и расширение программного обеспечения.
🔥1
🎄 С Нового года начну учиться — знакомо?

А потом январь — освоюсь после праздников, февраль — доделаю текущие дела... Не откладывай на следующий год то, что можно начать уже в этом.

🗓️ 4 декабря стартует экспресс-курс «Математика для Data Science»— всё, что нужно для уверенных ответов на собесах:

→ 2 месяца без воды;
→ обновлённая программа (ноябрь 2025);
→ живые вебинары с экспертами;
→ записи всех занятий;
→ практика на Python + финальный проект с фидбэком.

Формат: 2 месяца интенсива и к началу следующего года ты готов к собесам.

Пока другие будут собираться с мыслями после НГ, ты уже будешь на полпути к офферу мечты.

🎁 Только до 30 ноября:

→ скидка 40% на курс;
→ курс «Базовая математика» в подарок;
→ бесплатный тест уровня математики.

👉🏻 Хочешь на курс → пиши менеджеру