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

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

Kanalga Telegram’da o‘tish

Сайт: https://easyoffer.ru/ Все каналы: t.me/+xGeAw6ckJ4liYzQy Контакт для рекламы: @easyoffer_adv

Ko'proq ko'rsatish
2 344
Obunachilar
-224 soatlar
-57 kunlar
-2430 kunlar
Postlar arxiv
🤔 Что такое Docker? Это платформа для создания, доставки и управления контейнерами. 1. Контейнеры изолируют приложение и его зависимости, позволяя запускать их в любом окружении. 2. Это облегчает разработку, тестирование и развертывание приложений. Ставь 👍 и забирай 📚 Базу знаний

🤔 Что такое магические методы? Это специальные методы, которые имеют предопределенные имена и вызываются автоматически при определенных событиях или операциях с объектами. Эти методы начинаются с двойного подчеркивания (__). Они позволяют изменять стандартное поведение объектов, добавляя дополнительную функциональность или изменяя способ обработки данных. 🚩Основные магические методы 🟠`__construct()` и `__destruct()` __construct(): Конструктор, который вызывается при создании нового объекта. __destruct(): Деструктор, который вызывается, когда объект уничтожается.
class Example {
 public function __construct() {
     echo "Object created.\n";
 }

 public function __destruct() {
     echo "Object destroyed.\n";
 }
}

$obj = new Example();
   
🟠`__call()` иных. __call($name, $arguments): Вызывается при вызове недоступного метода в контексте объекта. __callStatic($name, $arguments): Вызывается при вызове недоступного статического метода.
      class Example {
       public function __call($name, $arguments) {
           echo "Calling object method '$name' " . implode(', ', $arguments). "\n";
       }

       public static function __callStatic($name, $arguments) {
           echo "Calling static method '$name' " . implode(', ', $arguments). "\n";
       }
   }

   $obj = new Example();
   $obj->nonExistentMethod('arg1', 'arg2'); // Выведет: Calling object method 'nonExistentMethod' arg1, arg2
   Example::nonExistentStaticMethod('arg1', 'arg2'); // Выведет: Calling static method 'nonExistentStaticMethod' arg1, arg2
   
🟠`__isset()` и __unset() __isset($name): Вызывается при вызове isset() или empty() на недоступное свойство. __unset($name): Вызывается при вызове unset() на недоступное свойство.
      class Example {
       private $data = [];

       public function __isset($name) {
           return isset($this->data[$name]);
       }

       public function __unset($name) {
           unset($this->data[$name]);
       }
   }

   $obj = new Example();
   $obj->property = 'value';
   unset($obj->property);
   var_dump(isset($obj->property)); // Выведет: bool(false)
   
🟠`__toString()` __toString(): Вызывается, когда объект используется в строковом контексте.
      class Example {
       public function __toString() {
           return "Example object as a string";
       }
   }

   $obj = new Example();
   echo $obj; // Выведет: Example object as a string
   
🟠`__invoke()` __invoke(): Вызывается, когда скрипт пытается использовать объект как функцию.
      class Example {
       public function __invoke($arg) {
           echo "Object called as a function with argument '$arg'\n";
       }
   }

   $obj = new Example();
   $obj('test'); // Выведет: Object called as a function with argument 'test'
Ставь 👍 и забирай 📚 Базу знаний

🤔 Какую проблему решает декоратор? Декоратор позволяет добавлять новую функциональность к существующему объекту или функции без изменения их исходного кода. 1. Это решает проблему модификации поведения без нарушения принципа открытости/закрытости (SOLID). 2. Удобен для добавления динамических изменений, таких как логирование, кэширование или аутентификация. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Квартира в Петербурге со скидкой 17% – Успейте в январе Ваша возможность выгодно купить квартиру в Санкт-Петербурге! Скидка 17% на квартиры в новостройках до конца января. Объекты на этапе строительства – выберите удобную планировку по отличной цене от застройщика. Помощь с ипотекой, консультации по сделке и возможность дозаказа меблировки. Оставьте заявку для бесплатной консультации. Перейти на сайт Проектная декларация на сайте https://наш.дом.рф/ #реклама kotlovan.pnflats.ru О рекламодателе

🤔 Как браузер понимает, что ему нужно перейти куда-то? Когда вы вводите URL или нажимаете на ссылку в браузере, браузер выполняет несколько шагов для того, чтобы определить, куда нужно перейти и загрузить соответствующую веб-страницу. 🟠Ввод URL или Нажатие на Ссылку URL (Uniform Resource Locator) — это адрес ресурса в интернете. Например, https://www.example.com/page. Когда пользователь вводит URL в адресной строке или нажимает на гиперссылку, браузер получает указание перейти на указанный адрес. 🟠Разбор URL Браузер разбирает URL на несколько компонентов: Схема (Scheme): Определяет протокол, который будет использоваться, например, http или https. Доменное имя (Hostname): Определяет сервер, на котором находится ресурс, например, www.example.com. Путь (Path): Указывает на конкретный ресурс на сервере, например, /page. Порт (Port): Опционально, указывает на порт сервера. По умолчанию используется 80 для HTTP и 443 для HTTPS. Параметры (Query Parameters): Опционально, включают дополнительные данные для запроса, например, ?id=123. 🟠DNS-Разрешение Браузер отправляет запрос к DNS (Domain Name System) серверу для преобразования доменного имени (www.example.com) в IP-адрес сервера. DNS-сервер возвращает соответствующий IP-адрес, например, 192.0.2.1. 🟠Установка Соединения TCP/IP Соединение: Браузер устанавливает TCP-соединение с сервером, используя IP-адрес и порт. SSL/TLS: Если используется HTTPS, устанавливается безопасное соединение с использованием протокола SSL/TLS. 🟠Отправка HTTP-запроса Браузер формирует и отправляет HTTP-запрос к серверу. Например, для GET-запроса:
  GET /page HTTP/1.1
Host: www.example.com  
🟠Обработка Запроса Сервером Веб-сервер принимает запрос, обрабатывает его, и, если ресурс существует и доступен, формирует ответ. Ответ может включать HTML-документ, изображения, стили, скрипты и другие ресурсы. 🟠Получение и Отображение Ответа Получение Ответа: Браузер получает HTTP-ответ от сервера, который включает статусный код (например, 200 OK), заголовки и тело ответа (например, HTML-код страницы). Разбор и Отображение: Браузер разбирает HTML, загружает и применяет CSS, выполняет JavaScript, отображает контент и запускает дополнительные запросы для встроенных ресурсов (изображения, стили, скрипты и т.д.). 🟠Взаимодействие с Пользователем После того как страница загружена и отображена, пользователь может взаимодействовать с ней, инициируя новые запросы, кликая на ссылки или отправляя формы, что запускает новый цикл. Ставь 👍 и забирай 📚 Базу знаний

– Помощь с pet-проектом – Составление roadmap – Общая консультация – Проведение код-ревью и mock-собеседования – Помощь с тру
– Помощь с pet-проектом – Составление roadmap – Общая консультация – Проведение код-ревью и mock-собеседования – Помощь с трудоустройством Все это и многое другое может Ментор. Он обеспечит вам необходимый boost, ускорит и упростит вход в IT. 🔥 Здесь размещен список менторов, и многие из них предлагают бесплатную первую консультацию

🤔 Как переопределить хранение сессий? Хранение сессий можно переопределить путём изменения способа их хранения: Файлы: хранение на локальной файловой системе. Базы данных: использование реляционных баз для хранения сессий, что упрощает их масштабирование. Кэш: хранение в Redis, Memcached для быстрого доступа. Для настройки нужно изменить конфигурацию приложения или middleware, например, в Django, Flask или Spring. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Зачем придумали анонимные классы? Анонимные классы (anonymous classes) были введены и предназначены для создания одноразовых объектов без необходимости явно именовать класс. Они обеспечивают более удобный и компактный способ определения классов, которые используются один или несколько раз. 🚩Основные плюсыУпрощение кода и повышение читаемости Позволяют создавать и использовать классы на месте, что уменьшает количество кода и делает его более читаемым, особенно в случае одноразового использования.
      $obj = new class {
       public function sayHello() {
           return "Hello, World!";
       }
   };

   echo $obj->sayHello(); // Выведет "Hello, World!"
   
Инкапсуляция и локализация кода Помогают инкапсулировать функциональность в пределах небольших участков кода, что делает их более локализованными и уменьшает риск конфликтов имен.
      function getLogger() {
       return new class {
           public function log($msg) {
               echo $msg;
           }
       };
   }

   $logger = getLogger();
   $logger->log("Logging message"); // Выведет "Logging message"
   
Быстрое создание прокси-объектов и заглушек Могут использоваться для создания временных объектов, таких как прокси, заглушки для тестирования или объекты, реализующие интерфейсы для конкретного случая.
      interface Logger {
       public function log($msg);
   }

   function getCustomLogger() {
       return new class implements Logger {
           public function log($msg) {
               echo $msg;
           }
       };
   }

   $logger = getCustomLogger();
   $logger->log("Custom log message"); // Выведет "Custom log message"
   
Облегчение тестирования Упрощают создание тестовых экземпляров, особенно когда требуется создать объект для одного теста.
      $testObject = new class {
       public function testMethod() {
           return true;
       }
   };

   // Использование testObject в тесте
   assert($testObject->testMethod() === true);
   
🚩Практические примеры 🟠Замена одноразовых классов Когда вам нужен класс, который используется только в одном месте, использование анонимного класса может быть более целесообразным, чем объявление именованного класса.
      $processor = new class {
       public function process($data) {
           return array_map('strtoupper', $data);
       }
   };

   $data = ['apple', 'banana', 'cherry'];
   $processedData = $processor->process($data);
   print_r($processedData); // Выведет ['APPLE', 'BANANA', 'CHERRY']
   
🟠Создание адаптеров и декораторов на лету Анонимные классы удобны для создания адаптеров и декораторов, которые изменяют или расширяют поведение объектов на месте.
      class SomeService {
       public function execute() {
           return "Executing service";
       }
   }

   $service = new SomeService();

   $decoratedService = new class($service) {
       private $service;

       public function __construct($service) {
           $this->service = $service;
       }

       public function execute() {
           return $this->service->execute() . " with added functionality";
       }
   };

   echo $decoratedService->execute(); // Выведет "Executing service with added functionality"
   
Ставь 👍 и забирай 📚 Базу знаний

🤔 Что такое типизация? Это механизм, определяющий, какие типы данных могут использоваться в программе и как они взаимодействуют. 1. Статическая типизация: типы данных проверяются во время компиляции (например, Java, C++). 2. Динамическая типизация: типы данных проверяются во время выполнения (например, Python, JavaScript). Типизация обеспечивает контроль над использованием данных, помогает предотвратить ошибки и улучшает читаемость кода. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Какие протоколы ты знаешь? Протоколы в сетевых системах обеспечивают правила передачи данных. Они работают на разных уровнях модели OSI и TCP/IP. Вот основные виды протоколов: 🚩Основные виды протоколов 🟠Физический и канальный уровни Ethernet: Передача данных по проводным сетям. Wi-Fi (IEEE 802.11): Беспроводная передача данных. PPP (Point-to-Point Protocol): Соединение между двумя узлами. HDLC (High-Level Data Link Control): Передача данных на канальном уровне. 🟠Сетевой уровень IP (Internet Protocol): Основной протокол для передачи данных в интернете (IPv4 и IPv6). ICMP (Internet Control Message Protocol): Передача сообщений об ошибках и контроля. 🟠Транспортный уровень TCP (Transmission Control Protocol): Надежная передача данных. UDP (User Datagram Protocol): Быстрая, но ненадежная передача данных. 🟠Сеансовый и представительный уровни SSL/TLS (Secure Sockets Layer / Transport Layer Security): Обеспечение безопасности передачи данных. NetBIOS: Работа сетевых приложений в локальных сетях. 🟠Прикладной уровень HTTP/HTTPS (HyperText Transfer Protocol / Secure): Передача веб-страниц. FTP (File Transfer Protocol): Передача файлов. SMTP (Simple Mail Transfer Protocol): Передача электронной почты. POP3/IMAP: Получение электронной почты. DNS (Domain Name System): Преобразование доменных имен в IP-адреса. SSH (Secure Shell): Безопасное удаленное управление серверами. SNMP (Simple Network Management Protocol): Управление сетевыми устройствами. LDAP (Lightweight Directory Access Protocol): Доступ и управление каталогами. DHCP (Dynamic Host Configuration Protocol): Динамическое назначение IP-адресов. 🟠Специализированные протоколы VoIP (Voice over IP): Передача голосовых данных (SIP, RTP). MQTT (Message Queuing Telemetry Transport): Обмен сообщениями в IoT. CoAP (Constrained Application Protocol): Работа с ограниченными устройствами в IoT. Ставь 👍 и забирай 📚 Базу знаний

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

🤔 Какие уровни изоляции ты знаешь? Уровни изоляции в системах управления базами данных (СУБД) определяют, как операции транзакций видят и взаимодействуют с изменениями, внесенными другими параллельно выполняющимися транзакциями. Эти уровни изоляции помогают контролировать различные виды аномалий, таких как грязное чтение, неповторяющееся чтение и фантомные чтения. В стандарте SQL существует четыре основных уровня изоляции: 🚩Read Uncommitted (чтение незафиксированных данных) Этот уровень изоляции позволяет транзакциям видеть изменения других транзакций, даже если эти изменения еще не зафиксированы. Наименее строгий уровень изоляции, с наибольшей вероятностью возникновения аномалий. Аномалии: Грязное чтение (Dirty Read): Транзакция может прочитать данные, которые были изменены другой транзакцией, но еще не зафиксированы.
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
🚩Read Committed (чтение зафиксированных данных) Транзакция может видеть только те изменения, которые были зафиксированы другими транзакциями. Средний уровень изоляции, который предотвращает грязные чтения, но допускает другие аномалии. Аномалии: Неповторяющееся чтение (Non-repeatable Read): Транзакция может дважды прочитать одно и то же значение и получить разные результаты, если другая транзакция изменила данные и зафиксировала изменения между двумя чтениями.
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
🚩Repeatable Read (повторяемое чтение) Транзакция гарантирует, что если она читает данные, они останутся неизменными до завершения транзакции. Более строгий уровень изоляции, который предотвращает грязные и неповторяющиеся чтения, но не предотвращает фантомные чтения. Аномалии: Фантомное чтение (Phantom Read): Транзакция может получить разные результаты при выполнении одного и того же запроса, если другая транзакция добавляет или удаляет строки, которые соответствуют условиям запроса.
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
🚩Serializable (сериабельность) Самый строгий уровень изоляции, который эмулирует последовательное выполнение транзакций. Полностью предотвращает грязные чтения, неповторяющиеся чтения и фантомные чтения. Аномалии: Никаких аномалий. Все транзакции выполняются так, как если бы они были выполнены последовательно.
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
Ставь 👍 и забирай 📚 Базу знаний

🤔 В чём отличие self от static? 1. self: используется для ссылки на текущий класс или экземпляр в контексте вызова методов внутри класса. Это позволяет обращаться к атрибутам или методам текущего объекта. 2. static: указывает, что метод привязан к самому классу, а не к конкретному экземпляру. Такой метод не может использовать или изменять данные экземпляра. Основное различие в том, что self относится к экземпляру, а static — к самому классу. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Какой командой можно отменить kmid? Команда kmid (Kinematic Motion In-Dispenser) не является стандартной командой или термином в большинстве систем, и, исходя из контекста, возможно, речь идет о специфической команде или понятии в рамках какой-то конкретной системы или программного обеспечения. Если у вас есть более точное определение или контекст, связанный с kmid, это поможет дать более точный ответ. 🚩Прерывание команд в Unix-подобных системах 🟠Прерывание текущего процесса Ctrl + C: Останавливает выполнение текущей команды в терминале. 🟠Управление процессами kill: Завершает процесс по его идентификатору (PID).
kill <PID>        
killall: Завершает все процессы с указанным именем.
killall <process_name>        
🟠Отмена последней команды В оболочке bash команда ctrl + z останавливает текущий процесс и переводит его в фоновый режим. Затем можно использовать команду kill для завершения процесса, если необходимо. 🚩Пример использования команд в Unix-подобных системах Чтобы узнать PID процесса, можно использовать команду ps или pgrep
pgrep process_name
ps aux | grep process_name    
После нахождения PID процесса, его можно завершить
kill 1234    
Чтобы завершить все процессы с именем example_process
killall example_process    
Ставь 👍 и забирай 📚 Базу знаний

🤔 Что происходит, если в приложении выбрасывается исключение? 1. Если исключение не обработано, программа может завершиться аварийно. 2. Обработчики исключений (try-catch) позволяют перехватывать и обрабатывать ошибки, предотвращая краш. 3. Исключения могут передаваться выше по стеку вызовов до момента их обработки. Если они достигают корня программы и не обработаны, приложение завершится с сообщением об ошибке. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Помощь в трудоустройстве в IT-сфере! В России из-за дефицита айтишников запустили бесплатную программу по обучению IT-специал
+9
Помощь в трудоустройстве в IT-сфере! В России из-за дефицита айтишников запустили бесплатную программу по обучению IT-специалистов. Теперь любой желающий может попробовать себя в IT с полного нуля и начать обучение бесплатно! Узнайте про дальнейшее трудоустройство в ведущие IT-компании для восполнения кадрового дефицита. Для этого нужно: - Перейти по ссылке - Заполнить анкету и ответить на вопросы (занимает менее 3 минут) - На основании ваших ответов вы сразу узнаете, подходит ли вам сфера IT и сможете ли вы в ней работать Перейти на сайт #реклама 16+ urban-university.ru О рекламодателе

🤔 Что такое ключи в БД? Это специальные поля или комбинации полей, которые используются для идентификации записей и установления связей между таблицами. Ключи играют важную роль в обеспечении целостности и эффективности базы данных. 🚩Виды ключей 🟠Первичный ключ (Primary Key) Это одно или несколько полей, которые однозначно идентифицируют каждую запись в таблице. Он должен быть уникальным и не содержать NULL-значений.
CREATE TABLE students (
    student_id INT PRIMARY KEY,
    name VARCHAR(100),
    age INT
);
🟠Внешний ключ (Foreign Key) Это поле или набор полей в одной таблице, которое указывает на первичный ключ в другой таблице. Внешние ключи используются для установления и обеспечения целостности ссылок между таблицами.
CREATE TABLE courses (
    course_id INT PRIMARY KEY,
    course_name VARCHAR(100)
);

CREATE TABLE enrollments (
    enrollment_id INT PRIMARY KEY,
    student_id INT,
    course_id INT,
    FOREIGN KEY (student_id) REFERENCES students(student_id),
    FOREIGN KEY (course_id) REFERENCES courses(course_id)
);
🟠Кандидатный ключ (Candidate Key) Это поле или комбинация полей, которое может служить уникальным идентификатором для записи в таблице. Таблица может иметь несколько кандидатных ключей, из которых один выбирается как первичный ключ.
CREATE TABLE users (
    user_id INT,
    email VARCHAR(100),
    phone VARCHAR(20),
    PRIMARY KEY (user_id),
    UNIQUE (email),
    UNIQUE (phone)
);
🟠Альтернативный ключ (Alternate Key) Это любой кандидатный ключ, который не выбран в качестве первичного ключа. В примере выше email и phone являются альтернативными ключами, так как user_id выбран как первичный ключ. 🟠Составной ключ (Composite Key) Это ключ, состоящий из двух или более полей, которые вместе уникально идентифицируют запись.
CREATE TABLE order_items (
    order_id INT,
    product_id INT,
    quantity INT,
    PRIMARY KEY (order_id, product_id)
);
🟠Суррогатный ключ (Surrogate Key) Это искусственно созданный ключ, который обычно представляет собой уникальный идентификатор, не имеющий смысла вне контекста базы данных.
CREATE TABLE employees (
    employee_id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100),
    department VARCHAR(100)
);
Ставь 👍 и забирай 📚 Базу знаний

🤔 Что такое индекс? Это структура, которая ускоряет поиск строк в таблице. Индексы создаются на основе одного или нескольких столбцов и позволяют быстрее находить данные, чем при линейном сканировании. Однако они увеличивают затраты на вставку и обновление данных, так как требуют обновления индексов. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Высшее образование от 56 000 ₽/год дистанционно Поступи в Университет «Синергия»! — Высшее образование в московском вузе, не
+9
Высшее образование от 56 000 ₽/год дистанционно Поступи в Университет «Синергия»! — Высшее образование в московском вузе, не выходя из дома. — Полностью дистанционный онлайн-формат. — Обучайся дома, на работе, в путешествии. — Поступление круглый год. — Диплом государственного образца. — Программа «колледж + вуз» без ЕГЭ. Рассрочка 0% на весь срок обучения. Перейти на сайт #реклама 16+ synergy.ru О рекламодателе

🤔 Что такое замыкание? Это функция вместе с окружением, в котором она была создана. Замыкание позволяет функции "запомнить" переменные из внешнего контекста, даже после того, как этот контекст завершил свое выполнение. Это делает замыкания мощным инструментом для создания функций, которые могут работать с данными, доступными во время их создания. 🚩Основные особенности замыканий 🟠Доступ к внешним переменным Функция может использовать переменные из внешнего контекста, в котором она была создана. 🟠Сохранение состояния Замыкания могут сохранять состояние между вызовами. 🟠Инкапсуляция Замыкания могут использоваться для создания частных данных и методов. 🚩Примеры замыканий в различных языках программирования 🟠JavaScript В JavaScript замыкания используются очень часто. Рассмотрим простой пример:
function createCounter() {
    let count = 0; // внешняя переменная

    return function() { // внутренная функция
        count++;
        return count;
    }
}

const counter = createCounter(); // создаем замыкание
console.log(counter()); // 1
console.log(counter()); // 2
console.log(counter()); // 3
🟠Python В Python замыкания также поддерживаются:
def create_counter():
    count = 0

    def increment():
        nonlocal count
        count += 1
        return count

    return increment

counter = create_counter()
print(counter())  # 1
print(counter())  # 2
print(counter())  # 3
🟠PHP В PHP замыкания реализуются через анонимные функции и использование use:
function createCounter() {
    $count = 0;

    return function() use (&$count) {
        $count++;
        return $count;
    };
}

$counter = createCounter();
echo $counter(); // 1
echo $counter(); // 2
echo $counter(); // 3
🚩Применение замыканий 🟠Создание фабричных функций Замыкания могут использоваться для создания фабричных функций, которые генерируют другие функции с определенным поведением. 🟠Инкапсуляция Замыкания позволяют скрывать переменные и методы внутри функции, предоставляя интерфейс для взаимодействия с ними. 🟠Обработка событий В языках, таких как JavaScript, замыкания часто используются в обработчиках событий для доступа к контексту, в котором был назначен обработчик. 🟠Мемоизация Замыкания могут использоваться для создания функций, которые запоминают результаты предыдущих вычислений и используют их для ускорения последующих вызовов. Ставь 👍 и забирай 📚 Базу знаний