PHP задачи с собеседований
رفتن به کانال در Telegram
Задачи, тесты и теоретические вопросы по PHP. Прислать задачу/вопрос в дар: @cyberJohnny Сотрудничество: @cyberJohnny
نمایش بیشتر2 906
مشترکین
-124 ساعت
اطلاعاتی وجود ندارد7 روز
-930 روز
آرشیو پست ها
⁉️ Как PHP-разработчику повысить свою ценность на рынке?
🦾 Пополнить список своих инструментов новыми фреймворками.
Сделайте это за пару часов на бесплатном открытом уроке «Как устроены современные PHP-фреймворки» от OTUS.
- изучим DI, IoC и другие важные термины;
- заглянем «под капот» одного из популярных фреймворков;
- сравним между собой Laravel, Symfony и Yii;- посмотрим на аналогичные решения в других языках программирования.
📌 Занятие пройдёт 18 октября в 20:00 мск и будет приурочено к старту курса «PHP Developer. Professional». После вебинара у вас будет возможность продолжить обучение на курсе по специальной цене в рассрочку.
👉 Зарегистрируйтесь на событие прямо сейчас, чтобы ничего не пропустить, а мы заранее напомним в день вебинара.
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963. erid: LjN8Ju35V
Как давно вы были на вписках? Впрочем, неважно. Предлагаем вписаться в авантюрную IT-вечеринку от МТС и не думать о работе.
Что будет:
• финал олимпиады True Tech Champ
• выступления и воркшопы от топовых спикеров
• кодинг на скорость и игровые зоны
• тату-студия для самых смелых
• лаунджи, чтобы было где пообщаться
• и afterparty со звездным лайнапом
Когда и где: 24 октября (вторник), МТС live холл в Москве
Зовем всех причастных к IT-комьюнити на наш фест. Регистрация открыта по ссылке, количество мест ограничено. И кстати, это все абсолютно бесплатно
Реклама. ПАО "МТС". ИНН 7740000076. erid: LjN8K34af
⁉️ Как PHP-разработчику повысить свою ценность на рынке?
🦾 Пополнить список своих инструментов новыми фреймворками. Сделайте это за пару часов на бесплатном открытом уроке «Как устроены современные PHP-фреймворки» от OTUS.
- изучим DI, IoC и другие важные термины;
- заглянем «под капот» одного из популярных фреймворков;
- сравним между собой Laravel, Symfony и Yii;
- посмотрим на аналогичные решения в других языках программирования.
📌 Занятие пройдёт 18 октября в 20:00 мск и будет приурочено к старту курса «PHP Developer. Professional». После вебинара у вас будет возможность продолжить обучение на курсе по специальной цене в рассрочку.
Это отличная возможность совершенно бесплатно протестировать формат обучения и задать преподавателю любые вопросы в режиме реального времени!
👉 Зарегистрируйтесь на событие прямо сейчас, чтобы ничего не пропустить, а мы заранее напомним в день вебинара.
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
"realease_time" => array("realease", "time"),
"seizure_time" => array("seizure", "time"),
"event_type" => array("Event", "type"),
"base_station_type" => array("base", "station", "type"),
);
$firstRow = $worksheet->getRowIterator()->current();
$cellIterator = $firstRow->getCellIterator();
$column_index = array();
foreach ($cellIterator as $cell) {
$cellValue = $cell->getValue();
foreach ($keywords as $keyword => $columnKeywords) {
if (in_array(strtolower($cellValue), array_map('strtolower', $columnKeywords))) {
$column_index[$keyword] = $cell->getColumn();
}
}
}
$data_to_insert = array();
foreach ($column_index as $keyword => $columnLetter) {
$column_data = array();
foreach ($worksheet->getColumnIterator($columnLetter) as $column) {
foreach ($column->getCellIterator() as $cell) {
$cellValue = $cell->getValue();
$column_data[] = $cellValue;
}
}
$data_to_insert[$keyword] = $column_data;
}
echo 'Добавление в базу данных.</br>';
$total_rows = count($data_to_insert);
$current_row = 0;
// Подготовка SQL-запроса для вставки одной строки
$insertQuery = "INSERT INTO mobiles2 (
source_operator, start_time_stamp, subscriber_relation, msisdn, other_party, redirecting_number,
call_duration, call_status, cause, imsi, imei, imsi_called, imei_called, lac, cell_id,
base_station_location_address, azimuth, lon, lat, radius, region, record_type, record_id,
calling_party_number, called_party_number, supplementary_services, msisdn_calling_party,
msisdn_called_party, calling_party_category, operator_id, connected_number, msc_number,
date_and_time, call_direction, vlr_number, roaming_number, forwarding_reason, `ss-code`,
ussd, access_delivery, redirection_number, redirection_information, call_id_number, data_validity,
network_provider_id, progress, dpc, opc, location_number, `account_code_input`, tmsi_calling_party,
tmsi_called_party, hlr_number, location_info_calling_party, location_info_called_party,
ciphering_mode, answer_time, realease_time, seizure_time, event_type, base_station_type
) VALUES (
?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,
?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?
)";
$stmt = $db->prepare($insertQuery);
if (!$stmt) {
echo "Ошибка при подготовке SQL-запроса: " . $db->error;
exit;
}
foreach ($data_to_insert as $rowIndex => $sourceOperator) {
// Создаем массив с данными для вставки в базу данных для текущей строки
$rowData = array();
foreach ($column_index as $keyword => $columnLetter) {
$rowData[] = $data_to_insert[$keyword][$rowIndex];
}
// Привязываем параметры и выполняем запрос для текущей строки
$bindParams = str_repeat('s', 61); // Поскольку у вас 61 столбец
$stmt->bind_param($bindParams, ...$rowData);
$result = $stmt->execute();
if (!$result) {
echo "Ошибка при выполнении запроса для строки $rowIndex: " . $stmt->error;
} else {
echo "Данные для строки $rowIndex успешно обработаны и добавлены в базу данных.</br>";
}
}
$stmt->close();
} else {
echo "Ошибка при загрузке файла." . $_FILES['add_file']['error'];
exit;
}
} else {
echo "Недопустимый метод запроса.";
exit;
}
?>
PHP задачи с собеседований👨🏻💻 Не идет запись в базу данных
Такое ощущение, будто массивы не идут. Цикл не запускается, я добавляю как положено, Excel файл, но загрузка останавливается. Что нужно сделать?
<?php
include 'include/db.php';
include 'assets/vendor/autoload.php';
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
use PhpOffice\PhpSpreadsheet\IOFactory;
error_reporting(E_ALL);
ini_set('display_errors', 1);
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
if (isset($_FILES['add_file']) && $_FILES['add_file']['error'] === UPLOAD_ERR_OK) {
$file_path = $_FILES['add_file']['tmp_name'];
$spreadsheet = IOFactory::load($file_path);
$worksheet = $spreadsheet->getActiveSheet();
echo 'Обработка файла</br>';
$keywords = array(
"source_operator" => array("source", "operator"),
"start_time_stamp" => array("start", "time", "stamp"),
"subscriber_relation" => array("subscriber", "relation"),
"msisdn" => array("msisdn", "ISND"),
"other_party" => array("other", "party"),
"redirecting_number" => array("redirecting", "number"),
"call_duration" => array("call", "duration"),
"call_status" => array("call", "status"),
"cause" => array("cause"),
"imsi" => array("imsi"),
"imei" => array("imei"),
"imsi_called" => array("imsi", "called", "party"),
"imei_called" => array("imei", "called", "party"),
"lac" => array("LAC"),
"cell_id" => array("cell", "ID"),
"base_station_location_address" => array("base", "station", "location"),
"azimuth" => array("azimuth"),
"lon" => array("lon"),
"lat" => array("lat"),
"radius" => array("radius"),
"region" => array("region"),
"record_type" => array("record", "type"),
"record_id" => array("record", "ID", "номер"),
"calling_party_number" => array("calling", "party", "number"),
"called_party_number" => array("called", "party", "number"),
"supplementary_services" => array("supplementary", "services"),
"msisdn_calling_party" => array("msisdn", "calling", "party"),
"msisdn_called_party" => array("msisdn", "called", "party"),
"calling_party_category" => array("calling", "party", "category"),
"operator_id" => array("operator", "Identification"),
"connected_number" => array("connected", "number"),
"msc_number" => array("MSC", "number"),
"date_and_time" => array("Date", "time"),
"call_direction" => array("call", "direction"),
"vlr_number" => array("vlr", "number"),
"roaming_number" => array("roaming", "number"),
"forwarding_reason" => array("forwarding", "reason"),
"ss_code" => array("ss-code"),
"ussd" => array("ussd"),
"access_delivery" => array("access", "delivery"),
"redirection_number" => array("redirection", "number"),
"redirection_information" => array("redirection", "information"),
"call_id_number" => array("call", "Identification", "Number"),
"data_validity" => array("Data", "Validity"),
"network_provider_id" => array("network", "provider", "ID"),
"progress" => array("progress"),
"dpc" => array("dpc"),
"opc" => array("opc"),
"location_number" => array("location", "number"),
"account_code_imput" => array("account", "code", "input"),
"tmsi_calling_party" => array("TMSI", "calling", "party"),
"tmsi_called_party" => array("TMSI", "called", "party"),
"hlr_number" => array("HLR", "number"),
"location_info_calling_party" => array("location", "calling", "party"),
"location_info_called_party" => array("location", "called", "party"),
"ciphering_mode" => array("ciphering", "mode"),
"answer_time" => array("answer", "time"),🚀 Как решать проблемы масштабирования приложений?
⚡️ Обсудим на бесплатном открытом уроке «Проблема вертикального масштабирования и синхронизация», который пройдёт в рамках курса «Архитектура и шаблоны проектирования» от OTUS.
На эфире мы сосредоточимся на следующих аспектах:
- Предпосылки возникновения проблемы масштабирования
- Проблемы многопоточности, нежелательные состояния и синхронизация
- Обзор модели вычислений, обходящей ограничения «традиционной», и вариантов её реализации
- Обзор подходов к архитектуре приложений, преобладавших в разное время, их особенности, плюсы и недостатки
🔥 Это отличная возможность совершенно бесплатно протестировать формат обучения и задать преподавателю любые вопросы в режиме реального времени. После этого вы сможете приобрести полный курс в рассрочку на комфортных условиях.
Встречаемся 10 октября в 20:00 мск.
👉 Регистрируйтесь бесплатно прямо сейчас и ставьте событие в календарь
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru👨🏻💻 Многопоточный обход массива\строки средствами php
Допустим есть строка, которая состоит из символов в кол-ве от 400 до 800 тысяч штук и длина которой кратна четному числу. Мы ее превращаем в массив:
$string = str_split('1234567890.......');
и делим на, допустим, 8 кусков, создавая массив из 8 строк;
$combine = array_chunk($string,8);После чего с каждой переменной данного массива, посимвольно, работает некоторая функция и потом результат работы собирается обратно в обновленную строку $string. Вопрос - есть ли корректный способ сделать так, чтобы каждый экземпляр массива $combine обрабатывался функцией параллельно, а не ждал пока будет его очередь при линейном обходе средствами foreach? У меня сервер на windows, с апачем и php 7.4\8.2, php подгружается как модуль для Apache. Читал что при подобном варианте возможно только использовать proc_open для многопоточного серверного вычисления, но не совсем понимаю как это можно реализовать. Может есть какие-то рабочие примеры? Не очень хочется городить кривой велосипед из multicurl с обращениями самой страницы к себе и выдергиваниями фрагментов кода, т.к. это явно все будет работать через 3 палки и криво. Нужно что-то кроме shell_exec, т.к. при работе с ним возможны ошибки, если страница закрывается раньше чем завершается работа консольного cli интерфейса. На данный момент обход всей строки обычным способом занимает около 37 секунд, что крайне много и есть сильное желание сократить как-то это значение. UPD Основное время затрачивается именно на линейный обход строки в массиве и преобразование данных в ней же. Поэтому рассматривается вариант параллельной обработки нескольких переменных массива одновременно. PHP задачи с собеседований
😎 Пройди тест по PHP и проверь свои знания.
Ответишь — пройдешь на продвинутый курс "PHP Developer. Professional" от OTUS по специальной цене + получишь запись мастер-класса от преподавателя курса🎁 .
🎫 Курс можно приобрести в рассрочку
👉 ПРОЙТИ ТЕСТ
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ruПрофессия PHP-разработчик: экспресс-старт в создании веб-приложений.
Погрузитесь в рабочие будни PHP-разработчика и создайте форму регистрации под руководством технического директора
⏰ Когда: 9 октября в 19:00 (мск).
За 2 часа бесплатного практического вебинара:
✔️Расскажем про клиент-серверную архитектуру, фронтенд и бэкенд.
✔️Поговорим про особенности, сильные и слабые стороны языка.
✔️Покажем примеры вакансий, подсветим компетенции, которые потребуются для старта в разработке.
✔️Попрактикуемся на реальных задачах.
🎁 Всем, кто зарегистрировался - Гайд «Как заговорить на сленге IT-специалистов», а каждому участнику - Карта компетенций PHP-разработчика.
Реклама. ООО "ХЕКСЛЕТ РУС". ИНН 7325174845. erid: LjN8K1HTx
⚓️ Podlodka PHP Crew — тематическая языковая онлайн-конференция.
В этот раз поговорим о том, что тесты — это не больно! Они помогают создавать более надёжные и защищённые решения, позволяют улучшить кодовую базу и сократить время выполнения задач. А ещё знание и умение применять тесты повышает востребованность разработчика на рынке труда.
Поэтому тема ближайшей Podlodka PHP Crew — «Пишем тесты». Сезон посвящен практическим аспектам и наполнен полезными воркшопами. Сведём баги в проде и возвраты от QA — к минимуму.
Стартуем уже 16 октября. Вместе с экспертами из Vi.Tech, Skyeng, SpaceWeb и других компаний:
👉 Разберём на примере Codeception как работают фреймворки для написания тестов;
👉 Научимся убедительно продавать автотестирование бизнесу;
👉 Рассмотрим сложные и необычные кейсы в тестировании и пути их решения;
👉 Попрактикуемся в генерации автотестов и научимся ускорять этот процесс.
🤑 Для ранних пташек — низкие цены! Посмотреть программу и купить билет со скидкой до 10 октября можно на сайте: https://podlodka.io/phpcrew
Реклама. ИП Толстая Елена Петровна ИНН:507503278104 erid:Kra23uARJ
👨🏻💻Вопрос от пользователя
Liqpay не отправляет callback после успешной оплаты
Подключаю платёжную систему liqpay к сайту, используя их платёжную страницу (checout), перенаправляю на неё пользователя с данными об оплате. Но после совершения оплаты мне нужно как-то получить callback от сервера liqpay что-бы я понимал что пользователь совершил оплату. На сколько я понял из их документации для этого в массив с данными об оплате нужно добавить server_url в котором укажу куда liqpay должен отправить запрос с данными об оплате после оплаты, но этого не происходит совсем.
Он отправит эти данные только если я добавлю в массив result_url с url ссылки куда пользователь сможет перейти после оплаты что-бы вернуться обратно на сайт, и если он таки перейдёт по этой ссылке то туда вместе с переходом liqpay таки отправит запрос с данными, но пользователю ведь совсем не обязательно переходить на сайт по этой ссылке, а если он этого не сделает то я не получу информацию что он совершил оплату а значит не смогу увеличить ему баланс.
Может кто-то уже работал с liqpay и знает в чём дело? Почему он не отправляет callback после успешной оплаты?
PHP задачи с собеседований
👨🏻💻Вопрос от пользователя
Не могу поднять локально страницу на Laravel
При запуске страницы вижу ошибку (на картинке)
Я сам фронт, вообще не понимаю как это решить Как это исправить? Запускаю через live server.
PHP задачи с собеседований
⁉️ Как сделать код удобнее для чтения?
‼️ Использовать шаблонизаторы!
➡️ Какими шаблонизаторы бывают, как работают и как настраиваются, – поговорим на открытом вебинаре «Шаблонизаторы в PHP» курса «PHP Developer. Professional». В качестве примера возьмём шаблонизатор Twig.
🟠Будет интересно PHP-разработчикам с опытом от года, а также тем, кто больше трёх лет использует другие языки ООП.
Понравился вебинар? Записывайтесь на курс «PHP Developer. Professional» – прокачивайте навыки до уровня middle+
📢📢 Занятие «Шаблонизаторы в PHP» пройдёт 5 октября, в 20:00 МСК.
Бесплатно.
🟠Для регистрации на вебинар необходимо пройти тест.
➡️ Зарегистрироваться!
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru👨🏻💻 Вебхук Битрикс24 долго отвечает
Проблема: с сайта отправляется заявка в чат телеграм (через телеграм бот) и сразу в СРМ. Сервер ждёт ответа, телеграм отправляет заявку почти мгновенно, а от СРМ Битрикс24 бывает по 4 минуты нужно ждать ответа. И получается на сайте идёт загрузка несколько минут. Иногда Битрикс отвечает быстро, и загрузка только секунды 2, но не всегда.
Что с этим делать? Есть вариант ответить стороне клиента "OK", даже если СРМ ещё не ответила, надеясь, что лид успешно прийдёт. Но мне этот вариант не нравится, потому что есть вероятность что лид прийдёт только в телеграм, а в СРМ нет. И клиент будет потерян.
То есть проблема в скорости ответа СРМ.
Хостинг Fornex, локация Украина.
Ниже код, как я отправляю данные (типа REST API если я правильно понял). Метод вебхука crm.lead.add
// отправляем запрос в Б24 и обрабатываем ответ
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_SSL_VERIFYPEER => 0,
CURLOPT_POST => 1,
CURLOPT_HEADER => 0,
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_URL => $queryURL,
CURLOPT_POSTFIELDS => $queryData,
));
$result = curl_exec($curl);
curl_close($curl);
$result = json_decode($result,1);
// если произошла какая-то ошибка - выведем её
if(array_key_exists('error', $result)){
die("Ошибка при сохранении лида: ".$result['error_description']);
//echo 'false';
}else{
echo 'true';
}
PHP задачи с собеседований🧚♀️Задумывались ли вы, как может выглядеть идеальная библиотека для работы с данными?
Наверняка с помощью такой библиотеки можно очень гибко настраивать валидацию данных, трансформировать данные в разные формы, описывать предметную область, находить закономерности в массивах данных, генерировать тестовые данные по образцу, разбирать не структурированные данные на составные части и даже исправлять грамматические ошибки.
Вдобавок, она должна быть простой для понимания и производительной. Такая библиотека это не мечта, а вполне себе реальность!
👉На бесплатном вебинаре онлайн-курса «Clojure Developer» — «Malli, программируем на схемах» мы познакомимся с библиотекой Malli, посмотрим на стандартные (и не очень) сценарии её использования: регистрация
🔥После вебинара вы сможете продолжить обучение на курсе по спеццене, в том числе, в рассрочку.
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963. erid: LjN8KVWXS
💪 Пройди тест по PHP и проверь свои знания.
Ответишь — пройдешь на продвинутый курс "PHP Developer. Professional" от OTUS по специальной цене + получишь запись мастер-класса от преподавателя курса🎁 .
🎫 Курс можно приобрести в рассрочку
👉 ПРОЙДИ ТЕСТ https://otus.pw/wDha/
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru👨🏻💻 PhpStorm Live Templates for toArray() method
Мне нужно написать много Dto, а именно методы toArray() на PHP. Я искал в Интернете и допрашивал ChatGpt, но так и не смог получить четкий ответ.
Как мне написать шаблон, аналогичный __construct()? В его смысле. Я хочу создать метод в формате:
public function toArray(): array
{
return [
'id' => $this->getId(),
'name' => $this->getName(),
'alert' => $this->isAlert(),
'status' => $this->getStatus()
];
}
Но ничего не работает. Например, на вкладке “Settings > Editor > File and Code Templates > Code” я даже не могу добавить новый шаблон. Кнопка “Create Template” просто неактивна. Я не понимаю, как это работает, чтение документации JetBrains не помогло.
PHP задачи с собеседований
اکنون در دسترس! پژوهش تلگرام ۲۰۲۵ — مهمترین بینشهای سال 
