PHP задачи с собеседований
前往频道在 Telegram
Задачи, тесты и теоретические вопросы по PHP. Прислать задачу/вопрос в дар: @cyberJohnny Сотрудничество: @cyberJohnny
显示更多2 907
订阅者
+124 小时
无数据7 天
-730 天
帖子存档
👨🏻💻 Найти корректно число старта xref таблицы в pdf документе
Допустим у меня есть большой pdf файл версии 1.6. И в конце файла должна быть информация:
startxref 5638681 %%EOFБлагодаря которой, естественно, система знает положение начала xref таблицы пдфа. Но у меня там значится только:
startxref 56386И естественно файл сыпется и везде не читается. Этот файл лишь как пример. Основной вопрос заключается в том - возможно ли как-то на лету пересчитать положение начала xref и проставить его(число) в нужном месте в конце файла, чтобы даже в случае ошибки она была исправлена и файл бы прочитался? Я поискал по документу и слово Xref, кроме конца в startxref, встречается только в самом конце документа, аж на 28164 строке, в потоке прямо перед концом файла и словом startxref. Получается как-то вот так: <</DecodeParms<</Columns 5/Predictor 12>>/Filter/FlateDecode/ID[]/Info 81 0 R/Length 467/Root 83 0 R/Size 155/Type/XRef/W[1 3 1] вот в этом фрагменте:
154 0 obj
<</DecodeParms<</Columns 5/Predictor 12>>/Filter/FlateDecode/ID[<A95E63F8E64607C01DE088DCA9B76927><A934A84176582B4C8931FAEC898E990B>]/Info 81 0 R/Length 467/Root 83 0 R/Size 155/Type/XRef/W[1 3 1]>>stream
hЮ¬’1LSQ†П=ЇTh…гD\”(С :tPг`Xl|qa`qRЌ@HCЦД'BЊ,jBd!Д°‡VЁ‰ў‰>ќФШ(¶Шw|зЬЮј6ДЌелџпю9чјж" 8ЂРHptьП9яє"~F!…їnђыкс‚ц€d§Z<ц/|_њzЅ…tдД·љсї]WыТ±іy>ыпгЭЪ· uЅ-п™ѕ{бЅцa¤УwЖЄ¦яссeн!х\Я¬˜~юйOн[‘вгkЊПҐKЪ·!ќ+>Ъ5s2v\ыТEы|ЩфЯТЪG‘О¬пяjіюЅ‡‘’эЈЫfОвrBыv¤«gпmїђн“я •уБтНЛXНMя'-Y=Ђ[
у§uV•ЗќјХзouТjЮJ9_њ#“|ЪЩіoзыН3эi)Џэн-4E ~-аEдЮ’0,¦-0d3±Tп“уcKЮШ„LdZ]LUх©zу’‡˜xSr«4o3/eЕИ¶±њд‡Т\’Ь!Н»МДІ˜1IЙЙ z&чкУS|otКзьЮњ˜OТМЯ WВКьЄдХ†УS?u…Эrы°d~3Ч*рOЂ ш…§±
endstream
endobj
startxref
56386
Я уже пыталя по советам с интернета подсчитать в байтах кол-во символов перед словом xref с начала файла, но там переваливает значение за 9 лямов, а мне надо ровно 5638681. Сам вес файла кстати 5 639 408 в байтах. Есть ли какие-то рабочие способы такого подсчета или может какие-то консольные утилиты, которым можно скормить файл и в ответ получить нужное значение старта xref?
PHP задачи с собеседований🔥 Хардовый тест для разработчиков 🔥
📕 Ответьте на 9 вопросов за 20 мин и проверьте, насколько вы готовы к обучению на курсе - «Архитектура и шаблоны проектирования»
💻 Научитесь применять шаблоны проектирования в разработках! Благодаря этому навыку вы сможете писать чистый код, экономить время на разработке и быстро «пересаживаться» на любой язык программирования.
🏵 Ждем всех, кто хочет вырасти до Middle+ разработчика или архитектора ПО!
👉 ПРОЙТИ ТЕСТ https://otus.pw/zZiX/
💣 Пройдете тест, получите демо-ролик о занятиях на курсе и Welcome-скидку.
✅ Также вам откроется доступ к открытым урокам курса.
Реклама. Информация о рекламодателе на сайте www.otus.ru
Как PHP-разработчику выйти на новый уровень?
Всего за 4 месяца пройти курс «Symfony Framework» от OTUS и кратно увеличить свою ценность в глазах работодателей.
После курса вы сможете:
- использовать Symfony в проектах;
- обеспечивать безопасность приложения;
- тестировать и мониторить полученный код;
- использовать встроенные инструменты фреймворка;
- разворачивать приложения в различных окружениях.
Зачем вам это? 80% вакансий PHP-разработчика уровня Middle+ включают требование о знании популярных фреймворков, в том числе Symfony.
Пройдите бесплатное вступительное тестирование прямо сейчас и получите подарок — возможность участвовать в двух открытых уроках: https://clck.ru/3655dC
👨🏻💻 Удалить повторения подстроки в строке
Есть строка условно говоря такого вида:
petya kolya vasya oleg misha vasya vasya ivan vasyaКак на php удалить из неё все повторяющиеся подстроки vasya, кроме первой, чтобы осталось
petya kolya vasya oleg misha
PHP задачи с собеседований⁉️ Как 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