PHP | Вопросы собесов
Відкрити в Telegram
Сайт: https://easyoffer.ru/ Все каналы: t.me/+xGeAw6ckJ4liYzQy Контакт для рекламы: @easyoffer_adv
Показати більше2 341
Підписники
-224 години
-57 днів
-2330 день
Архів дописів
🤔 Что изменилось в приведении типов в PHP 8?
PHP 8 усилил строгую типизацию, добавив поддержку объединённых типов (Union Types). Также введены типы mixed и static, расширяющие возможности определения данных. Улучшена работа с привидением типов, исключая двусмысленности, чтобы снизить вероятность ошибок.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🤔 Что такое Web Sockets (веб сокет)?
Это технология, которая обеспечивает двунаправленную, полнодуплексную связь между клиентом (обычно веб-браузером) и сервером через одно TCP-соединение. Веб-сокеты предназначены для приложений, которым необходимо поддерживать постоянное соединение и передавать данные в режиме реального времени, таких как чаты, игровые приложения, биржевые котировки и другие.
🚩Основные характеристики
🟠Постоянное соединение
После установки соединения через веб-сокет оно остается открытым, позволяя клиенту и серверу обмениваться данными в реальном времени без необходимости повторного установления соединения.
🟠Двунаправленность
Данные могут передаваться в обоих направлениях (от клиента к серверу и от сервера к клиенту) одновременно, что делает коммуникацию более эффективной.
🟠Меньшая нагрузка
В отличие от традиционных HTTP-запросов, веб-сокеты не требуют заголовков для каждой передачи данных, что снижает нагрузку и повышает производительность.
🚩Как работают
🟠Установление соединения
Соединение через веб-сокет начинается с HTTP-запроса с методом
GET и заголовком Upgrade, который указывает серверу на переключение протокола на WebSocket. Если сервер поддерживает веб-сокеты, он отвечает с кодом 101 Switching Protocols, устанавливая соединение.
🟠Передача данных
После установления соединения клиент и сервер могут обмениваться сообщениями в формате фреймов, которые могут содержать текстовые или бинарные данные.
🟠Закрытие соединения
Любая из сторон (клиент или сервер) может закрыть соединение, отправив фрейм закрытия. После этого соединение закрывается и больше не используется.
🚩Плюсы
➕Реальное время
Подходит для приложений, которым требуется мгновенный обмен данными, таких как чаты, уведомления, спортивные трансляции, игры и т.д.
➕Эффективность
Уменьшение накладных расходов за счет отсутствия необходимости в постоянном повторном установлении соединения и отправке HTTP-заголовков.
➕Меньшая задержка
Меньшие задержки по сравнению с HTTP-запросами, особенно в приложениях, где требуется постоянное обновление данных.
🚩Примеры использования
🟠Чат-приложения
Пользователи могут отправлять и получать сообщения мгновенно без задержек.
🟠Онлайн игры
Игроки могут взаимодействовать в реальном времени, что критически важно для геймплея.
🟠Финансовые приложения
Обновления биржевых котировок и торговых данных в реальном времени.
🟠Спортивные трансляции
Передача обновлений о счете и других событиях матча в режиме реального времени.
🚩Пример сервера
Серверная часть на Node.js с использованием библиотеки ws:
const WebSocket = require('ws');
const server = new WebSocket.Server({ port: 8080 });
server.on('connection', function (socket) {
console.log('Client connected');
// Обработка сообщений от клиента
socket.on('message', function (message) {
console.log('Received: ' + message);
// Отправка ответа клиенту
socket.send('Hello from server');
});
// Закрытие соединения
socket.on('close', function () {
console.log('Client disconnected');
});
});
Ставь 👍 и забирай 📚 Базу знаний🤔 Чего ждёшь от PHP 8?
PHP 8 принёс значительные улучшения в производительности благодаря JIT-компиляции. Также ожидаются новые синтаксические возможности, такие как именованные аргументы, объединение null (??=) и улучшенная типизация. Эти изменения упрощают разработку, делают код более читаемым и сокращают количество багов.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🤔 Расскажи про https?
Это расширение HTTP, которое используется для безопасного обмена информацией между веб-браузером и веб-сервером. HTTPS шифрует данные, обеспечивая их конфиденциальность и целостность при передаче по сети.
🚩Основные аспекты
🟠Шифрование
HTTPS использует протоколы шифрования, такие как SSL (Secure Sockets Layer) и его преемник TLS (Transport Layer Security), для защиты данных. Это предотвращает перехват и чтение данных третьими лицами.
🟠Аутентификация
HTTPS гарантирует, что клиент (обычно веб-браузер) соединяется с подлинным сервером, а не с мошенническим сайтом. Это достигается с помощью цифровых сертификатов, выданных доверенными центрами сертификации (CA).
🟠Целостность данных
HTTPS защищает данные от изменения или повреждения при передаче. Это гарантирует, что информация, отправленная клиентом или сервером, остается неизменной.
🚩Как работает
🟠Установление соединения
Когда пользователь вводит URL, начинающийся с "https://", браузер инициирует соединение с веб-сервером, который поддерживает HTTPS.
🟠Обмен сертификатами
Сервер отправляет свой цифровой сертификат браузеру. Этот сертификат содержит открытый ключ сервера и информацию о центре сертификации, который выдал сертификат.
🟠Проверка сертификата
Браузер проверяет подлинность сертификата, используя корневые сертификаты, которые хранятся в его репозитории доверенных сертификатов. Если сертификат доверен, продолжается установка соединения.
🟠Установка сессионного ключа
Браузер и сервер используют алгоритмы обмена ключами (например, RSA или Diffie-Hellman) для создания симметричного сессионного ключа. Этот ключ будет использоваться для шифрования данных в течение сессии.
🟠Шифрование данных
Все данные, передаваемые между браузером и сервером, шифруются с использованием сессионного ключа. Это обеспечивает конфиденциальность и целостность данных.
🚩Плюсы
➕Безопасность
Шифрование данных защищает информацию от перехвата и чтения злоумышленниками, что особенно важно для передачи конфиденциальной информации, такой как пароли, номера кредитных карт и личные данные.
➕Доверие пользователей
Наличие HTTPS повышает доверие пользователей к веб-сайту, поскольку большинство современных браузеров отображают предупреждения при посещении сайтов без HTTPS.
➕SEO
Поисковые системы, такие как Google, отдают предпочтение сайтам с HTTPS, что может улучшить ранжирование сайта в результатах поиска.
➕Защита от атак
HTTPS защищает от некоторых типов атак, таких как атаки типа "man-in-the-middle" (MITM), где злоумышленник перехватывает и изменяет данные, передаваемые между клиентом и сервером.
🚩Установка и использование
1⃣Получение сертификата
Веб-сайт должен получить цифровой сертификат от доверенного центра сертификации (CA). Это может быть платный сертификат от коммерческих CA или бесплатный сертификат от организаций, таких как Let's Encrypt.
2⃣Настройка веб-сервера
Сертификат должен быть установлен и настроен на веб-сервере. Это включает в себя настройку файлов конфигурации сервера для использования сертификата и ключей.
3⃣Перенаправление трафика
Для обеспечения безопасности весь HTTP-трафик должен перенаправляться на HTTPS. Это можно сделать с помощью перенаправлений на уровне сервера или веб-приложения.
Ставь 👍 и забирай 📚 Базу знаний
🤔 Разница между pull и fetch?
git pull выполняет fetch (загружает изменения из удалённого репозитория) и автоматически сливает их с локальной веткой. git fetch только загружает изменения, не изменяя локальные файлы, что позволяет вручную контролировать слияние.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🤔 Что такое логирование?
Это процесс записи информации о работе приложения или системы в файлы журнала (логи) или другие хранилища данных. Логирование помогает разработчикам и системным администраторам отслеживать поведение приложения, выявлять и диагностировать ошибки, а также анализировать производительность и безопасность системы.
🚩Зачем нужно логирование
🟠Отладка и диагностика
Логи помогают разработчикам понять, что происходит внутри приложения, и выявлять причины ошибок или некорректного поведения.
🟠Мониторинг и аудит
Логи используются для постоянного мониторинга работы системы и анализа исторических данных для выявления аномалий или нарушений.
🟠Безопасность
Логи могут фиксировать попытки несанкционированного доступа или другие подозрительные действия, помогая в расследовании инцидентов безопасности.
🟠Анализ производительности
Логи позволяют анализировать, как работает система под нагрузкой, и выявлять узкие места или проблемы с производительностью.
🟠Соответствие требованиям
В некоторых отраслях логирование требуется для соблюдения нормативных требований и стандартов.
🚩Основные элементы логирования
🟠Сообщения журнала (лог-сообщения)
Содержат информацию о событиях, таких как ошибки, предупреждения, информационные сообщения или отладочные данные.
🟠Уровни логирования
Определяют важность и тип сообщений. Обычно используются следующие уровни:
DEBUG: Подробная отладочная информация.
INFO: Информационные сообщения о нормальной работе системы.
WARNING: Предупреждения о потенциальных проблемах.
ERROR: Ошибки, которые не приводят к остановке системы, но требуют внимания.
CRITICAL/FATAL: Критические ошибки, которые могут привести к сбою системы.
🟠Место хранения логов
Логи могут сохраняться в файлах, базах данных, системах мониторинга или удаленных хранилищах.
🟠Формат логов
Лог-сообщения могут записываться в различных форматах, таких как текст, JSON, XML, что облегчает их последующий анализ.
🚩Пример логирования
В Python с использованием библиотеки
logging
import logging
# Настройка логирования
logging.basicConfig(level=logging.DEBUG,
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
handlers=[logging.FileHandler("app.log"),
logging.StreamHandler()])
logger = logging.getLogger(__name__)
# Примеры лог-сообщений
logger.debug("Это отладочное сообщение")
logger.info("Это информационное сообщение")
logger.warning("Это предупреждение")
logger.error("Это сообщение об ошибке")
logger.critical("Это критическое сообщение")
В Java с использованием библиотеки log4j
import org.apache.log4j.Logger;
import org.apache.log4j.BasicConfigurator;
public class Example {
// Создание логгера
static Logger logger = Logger.getLogger(Example.class);
public static void main(String[] args) {
// Настройка логгера
BasicConfigurator.configure();
// Примеры лог-сообщений
logger.debug("Это отладочное сообщение");
logger.info("Это информационное сообщение");
logger.warn("Это предупреждение");
logger.error("Это сообщение об ошибке");
logger.fatal("Это критическое сообщение");
}
}
Ставь 👍 и забирай 📚 Базу знаний🤔 Зачем нужны паттерны проектирования?
Паттерны проектирования решают типичные задачи разработки, предоставляя проверенные временем решения. Они повышают читаемость, повторное использование и масштабируемость кода.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🤔 Чем отличается мерч от рибейс?
В системах управления версиями, таких как Git, операции
merge и rebase используются для интеграции изменений из одной ветки в другую. Эти операции имеют разные цели и последствия, и важно понимать их различия для эффективного управления историей вашего проекта.
🚩Merge (Слияние)
merge объединяет изменения из одной ветки в другую, создавая новый коммит слияния (merge commit). Этот коммит объединяет историю обеих веток.
🟠Сохранение истории
Слияние сохраняет историю всех коммитов, показывая, как изменения происходили в разных ветках.
🟠Конфликты
Если есть изменения в одних и тех же строках файлов в обеих ветках, Git потребует разрешить конфликты.
🟠Новый коммит
Создаётся новый коммит слияния, который включает ссылки на два родительских коммита.
git checkout main
git merge feature-branch
🚩Rebase (Перемещение)
rebase перемещает (или переписывает) базу текущей ветки на указанный коммит, что позволяет применять изменения текущей ветки поверх другой ветки. Это создает линейную историю, как будто изменения были сделаны последовательно.
🟠Чистая история
Rebase создаёт линейную историю без коммитов слияния, что делает её проще для чтения и отслеживания.
🟠Изменение истории
История коммитов переписывается, что может быть проблематично, если ветка уже опубликована и используется другими разработчиками.
🟠Конфликты
Если возникают конфликты, Git предлагает их разрешить на каждом шаге перемещения.
git checkout feature-branch
git rebase main
Ставь 👍 и забирай 📚 Базу знаний– Помощь с pet-проектом
– Составление roadmap
– Общая консультация
– Проведение код-ревью и mock-собеседования
– Помощь с трудоустройством
Все это и многое другое может Ментор. Он обеспечит вам необходимый boost, ускорит и упростит вход в IT.
🔥 Здесь размещен список менторов, и многие из них предлагают бесплатную первую консультацию
🤔 Как браузер понимает, что ему нужно перейти куда-то?
Браузер анализирует ввод пользователя, определяя, является ли это запросом на переход к новому URL. Если это так, он отправляет HTTP-запрос к указанному серверу и отображает полученный ответ (обычно HTML).
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🤔 Что такое спринт в scrum?
Это основной блок времени, в течение которого команда по разработке создает завершенные и потенциально готовые к выпуску инкременты продукта. Спринты в Scrum следуют строгому ритму, и их продолжительность фиксирована, обычно от одной до четырех недель.
🚩Основные характеристики спринта
🟠Фиксированная продолжительность
Каждый спринт имеет одинаковую продолжительность, установленную в начале проекта. Это помогает создать предсказуемый ритм работы.
🟠Определение цели спринта
В начале каждого спринта команда определяет цель спринта, которая представляет собой основное направление работы на этот период.
🟠Планирование спринта (Sprint Planning)
Процесс, где команда выбирает элементы из бэклога продукта (Product Backlog) и планирует их выполнение в течение спринта. Это включает оценку задач и распределение обязанностей внутри команды.
🟠Ежедневные встречи (Daily Scrum)
Короткие (до 15 минут) встречи команды каждый день спринта для обсуждения прогресса, выявления препятствий и планирования работы на день.
🟠Создание инкремента
Команда работает над созданием инкремента, который представляет собой законченную часть продукта, готовую для демонстрации и, возможно, выпуска.
🟠Обзор спринта (Sprint Review)
В конце спринта проводится встреча, на которой команда демонстрирует инкремент продукта заинтересованным сторонам и обсуждает достигнутые результаты и дальнейшие шаги.
🟠Анализ спринта (Sprint Retrospective)
Встреча, на которой команда анализирует прошедший спринт, обсуждает, что прошло хорошо, что можно улучшить, и разрабатывает планы по улучшению процессов в будущих спринтах.
🚩Цели спринта
🟠Достижение конкретного результата
Каждый спринт направлен на создание определенного набора функций или улучшений, которые добавляют ценность продукту.
🟠Инспекция и адаптация
Регулярные обзоры и ретроспективы позволяют команде постоянно улучшать процессы и продукцию.
🟠Предсказуемость и прозрачность
Фиксированные сроки и регулярные встречи помогают поддерживать высокий уровень предсказуемости и прозрачности для всех участников проекта.
🚩Плюсы
🟠Повышение фокуса команды
Команда сосредотачивается на достижении конкретных целей в течение ограниченного времени, что повышает продуктивность.
🟠Гибкость
Каждый спринт предоставляет возможность пересмотреть приоритеты и адаптировать план работы в зависимости от изменяющихся условий и требований.
🟠Постоянное улучшение
Регулярные ретроспективы способствуют постоянному улучшению рабочих процессов и взаимодействия в команде.
Ставь 👍 и забирай 📚 Базу знаний
🤔 Как расшифровывается REST?
REST (Representational State Transfer) — это архитектурный стиль взаимодействия систем через HTTP. Он основан на представлении ресурсов как URL и использовании стандартных HTTP-методов (GET, POST, PUT, DELETE) для работы с этими ресурсами.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🤔 Расскажи про отличие REST от SOAP?
Это два различных архитектурных подхода к созданию веб-сервисов.
🚩Архитектура и протоколы
🟠REST
Это архитектурный стиль, который использует стандартные HTTP методы (GET, POST, PUT, DELETE) для работы с ресурсами. REST не привязан к какому-либо конкретному протоколу, хотя наиболее часто используется с HTTP/HTTPS. Ресурсы в REST представляются URI (Uniform Resource Identifiers). RESTful сервисы часто возвращают данные в формате JSON или XML, хотя возможны и другие форматы.
🟠SOAP
Это протокол для обмена структурированными информационными сообщениями в сетях. SOAP в основном использует XML для кодирования сообщений. SOAP может работать поверх различных протоколов, включая HTTP, SMTP, TCP и другие. SOAP использует WSDL (Web Services Description Language) для описания доступных операций и типов данных.
🚩Простота и гибкость
🟠REST
Более прост в использовании и легче интегрируется с современными веб-технологиями. REST не требует строгих стандартов для сообщений, что делает его более гибким и удобным для разработчиков. RESTful API легче кэшировать и масштабировать.
🟠SOAP
SOAP более сложен в использовании и требует строгого следования стандартам. SOAP поддерживает более сложные операции и транзакции, такие как безопасность WS-Security и надежную доставку сообщений. SOAP обеспечивает высокий уровень безопасности и надежности, что делает его подходящим для корпоративных решений.
🚩Стандарты и расширения
🟠REST
Не имеет официальных стандартов, однако следует принципам RESTful архитектуры, таким как использование статeless сервиса и кэширования. REST полагается на стандартные методы HTTP и расширяемые форматы данных.
🟠SOAP
SOAP имеет строгие стандарты и спецификации, установленные W3C. SOAP поддерживает множество расширений для обеспечения безопасности, транзакций и других корпоративных требований.
🟠REST
Использует стандартные HTTP методы для выполнения CRUD операций (Create, Read, Update, Delete). RESTful API более интуитивно понятен для разработчиков, знакомых с HTTP.
🟠SOAP
SOAP поддерживает выполнение сложных операций с помощью сообщений с определенными действиями. SOAP более подходящ для выполнения сложных бизнес-логик и транзакций.
Ставь 👍 и забирай 📚 Базу знаний
🤔 Какие виды запросов есть?
В PHP, при работе с базами данных, основные типы запросов — SELECT (извлечение данных), INSERT (добавление), UPDATE (изменение) и DELETE (удаление). Существуют также запросы для управления структурой базы данных, например, CREATE и ALTER TABLE. Более сложные операции включают JOIN для объединения данных из нескольких таблиц.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
+9
Помощь в трудоустройстве в IT-сфере!
В России из-за дефицита айтишников запустили бесплатную программу по обучению IT-специалистов. Теперь любой желающий может попробовать себя в IT с полного нуля и начать обучение бесплатно!
Узнайте про дальнейшее трудоустройство в ведущие IT-компании для восполнения кадрового дефицита.
Для этого нужно:
- Перейти по ссылке
- Заполнить анкету и ответить на вопросы (занимает менее 3 минут)
- На основании ваших ответов вы сразу узнаете, подходит ли вам сфера IT и сможете ли вы в ней работать
Перейти на сайт
#реклама 16+
urban-university.ru
О рекламодателе
🤔 Как узнать свободное место на диске в консоли Linux?
В Linux есть несколько команд, которые позволяют узнать свободное место на диске.
🚩Команда `df`
🟠`df -h`
Выводит информацию в удобочитаемом формате (например, в мегабайтах или гигабайтах).
df -h
🟠`df -T`
Отображает тип файловой системы вместе с информацией о дисковом пространстве.
df -T
🚩Команда `du`
🟠`du -sh`
Отображает общий размер текущей директории в удобочитаемом формате.
du -sh
🟠`du -h --max-depth=1`
Показывает размеры директорий на одном уровне вложенности.
du -h --max-depth=1
🚩Дополнительные команды
🟠`lsblk`
Показывает информацию о блоковых устройствах, таких как диски и их разделы.
lsblk
🟠`fdisk -l`
Показ всех разделов и информации о них (требует root-доступа).
sudo fdisk -l
Ставь 👍 и забирай 📚 Базу знанийВерстаешь?
Оцени 7 причин пройти наш бесплатный интенсив по Frontend-разработке:
1. Ты сверстаешь веб-сайт на HTML + CSS;
2. Оживишь страницу с помощью JavaScript;
3. Используешь фронтенд-фреймворк Angular;
4. Подключишь Backend и загрузишь сайт на хостинг;
5. Получишь советы по доработке своего проекта;
6. Добавишь в портфолио 1 качественный проект;
7. Получишь в подарок чек-лист «45 мест для поиска работы».
А главное, ты проведёшь 7 дней в приятной компании Fullstack-разработчика с 10-летним стажем – Романа Чернова.
👉 Проскочить на интенсив бесплатно
Начинаем уже завтра.
🔥 С нас обучение, практика и помощь с выходом на фриланс.
🤔 Чем отличается GET от POST?
GET и POST — это два различных метода HTTP для отправки данных на сервер:
GET используется для получения данных с сервера, и параметры передаются в URL. Он ограничен размером данных и не должен изменять состояние сервера.
POST используется для отправки данных на сервер, например, при отправке форм, и данные передаются в теле запроса. Это более безопасный метод для отправки больших данных и может изменять состояние сервера.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
+9
Помощь в трудоустройстве в IT-сфере!
В России из-за дефицита айтишников запустили бесплатную программу по обучению IT-специалистов. Теперь любой желающий может попробовать себя в IT с полного нуля и начать обучение бесплатно!
Узнайте про дальнейшее трудоустройство в ведущие IT-компании для восполнения кадрового дефицита.
Для этого нужно:
- Перейти по ссылке
- Заполнить анкету и ответить на вопросы (занимает менее 3 минут)
- На основании ваших ответов вы сразу узнаете, подходит ли вам сфера IT и сможете ли вы в ней работать
Перейти на сайт
#реклама 16+
urban-university.ru
О рекламодателе
