PHP | Вопросы собесов
رفتن به کانال در Telegram
Сайт: https://easyoffer.ru/ Все каналы: t.me/+xGeAw6ckJ4liYzQy Контакт для рекламы: @easyoffer_adv
نمایش بیشتر2 343
مشترکین
-224 ساعت
-57 روز
-2430 روز
آرشیو پست ها
🤔 Как в Doctrine реализовать отношение "Has Many Through"?
В Doctrine отношение "Has Many Through" (многие ко многим через промежуточную таблицу) реализуется через связь ManyToMany с дополнительной моделью. Это полезно, когда нужно хранить дополнительные данные о связи между объектами.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Repost from easyoffer
💡 В EasyOffer 2.0 появится фильтрация вопросов по грейдам и типам интервью!
📊 Например, вот вероятности ТОП-30 вопросов, которые задают на HR-скрининге Python-разработчику уровня Middle/Senior. Данные основаны на 53 реальных интервью.
97% Какие у тебя зарплатные ожидания
73% Какие у тебя есть вопросы
44% Какие критерии при выборе будущей работы
41% Расскажи о себе
38% Почему ищешь работу
35% Расскажи про свой опыт
35% Расскажи про проект на предыдущей работе
32% Почему уволился с предыдущей работы
29% Где территориально сейчас живешь/находишься
23% Есть ли другие предложения по работе
17% Есть ли военный билет
17% Почему хочешь сменить работу
17% Как проводишь свободное время
17% Расскажи про задачи на предыдущей работе
17% Сколько коммерческого опыта работы с Python
17% С какими БД работал
14% Находишься ли в активном поиске работы
14% С каким стеком работаешь
14% Почему решил откликнуться на нашу вакансию
14% Какой текущий статус поиска работы
11% Почему решил стать программистом
11% С какими фреймворками работал
11% Какую зарплату получал на предыдущей работе
11% Работаешь ли в настоящий момент
11% На какой грейд себя оцениваешь
11% Как быстро можешь приступить к работе после получения офера
11% Расскажи про свои pet-проекты
8% Какие знаешь типы данных в Python
8% Что такое декоратор в Python
8% Что ищешь на новой работе
🚀 Скоро стартует краудфандинговая кампания, которая поможет ускорить разработку EasyOffer 2.0.
Первые спонсоры получат уникальные лимитированные награды!
📢 Если вам это интересно, подписывайтесь на канал 👉 этот телеграм канал
🤔 Что известно о MVC?
Это паттерн проектирования, широко используемый для создания структурированных и масштабируемых приложений. Он разделяет приложение на три основных компонента: Модель (Model), Представление (View) и Контроллер (Controller).
🚩Основные компоненты
🟠Модель (Model)
Модель отвечает за данные и бизнес-логику приложения. Она управляет доступом к данным, логикой их обработки и взаимодействием с базой данных. В приложении электронной коммерции модель будет содержать классы, представляющие продукты, пользователей и заказы, а также методы для работы с этими данными (например, добавление нового продукта, обработка заказа и т.д.).
🟠Представление (View)
Представление отвечает за отображение данных пользователю. Оно формирует пользовательский интерфейс на основе данных, предоставляемых моделью. Веб-страницы, отображающие список продуктов, форму регистрации или страницу заказа, являются примерами представлений.
🟠Контроллер (Controller)
Контроллер действует как посредник между моделью и представлением. Он обрабатывает входные данные от пользователя, взаимодействует с моделью для выполнения необходимых операций и выбирает соответствующее представление для отображения результата. Контроллер может обрабатывать запрос на добавление нового продукта, получать данные от модели и затем отображать обновленный список продуктов через представление.
🚩Примеры
Model
// app/Models/Product.php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Product extends Model {
protected $fillable = ['name', 'price', 'description'];
}
Controller
// app/Http/Controllers/ProductController.php
namespace App\Http\Controllers;
use App\Models\Product;
use Illuminate\Http\Request;
class ProductController extends Controller {
public function index() {
$products = Product::all();
return view('products.index', compact('products'));
}
public function store(Request $request) {
Product::create($request->all());
return redirect()->route('products.index');
}
}
View
<!-- resources/views/products/index.blade.php -->
<!DOCTYPE html>
<html>
<head>
<title>Products</title>
</head>
<body>
<h1>Products</h1>
<ul>
@foreach($products as $product)
<li>{{ $product->name }} - ${{ $product->price }}</li>
@endforeach
</ul>
<form action="{{ route('products.store') }}" method="POST">
@csrf
<input type="text" name="name" placeholder="Product Name">
<input type="text" name="price" placeholder="Product Price">
<textarea name="description" placeholder="Product Description"></textarea>
<button type="submit">Add Product</button>
</form>
</body>
</html>
🚩Плюсы
➕Разделение обязанностей
Разделяет приложение на три компонента, каждый из которых отвечает за свою задачу. Это упрощает поддержку и масштабирование кода.
➕Улучшенная тестируемость
Разделение логики позволяет легко тестировать каждую часть приложения отдельно.
➕Гибкость и переиспользование
Компоненты MVC могут быть легко изменены или переиспользованы в других частях приложения или в других проектах.
➕Чистота и упорядоченность кода
Способствует созданию чистого и упорядоченного кода, что упрощает работу в команде и ускоряет разработку.
Ставь 👍 и забирай 📚 Базу знанийКак масштабировать команду? — Нанять аутсорс
А как проще всего работать с аутсорсерами?
— В Битрикс24 Коллабах. Это платформа для работы с внешними специалистами внутри вашего Битрикс24.
Выглядит как чат, только удобнее. Встроены задачи, встречи, файлы. Для коротких и долгосрочных проектов. Особенно удобно для взаимодействия команд, где обсуждается несколько параллельных задач.
Узнать больше
#реклама 16+
collabs.bitrix24.ru
О рекламодателе
🤔 Чем аутентификация отличается от авторизации?
- Аутентификация – процесс проверки личности пользователя (например, ввод логина и пароля).
- Авторизация – проверка прав пользователя на доступ к определенному ресурсу (например, доступ к админ-панели).
Аутентификация идет первой, затем система проверяет, какие ресурсы доступны пользователю.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🤔 Где мы делаем фильтрацию данных?
Фильтрацию данных в PHP можно делать в нескольких местах в зависимости от контекста. Основные области фильтрации:
🚩Фильтрация входных данных
Когда мы получаем данные от пользователя (
$_GET, $_POST, $_REQUEST), важно очищать их от нежелательных значений.
$name = filter_input(INPUT_POST, 'name', FILTER_SANITIZE_STRING);
$email = filter_input(INPUT_POST, 'email', FILTER_VALIDATE_EMAIL);
Фильтрация массива $_POST через filter_var_array()
$filters = [
'name' => FILTER_SANITIZE_STRING,
'email' => FILTER_VALIDATE_EMAIL,
'age' => FILTER_VALIDATE_INT
];
$filteredData = filter_var_array($_POST, $filters);
🚩Фильтрация перед сохранением в базу данных
Перед вставкой в SQL важно удалять потенциально опасные символы, чтобы избежать SQL-инъекций.
$db = new PDO("mysql:host=localhost;dbname=test", "root", "password");
$stmt = $db->prepare("INSERT INTO users (name, email) VALUES (:name, :email)");
$stmt->execute([
':name' => htmlspecialchars($_POST['name']),
':email' => $_POST['email']
]);
🚩Фильтрация данных внутри кода
Если данные поступают из разных источников, мы можем использовать фильтрующие функции PHP:
Очистка строки от HTML
$cleanText = strip_tags("<h1>Hello</h1>"); // "Hello"
Удаление пробелов
$trimmed = trim(" example "); // "example"
Приведение к числу
$number = filter_var("42abc", FILTER_SANITIZE_NUMBER_INT); // 42
🚩Фильтрация перед выводом (защита от XSS)
Перед выводом в браузер очищаем данные от HTML/JS-кода, чтобы злоумышленник не внедрил скрипты.
echo htmlspecialchars("<script>alert('Hacked!')</script>");
// Выведет: <script>alert('Hacked!')</script>
Ставь 👍 и забирай 📚 Базу знанийОнлайн-интенсив для ИТ-специалистов в Открытых школах Т1
Уже есть опыт работы в ИТ, но хочешь прокачать скилы и продвинуться в карьере?
Тогда скорее залетай на бесплатный ИТ-интенсив в Открытых школах Т1.
Открытые школы — это возможность усилить свои навыки и получить оффер в ИТ-холдинг Т1. И все это за месяц, онлайн и в удобное вечернее время.
Что ты получишь?
✅ бесплатное обучение в гибком формате: по вечерам, онлайн, из любого города РФ и РБ.
✅ материалы от HR для прокачки резюме и подготовки к интервью в Т1.
✅ много практики и уникальный рыночный опыт.
✅ поддержку опытных преподавателей и карьерный фаст-трек до мидла в Т1 для лучших выпускников.
✅ реальный шанс получить оффер в Т1.
Более 1000 специалистов уже прошли этот путь — теперь твоя очередь!
Регистрация до 14 марта!
Подать заявку
#реклама 16+
t1.ru
О рекламодателе
🤔 Какие уровни ошибок есть в PHP?
Имеет разные уровни ошибок, которые можно контролировать с помощью error_reporting().
Основные уровни:
- E_ERROR – критические ошибки (скрипт завершится).
- E_WARNING – предупреждения (скрипт продолжит выполнение).
- E_NOTICE – замечания (например, использование неинициализированной переменной).
- E_DEPRECATED – устаревшие функции, которые могут исчезнуть в будущих версиях PHP.
- E_PARSE – синтаксические ошибки (ошибки парсинга).
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🤔 Расскажи про функциональное программирование?
Функциональное программирование (FP) – это парадигма программирования, в которой основное внимание уделяется использованию функций как первичных элементов кода. Код строится из чистых функций, без изменения состояний и без побочных эффектов.
🚩Зачем нужно функциональное программирование?
🟠Меньше багов
чистые функции всегда дают один и тот же результат для одних и тех же входных данных.
🟠Легко тестировать
код предсказуем и изолирован.
🟠Меньше зависимостей
нет глобальных переменных и скрытых состояний.
🟠Легко писать параллельные программы
нет изменяемых данных, значит, нет конфликтов в многопоточности.
🚩Принципы функционального программирования
Чистые функции (Pure Functions)
Иммутабельность (Immutable Data)
Функции высшего порядка (Higher-Order Functions)
Функциональные композиции
Отсутствие побочных эффектов
🟠Чистые функции
Это функция, которая:
Возвращает один и тот же результат для одинаковых аргументов.
Не изменяет внешние переменные и не имеет побочных эффектов.
$total = 0;
function addToTotal($num) {
global $total;
$total += $num;
return $total;
}
Пример чистой функции
function add($a, $b) {
return $a + $b;
}
echo add(3, 4); // 7
🟠Иммутабельность
В FP данные не изменяются – вместо изменения переменных создаются новые.
$arr = [1, 2, 3];
$arr[] = 4; // Изменяет массив
Пример иммутабельности
$arr = [1, 2, 3];
$newArr = array_merge($arr, [4]); // Создает новый массив
🟠Функции высшего порядка
Это функции, которые:
Принимают другие функции в качестве аргументов.
Возвращают другие функции.
function applyFunction($func, $value) {
return $func($value);
}
$square = function ($x) {
return $x * $x;
};
echo applyFunction($square, 5); // 25
🟠Функциональные композиции
Вместо длинных процедур можно сочетать функции.
function double($x) {
return $x * 2;
}
function increment($x) {
return $x + 1;
}
function compose($f, $g) {
return function ($x) use ($f, $g) {
return $f($g($x));
};
}
$doubleThenIncrement = compose('increment', 'double');
echo $doubleThenIncrement(3); // (3 * 2) + 1 = 7
🟠Отсутствие побочных эффектов
Функции не должны изменять внешние данные (например, глобальные переменные, файлы, БД).
function logMessage($message) {
file_put_contents("log.txt", $message, FILE_APPEND);
}
Функция без побочных эффектов:
function formatMessage($message) {
return strtoupper($message);
}
echo formatMessage("hello"); // HELLO
🚩Функциональное программирование в PHP
PHP – это не чисто функциональный язык, но поддерживает FP-стиль:
array_map() – применяет функцию ко всем элементам массива.
array_filter() – фильтрует массив по функции.
array_reduce() – сворачивает массив в одно значение.
$numbers = [1, 2, 3, 4, 5];
// Умножаем каждый элемент на 2
$doubled = array_map(fn($x) => $x * 2, $numbers);
print_r($doubled); // [2, 4, 6, 8, 10]
// Фильтруем только четные числа
$evens = array_filter($numbers, fn($x) => $x % 2 === 0);
print_r($evens); // [2, 4]
// Суммируем все числа
$sum = array_reduce($numbers, fn($carry, $x) => $carry + $x, 0);
echo $sum; // 15
Ставь 👍 и забирай 📚 Базу знанийКвартиры в ЖК SOKOLNIKI! Рассрочка до 2,5 лет, ПВ от 10%
Видовые квартиры бизнес+ класса возле парка от 28 м² от 400 000 руб./м²
Первый взнос от 10%
Гибкие программы рассрочки до 2,5х лет с переходом в ипотеку
Квартиры от 28м² до 135м²
От студий до семейных фоматов с большими гостиными
Колясочные на этаже
Все для удобства родителей
Дизайнерские лобби
Стильные входные группы
Подземный паркинг
Системы хранения велосипедов и самокатов
Детский сад
Закрытая территория
Девелопер STONE
18 лет на рынке недвижимости. 27 проектов
м. "Сокольники", 12 мин. от парка
Перейти на сайт
Проектная декларация на сайте https://наш.дом.рф/. Застройщик: ООО СЗ «КВАРТАЛ СОКОЛЬНИКИ». Финансовые услуги оказывает: ПАО "Совкомбанк".
#реклама
stone-sokolniki.ru
О рекламодателе
🤔 Что означает понятие "жаность"?
Вероятно, опечатка или редкий термин. В программировании может означать:
- Структурность и формальность кода.
- Приверженность принципам (SOLID, DRY, KISS).
- Жесткость архитектуры – сложность изменения системы без слома логики.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🤔 Расскажи про полиморфизм
Полиморфизм — это одна из ключевых концепций ООП (объектно-ориентированного программирования), которая позволяет объектам разного типа использовать один и тот же интерфейс. Это значит, что один метод может работать с разными типами данных, но при этом давать корректный результат.
🚩Зачем нужен полиморфизм?
🟠Гибкость кода
можно легко заменять одни классы другими, не меняя общий код.
🟠Упрощение поддержки
код становится понятнее и легче для расширения.
🟠Сокращение дублирования
один общий интерфейс может использоваться разными классами.
🚩Виды полиморфизма
Полиморфизм через наследование (override, переопределение методов)
Полиморфизм через интерфейсы (реализация одного интерфейса разными классами)
🚩Полиморфизм через наследование
Допустим, у нас есть базовый класс
Animal, у которого есть метод makeSound(). Разные животные будут издавать разные звуки, но все они будут использовать этот метод.
class Animal {
public function makeSound() {
return "Some sound";
}
}
class Dog extends Animal {
public function makeSound() {
return "Woof!";
}
}
class Cat extends Animal {
public function makeSound() {
return "Meow!";
}
}
function printSound(Animal $animal) {
echo $animal->makeSound() . PHP_EOL;
}
printSound(new Dog()); // Выведет "Woof!"
printSound(new Cat()); // Выведет "Meow!"
🚩Полиморфизм через интерфейсы
Иногда классы не связаны через наследование, но должны поддерживать общий метод. Для этого используется интерфейс:
interface Shape {
public function getArea(): float;
}
class Circle implements Shape {
private $radius;
public function __construct($radius) {
$this->radius = $radius;
}
public function getArea(): float {
return pi() * $this->radius * $this->radius;
}
}
class Rectangle implements Shape {
private $width, $height;
public function __construct($width, $height) {
$this->width = $width;
$this->height = $height;
}
public function getArea(): float {
return $this->width * $this->height;
}
}
function printArea(Shape $shape) {
echo "Площадь: " . $shape->getArea() . PHP_EOL;
}
printArea(new Circle(5)); // Выведет площадь круга
printArea(new Rectangle(4, 6)); // Выведет площадь прямоугольника
Ставь 👍 и забирай 📚 Базу знанийУстроиться аналитиком в Яндекс за выходные
1–2 марта проводим Weekend Offer Analytics. До 24 февраля оставьте заявку на участие, 1 марта пройдите технические собеседования, а 2 марта познакомьтесь с командами и получите офер.
В мероприятии участвует 11 команд: Большие данные, Алиса, Ecom-сценарии Поиска, Автономный транспорт, Поиск с Нейро, Карты, Рекламные технологии, Коммерческий департамент, Международные проекты Поиска в Турции и Казахстане, Crowd, Приложение «Яндекс с Алисой». Вы сможете пообщаться с менеджерами и выбрать проект, который покажется самым интересным.
Зарегистрироваться
#реклама 16+
yandex.ru
О рекламодателе
🤔 О чем шаблон Bridge?
Шаблон Bridge разделяет абстракцию и реализацию, позволяя изменять их независимо.
Применяется, когда:
- Нужно избежать жесткой привязки между абстракцией и реализацией.
- Требуется разделение логики и деталей реализации (например, разные устройства вывода).
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🤔 Расскажи о 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
Ставь 👍 и забирай 📚 Базу знаний🤔 Что такое понятие кардинальности?
Это количество уникальных значений в столбце базы данных.
- Высокая кардинальность – много уникальных значений (например, id, email).
- Низкая кардинальность – мало уникальных значений (например, gender, status).
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🤔 Как типы связи реализуются в Larevel?
В Laravel связи между моделями реализуются через Eloquent ORM. Eloquent предоставляет удобные методы для работы с отношениями (relations) между таблицами в базе данных.
🚩Один к одному (`One to One`)
Каждая модель
User имеет один Profile.
class User extends Model
{
public function profile()
{
return $this->hasOne(Profile::class);
}
}
В модели Profile
class Profile extends Model
{
public function user()
{
return $this->belongsTo(User::class);
}
}
Теперь можно получить профиль пользователя так
$user = User::find(1);
$profile = $user->profile; // Получаем профиль пользователя
🟠Один ко многим (`One to Many`)
Каждый Post может иметь много Comment.
В модели Post
class Post extends Model
{
public function comments()
{
return $this->hasMany(Comment::class);
}
}
В модели Comment
class Comment extends Model
{
public function post()
{
return $this->belongsTo(Post::class);
}
}
Теперь можно получить все комментарии к посту:
$post = Post::find(1);
$comments = $post->comments; // Коллекция комментариев
🟠Многие ко многим (`Many to Many`)
Каждый User может подписаться на несколько Role, и наоборот.
В Laravel для связи многие ко многим нужна промежуточная таблица role_user (название должно быть singular_singular в алфавитном порядке).
В модели User
class User extends Model
{
public function roles()
{
return $this->belongsToMany(Role::class);
}
}
В модели Role
class Role extends Model
{
public function users()
{
return $this->belongsToMany(User::class);
}
}
Теперь можно получить роли пользователя:
$user = User::find(1);
$roles = $user->roles;
Добавить роль:
$user->roles()->attach($roleId);
Удалить роль
$user->roles()->detach($roleId);
Синхронизировать (удалить старые и добавить новые):
$user->roles()->sync([1, 2, 3]);
🟠Связь через другую таблицу (`Has One / Has Many Through`)
Например, у нас есть Country, User, Post. Мы хотим получить все посты в стране.
class Country extends Model
{
public function posts()
{
return $this->hasManyThrough(Post::class, User::class);
}
}
Теперь можно получить все посты страны
$country = Country::find(1);
$posts = $country->posts;
🟠Полиморфные связи (`Polymorphic Relations`)
Позволяет разным моделям использовать одну таблицу для хранения данных.
Пример: у нас есть Post и Video, к которым могут быть Comment
В модели Comment
class Comment extends Model
{
public function commentable()
{
return $this->morphTo();
}
}
В модели Post
class Post extends Model
{
public function comments()
{
return $this->morphMany(Comment::class, 'commentable');
}
}
В модели Video
class Video extends Model
{
public function comments()
{
return $this->morphMany(Comment::class, 'commentable');
}
}
Использование
$post = Post::find(1);
$post->comments()->create(['content' => 'Отличный пост!']);
$video = Video::find(1);
$video->comments()->create(['content' => 'Крутое видео!']);
Ставь 👍 и забирай 📚 Базу знаний🤔 Почему AVG() считает среднее?
Функция AVG() складывает все значения в столбце и делит на их количество. Она учитывает только ненулевые значения, но игнорирует NULL.
Если NULL есть в данных, то результат может отличаться от ожидаемого среднего.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Repost from easyoffer
– Помощь с pet-проектом
– Составление roadmap
– Общая консультация
– Проведение код-ревью и mock-собеседования
– Помощь с трудоустройством
Все это и многое другое может Ментор. Он обеспечит вам необходимый boost, ускорит и упростит вход в IT.
🔥 Узнай список топовых менторов
✴ Многие из них предлагают бесплатную первую консультацию
🤔 Какое отличие у протоколов tcp и udp?
Это два основных транспортных протокола в интернете. Они имеют разные характеристики и используются для различных целей.
🚩Основные отличия
🟠Надежность
TCP: Обеспечивает надежную передачу данных. Он использует механизмы установления соединения, подтверждение получения (ACK), контроль потерь пакетов, повторную передачу потерянных пакетов и контроль потока. Это гарантирует, что данные будут доставлены корректно и в правильном порядке.
UDP: Не обеспечивает надежную передачу данных. Нет подтверждений получения, нет повторной передачи потерянных пакетов и нет контроля потока. Это делает передачу менее надежной, но более быстрой и с меньшими накладными расходами.
🟠Установление соединения
TCP: Перед началом передачи данных устанавливается соединение с помощью процедуры "трехстороннего рукопожатия" (three-way handshake). Это означает, что обе стороны сначала обмениваются сигналами SYN и ACK для установления соединения.
UDP: Не требует установления соединения. Пакеты (датаграммы) просто отправляются к получателю без предварительного установления соединения.
🟠Порядок доставки
TCP: Обеспечивает доставку данных в правильном порядке. Если пакеты приходят в неправильном порядке, TCP собирает их в правильном порядке перед передачей приложению.
UDP: Не гарантирует порядок доставки. Пакеты могут приходить в произвольном порядке, и приложение должно обрабатывать их соответствующим образом, если это необходимо.
🟠Пропускная способность и задержки
TCP: Из-за механизмов контроля потока и подтверждений имеет большие накладные расходы и, следовательно, может быть медленнее. Это особенно заметно на сетях с высокой задержкой или потерей пакетов.
UDP: Из-за отсутствия контроля потока и подтверждений имеет меньшие накладные расходы, что может привести к меньшим задержкам и большей пропускной способности. Подходит для приложений, где важна скорость, а не надежность.
🟠Применение
TCP: Используется для приложений, где важна надежность и порядок передачи данных, таких как веб-браузеры (HTTP/HTTPS), электронная почта (SMTP, IMAP, POP3), файловые передачи (FTP), удаленный доступ (SSH).
UDP: Используется для приложений, где важна скорость и где потеря некоторых пакетов не критична, таких как потоковое видео и аудио (VoIP, IPTV), онлайн-игры, службы доменных имен (DNS).
🚩Примеры использования
TCP
HTTP/HTTPS: Веб-серфинг
SMTP: Отправка электронной почты
IMAP/POP3: Получение электронной почты
FTP: Передача файлов
SSH: Безопасный удаленный доступ
UDP
DNS: Запросы доменных имен
VoIP: Передача голоса через IP
IPTV: Потоковое видео
Онлайн-игры: Быстрая передача данных игровой логики
NTP: Синхронизация времени
Ставь 👍 и забирай 📚 Базу знаний
اکنون در دسترس! پژوهش تلگرام ۲۰۲۵ — مهمترین بینشهای سال 
