PHP задачи с собеседований
Open in Telegram
Задачи, тесты и теоретические вопросы по PHP. Прислать задачу/вопрос в дар: @cyberJohnny Сотрудничество: @cyberJohnny
Show more2 906
Subscribers
-124 hours
-17 days
-1030 days
Posts Archive
Курсы бесплатно, то есть даром
Без лишних слов: в Архиватор залили более 10 террабайт курсов. Среди школ:
• Скилы (конечно же)
• Гикбрейнс (есть пара новинок)
• Скилфектори (даже то, чего нигде не было)
• Яндекс Практикум ("крутая защита" говорили они)
Не теряй возможности, обучайся бесплатно: Архиватор
👨🏻💻 У меня есть компонент news.list, в котором уже присутствует фильтрация новостей по свойству заданных тем. Как сделать еще одну фильтрацию для этого же компонента? Вот мой компонент news.list. В начале уже пытался вывести свойство.
<?php
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");
$APPLICATION->SetTitle("Новости");
global $USER;
$filter = Array(
"IBLOCK_ID"=>$arParams["IBLOCK_ID"],
"ACTIVE"=>"Y",
"PROPERTY_SHOWLIST"=> $USER->GetID(),
);
$res = CIBlockElement::GetList(Array("SORT"=>"ASC"), $filter, false, false, Array("ID", "IBLOCK_ID", "NAME", "DATE_ACTIVE_FROM", "DETAIL_PAGE_URL"));
?>
<?
$themeId = intval($_GET['sel_theme']);
$themeFilter = array();
$themeCode = '';
$selectedThemeName = '';
if ($themeId > 0) {
$themeFilter["PROPERTY_THEME"] = $themeId;
} else if (isset($_GET['sel_theme'])) {
$themeCode = $_GET['sel_theme'];
$themeFilter = array('PROPERTY_THEME.CODE' => $themeCode);
$selectedThemeName = getThemeNameByCode($themeCode);
}
function getThemeNameByCode($themeCode) {
$theme = CIBlockElement::GetList(
array(),
array('CODE' => $themeCode),
false,
false,
array('ID', 'NAME')
)->Fetch();
if ($theme) {
return $theme['NAME'];
}
return false;
}
?>
<?$APPLICATION->IncludeComponent(
"bitrix:news.list",
"news.list",
array(
"ACTIVE_DATE_FORMAT" => "d.m.Y",
"ADD_SECTIONS_CHAIN" => "Y",
"AJAX_MODE" => "N",
"AJAX_OPTION_ADDITIONAL" => "",
"AJAX_OPTION_HISTORY" => "N",
"AJAX_OPTION_JUMP" => "N",
"AJAX_OPTION_STYLE" => "Y",
"CACHE_FILTER" => "N",
"CACHE_GROUPS" => "Y",
"CACHE_TIME" => "36000000",
"CACHE_TYPE" => "A",
"CHECK_DATES" => "Y",
"DETAIL_URL" => "/news/detail/#ID#/",
"DISPLAY_BOTTOM_PAGER" => "Y",
"DISPLAY_DATE" => "Y",
"DISPLAY_NAME" => "Y",
"DISPLAY_PICTURE" => "Y",
"DISPLAY_PREVIEW_TEXT" => "Y",
"DISPLAY_TOP_PAGER" => "N",
"FIELD_CODE" => array(
0 => "",
1 => "",
),
"SELECTED_THEME_NAME" => $selectedThemeName,
"FILTER_NAME" => "themeFilter",
"HIDE_LINK_WHEN_NO_DETAIL" => "N",
"IBLOCK_ID" => "2",
"IBLOCK_TYPE" => "news",
"INCLUDE_IBLOCK_INTO_CHAIN" => "Y",
"INCLUDE_SUBSECTIONS" => "Y",
"MESSAGE_404" => "",
"NEWS_COUNT" => "4",
"PAGER_BASE_LINK_ENABLE" => "N",
"PAGER_DESC_NUMBERING" => "N",
"PAGER_DESC_NUMBERING_CACHE_TIME" => "36000",
"PAGER_SHOW_ALL" => "N",
"PAGER_SHOW_ALWAYS" => "Y",
"PAGER_TEMPLATE" => "pagination",
"PAGER_TITLE" => "Новости",
"PARENT_SECTION" => "",
"PARENT_SECTION_CODE" => "",
"PREVIEW_TRUNCATE_LEN" => "",
"PROPERTY_CODE" => array(
0 => "",
1 => "THEME",
2 => "SHOWLIST",
),
"SET_BROWSER_TITLE" => "Y",
"SET_LAST_MODIFIED" => "N",
"SET_META_DESCRIPTION" => "Y",
"SET_META_KEYWORDS" => "Y",
"SET_STATUS_404" => "N",
"SET_TITLE" => "Y",
"SHOW_404" => "N",
"SORT_BY1" => "ACTIVE_FROM",
"SORT_BY2" => "SORT",
"SORT_ORDER1" => "DESC",
"SORT_ORDER2" => "ASC",
"STRICT_SECTION_CHECK" => "N",
"COMPONENT_TEMPLATE" => "news.list"
),
false
);?>
<?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");?>
При этом у меня создано свойство инфоблока Новости - "Показ новости" в котором два значения "Да" и "Нет". И если я в параметрах элемента поставлю Показ новости: Да, то тогда новость должна показываться только авторизованным пользователям и наооборот.
PHP задачи с собеседованийЕсть несколько способов проанализировать работу приложения на Go уже после деплоя. В новом выпуске шоу для разработчиков avito.code рассмотрен один из них: метод добавления специальных хендлеров в HTTP-сервер сервиса.
Старший инженер AvitoTech на живом примере показал, какие встроенные функции PPROF помогут найти проблемы с производительностью сервиса.
Реклама. ООО «Авито Тех». Erid: LdtCKdSvq
👨🏻💻 Как сложить два равных по длине массива по индексам
Есть два массива
$arr = array([0] => 1,[1] => 2, [2] => 3 ) $arr1 = array([0] => 4,[1] => 5, [2] => 6 )Размеры массивов могут меняться, но они всегда будут одинаковыми Как сложить эти два массива с равными индексами чтобы на выходе получилось следующее
array([0] => 5,[1] => 7,[2] => 9)
PHP задачи с собеседованийРаботодатели дерутся за специалистов по 1С
Установка, настройка, подключение кассы — умеешь? Смело врывайся на любое собеседование. А если нет — подписывайся на канал Знакомого 1С-ника и каждый день лови новое руководство по решению типовых проблем
Автор канала более десяти лет сопровождает 1С и точно знает, как выжать максимум из любой программы. Новички быстро освоят базовые инструменты, а матерые пользователи откроют для себя много нового
Ну, серьезно
Хватит плыть в серой массе дилетантов — освой базовый арсенал и повысь свою ценность на рынке труда. Это все абсолютно бесплатно! — @znak1c
Наша рекомендация на остаток лета: научитесь хакингу. Тот, кто разбирается в Kali linux — сможет что угодно и заработает состояние.
А если вы хотите разобраться, в информационной безопасности и хакинге — читайте канал: @linuxkalii
Там просто и доступно объясняют: как взломать беспроводные сети или любые аккаунты, почему не нужно использовать PowerShell и как обезопасить себя в вебе, чтобы не стать жертвой взлома.
Подписывайтесь, сделайте гигантские интеллектуальный подарок себе: @linuxkalii
⚡️Пора принять вызов!
Научитесь решать сложные задачи PHP-разработки и совершите level up!
🚀 31 июля — старт онлайн-курса «PHP Developer. Professional» в OTUS.
За 5 месяцев интенсивного обучения вы научитесь создавать мощные и высокопроизводительные веб-приложения, работать со сложной инфраструктурой, оптимизировать хранилища данных и писать надежные тесты для обеспечения безупречной работоспособности вашего кода.
🏆 Все эти новые знания вы закрепите в вашей выпускной работе — коммерческом кейсе.
🟠Курс можно купить в рассрочку.
➡️ Оставляйте заявку и присоединяйтесь к группе! Количество мест ограничено: https://otus.pw/4Py1/
Успейте присоединится к июльской группе!
Нативная интеграция. Информация о продукте www.otus.ru👨🏻💻 Удалить пробел из строки в переменной PHP
Есть такой кусок кода
$pric = $html->find('html body div span[class=price__value]', 0); // цена товара
$pric = strip_tags($pric); // обрезаю лишние хтмл теги
$pric = preg_replace('%^\s+|\s+$%u', '', $pric); // здесь должна быть цена без пробелов (но они есть)
Парсингом $html = new simple_html_dom(); вытаскиваю цену товара, но внутри цены присутствует пробел, в итоге у меня берет цифры до пробела (если тысячи) и нормально если пробела нет.
Для работы использую пхп 7.3
получаю 39 999
Использовал уже все известные регулярки, с различной кодировкой, без толку, не помогло ничего. Может кто подскажет решение проблемы? Кто сталкивался уже с таким
$pric = html_entity_decode($pric);
echo $pric. "<br>";
$pric = preg_replace('% %u', '', $pric);
echo $pric. "<br>"; // выводим цену
и все остается так же как и было. Пробел на месте пы.сы. Из последнего, попробовал заменить пробел на "-", видит пробел в конце строки, а не в середине (между цифрами)
PHP задачи с собеседований👀 Изучать алгоритмы и структуры данных лучше всего на примерах и практике.
Именно такой подход ждет вас в новом потоке онлайн-курса «Алгоритмы и структуры данных» в OTUS.
🎙 На интерактивных вебинарах преподаватели-практики продемонстрируют, как работает каждый алгоритм, и напишут его с нуля с вами прямо на уроке.
Хотите проверить походит ли вам курс?
👉 Пройдите тест и узнайте - https://otus.pw/cWA1/
Через 5 месяцев вы сможете самостоятельно писать самые известные прикладные алгоритмы на своем языке программирования. Во время обучения вы напишете свое приложение, чтобы представлять его на собеседовании.
🚀Стартуем 31 июля.
➡️ Оставьте заявку, чтобы занять место в группе со скидкой: https://otus.pw/t0l5/
Нативная интеграция. Информация о продукте www.otus.ruЗнаете правильный ответ🤔❓
Если нет, подключайтесь в четверг, 27 июля в 20:00, к открытому уроку «RabbitMQ: Advanced-практики».
💯На занятии мы:
✔️ реализуем асинхронный поточный процесс обработки с помощью RabbitMQ
✔️ реализуем RPC с помощью RabbitMQ
Вебинар пройдет в рамках старта онлайн-курса «Symfony Framework» OTUS. А спикером выступит руководитель курса Михаил Каморин💪, Dev Tech Lead в Skyeng.
Чтобы попасть на занятие, зарегистрируйтесь: https://otus.pw/er3X/
18+
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963. erid: 2RanymUMn9E
🖤 Если вы ещё не освоили PHP, но очень хотите
Не будем ходить вокруг да около. Skillbox приглашает на онлайн-курс «Профессия PHP-разработчик с нуля до PRO». А это, на минуточку:
✔️ 6 курсов в одном — для погружения в профессию
✔️ 3 проекта в портфолио: облачное хранилище данных, аналог booking.com, интернет-магазин
✔️ Командная стажировка
✔️ Гарантированное трудоустройство (или вернём деньги)
При этом устроиться на работу можно будет уже через 7 месяцев обучения. Средняя зарплата начинающих PHP-разработчиков — 90 тысяч рублей в месяц.
На курсе вы научитесь:
▪️ Программировать на PHP
▪️ Понимать принципы ООП
▪️ Работать с файловой системой
▪️ Находить ошибки в коде
▪️ Работать с базами данных
▪️ Разрабатывать на Laravel
🎁 На курс действует скидка. Кроме того, вы можете получить бесплатный доступ к первым модулям. Для этого просто нужно оставить заявку: https://epic.st/ebv_vD
Реклама. ЧОУ ДПО «Образовательные технологии «Скилбокс (Коробка навыков)», ИНН: 9704088880
👨🏻💻 Аннотация Psalm для типа возвращаемого значения в месте вызова метода/функции
Для демонстрации проблемы есть такой упрощенный реальный код:
abstract class A
{
/**
* @var array<string, mixed>
*/
private array $params;
public function __construct(array $params)
{
static::validateParams($params);
$this->params = $params;
}
final protected function getParamByKey(string $key): mixed
{
return $this->params[$key];
}
/**
* @throws \InvalidArgumentException
*/
abstract protected static function validateParams(array $params): void;
}
final class B extends A
{
protected static function validateParams(array $params): void
{
if (!is_string($params['X'])) {
throw new \InvalidArgumentException('Param X must be string');
}
if (!is_int($params['Y'])) {
throw new \InvalidArgumentException('Param Y must be int');
}
}
public function getParamX(): string
{
return $this->getParamByKey('X');
}
public function getParamY(): int
{
return $this->getParamByKey('Y');
}
}
Теперь к сути. При прогоне этого кода через psalm для методов B::getParamX и B::getParamY я получаю по два варнинга: MixedReturnStatement: Could not infer a return type и MixedInferredReturnType: Could not verify return type 'string' for.
Понятно что причина в том, что в объявлении метода getParamByKey, mixed указан как тип возвращаемого значения, из-за чего psalm делает вывод, что в B::getParamX и B::getParamY могут прилететь данные любого типа. Только вот в действительности это не так, поскольку перед вызовами B::getParamX и B::getParamY вызывается метод A::validateParams, который гарантирует корректность типов для обоих методов.
Вопрос: какую аннотацию можно задать, чтобы заставить psalm корректно выводить типы с учетом вызова A::validateParams?
Если так сделать нельзя, то можно ли в месте вызова $this->getParamByKey указать возвращаемый тип из getParamByKey? Чтобы это выглядело как-то так:
public function getParamX(): string
{
return $this->getParamByKey('X'); /** @psalm-return string */
}
public function getParamY(): int
{
return $this->getParamByKey('Y'); /** @psalm-return int */
}
Тут конечно можно создать переменную, присвоить ей возвращаемое значение, а потом задать ей аннотацию / @var string $tmp /, только мне этот вариант не нравится, так как выглядит не очень красиво.
PHP задачи с собеседований⚡️Скорость разработки ПО падает по мере роста размера проекта. Инструменты разработки не могут изменить тенденции, а лишь замедлить и отсрочить неизбежное. SOLID является одной из практик, которая гарантирует неизменность скорости разработки.
Узнайте больше про SOLID-принципы на бесплатном вебинаре онлайн-курса «Архитектура и шаблоны проектирования» в Отус — «SOLID как условие постоянной скорости разработки»: регистрация
На бесплатном занятии мы:
— разберем, почему SOLID принципы являются достаточным условием сохранения скорости разработки;
— рассмотрим простой и понятный механизм их применения для получения повторно используемого кода.
🔥Экспертизой поделится Евгений Тюменцев — опытный директор компании по разработке программного обеспечения.
Нативная интеграция. Информация о продукте www.otus.ru
💣 Взрывной тест на знание основ алгоритмов!
➡️Пройдите тест из 20 вопросов и получите welcome-скидку на онлайн-курс «Алгоритмы и структуры данных» от OTUS.
❗️ Тест подходит для любого языка программирования.
💻 Пройдя обучение на курсы, вы — получите опыт реализации классических алгоритмов, сможете повысить производительность программ и улучшить качество кода.. Возможна рассрочка.
🔥 Если вы пройдете тест успешно, вам откроется доступ к 2 урокам:
✔️ «Создание ассоциативного массива»
✔️ «Создание ассоциативного массива на базе хэш-таблицы и префиксного дерева»
➡️ Пройти тест: https://otus.pw/cWA1/
Нативная интеграция. Информация о продукте www.otus.ruВам нравится читать контент на этом канале?
Возможно, вы задумывались о том, чтобы купить на нем интеграцию?
Следуйте 3 простым шагам, чтобы сделать это:
1) Регистрируйтесь по ссылке: https://telega.in/c/phpquiz
2) Пополняйтесь удобным способом
3) Размещайте публикацию
Если тематика вашего поста подойдет нашему каналу, мы с удовольствием опубликуем его.
🔥 Внимание, разработчики PHP! 🔥
Если вы хотите взять новую высоту в программировании и создавать крутые веб-приложения, то вам точно нужно посмотреть в сторону Symfony! 🚀
Symfony входит в топ востребованных фреймворков и считается основным для решения задач уровня enterprise.
💥 Мы насчитали 500+ вакансий🔥🔥 для разработчиков PHP, которые требуют знания Symfony.
💥 80% из этих вакансий предлагают позиции middle+.
Компания Otus открыла набор на онлайн-курс по Symfony для PHP-разработчиков, которые стремятся поднять свой уровень до middle+ и senior+.👨💻👩💻
После курса вы:
✅ Освоите встроенные инструменты фрэймворка.
✅ Разберетесь в архитектуре и методологии разработки.
✅ Научитесь создавать приложения на реальных кейсах.
❕А еще тестировать и мониторить полученный код и разворачивать приложения в различных окружениях.
✅ Сможете обеспечивать безопасность ваших приложений.
🚀 Старт 25.08.23
👉 Ссылка на курс: https://otus.pw/EBLZ/
Нативная интеграция. Информация о продукте www.otus.ru
👨🏻💻 Получаю такую ошибку.
Пробовал - Curl error 60, SSL certificate issue: self signed certificate in certificate chain ,не помогло.
Может кто сталкивался ? Сижу час - ломаю голову. Поменял сертификат, запускаю без apache,через php artisan serv.
PHP задачи с собеседований
👨🏻💻Изминения значение параметра в url по нажатию на ссылку
У меня есть такая таблица:
echo "<table border='1'>";
echo "<tr>
<th><a href='?sort=1&direction=1'>Название продукта</a></th>
<th><a href='?sort=2&direction=1'>Цена в грн</a></th>
<th><a href='?sort=3&direction=1'>Количество (кг/шт)</a></th>
<th><a href='?sort=4&direction=1'>Стоимость в грн</a></th>
<th>Действие</th>
</tr>";
Мне нужно по нажатию на ссылку, что бы менялся параметр direction на 0 или 1. Считать значение direction я могу, но как правильно изменить и записать его новое значение - в этом проблема.
PHP задачи с собеседований
Available now! Telegram Research 2025 — the year's key insights 
