ar
Feedback
PHP | Вопросы собесов

PHP | Вопросы собесов

الذهاب إلى القناة على Telegram
2 345
المشتركون
لا توجد بيانات24 ساعات
-37 أيام
-2430 أيام
أرشيف المشاركات
🤔 Что такое списочный тип? Списочный тип данных, также известный как список, представляет собой структуру данных, которая хранит упорядоченные коллекции элементов. Списки позволяют хранить наборы элементов, доступ к которым можно получить по индексу. Они широко используются в программировании благодаря своей гибкости и удобству. 🚩Особенности 🟠Упорядоченность Элементы в списке хранятся в определенном порядке, и этот порядок сохраняется. Каждый элемент имеет индекс, по которому к нему можно обратиться. 🟠Изменяемость Списки обычно являются изменяемыми структурами данных, что означает, что вы можете добавлять, удалять или изменять элементы после создания списка. 🟠Гетерогенность В списке могут храниться элементы различных типов данных (например, числа, строки, объекты). 🚩Примеры списочных типов в различных языках программирования Python
  my_list = [1, 2, 3, 'a', 'b', 'c']
  my_list.append(4)  # Добавление элемента
  print(my_list[2])  # Доступ к элементу по индексу (вывод: 3)
  
Java
  import java.util.ArrayList;
  
  ArrayList<Object> myList = new ArrayList<>();
  myList.add(1);
  myList.add("hello");
  System.out.println(myList.get(1));  // Доступ к элементу по индексу (вывод: hello)
  
PHP
  $myList = array(1, 2, 3, 'a', 'b', 'c');
  array_push($myList, 4);  // Добавление элемента
  echo $myList[2];  // Доступ к элементу по индексу (вывод: 3)
  
🚩ПлюсыГибкость Списки позволяют легко добавлять, удалять и изменять элементы. ➕Удобство использования Простейшие операции над списками, такие как добавление или удаление элементов, обычно реализуются стандартными методами или функциями. ➕Поддержка индексов Доступ к элементам по индексу позволяет эффективно манипулировать данными. Ставь 👍 и забирай 📚 Базу знаний

Зарплата 207.000р у Middle-разработчика в Яндекс «В день уходит несколько часов на созвоны, в остальное время закрываю задачк
Зарплата 207.000р у Middle-разработчика в Яндекс «В день уходит несколько часов на созвоны, в остальное время закрываю задачки из спринта, редко перерабатываю. У компании топовый офис, но с коллективом как-то не заладилось. Радуюсь классному ДМС и стабильной зарплате» - middle разработчик из Яндекса. Бигтех по-русски - канал с реальными зарплатами и историями IT-специалистов российского БигТеха. Там уже опубликованы рассказы программистов Альфа-банка, Сбера и Тинькофф 🤯 Читайте: @bigtech_russia

Изучите HTML и CSS - бесплатно! Попробуйте бесплатно — освоите базу HTML & CSS, создадите свою первую веб страницу и поймете,
Изучите HTML и CSS - бесплатно! Попробуйте бесплатно — освоите базу HTML & CSS, создадите свою первую веб страницу и поймете, стоит ли погружаться в IT глубже. Почему стоит попробовать? - Никакой воды — только практика - Проверь профессию до того, как вложить в обучение 150+ тыс. - Убедитесь, что код — это не страшно, даже если раньше не получалось А чтобы у вас все получилось, мы добавили бонусы: ✅ 8 пошаговых гайдов — от первого кода до первых заработков в IT. ✅ До 1500 монет за задания, которые можно обменять на дальнейшее обучение. ✅ Закрытый чат с наставником — получите ответы на все вопросы. ✅ Полезный IT-канал в Telegram — оставайтесь в теме после курса. ⚡ Главное — вы попробуете профессию разработчика! Попробовать #реклама 16+ learn.result-university.com О рекламодателе

🤔 По какому принципу объединяются и разделяются методы в интерфейсах? Методы в интерфейсах группируются по роли или контракту, то есть: - Каждый интерфейс должен описывать конкретное поведение (например, Serializable, Renderable). - Принцип разделения интерфейса (Interface Segregation Principle, SOLID) — лучше несколько небольших интерфейсов, чем один громоздкий. - Интерфейс отражает намерение: что объект умеет делать, а не как он это делает. Это упрощает поддержку, повторное использование и тестирование кода. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Telegram опубликовал список 8 самых быстрорастущих каналов для программистов: Only Python — Подборки приёмов и фич, о которых
Telegram опубликовал список 8 самых быстрорастущих каналов для программистов: Only Python — Подборки приёмов и фич, о которых не рассказывают в курсах. Only Tech — Главные тренды и инсайды из мира технологий, маркетинга и интернет-культуры. Only Hack — Реальные кейсы кибератак, инструменты и методы защиты, которые используют хакеры. Only GitHub — Репозитории, которые решают реальные задачи. Скрипты, фреймворки и готовые решения Only IT — Без мнений и слухов — только факты и важные IT-события. Only Apple — Новые апдейты, утечки и фишки, которые Apple ещё не показала. Only GPT — Промпты, хаки и свежие инструменты, о которых молчат даже AI-каналы. Only Memes — Если ты когда-нибудь деплоил в пятницу вечером — ты поймешь Подписывайтесь и прокачивайте свои скиллы.

📺 База 1000+ реальных собеседований На программиста, тестировщика, аналитика, проджекта и другие IT профы. Есть собесы от ведущих компаний: Сбер, Яндекс, ВТБ, Тинькофф, Озон, Wildberries и т.д. 🎯 Переходи по ссылке и присоединяйся к базе, чтобы прокачать свои шансы на успешное трудоустройство!

🤔 В чём суть абстрактного класса? Абстрактный класс и в ООП в целом — это специальный тип класса, который не может быть инстанциирован напрямую. Это означает, что вы не можете создать объект абстрактного класса используя оператор new напрямую. Суть его заключается в том, чтобы служить основой для других классов, от которых будут создаваться объекты.
abstract class ТранспортноеCредство {
    protected $скорость;

    public function установитьСкорость($скорость) {
        $this->скорость = $скорость;
    }

    abstract public function двигаться();
}

class Автомобиль extends ТранспортноеCредство {
    public function двигаться() {
        echo "Движется на скорости: " . $this->скорость . " км/ч";
    }
}

// $транспорт = new ТранспортноеCредство(); // Ошибка: не может быть инстанциирован
$автомобиль = new Автомобиль();
$автомобиль->установитьСкорость(60);
$автомобиль->двигаться();
Ставь 👍 и забирай 📚 Базу знаний

Найти свое место, место у моря В современном ритме жизни очень легко потерять себя и свой ориентир. Мир диктует нам все новые правила, и за ними мы можем перестать слышать себя. Чего хотите для себя Вы? В чем Ваше предназначение? Где Ваш путь? Где Ваше место? Вы его выбираете, или место выбирает Вас? Найти себя вы можете в ЖК Резиденция Морей - быть на своем месте, месте у моря. Узнать больше #реклама ssk-rezidenciya-morey.ru О рекламодателе

🤔 Что содержит инкапсуляция кроме сокрытия данных? 1. Контроль доступа: использование модификаторов public, protected, private для ограничения доступа. 2. Инкапсуляция логики: методы класса предоставляют контролируемый интерфейс для работы с данными. 3. Сохранение целостности: защита данных от некорректных изменений извне. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Какие виды уязвимости знаешь? В веб-разработке существует множество уязвимостей, но самые распространенные SQL-инъекции (SQL Injection) Межсайтовый скриптинг (XSS – Cross-Site Scripting) Межсайтовая подделка запросов (CSRF – Cross-Site Request Forgery) Ошибки аутентификации и управления сессиями Необработанные пользовательские данные Доступ к файлам и директориям (LFI/RFI – Local/Remote File Inclusion) Ошибки конфигурации сервера и утечки данных 🟠SQL-инъекции (SQL Injection) Атака, при которой злоумышленник вставляет вредоносный SQL-код в запрос, получая доступ к БД. Чтение / изменение данных Удаление таблиц Получение паролей пользователей Используем подготовленные запросы (Prepared Statements)
$db = new PDO("mysql:host=localhost;dbname=test", "root", "password");
$stmt = $db->prepare("SELECT * FROM users WHERE email = :email");
$stmt->execute([':email' => $_POST['email']]);
$user = $stmt->fetch();
🟠Межсайтовый скриптинг (XSS – Cross-Site Scripting) Атака, при которой злоумышленник вставляет вредоносный JavaScript в веб-страницу. Кража cookies и сеансов Изменение содержимого страницы Фишинг Очистка данных перед выводом
echo htmlspecialchars($user_input, ENT_QUOTES, 'UTF-8');
🟠Межсайтовая подделка запросов (CSRF – Cross-Site Request Forgery) Злоумышленник заставляет пользователя выполнить нежелательный запрос от его имени (например, перевести деньги). Изменение данных без ведома пользователя Подмена учетных записей Используем CSRF-токены
$_SESSION['csrf_token'] = bin2hex(random_bytes(32));
При отправке формы проверяем
if ($_POST['csrf_token'] !== $_SESSION['csrf_token']) {
    die("CSRF атака!");
}
🟠Ошибки аутентификации и управления сессиями Если пароли хранятся неправильно или сессии уязвимы, злоумышленник может перехватить учетную запись пользователя. Кража пароля Перехват сессии Храним пароли с password_hash(), а не в открытом виде:
$hash = password_hash("mypassword", PASSWORD_BCRYPT);
🟠Необработанные пользовательские данные Приложение принимает и использует входные данные без проверки. Возможность загрузки вредоносных файлов Выполнение вредоносного кода Проверяем загружаемые файлы (MIME-тип, расширение) Используем валидацию данных:
$email = filter_var($_POST['email'], FILTER_VALIDATE_EMAIL);
🟠Доступ к файлам и директориям (LFI/RFI) Злоумышленник может загружать и выполнять опасные файлы через параметры в URL. Выполнение кода на сервере Чтение конфиденциальных файлов Запрещаем прямую загрузку файлов:
$whitelist = ['jpg', 'png', 'gif'];
$ext = pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION);
if (!in_array($ext, $whitelist)) {
    die("Недопустимый файл!");
}
🟠Ошибки конфигурации сервера и утечки данных Если сервер настроен неправильно, можно случайно раскрыть важные данные. Вывод ошибок PHP в браузере Доступ к файлам .env, config.php Отключаем display_errors в php.ini:
display_errors = Off
Защищаем файлы .env через .htaccess
  <Files .env>
      Order allow,deny
      Deny from all
  </Files>
Ставь 👍 и забирай 📚 Базу знаний

3 причины открыть ИИС в Финаме уже сегодня Откройте индивидуальный инвестиционный счет (ИИС) в Финаме и получите расширенные
+4
3 причины открыть ИИС в Финаме уже сегодня Откройте индивидуальный инвестиционный счет (ИИС) в Финаме и получите расширенные возможности для формирования личного капитала. Вы получаете сразу 3 преимущества: ✅ до 22% налогового вычета на внесённые средства ✅ дополнительную премию до 102 000 руб. за инвестиции от Финама ✅ 0% комиссия за покупку ценных бумаг на Московской бирже Счет открывается онлайн за несколько минут. Управлять инвестициями можно самостоятельно через личный кабинет или с помощью готовых продуктов в мобильном приложении FinamTrade. 👍 Используйте все преимущества ИИС — оставьте заявку на открытие счета и начните уверенное движение к финансовым целям! Подробнее Финансовые услуги оказывает: АО «Инвестиционная компания «ФИНАМ». #реклама broker.finam.ru О рекламодателе

🤔 Какая разница между self и this? self в PHP используется для обращения к текущему классу, включая статические методы и свойства, тогда как this ссылается на конкретный экземпляр класса. self подходит для работы с общими (статическими) членами класса, а this — для доступа к данным объекта. self не может использоваться для динамических данных объекта, в отличие от this. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Расскажи о Unit tests Unit-тесты (или модульные тесты) — это тесты, которые проверяют работу отдельных модулей (функций, классов, методов) в коде. Они позволяют убедиться, что каждый компонент программы работает правильно в изоляции от других частей системы. 🚩Зачем нужны Unit-тесты? 🟠Раннее выявление ошибок тесты помогают обнаружить баги сразу после написания кода. 🟠Упрощение рефакторинга при изменении кода можно быстро проверить, не сломалось ли что-то. 🟠Уверенность в качестве кода тесты показывают, что функции работают так, как задумано. 🟠Автоматизация тестирования можно запускать тесты автоматически перед каждым релизом. 🟠Документирование кода тесты помогают понять, как должна работать функция. 🚩Как писать Unit-тесты в PHP? В PHP для написания тестов чаще всего используют PHPUnit – это популярный фреймворк для модульного тестирования. Устанавливаем через Composer:
composer require --dev phpunit/phpunit
🚩Пример Unit-теста Допустим, у нас есть функция в классе Calculator, которая складывает два числа
class Calculator {
    public function add($a, $b) {
        return $a + $b;
    }
}
Теперь создадим тест для проверки работы метода add
use PHPUnit\Framework\TestCase;

class CalculatorTest extends TestCase {
    public function testAdd() {
        $calc = new Calculator();
        $result = $calc->add(2, 3);
        $this->assertEquals(5, $result);
    }
}
🚩Запуск тестов Чтобы запустить тест, используем команду
vendor/bin/phpunit tests
Ставь 👍 и забирай 📚 Базу знаний

🤔 Что такое инкремент и декремент? Инкремент (`++`) и декремент (`--`) — это операции в PHP и других языках программирования, которые увеличивают или уменьшают значение переменной на единицу соответственно.? Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

"Ты че, дурак?" – базовая реакция сеньора на тех, кто покупает IT курсы Дело в том, что онлайн школы создают инкубаторных айт
"Ты че, дурак?" – базовая реакция сеньора на тех, кто покупает IT курсы Дело в том, что онлайн школы создают инкубаторных айтишников, которые в реальных условиях попросту зависнут. Трушные ребята учатся на жизненных каналах для айтишников. Вот топ-5 от тимлида из Сбера: ⚙️ Технолоджия – для тех, кто хочет быть в курсе новостей в айти 🧠 Ai-чница – способы превратить нейросети в заработок $$$ 💻 ИИ тебя заменит! – тенденции айти рынка в связке с нейросетями 4️⃣ Войти в IT – тонны бесплатного обучения для прогеров 😄 IT индус – сборник айти мемов

🤔 Зачем нужен шаблон Builder? Builder — это порождающий шаблон проектирования, который разделяет процесс создания сложного объекта от его представления. Он позволяет создавать объекты пошагово и конфигурировать их гибко без необходимости передавать длинные списки параметров в конструктор. 🚩Зачем нужен Builder? 🟠Упрощает создание сложных объектов Когда объект имеет много параметров, особенно опциональных (например, дом с разными опциями — бассейном, гаражом, садом). 🟠Избегает перегруженных конструкторов Вместо того чтобы передавать кучу аргументов в конструктор (new Car("red", 4, true, "diesel")), мы можем строить объект постепенно. 🟠Делает код читаемым и удобным Позволяет явно видеть, какие параметры устанавливаются и какие можно добавить. 🚩Пример использования в PHP Допустим, мы строим объект Car (Машина). Проблема без Builder'а (длинный конструктор)
class Car {
    public string $color;
    public int $wheels;
    public bool $sunroof;
    public string $engine;

    public function __construct(string $color, int $wheels, bool $sunroof, string $engine) {
        $this->color = $color;
        $this->wheels = $wheels;
        $this->sunroof = $sunroof;
        $this->engine = $engine;
    }
}

$car = new Car("red", 4, true, "diesel"); // Что значат true и 4? Непонятно.
Решение с использованием Builder
class Car {
    public string $color;
    public int $wheels;
    public bool $sunroof;
    public string $engine;

    private function __construct() {} // Закрываем прямой доступ к конструктору

    public static function builder(): CarBuilder {
        return new CarBuilder();
    }
}

class CarBuilder {
    private Car $car;

    public function __construct() {
        $this->car = new Car();
    }

    public function setColor(string $color): self {
        $this->car->color = $color;
        return $this;
    }

    public function setWheels(int $wheels): self {
        $this->car->wheels = $wheels;
        return $this;
    }

    public function setSunroof(bool $sunroof): self {
        $this->car->sunroof = $sunroof;
        return $this;
    }

    public function setEngine(string $engine): self {
        $this->car->engine = $engine;
        return $this;
    }

    public function build(): Car {
        return $this->car;
    }
}

// Использование
$car = Car::builder()
    ->setColor("red")
    ->setWheels(4)
    ->setSunroof(true)
    ->setEngine("diesel")
    ->build();

var_dump($car);
Ставь 👍 и забирай 📚 Базу знаний

Айтишники, это вам — в телеграм есть комьюнити по каждому направлению в IT Там есть буквально всё: чаты для общения, тонны ма
Айтишники, это вам — в телеграм есть комьюнити по каждому направлению в IT Там есть буквально всё: чаты для общения, тонны материала(книги, курсы, ресурсы и гайды), свежие новости и конечно же мемы Выбирайте своё направление: 💩 Frontend 🐍 Python 🐧 Linux 👩‍💻 С/С++ 👩‍💻 C# 🤔 Хакинг & ИБ 📱 GitHub 🖥 SQL 👩‍💻 Сисадмин 🤟 DevOps ⚙️ Backend 🖥 Data Science 🧑‍💻 Java 🐞 Тестирование 🖥 PM / PdM 👩‍💻 GameDev 🧑‍💻 Golang 🤵‍♂️ IT-Митапы 🧑‍💻 PHP 💻 WebDev 🖥 Моб. Dev 🖥Анали.(SA&BA) 👩‍💻 Дизайн 🖥 Нейросети 💛 1C 🤓 Книги IT ➡️ Сохраняйте в закладки

🤔 Как посчитать функцию, если внутри неё много различных действий? Алгоритм анализируется путём определения сложности каждого действия и их комбинирования. Итоговая сложность определяется доминирующим элементом. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Скан паспорта или фото бывшего? Выбирайте и выигрывайте Сыграйте в игру, где нужно делать выбор между важными фото и получите шанс выиграть 300 000 ₽ на путешествие и ещё много сертификатов на шопинг Подробнее #реклама 16+ cloud.mail.ru О рекламодателе

🤔 В чем отличие адаптера от декоратора? Это структурные паттерны проектирования, которые используются в объектно-ориентированном программировании для решения различных задач по структурированию классов и объектов. Несмотря на то, что оба паттерна оборачивают другие объекты, их цели и способы применения различаются. 🚩Адаптер (Adapter) Преобразовать интерфейс одного класса в интерфейс другого класса, который ожидают клиенты. Адаптер позволяет классам с несовместимыми интерфейсами работать вместе. Адаптер реализует интерфейс, который должен быть представлен клиенту, и перенаправляет вызовы клиента к объекту с другим интерфейсом. Важно, что адаптер изменяет интерфейс взаимодействия, но не добавляет новую функциональность. Вы разрабатываете приложение, которое должно использовать существующую библиотеку классов, интерфейсы которой не совместимы с остальной частью вашего приложения. Создав адаптер для этих классов, вы можете интегрировать библиотеку без изменения её кода или кода приложения. 🚩Декоратор (Decorator) Динамически добавить новую функциональность объекту. В отличие от наследования, декораторы предоставляют гибкий способ расширения функциональности объекта во время выполнения. Декоратор оборачивает исходный объект, предоставляя дополнительное поведение. Он имеет тот же базовый интерфейс, что и оборачиваемый объект, что позволяет использовать декораторы взаимозаменяемо с исходными объектами. Вы разрабатываете систему уведомлений и хотите добавить возможность логирования или шифрования сообщений. Создав декораторы для базового класса отправки сообщений, вы можете легко добавить новую функциональность, обернув базовый объект отправки в один или несколько декораторов. 🚩Отличия 🟠Цель применения Адаптер используется для обеспечения совместимости между различными интерфейсами, позволяя объектам с несовместимыми интерфейсами работать вместе. Декоратор добавляет новую функциональность объектам, не изменяя их интерфейсы. 🟠Изменение интерфейса Адаптер изменяет интерфейс объекта для совместимости с другим интерфейсом. Декоратор не изменяет интерфейс, но добавляет новое поведение, сохраняя при этом оригинальный интерфейс объекта. 🟠Добавление функциональности Декораторы предназначены для добавления новой функциональности объектам. Адаптеры не добавляют новую функциональность; их основная задача — обеспечить работу существующей функциональности через другой интерфейс. Ставь 👍 и забирай 📚 Базу знаний