ar
Feedback
Библиотека собеса по PHP | вопросы с собеседований

Библиотека собеса по PHP | вопросы с собеседований

الذهاب إلى القناة على Telegram

Вопросы с собеседований по PHP и ответы на них. По рекламе: @proglib_adv Учиться у нас: https://proglib.io/w/9f3affba Для обратной связи: @proglibrary_feeedback_bot

إظهار المزيد
3 149
المشتركون
-124 ساعات
-27 أيام
-630 أيام
أرشيف المشاركات
🔥 Последняя неделя перед стартом курса по AI-агентам Старт курса уже 15го числа! Если вы планировали вписаться — сейчас ПОСЛ
🔥 Последняя неделя перед стартом курса по AI-агентам Старт курса уже 15го числа! Если вы планировали вписаться — сейчас ПОСЛЕДНИЙ шанс забронировать место На курсе:разложим LLM по косточкам: токенизация, SFT, PEFT, инференс — соберём RAG и научимся оценивать его адекватно — построим настоящую мультиагентную систему — архитектуру, которая умеет расти — разберём CoPilot, сломаем через prompt injection (спасибо Максу) — и наконец, посмотрим, как это работает в MCP и реальных кейсах 📍 Это 5 живых вебинаров + раздатка + домашки + чат с преподавателями И главное — возможность реально разобраться, как проектировать системы на LLM, а не просто «поиграться с API» Промокод на 5.000₽: LASTCALL 👉 Курс здесь

Какие способы оптимизации производительности баз данных знаете? Существует несколько основных способов оптимизации баз данных: Индексирование: Убедитесь, что ваша база данных имеет правильные индексы для часто используемых запросов. Индексы позволяют ускорить поиск данных. Оптимизация запросов: Напишите запросы таким образом, чтобы они были эффективными. Используйте инструкции JOIN, WHERE и GROUP BY там, где это необходимо, чтобы снизить объем возвращаемых данных. Кэширование: Используйте кэширование результатов запросов там, где это возможно. Например, результаты запросов к базе данных могут быть кэшированы в Redis или Memcached. Ограничение объема данных: Загружайте только те данные, которые действительно нужны. Используйте LIMIT и OFFSET при запросах, чтобы извлекать только необходимое количество записей. Оптимизация структуры таблиц: Проведите анализ структуры таблиц и убедитесь, что она оптимально сбалансирована для ваших запросов. Иногда изменение типов данных, уменьшение размера полей или нормализация таблиц может улучшить производительность. Использование транзакций: Используйте транзакции для группировки нескольких операций в одну единицу работы. Это помогает уменьшить накладные расходы на управление транзакциями и обеспечить целостность данных. Масштабирование базы данных: При необходимости масштабируйте базу данных горизонтально или вертикально. Горизонтальное масштабирование (шардинг) позволяет распределить данные по нескольким серверам, а вертикальное масштабирование (разделение на таблицы) позволяет распределить данные по разным таблицам или базам данных. Мониторинг и профилирование: Регулярно отслеживайте производительность запросов и операций базы данных с помощью инструментов мониторинга и профилирования. Это позволяет идентифицировать узкие места и проводить дальнейшую оптимизацию.

Что такое пространства имен в PHP и как их использовать? В PHP пространства имен представляют собой способ организации кода п
+2
Что такое пространства имен в PHP и как их использовать? В PHP пространства имен представляют собой способ организации кода путем группировки связанных классов, интерфейсов, функций и констант под определенным именем. Это помогает избежать конфликтов имен между различными компонентами приложения или различными библиотеками. Пространства имен предоставляют иерархическую систему именования, аналогичную каталогам в файловой системе. Как использовать пространства имен в PHP: 1. Определение пространства имен: Пространство имен определяется с использованием ключевого слова namespace, за которым следует имя пространства имен. Это объявление должно быть первым оператором в файле PHP перед любым другим кодом. 2. Использование элементов в пространстве имен: После определения пространства имен вы можете помещать классы, функции, интерфейсы или константы в это пространство имен. 3. Доступ к элементам в пространстве имен: Для доступа к элементам внутри пространства имен можно использовать их полностью квалифицированные имена (включая пространство имен) или импортировать пространство имен с использованием ключевого слова use. 4. Использование псевдонимов: Также можно определить псевдонимы для пространств имен или отдельных элементов, чтобы упростить их использование, особенно если имена пространств довольно длинные.

В чем разница между «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, поэтому переход к другой базе данных может потребовать более значительных изменений в коде.

Иногда реально ощущение, что нас держат в Матрице. Большинство сидит, читает статьи про ML, смотрит ролики «как это работает»
Иногда реально ощущение, что нас держат в Матрице. Большинство сидит, читает статьи про ML, смотрит ролики «как это работает» — и всё. ❗ Сегодня последний день промокода Lastcall (−5000 ₽). Уже завтра стартует первый вебинар по Машинному обучению — полный набор для выхода из Матрицы. Кто готов вырваться из симуляции и ворваться в сезон найма? 👾 — я уже в команде Нео 👍 — хочу красную таблетку 🤔 — пока думаю, но интересно Забирай полный комплект для ML-разработки: Python + Математика + Машинное обучение. 🔥 Скидка 30% действует только до 9 сентября → забираем себе

Как вы понимаете Special Case / Null Object и где его следует применять? Special Case / Null Object — это шаблон проектирован
Как вы понимаете 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 не выполняет никаких действий и не вызывает ошибок при отсутствии файла или других ресурсов, которые могут быть связаны с реальным логгером.

Какова цель расширения «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, поскольку оно предоставляет единый интерфейс независимо от используемой базы данных.

⚡️ Будь как этот гений с картинки — предлагай свои условия работодателю, а не наоборот! Кто нужен? Senior ML-Engineer с опыто
⚡️ Будь как этот гений с картинки — предлагай свои условия работодателю, а не наоборот! Кто нужен?
Senior ML-Engineer с опытом работы более 6 месяцев в FAANG компаниях. Требование: разработать кросс-платформенное приложение-трекер зарплат с AI-распознаванием вакансий по резюме.
Но если вы пока джун — я бы предложил: - Full-time контракт: 180к/мес после курса + опцион на карьеру в топ-компаниях - Либо фикс за проект: стань ML-инженером за 39к вместо 44к с промокодом LASTCALL 🔗 Старт 9 сентября

Что такое 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 снимает с разработчика множество рутинных задач по настройке сервера и развертыванию приложений, позволяя ему сосредоточиться на создании функционала и улучшении самого приложения.

🎮 КВЕСТОВАЯ ЛИНИЯ: «Путь Data Scientist'а» ⮕ Твой стартовый набор искателя данных: Python — твое легендарное оружие (урон по
🎮 КВЕСТОВАЯ ЛИНИЯ: «Путь Data Scientist'а» ⮕ Твой стартовый набор искателя данных:
Python — твое легендарное оружие (урон по багам +∞) Математика — твой базовый интеллект (влияет на понимание алгоритмов) Машинное обучение — твое дерево навыков (открывает новые способности)
⚡️ АКТИВЕН ВРЕМЕННЫЙ БАФФ: «Щедрость наставника» Эффект: –30% к цене полного набора ДСника Было: 121.800 ₽ → Стало: 84.900 ₽ ☞ Что ждет тебя в этом квесте
— Получение артефактов: портфолио проектов и сертификаты— Прокачка от новичка до Senior Data Scientist— Босс-файты с реальными задачами из индустрии— Доступ к гильдии единомышленников
📎 Забрать бафф Рассрочки: 3 мес | 6 мес | 12 мес

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

😎 Сколько баллов набрали вы? Голосуйте, какой у вас уровень разработчика: 😁 — 5-12 баллов (стажер) 👍 — 13-25 баллов (джуни
😎 Сколько баллов набрали вы? Голосуйте, какой у вас уровень разработчика: 😁 — 5-12 баллов (стажер) 👍 — 13-25 баллов (джуниор) ⚡️ — 26-40 баллов (джуниор+) 👏 — 41-60 баллов (миддл) 🔥 — 61-80 баллов (миддл+) 🎉 — 81-100 баллов (сеньор) 🤩 — 100+ баллов (тимлид) Но вот в чем прикол — опытный разработчик набирает баллы не случайными косяками, а осознанными решениями. 👉 Научим, как быстро прокачаться от стажера до сеньора

Что может содержать интерфейс? В PHP интерфейс является объявлением, которое определяет список методов, которые должны быть реализованы классами, которые реализуют этот интерфейс. Интерфейс не содержит реализации методов, он просто указывает, какие методы должны быть доступны в классе. Интерфейс может содержать следующие элементы: Объявления методов: Это основной компонент интерфейса. Методы в интерфейсе объявляются без тела функции, то есть без реализации. Константы: Интерфейс также может содержать константы, которые автоматически являются публичными, статическими и неизменяемыми (final). Наследование интерфейсов: Интерфейсы могут наследовать другие интерфейсы, что позволяет создавать иерархии интерфейсов. Интерфейсы могут быть пустыми: Интерфейс может быть пустым, то есть не содержать ни одного метода. Это полезно в случае, если вы хотите убедиться, что класс реализует определенный интерфейс, но не требует реализации каких-либо конкретных методов. Интерфейсы в PHP предоставляют гибкую и мощную возможность для определения контрактов между различными частями кода и обеспечивают возможность полиморфного поведения, что способствует упрощению и улучшению структуры вашего приложения.

Стоит ли возвращать null из методов. Если нет, то почему и как писать код в таких случаях? Когда речь идет о возвращении значения из методов, лучше избегать возвращения null, так как это может привести к ошибкам и сложностям при обработке результата функции. Вместо этого, важно возвращать объекты или значения-заглушки, которые явно указывают на определенное состояние или ситуацию. Если метод не может вернуть ожидаемый результат или найти запрошенное значение, то лучше выбросить исключение, чтобы проинформировать о такой ситуации и позволить соответствующей обработке ошибок или выполнению альтернативных действий. Если метод не может найти результат, который можно обозначить специальным значением, можно вернуть значение-заглушку, которое явно указывает на отсутствие результата или ошибку. Это может быть пустой массив, пустой объект, пустая строка или целое число, имеющее конкретное значение, которое в вашем контексте обозначает отсутствие результата.

Переворачиваем календарь — а там скидки, которые уже закончились. Но мы их вернули на последний день 🤔 До 00:00 третьего сен
Переворачиваем календарь — а там скидки, которые уже закончились. Но мы их вернули на последний день 🤔 До 00:00 третьего сентября (цены как до 1 сентября): ▪️ Математика для Data Science — 35.199 ₽ вместо 44.900 ₽ ▪️ Алгоритмы и структуры данных — 31.669 ₽ вместо 39.900 ₽ ▪️ Основы IT — 14.994 ₽ вместо 19.900 ₽ ▪️ Архитектуры и шаблоны — 24.890 ₽ вместо 32.900 ₽ ▪️ Python — 24.990 ₽ вместо 32.900 ₽ ▪️ ML для Data Science — 34.000 ₽ вместо 44. 000 ₽ ▪️ AI-агенты — 49.000 ₽ вместо 59.000 ₽ 👉 Хватаем скидки из прошлого P.S. Машину времени одолжили у дяди Миши

Что такое позднее статическое связывание? Позднее статическое связывание — это возможность в PHP определять методы с одним и
+2
Что такое позднее статическое связывание? Позднее статическое связывание — это возможность в PHP определять методы с одним и тем же именем в разных классах и динамически вызывать соответствующий метод, основываясь на типе объекта во время выполнения программы. Одним из примеров использования позднего статического связывания в PHP является механизм наследования и перегрузки методов. Позволяет заменять родительские методы в дочерних классах, сохраняя при этом связь с родительским классом. Для его использования в PHP можно воспользоваться ключевыми словами static или self. Ключевое слово static ссылается на класс, в котором был вызван метод, а self используется для обращения к методам текущего класса, игнорируя изменения методов в дочерних классах. Пример использования позднего статического связывания в PHP на фото.

[Git] Какой командой можно сделать ресет изменений, не потеряв их? Чтобы отменить изменения и при этом не потерять их в Git, можно использовать команду git reset с флагом --soft или --mixed, или команду git restore. Вот основные варианты: 1. git reset --soft Эта команда откатит последний коммит, но все изменения останутся в области подготовленных изменений (staging area), так что их можно будет заново закоммитить: git reset --soft HEAD^ Здесь HEAD^ указывает на последний коммит, от которого нужно сделать откат. Если хотите откатить несколько коммитов, можно использовать HEAD~N, где N — количество коммитов для отката. 2. git reset --mixed Эта команда откатит последний коммит и вернет изменения в рабочую директорию, но они будут убраны из staging area. То есть файлы останутся изменёнными, но их придётся снова добавлять командой git add перед коммитом: git reset --mixed HEAD^ Флаг --mixed также используется по умолчанию, поэтому его можно опустить. 3. git restore для работы с отдельными файлами Если вы хотите снять изменения только с определённых файлов, не трогая весь коммит, используйте команду git restore: 🔸Перенос файла из staging area в рабочую директорию (убрать из подготовленных изменений): git restore --staged <имя_файла> 🔸Отмена всех изменений в файле (возврат к состоянию из коммита): git restore <имя_файла> Эти команды удобны, если нужно отменить изменения по отдельным файлам или управлять состоянием рабочей директории без потерь.

Что такое Docker? Каков принцип его работы? Docker — это платформа с открытым исходным кодом для автоматизации разработки, доставки и развертывания приложений в изолированных средах, называемых контейнерами. Контейнеры позволяют упаковать приложение со всеми его зависимостями в единый образ, который можно запускать на любой системе, где установлен Docker, независимо от конфигурации хостовой ОС. Принцип работы Docker Docker использует технологии изоляции, предоставляемые ядром Linux, такие как cgroups и namespaces, для создания легковесных и изолированных контейнеров. Контейнеры используют общее ядро хостовой операционной системы, что позволяет запускать их с минимальными накладными расходами по сравнению с традиционными виртуальными машинами. Основные компоненты Docker: Docker Daemon (dockerd): Служба, управляющая контейнерами и образами. Docker Client (docker): Интерфейс командной строки для взаимодействия с Docker Daemon. Docker Images: Шаблоны, содержащие все необходимые компоненты для запуска приложений. Docker Containers: Запущенные экземпляры Docker Images, изолированные друг от друга. Docker Registry: Репозиторий для хранения и распространения Docker Images. Преимущества использования Docker: Портативность: Контейнеры можно запускать на любой системе с установленным Docker, обеспечивая консистентность окружений. Изоляция: Каждое приложение работает в своем контейнере, что предотвращает конфликты между зависимостями. Масштабируемость: Docker облегчает масштабирование приложений путем запуска нескольких экземпляров контейнеров. Быстрота развертывания: Контейнеры запускаются быстрее, чем традиционные виртуальные машины, что ускоряет процессы разработки и тестирования. Как Docker используется в разработке PHP-приложений: Для PHP-разработчиков Docker предоставляет возможность создавать контейнеры с необходимыми версиями PHP, веб-серверами (например, Nginx или Apache) и базами данных (например, MySQL или PostgreSQL). Это позволяет разработчикам создавать локальные окружения, идентичные продакшн-средам, что минимизирует проблемы, связанные с различиями в конфигурациях. Инструмент Docker Compose позволяет описывать многоконтейнерные приложения, что упрощает настройку и управление такими окружениями.

ПОСЛЕДНИЙ ДЕНЬ❗ КУРСЫ ПОДОРОЖАЮТ ЗАВТРА‼️ — ML за 34к вместо 44к + Python в подарок — Математика → второй доступ в подарок —
ПОСЛЕДНИЙ ДЕНЬ❗ КУРСЫ ПОДОРОЖАЮТ ЗАВТРА‼️ — ML за 34к вместо 44к + Python в подарок — Математика → второй доступ в подарок — Ранний доступ к AI-агентам с 15 сентября — И МОЖНО УСПЕТЬ КУПИТЬ ВСЁ ДО ПОДОРОЖАНИЯ 👉 Proglib Academy

В чем разница между функциями «htmlentities» и «htmlspecialchars» в PHP? В PHP функции htmlentities() и htmlspecialchars() используются для кодирования HTML-сущностей, но они имеют разные цели: «htmlspecialchars()»: Эта функция в основном используется для экранирования символов HTML, которые имеют специальное значение в HTML, таких как <, >, &, и «. Она преобразует эти символы в соответствующие HTML-сущности (<, >, &, «). Это часто используется для предотвращения атак XSS (межсайтового скриптинга), гарантируя, что пользовательский ввод отображается «как есть», без интерпретации как HTML. «htmlentities()»: Эта функция преобразует все применимые символы в соответствующие HTML-сущности. В дополнение к символам, экранируемым «htmlspecialchars()», она также преобразует символы, такие как не-ASCII символы и различные символы. Эта функция часто используется, когда необходимо гарантировать безопасное кодирование всех символов для вывода HTML, особенно при работе с многоязычным контентом.

Библиотека собеса по PHP | вопросы с собеседований - إحصائيات وتحليلات قناة تيليجرام @php_interview_lib