Библиотека собеса по PHP | вопросы с собеседований
3.38K subscribers
139 photos
2 videos
69 links
Вопросы с собеседований по PHP и ответы на них.

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

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

Работать у нас: https://job.proglib.io/

Наши каналы: https://yangx.top/proglibrary/9197
加入频道
Что может содержать интерфейс?

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

Интерфейс может содержать следующие элементы:

Объявления методов: Это основной компонент интерфейса. Методы в интерфейсе объявляются без тела функции, то есть без реализации.

Константы: Интерфейс также может содержать константы, которые автоматически являются публичными, статическими и неизменяемыми (final).

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

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

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

Рекурсия в программировании — это процесс, когда функция вызывает саму себя для выполнения определенной задачи.

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

Это может быть полезно, например, при обходе древовидных структур данных, алгоритмах перебора и т.д.
⚡️Самые полезные каналы по PHP в одной папке

В ней:
канал для подготовки к собеседованиям
интересные задачи
основной канал (этот)
лучшие вакансии из сферы
и наш чат, в котором можно общаться и задавать вопросы

Добавляйте 👉 тык сюда
Please open Telegram to view this post
VIEW IN TELEGRAM
Что такое Laravel Forge и как он помогает в развертывании приложений Laravel?

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

Основные функции и возможности Laravel Forge:

✔️Автоматическое управление серверами: Laravel Forge позволяет автоматически создавать и настраивать серверы в облачных сервисах, таких как DigitalOcean, Linode, AWS, Vultr, Hetzner и других. После настройки Forge берет на себя администрирование сервера и обеспечивает его безопасную работу.

✔️Развертывание приложений: Forge позволяет развертывать Laravel-приложения напрямую из репозиториев, например GitHub, GitLab или Bitbucket. Это автоматизирует процесс развертывания кода, включая миграции базы данных и другие настройки, требуемые приложением.

✔️Управление конфигурацией сервера: Forge автоматически настраивает на сервере стек веб-технологий, включая Nginx, PHP, MySQL или PostgreSQL и Redis. Это позволяет разработчику сосредоточиться на приложении, не углубляясь в системное администрирование.

✔️SSL-сертификаты: Forge поддерживает автоматическую установку SSL-сертификатов от Let's Encrypt. Это позволяет обеспечить безопасное соединение через HTTPS для всех сайтов, развернутых на сервере, и выполняется буквально за несколько кликов.

✔️Мониторинг и автоматизация задач: Laravel Forge интегрируется с New Relic и Papertrail для мониторинга производительности и логов. Также можно настраивать cron-задачи и выполнять различные автоматизированные задачи, что очень удобно для регулярного обслуживания приложений (например, для отправки email-рассылок или чистки кэша).

✔️Бэкапы баз данных: Forge позволяет автоматизировать резервное копирование баз данных с возможностью хранения этих данных в облачных хранилищах, например в Amazon S3.

✔️Firewall и безопасность: Forge автоматически настраивает брандмауэр на сервере, ограничивая доступ к важным портам и повышая уровень безопасности сервера.

Преимущества использования Laravel Forge

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

Пример процесса развертывания с помощью Laravel Forge

🔸Создание сервера через Forge (например, на DigitalOcean).
🔸Автоматическая установка необходимого ПО (Nginx, PHP, MySQL и т.д.).
🔸Подключение репозитория и развертывание приложения.
🔸Настройка домена и установка SSL-сертификата.
🔸Конфигурация cron-задач и других автоматизаций.

Таким образом, Laravel Forge снимает с разработчика множество рутинных задач по настройке сервера и развертыванию приложений, позволяя ему сосредоточиться на создании функционала и улучшении самого приложения.
Какова цель расширения «PHP Data Objects» (PDO), и как его использовать?

Расширение PHP Data Objects (PDO) предназначено для абстрагирования доступа к базам данных в PHP. Основная цель PDO — предоставить единый интерфейс для работы с различными типами баз данных в PHP, включая MySQL, PostgreSQL, SQLite и другие, без необходимости писать специфичный код для каждой базы данных. PDO помогает улучшить безопасность, предоставляя подготовленные запросы и параметризованные запросы для предотвращения атак SQL-инъекций.

Вот базовый обзор того, как использовать PDO:

1️⃣Подключение к базе данных: Сначала нужно установить соединение с сервером базы данных, используя конструктор класса PDO и передавая параметры соединения, такие как драйвер базы данных, хост, имя базы данных, и, опционально, имя пользователя и пароль.

2️⃣Выполнение запросов: После установки соединения можно выполнять SQL-запросы с помощью метода query() или подготовленных запросов для параметризованных запросов.

3️⃣Получение результатов: Результаты запроса можно получить различными способами, такими как получение всех строк, получение одной строки или получение определенных столбцов.

4️⃣Обработка ошибок: Важно грамотно обрабатывать ошибки. PDO выбрасывает исключения для ошибок базы данных, поэтому можно использовать блоки try-catch для их обработки.

Используя PDO, можно писать более переносимый и безопасный код для работы с базами данных в PHP, поскольку оно предоставляет единый интерфейс независимо от используемой базы данных.
Как вы понимаете Special Case / Null Object и где его следует применять?

Special Case / Null Object — это шаблон проектирования, который используется для обработки специальных случаев или значений отсутствия объекта. Он позволяет разработчику избежать проверок на null и обрабатывать такое отсутствие объекта по-особенному.

Null Object — это класс, который реализует интерфейс или абстрактный класс, используемый вместо null. Он предоставляет реализацию методов, которые обрабатываются для отсутствующего объекта, и возвращает пустые значения или выполняет пустые действия.

Null Object можно применять, когда требуется обработать отсутствие объекта без использования проверок на null. Он может быть полезен в таких ситуациях:

1. Вместо проверки на null, можно использовать Null Object, чтобы избежать возникновения исключений или ошибок, связанных с отсутствием объекта и его методов.

2. Null Object может упростить код и избавить от необходимости писать дополнительные условия для обработки null значений.

3. Он также может быть полезен в шаблонном методе, когда необходимо иметь базовую реализацию методов, которые могут быть переопределены в подклассах, и одновременно обрабатывать отсутствие объекта.

Пример применения Null Object в PHP на фото выше

В этом примере, если использовать NullLogger, то метод log не выполняет никаких действий и не вызывает ошибок при отсутствии файла или других ресурсов, которые могут быть связаны с реальным логгером.
7 способов сортировки массивов на примере С++ с иллюстрациями

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

Статья

Зачем учить алгоритмы сортировки, если есть уже готовые методы сортировки?
Чтобы знать плюсы и минусы каждого алгоритма, понимать, как действительно он работает (а не просто копипастить) и какой алгоритм выбрать для конкретной задачи. Плюс изучение алгоритмов развивает мышление и профессиональный кругозор.

Как мне оперативно научиться применять алгоритмы?

Начни с бесплатного демо доступа к курсу «Алгоритмы и структуры данных», на котором junior и middle+ программисты смогут потренировать навыки применения алгоритмов и сгенерировать идеальные решения сложных задач в сообществе других разработчиков.
Самые полезные каналы для программистов в одной подборке!

Сохраняйте себе, чтобы не потерять 💾

🔥Для всех

Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
IT-мемы
Proglib Academy — тут мы рассказываем про обучение и курсы
Азбука айтишника — здесь мы познаем азы из мира программирования

🤖Про нейросети
Библиотека робототехники и беспилотников | Роботы, ИИ, интернет вещей
Библиотека нейрозвука | Транскрибация, синтез речи, ИИ-музыка
Библиотека нейротекста | ChatGPT, Gemini, Bing
Библиотека нейровидео | Sora AI, Runway ML, дипфейки
Библиотека нейрокартинок | Midjourney, DALL-E, Stable Diffusion

#️⃣C#

Книги для шарпистов | C#, .NET, F#
Библиотека шарписта — полезные статьи, новости и обучающие материалы по C#
Библиотека задач по C# — код, квизы и тесты
Библиотека собеса по C# — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Вакансии по C#, .NET, Unity Вакансии по PHP, Symfony, Laravel

☁️DevOps

Библиотека devops’а — полезные статьи, новости и обучающие материалы по DevOps
Вакансии по DevOps & SRE
Библиотека задач по DevOps — код, квизы и тесты
Библиотека собеса по DevOps — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования

🐘PHP

Библиотека пхпшника — полезные статьи, новости и обучающие материалы по PHP
Вакансии по PHP, Symfony, Laravel
Библиотека PHP для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по PHP — код, квизы и тесты

🐍Python

Библиотека питониста — полезные статьи, новости и обучающие материалы по Python
Вакансии по питону, Django, Flask
Библиотека Python для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Python — код, квизы и тесты

Java

Книги для джавистов | Java
Библиотека джависта — полезные статьи по Java, новости и обучающие материалы
Библиотека Java для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Java — код, квизы и тесты
Вакансии для java-разработчиков

👾Data Science

Книги для дата сайентистов | Data Science
Библиотека Data Science — полезные статьи, новости и обучающие материалы по Data Science
Библиотека Data Science для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Data Science — код, квизы и тесты
Вакансии по Data Science, анализу данных, аналитике, искусственному интеллекту

🦫Go

Книги для Go разработчиков
Библиотека Go разработчика — полезные статьи, новости и обучающие материалы по Go
Библиотека Go для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Go — код, квизы и тесты
Вакансии по Go

🧠C++

Книги для C/C++ разработчиков
Библиотека C/C++ разработчика — полезные статьи, новости и обучающие материалы по C++
Библиотека C++ для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по C++ — код, квизы и тесты
Вакансии по C++

💻Другие каналы

Библиотека фронтендера
Библиотека мобильного разработчика
Библиотека хакера
Библиотека тестировщика
Вакансии по фронтенду, джаваскрипт, React, Angular, Vue
Вакансии для мобильных разработчиков
Вакансии по QA тестированию
InfoSec Jobs — вакансии по информационной безопасности
Библиотека разработчика игр | Gamedev, Unity, Unreal Engine

📁Чтобы добавить папку с нашими каналами, нажмите 👉сюда👈

Также у нас есть боты:
Бот с IT-вакансиями
Бот с мероприятиями в сфере IT

Мы в других соцсетях:
🔸VK
🔸YouTube
🔸Дзен
🔸Facebook *
🔸Instagram *

* Организация Meta запрещена на территории РФ
В чем разница между «mysqli» и «PDO» в PHP?

Оба расширения PHP, mysqli (MySQL Improved) и PDO (PHP Data Objects), предоставляют интерфейс для взаимодействия с базами данных, особенно с MySQL. Однако между ними есть некоторые различия:

1️⃣Стиль интерфейса:

mysqli предоставляет как процедурный, так и объектно-ориентированный интерфейсы для взаимодействия с MySQL. Оно тесно интегрировано с MySQL и предлагает специфические функции, такие как хранимые процедуры и транзакции.
PDO, с другой стороны, предоставляет единый интерфейс для работы с различными базами данных, а не только с MySQL. Оно использует исключительно объектно-ориентированный подход.

2️⃣Поддержка баз данных:

mysqli специфично для баз данных MySQL. Оно оптимизировано для MySQL и предоставляет функции, специфичные для MySQL.
PDO не привязано к какой-либо конкретной базе данных. Оно поддерживает несколько баз данных, таких как MySQL, PostgreSQL, SQLite и т. д. Это делает PDO более гибким, если вам нужно переключаться между разными базами данных.

3️⃣Подготовленные запросы:

Оба расширения поддерживают подготовленные запросы (prepared statements), которые помогают предотвратить атаки SQL-инъекций, отделяя логику SQL от пользовательского ввода. Однако синтаксис реализации немного отличается.

4️⃣Обработка ошибок:

mysqli имеет специальные функции и константы для обработки ошибок MySQL.
PDO использует исключения для обработки ошибок, что делает обработку ошибок более последовательной для различных типов баз данных.

5️⃣API и функциональность:

mysqli предлагает некоторые специфические для MySQL функции, которых нет в PDO, например, возможность работы с несколькими наборами результатов из хранимых процедур.
PDO предоставляет дополнительные функции, такие как именованные заполнители, которые могут сделать запросы более читаемыми и поддерживаемыми.

6️⃣Переносимость:

PDO обеспечивает лучшую переносимость, потому что оно не привязано к конкретной базе данных. Если вам нужно переключить свое приложение на другую базу данных, вам может потребоваться изменить только настройки подключения, а не переписывать все взаимодействия с базой данных.
mysqli более тесно связан с MySQL, поэтому переход к другой базе данных может потребовать более значительных изменений в коде.
Что такое middleware? Зачем это? На каком этапе выполняется?

Middleware в контексте Laravel — это промежуточное программное обеспечение, которое обрабатывает HTTP-запросы, прежде чем они достигнут конечного обработчика запросов (например, контроллера). Они представляют собой слои обработки, через которые проходят все запросы, и позволяют выполнять дополнительные операции до или после выполнения основной логики обработки запроса.

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

Когда запрос поступает на сервер Laravel, он проходит через список зарегистрированных middleware перед тем, как попасть в соответствующий контроллер или замыкание маршрута. После прохождения через все зарегистрированные middleware запрос обрабатывается конечным обработчиком.
Что такое пространства имен в PHP и как их использовать?

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

Как использовать пространства имен в PHP:

1. Определение пространства имен:

Пространство имен определяется с использованием ключевого слова namespace, за которым следует имя пространства имен. Это объявление должно быть первым оператором в файле PHP перед любым другим кодом.

2. Использование элементов в пространстве имен:

После определения пространства имен вы можете помещать классы, функции, интерфейсы или константы в это пространство имен.

3. Доступ к элементам в пространстве имен:

Для доступа к элементам внутри пространства имен можно использовать их полностью квалифицированные имена (включая пространство имен) или импортировать пространство имен с использованием ключевого слова use.

4. Использование псевдонимов:

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