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

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

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

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

Наши каналы: https://yangx.top/proglibrary/9197
加入频道
Самые полезные каналы для программистов в одной подборке!

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

🔥Для всех

Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
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 запрещена на территории РФ
[Git]Какой командой можно влить комит в текущую ветку?

Чтобы влить коммит в текущую ветку, используется команда git cherry-pick. Эта команда позволяет перенести один или несколько коммитов из другой ветки или из истории на текущую ветку. Вот как это делается:

1. Определите хэш коммита, который вы хотите влить:

git log

Найдите нужный коммит и скопируйте его хэш.

2. Выполните команду cherry-pick:

git cherry-pick 


Если вам нужно влить несколько коммитов, вы можете указать диапазон:

git cherry-pick ^..


Или перечислить несколько хэшей:

git cherry-pick   


После выполнения cherry-pick, изменения из выбранных коммитов будут добавлены в вашу текущую ветку.

Дополнительные моменты:
Если возникнут конфликты при выполнении git cherry-pick, Git остановится и предложит вам их разрешить. После разрешения конфликтов выполните:
git cherry-pick --continue


Если вы передумали в процессе выполнения cherry-pick, вы можете отменить операцию с помощью:
git cherry-pick --abort
Какая система типов используется в PHP? Опишите плюсы и минусы.

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

Плюсы:

✔️Гибкость: Динамическая типизация делает PHP очень гибким языком программирования, позволяя быстро писать и изменять код.

✔️Простота использования: Не нужно явно объявлять типы переменных, что упрощает написание кода, особенно для новичков.

✔️Легкость внесения изменений: Поскольку типы переменных могут быть изменены в любой момент, изменение структуры данных или логики программы может быть более легким и менее разрушительным.

✔️Меньше кода: Нет необходимости явно приводить типы или выполнять проверки на соответствие типов, что может сократить объем кода.

Минусы:

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

Уменьшение производительности: Проверка типов во время выполнения может негативно сказаться на производительности приложения, особенно в больших и сложных проектах.

Меньшая надежность: Поскольку типы переменных могут изменяться во время выполнения, это может привести к неожиданному поведению программы и усложнить ее понимание и поддержку.

Трудности в документации и отладке: Из-за динамической типизации может быть сложно определить типы переменных и их ожидаемое поведение, что может затруднить документирование кода и отладку ошибок.
Что такое замыкание в PHP и как их использовать?

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

Замыкания также могут захватывать переменные из окружающей области видимости, делая их мощными инструментами для создания гибкого и переиспользуемого кода. Это известно как «захват переменных».

Также можно использовать замыкания в качестве функций обратного вызова для функций массива, таких как array_map(), array_filter() и т. д., или для итерации с использованием foreach. Это может сделать ваш код более кратким и выразительным.
👔💼 Как ответить на собеседовании, почему вы уволились с прошлого места работы: 9 вариантов ответа

А также примеры того, как говорить точно не надо 🌚

👉Читать
Какова разница между «регулярным выражением» и «выражением с подстановочными символами» в PHP, и как их использовать?

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

Регулярные выражения:

Регулярные выражения (regex) — это мощные инструменты для поиска шаблонов и манипуляции текстом.
Они позволяют определять сложные шаблоны поиска с использованием формального синтаксиса.
Шаблоны regex могут соответствовать определенным символам, диапазонам символов, повторениям, альтернативам и т. д.
PHP предоставляет встроенные функции, такие как preg_match(), preg_match_all(), preg_replace() и т. д., для работы с регулярными выражениями.
Регулярные выражения более гибкие и универсальные по сравнению с выражениями с подстановочными символами.

Выражения с подстановочными символами:

Выражения с подстановочными символами проще и более ограниченные по сравнению с регулярными выражениями.
Они используют специальные символы, такие как * (соответствует нулю или более символам) и ? (соответствует ровно одному символу), для представления шаблонов.
Выражения с подстановочными символами часто используются при операциях с файловой системой, таких как поиск файлов по их именам.
PHP предоставляет функции, такие как glob(), для работы с выражениями с подстановочными символами при операциях с файловой системой.
Что такое «PHP Extension Community Library» (PECL), и как её использовать для расширения функциональности PHP?

Библиотека сообщества расширений PHP (PECL) служит репозиторием для PHP-расширений. PHP-расширения представляют собой модули, написанные на C, которые могут быть динамически загружены в PHP для предоставления дополнительной функциональности. Эти расширения могут взаимодействовать с PHP на более низком уровне, чем обычные скрипты PHP, позволяя разработчикам использовать системные ресурсы, взаимодействовать с базами данных и выполнять другие задачи, которые могут быть более эффективно реализованы на языке более низкого уровня.

Цель PECL заключается в предоставлении централизованного места для разработчиков, где они могут делиться и распространять PHP-расширения. Это гарантирует, что разработчики PHP могут легко находить, устанавливать и использовать расширения для расширения возможностей PHP.

Чтобы использовать PECL для расширения функциональности PHP, обычно следуют следующим шагам:

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

Поиск расширений: Просмотрите веб-сайт PECL или используйте команду pecl search, чтобы найти расширения, предоставляющие необходимую функциональность.

Установка расширений: После того как вы нашли нужное расширение, вы можете установить его с помощью команды pecl install, за которой следует имя расширения.

Включение расширения: После установки расширения вам нужно включить его в файле конфигурации PHP (php.ini). Вы можете сделать это вручную, добавив строку вроде extension=имя_расширения.so в файл php.ini, или с помощью команды phpenmod, если вы используете систему с хранилищем расширений и приложений PHP (PEAR)

Перезапуск веб-сервера: После включения расширения необходимо перезапустить веб-сервер (например, Apache или Nginx), чтобы изменения вступили в силу.

Тестирование расширения: Наконец, вы можете протестировать функциональность, предоставляемую расширением, в ваших PHP-скриптах. Вы можете использовать функции или классы расширения, как это указано в его документации.
Что нельзя хранить в cookie и почему?

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

Однако, в cookie можно хранить идентификаторы сессий или временные токены, которые могут использоваться для аутентификации пользователей на сайте. Такие данные безопасны, поскольку они не содержат конфиденциальной информации напрямую и могут использоваться только в контексте определенного веб-приложения. Тем не менее, даже в таких случаях необходимо следить за безопасностью и использовать механизмы защиты, такие как HTTPS, чтобы предотвратить возможные атаки перехвата.
Вакансии «Библиотеки программиста» — ждем вас в команде!

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

Подробности тут

Мы предлагаем частичную занятость и полностью удаленный формат работы — можно совмещать с основной и находиться в любом месте🌴

Ждем ваших откликов 👾
Расскажите о Performance & профилировании PHP-кода (xdebug, xhprof т.д.).

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

Performance и профилирование PHP-кода являются важными аспектами оптимизации веб-приложений, особенно когда речь идет о больших и сложных проектах. Два из самых распространенных инструмента для профилирования PHP-кода — это Xdebug и XHProf. Давайте рассмотрим их подробнее.

Xdebug:
Функции: Xdebug предоставляет множество функций, включая отладку, трассировку стека, профилирование кода и сбор информации о покрытии кода тестами.
Профилирование: Самое интересное для нас — это возможность профилирования. Xdebug может собирать информацию о времени выполнения каждой функции и блока кода в проекте.
Анализ: Полученные данные профилирования можно анализировать с помощью инструментов, таких как KCacheGrind или WinCacheGrind. Они предоставляют визуализацию профилировочных данных в виде дерева вызовов функций, что позволяет идентифицировать узкие места в коде.

XHProf:
Facebook: XHProf был разработан в Facebook и предоставлен в открытый доступ. Он предоставляет инструменты для профилирования и анализа производительности PHP-кода.
Профилирование в реальном времени: XHProf может работать в режиме профилирования в реальном времени, что полезно для выявления узких мест в коде при работе приложения в продакшн-среде.
Легкий в использовании: XHProf обеспечивает простой интерфейс для запуска профилирования и анализа данных.
Сегодня на вопрос отвечаете вы:

💬Какую среду разработки предпочитаете и почему?
В чем разница между переопределением метода и перегрузкой метода?

Method Overriding (Переопределение методов)


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

Требования:

🔸Наследование (должен быть родительский класс и дочерний класс).
🔸Метод в дочернем классе должен иметь ту же сигнатуру, что и в родительском классе.
🔸Модификаторы доступа могут быть ослаблены (например, с protected на public), но не ужесточены.

Method Overloading (Перегрузка методов)

В строгом смысле PHP не поддерживает перегрузку методов на уровне языка (как в Java или C#), поскольку PHP не позволяет определять несколько методов с одним именем, но разным количеством или типами параметров. Однако перегрузка может быть реализована косвенно через магический метод __call() или __callStatic().
Как расшифровать 644 в правах на файл в Linux?

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

Права доступа к файлу представлены тремя группами: для владельца (user), для группы (group) и для остальных (others). Каждая группа состоит из трех битов, представляющих права на чтение (read), запись (write) и выполнение (execute).

Теперь, чтобы расшифровать число 644:

🔸Первая цифра (6) относится к правам владельца файла.
🔸Вторая цифра (4) относится к правам группы.
🔸 цифра (4) относится к правам остальных пользователей.

Теперь преобразуем эти числа в бинарный вид:

🟢6 = 110 в двоичной системе (rw-)
🟢4 = 100 в двоичной системе (r--)
🟢4 = 100 в двоичной системе (r--)

Таким образом, права доступа для файла 644 в Linux будут следующими:

✔️Владелец файла имеет права на чтение и запись (rw-)
✔️Группа имеет право только на чтение (r--)
✔️Остальные пользователи также имеют право только на чтение (r--)
SOAP vs REST. В чем разница?

1. Принцип взаимодействия:

SOAP (Simple Object Access Protocol): Использует протокол XML для обмена сообщениями. Обычно отправляет запросы через HTTP, SMTP или другие протоколы.
REST (Representational State Transfer): Основан на простых HTTP методах (GET, POST, PUT, DELETE) и работает с ресурсами (например, URL). Возвращает данные в форматах JSON, XML или других текстовых форматах.

2. Простота и гибкость:

SOAP: Более сложный и тяжеловесный стандарт, предоставляющий много возможностей, но требует больше ресурсов и времени для разработки.
REST: Простой и гибкий, позволяет использовать различные форматы данных и не накладывает строгих правил на структуру сообщений.

3. Формат данных:

SOAP: Обычно использует XML для обмена данными, что может привести к большому объему сообщений из-за тегов и атрибутов XML.
REST: Часто использует JSON для передачи данных, что более компактно и легче читать для человека.

4. Состояние (Statelessness):

SOAP: Может поддерживать состояние сессии между запросами, что означает, что сервер должен помнить состояние клиента.
REST: Считается безсостоятельным (stateless), каждый запрос от клиента содержит всю необходимую информацию, и сервер не хранит состояние между запросами.

5. Безопасность:

SOAP: Предоставляет стандартизированные механизмы безопасности, такие как WS-Security, что делает его более подходящим для более критичных по безопасности приложений.
REST: Основывается на протоколе HTTPS для обеспечения безопасности передачи данных, но может потребовать дополнительных мер безопасности, таких как токены авторизации.

6. Кэширование:

SOAP: Поддерживает кэширование, но требует сложной настройки на стороне клиента и сервера.
REST: Имеет встроенную поддержку кэширования через HTTP методы, что упрощает процесс.

7. Использование веб-стандартов:

SOAP: Использует стандарты WSDL (Web Services Description Language) и UDDI (Universal Description, Discovery, and Integration) для описания веб-сервисов и их местоположения.
REST: Не имеет формальных стандартов описания интерфейсов, но использует стандарты HTTP и URI для доступа к ресурсам.
Эти различия имеют важное значение при выборе между SOAP и REST в зависимости от требований проекта. SOAP часто используется в корпоративных приложениях, требующих высокой надежности и безопасности, в то время как REST чаще используется в открытых API и веб-приложениях, где важна гибкость и простота использования.
Какова цель сервис провайдеров в Ларавеле?

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

Сервис-провайдеры определяются в каталоге app/Providers и регистрируются в файле config/app.php.

Это пример сервис-провайдера, который регистрирует маршрут
Что такое транзакция?

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

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

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

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

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

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

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

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

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