PHP задачи с собеседований
3.03K subscribers
496 photos
6 videos
11 files
362 links
Задачи, тесты и теоретические вопросы по PHP.

Прислать задачу/вопрос в дар: @cyberJohnny
Сотрудничество: @cyberJohnny
Download Telegram
Как можно задать массив в языке PHP:
Anonymous Quiz
8%
$arr («0″=> «a»);
83%
$arr[0] = «a»;
10%
$arr[«a»,»b»,»c»] = «q»;
👎43🎉6
Разработка_и_анализ_компьютерных_алгоритмов.pdf
33.8 MB
📔 Title: Разработка и анализ компьютерных алгоритмов

#book #algorithm #RU

🌐 Lang.: Russian
🧔 Author: Альфред В. Ахо, Джон Э. Хопкрофт, Джеффри Д. Ульман
🕘 Year: 2021
📑 Pages: 544
#️⃣ ISBN: 978-0-201-00029-0

📝 Description: В этой монографии, ставшей классикой, излагаются результаты теоретических и прикладных исследований по построению и анализу эффективных вычислительных алгоритмов. Рассмотрены задачи поиска, сортировки массивов, умножения целых чисел, умножения матриц, алгоритмы на графах, а также основы теории сложности. Книга предназначены для специалистов по компьютерным наукам и программистов, а также будет полезна студентам и аспирантам, специализирующимся в области информатики.

@bzd_channel
👍5
Creating_Augmented_and_Virtual_Realities_Theory_and_Practice_for.pdf
64.5 MB
📔 Title: Creating Augmented and Virtual Realities: Theory and Practice for Next-Generation Spatial Computing

#book #AR #VR #EN

🌐 Lang.: English
🧔 Author: Erin Pangilinan, Steve Lukas, Vasanth Mohan
🕘 Year: 2019
📑 Pages: 372
#️⃣ ISBN: 978-1-492-04419-2

📝 Description: Разработчикам, которые хотят войти в область разработки приложений с виртуальной и дополненной реальностью, на сегодня предоставляется уйма возможностей начать изучать работу в этой сфере. В данной книге авторы показывают процесс разработки AR и VR приложений и предоставляют практические упражнения, которые помогут отточить ваши навыки.

@bzd_channel
👍1
Имеется объект ($obj) какого-то класса. Требуется получить список всех свойств класса, которому принадлежит объект?
Anonymous Quiz
25%
get_class_var(get_class($obj))
6%
$get_class_vars(get_class->$obj)
70%
$vars = get_class_vars(get_class($obj))
👎13👍8🔥2
Какая функция возвращает метку времени (timestamp)?
Anonymous Quiz
44%
date()
43%
strtotime()
13%
localtime()
👎25👍5🔥2
Реальный вопрос, реального человека. Помогите разобраться

Предположим есть

$text = '<p> Текст <a href="site" class="js-gps-track js-link" target="_blank"></a></p>
<p>
Текст Текст Текст
<a href="site" class="js-gps-track js-link" target="_blank"></a>
Текст
</p>';

В данный момент используется new DOMDocument

Но по завершению, он удаляет пробелы в начале строчки, а в конце добавляет строчку.

Вопрос в том, как возможно через регулярное выражение, в цикле перебрать все ссылки и вставить в место них содержимое атрибута href

$tx = preg_replace_callback('#<a[.]*?</a>#siu', function($m) {

print_r($m);

}, '<p> Текст <a href="site" class="js-gps-track js-link" target="_blank"></a></p>
<p>
Текст 2Текст Текст
<a href="site" class="js-gps-track js-link" target="_blank"></a>
Текст1
</p>');
print_r($tx);

PHP задачи с собеседований
Ищем:  Backend разработчик (PHP, Symfony)
Формат: удаленка

Мы небольшая продуктовая команда.
Делаем большой проект в сфере логистики

Cтэк:
#Symfony, #РostgreSQL, #Redis, #Rabitmq, #Elasticsearch;

Вам будет с нами хорошо, если:
• интересно развиваться в небольшой команде и создавать нагрузочные сервисы
• стремитесь улучшать архитектуру и расти до senior (у нас есть задачи на вырост)
• вы любите хороший код, понимаете ценность код ревью
• вам важно было бы соблюдать work/life ballance (мы считаем что без этого не вырасти)

Мы ожидаем:
• middle/senior
• опыт PHP от 2 лет
• опыт Symfony от 2 лет
• знание патернов проектирования и умение их применять
• опыт работы с высокими нагрузками
• опыт работы с интеграциями по API
Пишите в лс @alan_g15

Формат сотрудничества:
Готовы рассмотреть на проект от 2 мес или полноценно в команду
Вам у нас понравится
ЗП готовы обсуждать: 2500-4000$
👍3
👨🏻‍💻 Вопрос заключается в следующем...

Как реализовать вход по роли к сайту?

Есть роль пользователь и оператор, необходимо чтоб при входе открывалась определенная страница для пользователя и определенная для оператора.

Как можно это сделать?

$_SESSION['operator'] -> Оператор
$_SESSION['polz'] -> Пользователь

if ($_SESSION['operator'])
{
//При выполнении этого условия, должен располагаться, код, контент доступный только "Оператору"
header('Location: ../mainpageoper.php');
}
elseif ($_SESSION['polz'])
{
//При выполнении этого условия, должен располагаться, код, контент доступный только "Пользователю"
header('Location: ../mainpagepolz.php');
}
if( [role] == 1 ) { $_SESSION['polz'] =1; }
if( [role] == 2 ) { $_SESSION['operator'] =1; }

PHP задачи с собеседований
Привет, на связи Podlodka PHP Crew! Большинство русскоязычных конференций и митапов по PHP приостановлены. Но мы продолжаем собирать комьюнити! Во 2-м сезоне поговорим, как внедрять в работу новые инструменты разработки с пользой для бизнеса.

Вместе с Александром Макаровым, Валентином Удальцовым, Александром Кирсановым и другими спикерами разберёмся с основными и продвинутыми сценариями отладки кода, научимся эффективно комбинировать PHP и Docker.

Стартуем уже 27 февраля! В программе:

✴️ Лайвкодинги по поиску ошибок с помощью статического анализа;
✴️ Практика применения Docker;
✴️ Доклады по отладчикам кода и анализу code style;
✴️ Воркшопы по работе с Composer.

Это не всё 😉 В новом сезоне вас ждёт много интересного. За подробностями — на сайт.

Онлайн-конференции Podlodka Crew родились из одноимённого IT подкаста. Каждый сезон длится пять дней — рассматриваем одну тему с разных сторон, чтобы узнать её как можно глубже.

🤑 Успейте забрать свой билет по сниженной цене — ранним пташкам скидки.
👍2
👨🏻‍💻 Вопрос от одного из наших подписчиков

Что выведет код?


class A {
public function __construct(string $a){
$a .= $a;
}
}

class B extends A {
public function __construct(int $a){
$a++;
}
}

$b = new B(1);

var_dump($b);


Варианты:
1) Fatal error: Declaration of B::__construct(int $a) must be compatible with A::__construct(string $a) in /tmp/preview on line 8

2)
object(B)#1 (0) {

}

PHP задачи с собеседований
👨🏻‍💻 Как упростись цепочку условий для фильтра на wordpress?

Есть каталог фильмов на wordpress, где в метатегах постов хранится информация о жанрах, рейтинге и т.п.

Сделана возможность фильтровать по рейтингу (число), жанру (строка) или по умолчанию только по id (число) - это работает, но получается нагромождение из простыни условий.

Как можно упростить цепочку условий, особенно если понадобится добавить новые параметры для фильтра?

if (isset($rating) || isset($genre)) {

if (isset($rating) && isset($genre)) {

$query = new WP_Query(array(
'meta_query' => array(
'relation' => 'AND',
array(
'key' => 'film_rating',
'value' => $rating,
),
array(
'key' => 'film_kind',
'value' => $genre,
),
array(
'key' => 'film_id',
'value' => $films,
'compare' => 'IN'
),
),
'post_type' => 'post',
'post_status' => 'publish',
'posts_per_page' => -1
));

} else if (isset($rating)) {

$query = new WP_Query(array(
'meta_query' => array(
'relation' => 'AND',
array(
'key' => 'film_rating',
'value' => $rating,
),
array(
'key' => 'film_id',
'value' => $films,
'compare' => 'IN'
),
),
'post_type' => 'post',
'post_status' => 'publish',
'posts_per_page' => -1
));

} else if (isset($genre)) {

$query = new WP_Query(array(
'meta_query' => array(
'relation' => 'AND',
array(
'key' => 'film_kind',
'value' => $genre,
),
array(
'key' => 'film_id',
'value' => $films,
'compare' => 'IN'
),
),
'post_type' => 'post',
'post_status' => 'publish',
'posts_per_page' => -1
));
}
} else {

$query = new WP_Query(array(
'meta_query' => array(
array(
'key' => 'film_id',
'value' => $films,
'compare' => 'IN'
),
),
'post_type' => 'post',
'post_status' => 'publish',
'posts_per_page' => -1
));
}

PHP задачи с собеседований
👎7👍3
Великий Китайский Файрвол.pdf
3.5 MB
📔 Title: Великий Китайский Файрвол

#book #programming #RU

🌐 Lang.: Russian
🧔 Author: Джеймс Гриффитс
🕘 Year: 2022
📑 Pages: 430
#️⃣ ISBN: -

📝 Description: Фраза "интернет помнит все" обрела второй смысл — контент стал подконтролен, иллюзия анонимности исчезла. Книга рассказывает о том, как Китай первым в мире научился управлять интернетом и как другие страны перенимали его опыт.

@bzd_channel
Kak_napisat_i_prodat_svoy_PHP_skript.pdf
1.5 MB
📔 Title: Как написать и продать свой PHP скрипт

#book #php #RU

🌐 Lang.: Russian
🧔 Author: Самуэль Акопян
🕘 Year: 2021
📑 Pages: 86
#️⃣ ISBN: -

📝 Description: Вы написали свой первый PHP скрипт и хотите его продать. Эта книга поможет Вам с пошаговой инструкцией в этом начинании, а также подскажет как избежать распространённых ошибок при создании и продаже своего собственного программного обеспечения.

– всё сказанное здесь является результатом личного жизненного опыта автора;
– мнение автора может не совпадать с мнением читателей по многим вещам и это нормально;
– не надо пугаться; – везде по тексту словосочетание “PHP скрипт” можно заменить на “C++ программу”, “мобильную аппликацию” или “мою супер-дупер application”;
– это не монография с замахом на докторскую диссертацию, скорее небольшая инструкция к действию для тех, кто в лодке (ну или собирается в неё запрыгнуть);

@bzd_channel
🔥1
📌 Реальная ситуация

В скрипте делается вывод заголовков.

$modified_date = strtotime('2023-02-09 17:25:05');
header('Last-Modified: '.gmdate('D, d M Y H:i:s', $modified_date).' GMT');

Если после этого идет сразу exit то заголовок выдается.

Дальше идет вывод кэша из файла.

$cacheFile = '/cache.txt';
$html = file_get_contents($cacheFile);
echo $html;
exit;

сразу пропадает строка Last-Modified.

Ответ сервера:

HTTP/1.1 200 OK
Server: nginx/1.14.1
Date: Tue, 21 Feb 2023 07:44:31 GMT
Content-Type: text/html; charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive
X-Powered-By: PHP/7.2.24
Strict-Transport-Security: max-age=31536000;
Content-Encoding: gzip

Не понятно как file_get_contents может отменять заголовок? headers_list() заголовок показывает.

PHP задачи с собеседований
👍1
Что можно сократить в данном php коде?

<?php
function getClosest($search, $array)
{
$num = null;
foreach ($array as $item) {
if ($item['chance'] < $search) {
continue;
}
if ($num === null || $item['chance'] < $num['chance']) {
$num = $item;
}
}
return $num;
}

$case_cost = 100;

$skins = [
$skin = ['cost' => 10000],
$skin = ['cost' => 0.01],
$skin = ['cost' => 5256],
$skin = ['cost' => 425.2],
$skin = ['cost' => 92.4],
$skin = ['cost' => 3124],
$skin = ['cost' => 0.32],
$skin = ['cost' => 213],
];

$array_chance = [];
$array_sum = 0;
foreach ($skins as $item) {
if ($case_cost >= $item['cost']) {
$result = $case_cost / $item['cost'];
} else {
$result = $case_cost * $item['cost'] / 100;
}
$result = round($result);
$array_sum += $result;

array_push($array_chance, $result);
}

$rand_num = rand(0, $array_sum);

$i = 0;
$accum = 0;
foreach ($array_chance as $skin) {
$skins[$i]['chance'] = $skin;
$i++;
}

$accum = 0;
foreach ($skins as &$skin) {
$accum = $skin['chance'] += $accum;
}

print_r($skins);

$rand_element = getClosest($rand_num, $skins);

echo '<br>' . $rand_num . '<br>';

print_r($rand_element);

PHP задачи с собеседований
👍5
📌 Переместить запись из кастомного типа поста в др. рубрику при наступлении условия (wordpress)

Есть кастомный тип постов "Мероприятия". В нем две рубрики: ближайшие и архивные. Понятно, что при создании все события попадают в ближайшие. А как сделать так, чтобы после прошествия дня события, оно автоматически меняло рубрику, а не админ вручную переставлял привязку. С помощью acf7 создано кастомное поле даты. И есть следующий код:

function update_event_taxonomy() {
$today = date('Y-m-d');
$args = array(
'post_type' => 'events',
'posts_per_page' => -1,
'meta_query' => array(
array(
'key' => 'event_date',
'value' => $today,
'compare' => '<',
'type' => 'DATE',
),
),
);
$event_posts = get_posts($args);

foreach ($event_posts as $event_post) {
$event_date = get_field('event_date', $event_post->ID);
$event_tax = ($event_date < $today) ? 'archive' : 'upcoming';
wp_set_post_terms($event_post->ID, $event_tax, 'events_category', false);
}
}

function schedule_event_taxonomy_update() {
if (!wp_next_scheduled('update_event_taxonomy')) {
wp_schedule_event(time(), 'hourly', 'update_event_taxonomy');
}
}

add_action('wp', 'schedule_event_taxonomy_update');


Однако при его выполнении, с тех событий, которые подпадают под условие чекбоксы с "ближайшие мероприятия" снимаются и к архивным они не привязываются, чекбокс не проставляется.

Где ошибка или как это правильно/лучше сделать?

PHP задачи с собеседований
👎12👍1