PHP задачи с собеседований
رفتن به کانال در Telegram
Задачи, тесты и теоретические вопросы по PHP. Прислать задачу/вопрос в дар: @cyberJohnny Сотрудничество: @cyberJohnny
نمایش بیشتر2 907
مشترکین
+124 ساعت
اطلاعاتی وجود ندارد7 روز
-630 روز
آرشیو پست ها
💡Какие паттерны нужно знать разработчикам?
Один из них — паттерн "Цепочка обязанностей". Именно его мы разберем на открытом уроке в Otus.
На уроке рассмотрим:
— как использовать шаблон для решения различных задач
— покажем, как создать классы обработчиков и связать их в цепочку, чтобы сообщение было обработано последовательно каждым обработчиком
— рассмотрим возможности настройки приоритета и условий обработки определенных сообщений
Встречаемся 03 июня в 20:00 мск в преддверии старта курса «Архитектура и шаблоны проектирования». Все участники вебинара получат специальную цену на обучение и консультацию от менеджеров OTUS!
Регистрируйтесь прямо сейчас, чтобы посетить бесплатный урок: https://clck.ru/3AwSnT
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
❓Вопрос от пользователя
Сумма из чисел массива, наиболее близкая к определенному числу с минимальным остатком
Подскажите правильный алгоритм, или решение на php.
Есть число
x = 112;
и массив
[20,30,38]
И число, и массив могут меняться.
Мне нужно получить число, максимально близкое к числу X, из суммы элементов массива, при условии, что числа из массива могут повторяться.
То есть из примера, который мне нужен
20+20+20+20+30 = 110 ( остаток 2)
или
30+30+30+20 = 110 ( остаток 2)
PHP задачи с собеседований
🐘 Тест по навыкам junior и middle PHP-программиста 🐘
Ответьте на 40 вопросов и проверьте, как вы умеете оценивать алгоритмическую сложность кода, работать с ним с точки зрения анализа и на сколько готовы к обучению на курсе — «PHP Developer. Professional».
За 5 месяцев курса вы:
- Досконально изучите инфраструктуру (Docker, виртуальные машины, обеспечение безопасности приложения, Composer и другое)
- Разовьёте и прокачаете взаимодействие PHP с различными типами хранилищ (PostgreSQL, MySQL, NoSQL)
- Освоите не только unit-тестирование, но и покрытие тестами всех слоёв приложения
Время прохождения теста ограниченно 30 минут
👉 ПРОЙТИ ТЕСТ - https://clck.ru/3AkF6o
💣 Пройдите тест, получите скидку на курс, и записи уроков от преподавателей курса в подарок.
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
[8] => Array
(
[warehouse_name] => СПБ_ШУШАРЫ_РФЦ
[promised_amount] => 0
[free_to_sell_amount] => 24
[reserved_amount] => 0
)
[9] => Array
(
[warehouse_name] => Ростов_на_Дону_РФЦ
[promised_amount] => 0
[free_to_sell_amount] => 0
[reserved_amount] => 0
)
[10] => Array
(
[warehouse_name] => НОВОРОССИЙСК_МРФЦ
[promised_amount] => 0
[free_to_sell_amount] => 0
[reserved_amount] => 0
)
[11] => Array
(
[warehouse_name] => ЖУКОВСКИЙ_РФЦ
[promised_amount] => 0
[free_to_sell_amount] => 0
[reserved_amount] => 0
)
[12] => Array
(
[warehouse_name] => ПУШКИНО_2_РФЦ
[promised_amount] => 0
[free_to_sell_amount] => 0
[reserved_amount] => 0
)
[13] => Array
(
[warehouse_name] => АДЫГЕЙСК_РФЦ
[promised_amount] => 0
[free_to_sell_amount] => 0
[reserved_amount] => 0
)
[14] => Array
(
[warehouse_name] => НОГИНСК_РФЦ
[promised_amount] => 0
[free_to_sell_amount] => 0
[reserved_amount] => 0
)
[15] => Array
(
[warehouse_name] => ВОРОНЕЖ_2_РФЦ
[promised_amount] => 0
[free_to_sell_amount] => 0
[reserved_amount] => 0
)
[16] => Array
(
[warehouse_name] => ГРИВНО_РФЦ
[promised_amount] => 0
[free_to_sell_amount] => 0
[reserved_amount] => 0
)
[17] => Array
(
[warehouse_name] => ТВЕРЬ_РФЦ
[promised_amount] => 0
[free_to_sell_amount] => 0
[reserved_amount] => 0
)
)
)
Делаю так, но нечего не выходит
$general_array = array_merge($array1, $array2);
[14] => Array
(
[warehouse_name] => НОГИНСК_РФЦ
[promised_amount] =>
[free_to_sell_amount] =>
[reserved_amount] =>
)
[15] => Array
(
[warehouse_name] => ВОРОНЕЖ_2_РФЦ
[promised_amount] =>
[free_to_sell_amount] =>
[reserved_amount] =>
)
[16] => Array
(
[warehouse_name] => ГРИВНО_РФЦ
[promised_amount] =>
[free_to_sell_amount] =>
[reserved_amount] =>
)
[17] => Array
(
[warehouse_name] => ТВЕРЬ_РФЦ
[promised_amount] =>
[free_to_sell_amount] =>
[reserved_amount] =>
)
)
)
Хочу получить такой массив
Array
(
[sku] => 1312583660
[item_code] => 774420-10
[item_name] => 774420 Legrand Valena / Розетка белая 2К+З (10шт) ОригиналРитейлГрупп
[stock] => Array
(
[0] => Array
(
[warehouse_name] => ХОРУГВИНО_РФЦ
[promised_amount] => 0
[free_to_sell_amount] => 1
[reserved_amount] => 1
)
[1] => Array
(
[warehouse_name] => Санкт_Петербург_РФЦ
[promised_amount] => 0
[free_to_sell_amount] => 0
[reserved_amount] => 0
)
[2] => Array
(
[warehouse_name] => САМАРА_РФЦ
[promised_amount] => 0
[free_to_sell_amount] => 18
[reserved_amount] => 0
)
[3] => Array
(
[warehouse_name] => ПЕТРОВСКОЕ_РФЦ
[promised_amount] => 0
[free_to_sell_amount] => 0
[reserved_amount] => 0
)
[4] => Array
(
[warehouse_name] => СОФЬИНО_РФЦ
[promised_amount] => 0
[free_to_sell_amount] => 24
[reserved_amount] => 0
)
[5] => Array
(
[warehouse_name] => ПУШКИНО_1_РФЦ
[promised_amount] => 0
[free_to_sell_amount] => 0
[reserved_amount] => 0
)
[6] => Array
(
[warehouse_name] => Новосибирск_РФЦ_НОВЫЙ
[promised_amount] => 0
[free_to_sell_amount] => 7
[reserved_amount] => 0
)
[7] => Array
(
[warehouse_name] => Екатеринбург_РФЦ_НОВЫЙ
[promised_amount] => 0
[free_to_sell_amount] => 11
[reserved_amount] => 0
)Array
(
[sku] => 1312583660
[item_code] => 774420-10
[item_name] => 774420 Legrand Valena / Розетка белая 2К+З (10шт) ОригиналРитейлГрупп
[stock] => Array
(
[0] => Array
(
[warehouse_name] => ХОРУГВИНО_РФЦ
[promised_amount] =>
[free_to_sell_amount] =>
[reserved_amount] =>
)
[1] => Array
(
[warehouse_name] => Санкт_Петербург_РФЦ
[promised_amount] =>
[free_to_sell_amount] =>
[reserved_amount] =>
)
[2] => Array
(
[warehouse_name] => САМАРА_РФЦ
[promised_amount] =>
[free_to_sell_amount] =>
[reserved_amount] =>
)
[3] => Array
(
[warehouse_name] => ПЕТРОВСКОЕ_РФЦ
[promised_amount] =>
[free_to_sell_amount] =>
[reserved_amount] =>
)
[4] => Array
(
[warehouse_name] => СОФЬИНО_РФЦ
[promised_amount] =>
[free_to_sell_amount] =>
[reserved_amount] =>
)
[5] => Array
(
[warehouse_name] => ПУШКИНО_1_РФЦ
[promised_amount] =>
[free_to_sell_amount] =>
[reserved_amount] =>
)
[6] => Array
(
[warehouse_name] => Новосибирск_РФЦ_НОВЫЙ
[promised_amount] =>
[free_to_sell_amount] =>
[reserved_amount] =>
)
[7] => Array
(
[warehouse_name] => Екатеринбург_РФЦ_НОВЫЙ
[promised_amount] =>
[free_to_sell_amount] =>
[reserved_amount] =>
)
[8] => Array
(
[warehouse_name] => СПБ_ШУШАРЫ_РФЦ
[promised_amount] =>
[free_to_sell_amount] =>
[reserved_amount] =>
)
[9] => Array
(
[warehouse_name] => Ростов_на_Дону_РФЦ
[promised_amount] =>
[free_to_sell_amount] =>
[reserved_amount] =>
)
[10] => Array
(
[warehouse_name] => НОВОРОССИЙСК_МРФЦ
[promised_amount] =>
[free_to_sell_amount] =>
[reserved_amount] =>
)
[11] => Array
(
[warehouse_name] => ЖУКОВСКИЙ_РФЦ
[promised_amount] =>
[free_to_sell_amount] =>
[reserved_amount] =>
)
[12] => Array
(
[warehouse_name] => ПУШКИНО_2_РФЦ
[promised_amount] =>
[free_to_sell_amount] =>
[reserved_amount] =>
)
[13] => Array
(
[warehouse_name] => АДЫГЕЙСК_РФЦ
[promised_amount] =>
[free_to_sell_amount] =>
[reserved_amount] =>
)❓Вопрос от пользователя
Слияние одинаковых массивов PHP с заполнением значений если не пустое
Всем доброго времени суток! Имею два массива. Первый со значениями по некоторым складам [free_to_sell_amount], а второй со всеми складами но пустыми значениями [free_to_sell_amount]. Пытаюсь объединить их, чтобы в результате получить массив по всем складам и заполненными значениями из второго массива, там где есть.
Первый массив со складами где есть остатки (free_to_sell_amount)
Array
(
[sku] => 1312583660
[item_code] => 774420-10
[item_name] => 774420 Legrand Valena / Розетка белая 2К+З (10шт) ОригиналРитейлГрупп
[stock] => Array
(
[0] => Array
(
[warehouse_name] => ХОРУГВИНО_РФЦ
[promised_amount] => 0
[free_to_sell_amount] => 1
[reserved_amount] => 1
)
[1] => Array
(
[warehouse_name] => Новосибирск_РФЦ_НОВЫЙ
[promised_amount] => 0
[free_to_sell_amount] => 7
[reserved_amount] => 0
)
[2] => Array
(
[warehouse_name] => Екатеринбург_РФЦ_НОВЫЙ
[promised_amount] => 0
[free_to_sell_amount] => 11
[reserved_amount] => 0
)
[3] => Array
(
[warehouse_name] => САМАРА_РФЦ
[promised_amount] => 0
[free_to_sell_amount] => 18
[reserved_amount] => 0
)
[4] => Array
(
[warehouse_name] => СОФЬИНО_РФЦ
[promised_amount] => 0
[free_to_sell_amount] => 24
[reserved_amount] => 0
)
[5] => Array
(
[warehouse_name] => СПБ_ШУШАРЫ_РФЦ
[promised_amount] => 0
[free_to_sell_amount] => 24
[reserved_amount] => 0
)
)
)
Второй массив (со всеми складами, но пустыми значениями free_to_sell_amount)❓Вопрос от пользователя
Как устранить ошибку Fatal error: Unknown: Failed opening required?
0
Загрузил на сервер магазин на ocStore , но выдает такую ошибку:
Warning: Unknown: failed to open stream: No such file or directory in Unknown on line 0 Fatal error: Unknown: Failed opening required '/home/sldybopt/public_html/index.php' (include_path='.:/opt/alt/php73/usr/share/pear') in Unknown on line 0Как решить данную проблему?? PHP задачи с собеседований
/* Стили для предотвращения растягивания изображения */
.card-img-top {
object-fit: cover;
width: 100%;
height: auto;
}
/* Modal styles */
.modal {
display: none;
position: fixed;
z-index: 1000;
padding-top: 60px;
left: 0;
top: 0;
width: 100%;
height: 100%;
overflow: auto;
background-color: rgba(0, 0, 0, 0.8);
}
.modal-content {
margin: auto;
display: block;
max-width: 90%;
max-height: 90%;
width: auto;
height: auto;
}
.close {
position: absolute;
top: 15px;
right: 35px;
color: #fff;
font-size: 40px;
font-weight: bold;
transition: 0.3s;
}
.close:hover,
.close:focus {
color: #bbb;
text-decoration: none;
cursor: pointer;
}
</style>
<?php require("includes/footer.php"); ?>
<div class="container border">
<h3>Ваши фото:</h3>
<form action="api/upload_photo.php" method="post" enctype="multipart/form-data">
<input type="file" name="photo" id="photoInput" class="form-control mb-3" onchange="toggleUploadButton()">
<button type="submit" id="uploadButton" class="btn btn-primary" disabled>Загрузить фото</button>
</form>
<div id="photoGallery" class="row row-cols-1 row-cols-md-2 g-4 mt-3 mb-3">
<?php foreach ($photos as $photo) { ?>
<div class="col draggable" data-id="<?=$photo['id']?>">
<div class="card">
<div class="card-body p-0 position-relative">
<img src="uploads/<?=$photo['file_name']?>" class="card-img-top img-fluid" alt="Фото <?=$photo['id']?>" onclick="openModal(this.src)">
<div class="photo-actions position-absolute w-100 d-flex justify-content-center">
<div class="opacity-75 p-2 rounded">
<a href="uploads/<?=$photo['file_name']?>" download class="btn btn-secondary">Скачать</a>
<button class="btn btn-primary print-request" data-id="<?=$photo['id']?>">Запрос на печать</button>
<button class="btn btn-danger delete-photo" data-id="<?=$photo['id']?>">Удалить</button>
</div>
</div>
</div>
</div>
</div>
<?php } ?>
</div>
</div>
</div>
<!-- Modal for full-size image -->
<div id="imageModal" class="modal" tabindex="-1">
<span class="close" onclick="closeModal()">×</span>
<img class="modal-content" id="modalImage">
</div>
<script>
function toggleUploadButton() {
const photoInput = document.getElementById('photoInput');
const uploadButton = document.getElementById('uploadButton');
uploadButton.disabled = !photoInput.files.length;
}
document.addEventListener('DOMContentLoaded', function() {
const deleteButtons = document.querySelectorAll('.delete-photo');
deleteButtons.forEach(button => {
button.addEventListener('click', function() {
const photoId = this.getAttribute('data-id');
if (confirm('Вы уверены, что хотите удалить это фото?')) {
fetch('api/delete_photo.php', {
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
body: new URLSearchParams({
'photo_id': photoId
})
})
.then(response => response.json())
.then(data => {
if (data.success) {
this.closest('.col').remove();
} else {
alert('Ошибка при удалении фото: ' + data.message);
}
})
.catch(error => {
console.error('Ошибка:', error);
alert('Произошла ошибка при удалении фото');
});
}
});
});
});
function openModal(src) {
const modal = document.getElementById("imageModal");
const modalImg = document.getElementById("modalImage");
modal.style.display = "block";
modalImg.src = src;
}
function closeModal() {
const modal = document.getElementById("imageModal");
modal.style.display = "none";
}
</script>
<style>
.card-body {
position: relative;
overflow: hidden;
}
.card-body .photo-actions {
display: flex;
align-items: center;
justify-content: center;
bottom: -100%;
left: 0;
right: 0;
background: linear-gradient(rgba(0, 0, 0, 0), rgba(255, 255, 255, 0.45));
transition: bottom 0.3s ease;
padding: 10px;
}
.card:hover .photo-actions {
bottom: 0;
}❓Вопрос от пользователя
Структура построения отображения картинок
Имеется код страницы
В нем в процессе загрузки создаются блоки с картинками, мне надо что-бы они были условно построечно, но не создавали пропусков, ни где не смог найти ответов, в том числе у ии, просьба помочь с реализацией задуманного.
Первый блок кода - код блока с картинкой
Второй блок кода - вся страница
1 картинка показывает что по факту имеется
2 картинка показывает что должно получится (сделал в photoshop)
<?php foreach ($photos as $photo) { ?>
<div class="col draggable" data-id="<?=$photo['id']?>">
<div class="card">
<div class="card-body p-0 position-relative">
<img src="uploads/<?=$photo['file_name']?>" class="card-img-top img-fluid" alt="Фото <?=$photo['id']?>" onclick="openModal(this.src)">
<div class="photo-actions position-absolute w-100 d-flex justify-content-center">
<div class="opacity-75 p-2 rounded">
<a href="uploads/<?=$photo['file_name']?>" download class="btn btn-secondary">Скачать</a>
<button class="btn btn-primary print-request" data-id="<?=$photo['id']?>">Запрос на печать</button>
<button class="btn btn-danger delete-photo" data-id="<?=$photo['id']?>">Удалить</button>
</div>
</div>
</div>
</div>
</div>
<?php } ?>
Развернуть фрагмент
<?php
require("includes/header.php");
require("../src/db.php");
$stmt = $conn->prepare("SELECT * FROM bids WHERE user_id=?");
$stmt->execute([$_SESSION['user_id']]);
$bids = $stmt->fetchAll();
$photosStmt = $conn->prepare("SELECT * FROM photos WHERE user_id=?");
$photosStmt->execute([$_SESSION['user_id']]);
$photos = $photosStmt->fetchAll();
?>
<div class="container-fluid w-75 mb-3 mx-auto">
<h2 class="text-center p-3">Личный кабинет</h2>
<div class="container border mb-5">
<a href="bid_form.php" class="btn btn-success mb-2 mt-3">Новая заявка</a>
<h3>Ваши заявки:</h3>
<button class="btn btn-primary mb-3 mt-2" type="button" data-bs-toggle="collapse" data-bs-target="#bidsTable" aria-expanded="false" aria-controls="bidsTable">
Показать/Скрыть заявки
</button>
<div class="collapse" id="bidsTable">
<div class="row row-cols-1 row-cols-md-2 g-4">
<?php foreach ($bids as $bid) { ?>
<div class="col">
<div class="card">
<div class="card-body">
<h5 class="card-title">Заявка № <?=$bid["id"]?></h5>
<h5 class="card-title"><?=$bid["title"]?></h5>
<p class="card-text"><?=$bid["description"]?></p>
<p class="card-text"><?=$bid["status"]?></p>
</div>
</div>
</div>
<?php } ?>
</div>
</div>
</div>❓Что нового в PHP 8.3?
PHP 8.3 вышел и уже вовсю используется, а вы еще не протестили нововведения? Тогда ждем вас на открытом практическом уроке от OTUS, где мы посмотрим, что принесла нам новая минорная версия и как это можно использовать. Также вы получите ответы на все возникающие вопросы!
Спикер Александр Пряхин — технический директор юнита в Авито, опытный разработчик и преподаватель.
Встречаемся 20 мая в 20:00 мск в рамках курса «PHP Developer. Professional». Все участники вебинара получат специальную цену на обучение и персональную консультацию от менеджеров OTUS!
👉 Пройдите короткий тест прямо сейчас, чтобы посетить бесплатный урок: https://clck.ru/3AhJgK
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
❓Как разобраться в сложных логических операциях в PHP?
Многие разработчики считают, что логические операции — это настолько примитивные вещи, что в них можно полностью разобраться за 5 минут. Так ли это на самом деле? Узнайте на открытом практическом уроке от OTUS, где мы обсудим:
1. какое отношение к программированию имеют классические задачи про рыцарей и лжецов;
2. за счёт каких полезных приёмов можно упростить свой код;
3. как с помощью новых знаний «щёлкать» алгоритмические задачи на PHP.
Спикер Дмитрий Кириллов — соучредитель и технический директор 1С-Старт, опытный разработчик.
Встречаемся 14 мая в 20:00 мск в рамках курса «PHP Developer. Professional». Все участники вебинара получат специальную цену на обучение и персональную консультацию от менеджеров OTUS!
👉 Пройдите короткий тест прямо сейчас, чтобы посетить бесплатный урок: https://clck.ru/3AbSfj
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Оплачиваемая стажировка и трудоустройство без опыта — ну ничего себе 😳
Все возможно с Добровольным квалификационным экзаменом! Это бесплатный проект Правительства Москвы, где ты можешь показать свои знания по специальности, запомниться потенциальным работодателям и получить оффер в престижные компании Москвы.
Тебя ждет всего три шага:
1️⃣ Пройди тест
После регистрации на сайте ДКЭ тебе будет доступно 70 профессий по 7 направлениям. Выбирай тест по своей специальности и проверь уровень своих знаний!
2️⃣ Реши кейс
Если ты успешно сдал тест, тебя пригласят на следующий этап, где ты с другими участниками в команде будешь решать реальный кейс одного из работодателей.
3️⃣ Стань победителем
Окажись в числе лучших по общему количеству баллов за оба этапа и получи шанс попасть на оплачиваемую стажировку с дальнейшим трудоустройством.
Готов проявить себя? Регистрируйся и начинай проходить тест — https://dke.moscow
Реклама. АНО "РАЗВИТИЕ ЧЕЛОВЕЧЕСКОГО КАПИТАЛА", АНО "РЧК". ИНН 7710364647. erid: LjN8KQrJo
❓Вопрос от пользователя
Psalm Cannot find referenced variable $articles in global scope в шаблоне подключенном через include
Работаю над добавлением Psalm в проект. В нем есть метод-функция для подключения php файла-шаблона:
public function include(string $template, array $args = array(), bool $echo = true)
{
include $this->templates_path . $template;
}
С ее помощью подключается шаблон arcticles.php:
<?php
declare(strict_types=1);
/**
* @var Article[] $articles
*/
foreach ($articles as $article) :
//...
endforeach;
Статический анализ в PHP Storm правильно связывает с $articles с типом Article, но psalm выдает ошибку Cannot find referenced variable $articles in global scope
Как можно доработать psalm, чтобы он воспринимал переменную с @var как переменную переданную в шаблон?
PHP задачи с собеседований⁉️Готовы ли вы изучить Golang на профессиональном уровне и стать востребованным разработчиком?
Пройдите короткий тест и узнайте!
💥В случае успешного прохождения вас ждут подарки — доступ к открытым урокам для знакомства с форматом обучения и специальная цена на курс.
Всего за 5 месяцев вы освоите актуальный язык программирования от основ и внутреннего устройства до создания микросервисов и взаимодействия с другими системами!
👉Проверьте, готовы ли вы к расширению карьерных возможностей: ПРОЙТИ ТЕСТ
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
❓Вопрос от пользователя
Как с помощью php обратиться к папке под определенным пользователем?
Есть сетевая папка, для папки создана роль с доступом для чтения и записи. Как через код обратиться к этой папке под определенной ролью? Операционная система - Windows
PHP задачи с собеседований
اکنون در دسترس! پژوهش تلگرام ۲۰۲۵ — مهمترین بینشهای سال 
