PHP Backend | YeaHub
228 subscribers
133 photos
7 videos
235 links
Теория, подготовка к интервью и курсы для PHP разработчиков

YeaHub — это платформа для IT-специалистов, объединяющая обучение, карьерный рост, развитие и сообщество единомышленников.

Платформа: https://yeahub.ru

Для связи: @ruslan_kuyanets
Download Telegram
🤔 Какой параметр функции setcookie() указывает путь, на котором куки будут доступны?
Anonymous Quiz
56%
path
34%
domain
5%
secure
5%
httpOnly
#Собес
🤔 Как работают сессии в РНР?

Сессия - это механизм сохранения данных между запросами. При запуске сессии сервер генерирует уникальный идентификатор (ID), который хранится в сооkіе или передаётся через URL. Сервер сохраняет данные сессии на стороне сервера, а клиент использует идентификатор для доступа к этим данным.

👉Новости 👉Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
#полезное
😊 Развертывание PHP-приложения с помощью docker compose в продакшн

Подробно объясняется настройка окружения, конфигурация Docker Compose для PHP-приложения и процесс его деплоя на GCP
Читать статью

👉Новости 👉Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Какую функцию использовать для записи массива в файл в формате CSV?
Anonymous Quiz
19%
putcsv()
30%
writecsv()
37%
fwritecsv()
15%
fputcsv()
#вакансии
👨‍💻 PHP Backend Developer (от middle+)

Локация: Удаленно
Компания: Aльтернатива
ЗП: до 1 700 р./час
Занятость: Частичная

Альтернатива - полностью территориально распределенная компания. Мы занимаемся как собственными продуктами, так и заказной разработкой. В нашем портфолио классические ИС под заказ для крупных клиентов, мелкие сайты для малого бизнеса, мобильные приложения, а также web3 проекты.

🚩Ожидания
🔵 PHP8, SQL;
🔵 Опыт разработки REST API и JSON;
🔵 Работа с Git;
🔵 Уметь планировать и оценивать свою работу;
🔵 Обязательно знание Laravel или Битрикс БУС.

Чем предстоит заниматься
🔵 Поддерживать существующие проекты;
🔵 Разрабатывать новые проекты самостоятельно или в команде.

🚩Условия
🟡 Полная удаленка;
🟡 Возможность гибкого времени работы;
🟡 Оформление через самозанятого или ИП.

💬 Резюме отправлять: @toropovdn

👉Новости 👉Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес
🤔 В чем разница между методами GET и POST?

Метод GET используется для получения данных, а POST - для их отправки на сервер. Данные GET
передаются через URL, a POST - в теле запроса. GET запросы кэшируются и могут быть сохранены в
истории браузера, тогда как POST запросы более защищены для передачи данных.

👉Новости 👉Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Какую функцию использовать для сортировки массива с помощью пользовательской функции сравнения?
Anonymous Quiz
58%
usort()
6%
uksort()
6%
uasort()
29%
array_multisort()
#ЛитКод
Задача: 642. Design Search Autocomplete System

Разработайте свою реализацию круговой двусторонней очереди (deque). Реализуйте класс MyCircularDeque: MyCircularDeque(int k) Инициализирует deque с максимальным размером k. boolean insertFront() Добавляет элемент в переднюю часть Deque. Возвращает true, если операция прошла успешно, или false в противном случае. boolean insertLast() Добавляет элемент в заднюю часть Deque. Возвращает true, если операция выполнена успешно, или false в противном случае. boolean deleteFront() Удаляет элемент из передней части Deque. Возвращает true, если операция прошла успешно, или false в противном случае. boolean deleteLast() Удаляет элемент из задней части Deque. Возвращает true, если операция прошла успешно, или false в противном случае. int getFront() Возвращает передний элемент из Deque. Возвращает -1, если Deque пуст. int getRear() Возвращает последний элемент из Deque. Возвращает -1, если Deque пуст. boolean isEmpty() Возвращает true, если Deque пуст, или false в противном случае. boolean isFull() Возвращает true, если Deque полон, или false в противном случае.

Пример:
Input
["MyCircularDeque", "insertLast", "insertLast", "insertFront", "insertFront", "getRear", "isFull", "deleteLast", "insertFront", "getFront"]
[[3], [1], [2], [3], [4], [], [], [], [4], []]
Output
[null, true, true, true, false, 2, true, true, true, 4]


👨‍💻 Алгоритм:

1⃣Инициализация и проверка состояний
Реализуйте конструктор для инициализации кольцевой двусторонней очереди заданного размера и методы для проверки пустоты и полноты очереди.

2⃣Операции вставки
Реализуйте методы вставки элементов в переднюю и заднюю части очереди с учетом кольцевой структуры.

3⃣Операции удаления
Реализуйте методы удаления элементов из передней и задней частей очереди с учетом кольцевой структуры и методы для получения переднего и заднего элементов очереди.

😎 Решение:
class TrieNode {
public $children;
public $count;

public function __construct() {
$this->children = [];
$this->count = [];
}
}

class AutocompleteSystem {
private $root;
private $prefix;

function __construct($sentences, $times) {
$this->root = new TrieNode();
$this->prefix = "";
for ($i = 0; $i < count($sentences); $i++) {
$this->add($sentences[$i], $times[$i]);
}
}

private function add($sentence, $count) {
$node = $this->root;
for ($i = 0; $i < strlen($sentence); $i++) {
$char = $sentence[$i];
if (!isset($node->children[$char])) {
$node->children[$char] = new TrieNode();
}
$node = $node->children[$char];
if (!isset($node->count[$sentence])) {
$node->count[$sentence] = 0;
}
$node->count[$sentence] += $count;
}
}

function input($c) {
if ($c == '#') {
$this->add($this->prefix, 1);
$this->prefix = "";
return [];
}

$this->prefix .= $c;
$node = $this->root;
for ($i = 0; $i < strlen($this->prefix); $i++) {
$char = $this->prefix[$i];
if (!isset($node->children[$char])) {
return [];
}
$node = $node->children[$char];
}

$pq = [];
foreach ($node->count as $sentence => $count) {
$pq[] = [$sentence, $count];
}

usort($pq, function($a, $b) {
if ($a[1] == $b[1]) {
return strcmp($a[0], $b[0]);
}
return $b[1] - $a[1];
});

$result = [];
for ($i = 0; $i < min(3, count($pq)); $i++) {
$result[] = $pq[$i][0];
}

return $result;
}
}


👉Новости 👉Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Какую функцию использовать для чтения значения куки с указанием всех параметров куки (например, путь, домен, срок действия)?
Anonymous Quiz
52%
get_cookie_params()
24%
read_cookie_params()
24%
session_get_cookie_params()
0%
fetch_cookie_params()
#Собес
🤔 Как предотвратить SQL-иньекции в РНР-приложениях?

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

👉Новости 👉Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😊 Карточка состояния базы данных для Laravel Pulse

Разработчик Джейми Схоутен создал изящную карту Laravel Pulse для мониторинга состояния вашей базы данных, предоставляя ключевые показатели, такие как активные потоки, соединения и многое другое

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

👉Новости 👉Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
#вакансии
👨‍💻 PHP/ Go Developer

Локация: Удалённо в РФ
Компания: Туту.ру
ЗП: обсуждается на собеседовании
Занятость: Полная

🚩Задачи
🔵Поддержка существующей инфраструктуры и разработка новых продуктовых задач
🔵Оптимизация производительности создаваемых решений в соответствии с внутренними требованиями
🔵Интеграции с внутренними и внешними партнёрами
🔵Покрытие кода тестами (юнит, интеграционные, e2e) в соответствии с внутренними требованиями
🔵Активное участие в решении проблем работы сервиса, реакция на инциденты.

Обязательные требования
🔵Коммерческая разработка на PHP от 3 лет
🔵Go от 1,5 лет
🔵Работа c реляционными базами данных
🔵Опыт разбиения монолита на микросервисы
🔵Покрытие кода тестами.

💬 Резюме отправлять: @fr_rec

👉Новости 👉Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Какой функцией в PHP можно заменить символы в строке?
Anonymous Quiz
81%
str_replace()
4%
replace()
12%
substr_replace()
4%
str_modify()
#Собес
🤔 Какие существуют типы ошибок в РНР?

PHP выделяет следующие основные типы ошибок: фатальные (Fatal Errors), предупреждения
(Warnings), уведомления (Notices), ошибки синтаксиса (Parse Errors), устаревшие (Deprecated
Errors) и строгие (Strict Errors). Каждый из них сигнализирует о разных проблемах в коде, от
критических до менее значительных.

👉Новости 👉Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Какой глобальный массив в PHP содержит информацию о заголовках, путях и местоположении скрипта?
Anonymous Quiz
57%
$_SERVER
18%
$_ENV
7%
$_SESSION
18%
$_GLOBAL
#ЛитКод
Задача: 643. Maximum Average Subarray I

Вам дан целочисленный массив nums, состоящий из n элементов, и целое число k. Найдите смежный подмассив, длина которого равна k и который имеет максимальное среднее значение, и верните это значение. Принимается любой ответ с погрешностью вычислений менее 10-5.

Пример:
Input: nums = [1,12,-5,-6,50,3], k = 4
Output: 12.75000


👨‍💻 Алгоритм:

1⃣Инициализация скользящего окна
Вычислите сумму первых k элементов массива nums. Это будет начальное значение максимальной суммы.

2⃣Перемещение окна
Перемещайте окно длиной k по массиву, добавляя следующий элемент и убирая предыдущий, чтобы поддерживать сумму текущего окна.

3⃣Обновление максимальной суммы
На каждом шаге обновляйте максимальную сумму, если текущая сумма больше, и в конце верните среднее значение этой суммы.

😎 Решение:
function findMaxAverage($nums, $k) {
$currentSum = array_sum(array_slice($nums, 0, $k));
$maxSum = $currentSum;

for ($i = $k; $i < count($nums); $i++) {
$currentSum += $nums[$i] - $nums[$i - $k];
$maxSum = max($maxSum, $currentSum);
}

return $maxSum / $k;
}


👉Новости 👉Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Какой метод в PHP используется для установки пользовательского обработчика исключений?
Anonymous Quiz
50%
set_exception_handler()
19%
set_error_handler()
8%
custom_exception_handler()
23%
exception_handler()
#Собес
🤔 Как отлаживать РНР-приложение?

Для отладки можно использовать встроенные функции РНР, такие как var_dump() и
error_reporting() , а также более сложные инструменты вроде Xdebug для работы с точками
останова и трассировками. Логирование ошибок и профилирование кода также играют ключевую
роль.

👉Новости 👉Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😊 DeepSeek PHP API-клиент

Этот пакет упрощает работу с API для PHP-разработчиков, обеспечивая удобную поддержку запросов, моделей и потоковой передачи данных
Гитхаб

👉Новости 👉Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😊 Асинхронный бег или драматическое ускорение с RoadRunner

Очень много в последнее время слышно замечаний в адрес PHP — мол, медленный, тяжелый, неповоротливый, все давно микросервисы на Go/Java/(нужное подставить) пишут. В этой статье расписаны плюсы, минусы и результаты попытки ускорить проект на PHP с использованием RoadRunner.
Смотреть статью

👉Новости 👉Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Какое ключевое слово используется для наследования класса в PHP?
Anonymous Quiz
87%
extends
13%
implements
0%
inherits
0%
derive