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

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

Відкрити в Telegram

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

Показати більше
2 343
Підписники
-124 години
-47 днів
-2430 день
Архів дописів
🤔 Какая из следующих функций используется для получения текущей даты и времени в PHP?
Anonymous voting

Что такое транзакции ? Спросят с вероятностью 13% Транзакции в контексте баз данных представляют собой последовательность операций, которые выполняются как единое целое. Они обеспечивают выполнение всех операций в рамках транзакции либо полностью, либо ничего. Это свойство транзакций делает их важными для обеспечения целостности и консистентности данных. Основные характеристики: 1️⃣Atomicity (Атомарность): ✅Транзакция должна быть атомарной, что означает, что все операции в рамках транзакции должны быть выполнены успешно или ни одна из них не должна быть выполнена. Если какая-либо часть транзакции не удается, вся транзакция откатывается, и данные возвращаются в исходное состояние. 2️⃣Consistency (Согласованность): ✅Транзакция должна переводить базу данных из одного согласованного состояния в другое согласованное состояние. Это означает, что после завершения транзакции все правила и ограничения базы данных остаются непротиворечивыми. 3️⃣Isolation (Изоляция): ✅Транзакции должны выполняться в изоляции друг от друга, так что операции одной транзакции не влияют на операции другой. В зависимости от уровня изоляции, параллельные транзакции могут быть ограничены в доступе к данным, которые модифицируются другими транзакциями. 4️⃣Durability (Долговечность): ✅После завершения транзакции (и фиксации изменений), изменения должны быть постоянными, даже в случае сбоя системы. Это гарантируется сохранением изменений на долговременном хранении, например, на диске. Рассмотрим пример банковского перевода, где важно гарантировать, что деньги списываются с одного счета и зачисляются на другой в рамках одной транзакции.
START TRANSACTION;

UPDATE accounts SET balance = balance - 100 WHERE account_id = 1;
UPDATE accounts SET balance = balance + 100 WHERE account_id = 2;

COMMIT;
В этом примере:START TRANSACTION начинает новую транзакцию. ✅UPDATE уменьшает баланс на одном счете и увеличивает на другом. ✅COMMIT фиксирует транзакцию, делая изменения постоянными. Если в ходе выполнения транзакции произойдет ошибка (например, недостаточно средств на счете), можно откатить изменения:
ROLLBACK;
Преимущества 1️⃣Целостность данных: ✅Обеспечивает целостность данных, гарантируя, что все операции в транзакции выполнены полностью или вообще не выполнены. 2️⃣Согласованность: ✅Поддерживает согласованность базы данных, так как все транзакции переводят базу данных из одного согласованного состояния в другое. 3️⃣Изоляция: ✅Обеспечивает изоляцию транзакций, что предотвращает взаимное влияние транзакций и гарантирует корректное выполнение параллельных операций. 4️⃣Восстановление после сбоев: ✅Транзакции обеспечивают долговечность изменений, гарантируя, что зафиксированные изменения не будут потеряны в случае сбоя системы. Транзакции — это последовательности операций в базах данных, которые выполняются атомарно, согласованно, изолированно и долговечно. Они обеспечивают целостность и согласованность данных, изоляцию параллельных операций и долговечность изменений, что делает их важными для надежного управления данными в системах баз данных. 👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти к списку 385 вопросов на PHP разработчика. Ставь 👍 если нравится контент 🔐 База собесов | 🔐 База тестовых

🤔 Что возвращает функция strlen() в PHP?
Anonymous voting

Что такое первичный ключ ? Спросят с вероятностью 13% Первичный ключ (primary key) — это уникальный идентификатор записи в таблице базы данных. Он служит для обеспечения уникальности каждой записи и позволяет однозначно идентифицировать каждую строку в таблице. Первичный ключ играет важную роль в организации и управлении данными в реляционных базах данных. Основные характеристики 1️⃣Уникальность: ✅Значение первичного ключа должно быть уникальным для каждой записи в таблице. Это гарантирует, что не будет двух записей с одинаковым значением первичного ключа. 2️⃣Неизменность: ✅Значение первичного ключа не должно изменяться после того, как оно было установлено. Это позволяет поддерживать целостность данных и их связей. 3️⃣Отсутствие NULL: ✅Поле, выбранное в качестве первичного ключа, не должно содержать NULL значений. Каждая запись должна иметь определенное значение ключа. Рассмотрим пример таблицы users в базе данных:
CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) NOT NULL,
    email VARCHAR(100) NOT NULL
);
В этом примере: ✅Поле id является первичным ключом. Оно автоматически увеличивается для каждой новой записи благодаря атрибуту AUTO_INCREMENT. ✅Каждая запись в таблице users будет иметь уникальное значение в поле id. Создание таблицы и вставка записи с первичным ключом:
<?php
$dsn = 'mysql:host=localhost;dbname=testdb';
$username = 'root';
$password = '';

try {
    $pdo = new PDO($dsn, $username, $password);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    // Создание таблицы
    $pdo->exec("
        CREATE TABLE IF NOT EXISTS users (
            id INT AUTO_INCREMENT PRIMARY KEY,
            username VARCHAR(50) NOT NULL,
            email VARCHAR(100) NOT NULL
        )
    ");

    // Вставка записи
    $stmt = $pdo->prepare("INSERT INTO users (username, email) VALUES (:username, :email)");
    $stmt->execute(['username' => 'john_doe', 'email' => 'john@example.com']);

    echo "Запись успешно добавлена с id: " . $pdo->lastInsertId();
} catch (PDOException $e) {
    echo "Ошибка: " . $e->getMessage();
}
?>
Преимущества 1️⃣Целостность данных: Гарантирует уникальность каждой записи и предотвращает дублирование данных. 2️⃣Производительность: Ускоряет поиск, обновление и удаление записей, так как индексируется автоматически. 3️⃣Связи между таблицами: Обеспечивает установление и поддержание связей между таблицами через внешние ключи (foreign keys). Первичный ключ — это уникальный идентификатор записи в таблице базы данных, который обеспечивает уникальность, неизменность и отсутствие NULL значений для каждой записи. 👉 Можно посмотреть примеры как отвечают люди на этот вопрос, или перейти к списку 385 вопросов на PHP разработчика. Ставь 👍 если нравится контент 🔐 База собесов | 🔐 База тестовых

🤔 Какой функцией можно использовать для удаления пробелов (или других символов) из начала и конца строки в PHP?
Anonymous voting

👨‍💻 Джун: Слушай, вот стажировку я прошел, где теперь можно чекнуть вакансии на работу? 🍷 Мидл: Ооо, тебе помогут ребята с
👨‍💻 Джун: Слушай, вот стажировку я прошел, где теперь можно чекнуть вакансии на работу? 🍷 Мидл: Ооо, тебе помогут ребята с канала Джун работает 💯 Карьеру нужно начинать с хорошими работодателями. Твое резюме будет ликовать, ведь контент выходит каждый день, работа ждет тебя, мой друг! 😏 Не упускай возможность и подписывайся, чтобы не потерять

Чем отличается left join от right join ? Спросят с вероятностью 7% LEFT JOIN и RIGHT JOIN для объединения двух таблиц на основе определенного условия, но они различаются тем, как они обрабатывают строки из левой и правой таблиц. LEFT JOIN (или LEFT OUTER JOIN) Возвращает все строки из левой таблицы и соответствующие строки из правой таблицы. Если нет соответствующих строк в правой таблице, результат будет содержать NULL для всех столбцов правой таблицы.
SELECT *
FROM table1
LEFT JOIN table2
ON table1.id = table2.id;
Левая таблица (table1): Все строки. ✅Правая таблица (table2): Только строки, которые соответствуют условиям соединения, или NULL, если соответствия нет. RIGHT JOIN (или RIGHT OUTER JOIN) Возвращает все строки из правой таблицы и соответствующие строки из левой таблицы. Если нет соответствующих строк в левой таблице, результат будет содержать NULL для всех столбцов левой таблицы.
SELECT *
FROM table1
RIGHT JOIN table2
ON table1.id = table2.id;
Левая таблица (table1): Только строки, которые соответствуют условиям соединения, или NULL, если соответствия нет. ✅Правая таблица (table2): Все строки. Примеры для иллюстрации employees: | id | name | |----|-----------| | 1 | Alice | | 2 | Bob | | 3 | Charlie | salaries: | id | salary | |----|--------| | 2 | 5000 | | 3 | 7000 | | 4 | 6000 | LEFT JOIN:
SELECT employees.id, employees.name, salaries.salary
FROM employees
LEFT JOIN salaries
ON employees.id = salaries.id;
Результат: | id | name | salary | |----|---------|--------| | 1 | Alice | NULL | | 2 | Bob | 5000 | | 3 | Charlie | 7000 | RIGHT JOIN:
SELECT employees.id, employees.name, salaries.salary
FROM employees
RIGHT JOIN salaries
ON employees.id = salaries.id;
Результат: | id | name | salary | |----|---------|--------| | 2 | Bob | 5000 | | 3 | Charlie | 7000 | | 4 | NULL | 6000 | Ключевые отличия 1️⃣Объединяемые строки: ✅LEFT JOIN: Возвращает все строки из левой таблицы и соответствующие строки из правой таблицы. ✅RIGHT JOIN: Возвращает все строки из правой таблицы и соответствующие строки из левой таблицы. 2️⃣Результат для отсутствующих соответствий: ✅LEFT JOIN: Заполняет NULL для отсутствующих соответствий в правой таблице. ✅RIGHT JOIN: Заполняет NULL для отсутствующих соответствий в левой таблице. Краткое резюмеLEFT JOIN: Возвращает все строки из левой таблицы и соответствующие строки из правой таблицы или NULL, если соответствий нет. ✅RIGHT JOIN: Возвращает все строки из правой таблицы и соответствующие строки из левой таблицы или NULL, если соответствий нет. Эти операции помогают объединить данные из разных таблиц в зависимости от ваших конкретных требований к выборке данных. 👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти к списку 385 вопросов на PHP разработчика. Ставь 👍 если нравится контент 🔐 База собесов | 🔐 База тестовых

📕 Прогер, как ты расширяешь свой кругозор в сфере IT? Не достаточно знать что-то одно, мысля глобально и изучая смежные отра
📕 Прогер, как ты расширяешь свой кругозор в сфере IT? Не достаточно знать что-то одно, мысля глобально и изучая смежные отрасли, ты не только становишься умнее, но и увеличиваешь свою востребованность и свой заработок. 🗿 Не обязательно читать заумные книги и смотреть подкасты - это долго. У нас есть решение: 🔥 Полезные статьи - концентрат знаний. 🔥 Советы - короткие сообщения, которые будут увеличивать твою эффективность. 🔥 Инструменты - tool-сайты в разы упростят и ускорят твою работу. 🧑‍💻 Время, силы, желание - ресурсы, которые нужно использовать с умом. Подпишись на канал Заметки прогера, IT ниша скажет "спасибо" за такого специалиста.

🤔 Какой из следующих модификаторов доступа запрещает доступ к свойству или методу класса из внешнего кода, но разрешает доступ из дочерних классов?
Anonymous voting

😭 Джун: Как мне найти работу в IT, если опыта нет? 🧑‍💻 Мидл: Просто зайди на канал Джун стажер и подбери стажировку по душ
😭 Джун: Как мне найти работу в IT, если опыта нет? 🧑‍💻 Мидл: Просто зайди на канал Джун стажер и подбери стажировку по душе. 📕 Админы отбирают самые сочные вакансии от ведущих компаний, к тому же контент выходит каждый день. 🔥 Не упускай возможность и подписывайся, чтобы не потерять

Чем в composer.json отличаются require и require-dev ? Спросят с вероятностью 13% В файле composer.json в Composer используются секции require и require-dev для управления зависимостями вашего проекта. Эти секции служат для разных целей, и понимание их различий важно для правильной организации зависимостей в вашем проекте. require Содержит список пакетов, которые необходимы для работы вашего проекта в любом окружении, будь то разработка, тестирование или продакшн. Эти зависимости необходимы для выполнения самого приложения. Пример composer.json с require:
{
    "name": "vendor/package",
    "description": "A sample package",
    "require": {
        "monolog/monolog": "^2.0"
    }
}
В этом примере: ✅Пакет monolog/monolog версии 2.0 или выше, но ниже 3.0, необходим для работы приложения. require-dev Содержит список пакетов, которые необходимы только для разработки и тестирования проекта. Эти зависимости не требуются для работы приложения в продакшн-окружении. Пример composer.json с require-dev:
{
    "name": "vendor/package",
    "description": "A sample package",
    "require": {
        "monolog/monolog": "^2.0"
    },
    "require-dev": {
        "phpunit/phpunit": "^9.5"
    }
}
В этом примере: ✅Пакет phpunit/phpunit версии 9.5 или выше, но ниже 10.0, необходим только для разработки и тестирования приложения. Как это используется Установка зависимостейВсе зависимости: При установке всех зависимостей, включая dev-зависимости, используется команда:
    composer install
  
Это установит пакеты, указанные в секциях require и require-dev. ✅Только продакшн-зависимости: При установке только продакшн-зависимостей используется флаг --no-dev:
    composer install --no-dev
  
Это установит только пакеты из секции require. Пример использования 1️⃣Файл `composer.json`:
        {
        "name": "vendor/package",
        "description": "A sample package",
        "require": {
            "monolog/monolog": "^2.0"
        },
        "require-dev": {
            "phpunit/phpunit": "^9.5"
        }
    }
    
2️⃣Установка всех зависимостей (включая dev-зависимости):
        composer install
    
3️⃣Установка только продакшн-зависимостей:
        composer install --no-dev
    
require: Содержит зависимости, необходимые для работы приложения во всех окружениях (продакшн, разработка и тестирование). ✅require-dev: Содержит зависимости, необходимые только для разработки и тестирования приложения, но не требуемые в продакшн-окружении. 👉 Можно посмотреть примеры как отвечают люди на этот вопрос, или перейти к списку 385 вопросов на PHP разработчика. Ставь 👍 если нравится контент 🔐 База собесов | 🔐 База тестовых

👨‍💻 Будущий специалист, ты знаешь, какая самая частая ошибка новичка в сфере IT? Отсутствие практики убивает в тебе потенциал ✈️ Как с этим бороться, мой друг? Найди работу и прокачивай свои скилы на конкретных задачах 🔥 У нас ты будешь находить большое количество вакансий каждый день. Понятие работы перестанет быть для тебя размытым. Подпишись на канал и не откладывай свой прогресс в долгий ящик.

🤔 Какой из ниже перечисленных методов используется для сортировки массива по значению в обратном порядке?
Anonymous voting

🧑‍💻 Если твой английский позволяет ответить только на вопрос "Do you speak English", то с этим нужно что-то делать, будучи программистом. 🫤 Ты в курсе, что ... - говорят по-английски — 20% из всех людей. - Большое кол-во IT документации написано на английском. Хочешь понимать код лучше? Изучи язык, который используется в его основе. 📕 На нашем канале ты постепенно будешь набираться опыта, в этом тебе помогут: - Тесты для изучения английского: проверьте свои знания на практике. - Английский через мемы: учите язык весело и с интересом. - Шпаргалки для повторения: закрепите знания быстро и эффективно. - Английский сленг программиста: станьте настоящим профи в коммуникации. 🔥 Маленький шаг в изучении иностранного откроет перед тобой большие возможности будущего специалиста и значительно повысит твое зп. 🌸 Подпишись, do it!

Как отнестись к тестовым заданиям ? Спросят с вероятностью 7% Тестовые задания — это распространенный метод оценки навыков и знаний кандидатов в процессе отбора на работу, особенно в технических и креативных областях. Они имеют свои плюсы и минусы, как для работодателей, так и для соискателей. Плюсы: 1️⃣Объективная оценка навыков: ✅Тестовые задания позволяют работодателям увидеть реальные навыки кандидата в действии, а не полагаться только на резюме и собеседование. ✅Задания часто моделируют реальные рабочие задачи, что помогает оценить, как кандидат справится с повседневной работой. 2️⃣Проверка практических знаний: ✅Тестовые задания позволяют оценить практические знания и умение применять их на практике, а не только теоретическую подготовку. 3️⃣Сравнение кандидатов: ✅Единообразные тестовые задания для всех кандидатов позволяют сравнить их навыки и подходы к решению задач на равных условиях. 4️⃣Отсеивание неподходящих кандидатов: ✅Тестовые задания помогают быстро отсеять кандидатов, которые не соответствуют требованиям позиции, что экономит время и ресурсы на дальнейшие этапы отбора. Минусы: 1️⃣Время и ресурсы: ✅Выполнение тестовых заданий может занимать много времени, что не всегда удобно для кандидатов, особенно если у них есть текущая работа или они участвуют в нескольких процессах отбора. ✅Разработка и проверка тестовых заданий также требует времени и ресурсов со стороны работодателя. 2️⃣Стресс для кандидатов: ✅Некоторые кандидаты могут испытывать стресс или дискомфорт при выполнении тестовых заданий, что может негативно сказаться на их результатах и не отражать их реальный уровень компетенции. 3️⃣Ограниченность задач: ✅Тестовые задания не всегда могут охватить весь спектр навыков, необходимых для выполнения работы. Задания могут быть узконаправленными и не отражать реальную сложность и многообразие задач на рабочем месте. 4️⃣Неоплачиваемая работа: ✅В некоторых случаях кандидаты могут чувствовать, что выполняют работу бесплатно, особенно если задания объемные и требуют значительных усилий. Рекомендации: 1️⃣Четкость и релевантность: Задания должны быть четкими и соответствовать реальным задачам, с которыми кандидат столкнется на работе. 2️⃣Ограничение по времени: Убедитесь, что выполнение задания не занимает слишком много времени. Два-три часа — разумное время для тестового задания. 3️⃣Обратная связь: Предоставляйте обратную связь по результатам выполнения задания, даже если кандидат не прошел на следующий этап. Это помогает кандидатам улучшаться и создает положительное впечатление о компании. 4️⃣Справедливость: Убедитесь, что задания оценивают именно те навыки, которые важны для позиции, и не требуют от кандидатов выполнения слишком большого объема работы. Тестовые задания являются эффективным инструментом оценки кандидатов, если они разработаны и используются правильно. Они помогают найти лучших кандидатов, способных эффективно выполнять работу, и дают кандидатам возможность продемонстрировать свои навыки в реальных условиях. 👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти к списку 385 вопросов на PHP разработчика. Ставь 👍 если нравится контент 🔐 База собесов | 🔐 База тестовых

🤔 Какой из ниже перечисленных методов используется для объединения массивов в PHP?
Anonymous voting

Чем отличается Stub от мока ? Спросят с вероятностью 13% В контексте тестирования программного обеспечения, особенно при использовании тестирования на основе объектов (например, в PHP с PHPUnit), термины "стаб" (stub) и "мок" (mock) относятся к созданию поддельных объектов или методов для имитации поведения реальных объектов. Они используются для изоляции тестируемого кода и проверки его поведения. Вот основные различия между стопами и мока: Стаб (Stub) ✅Используется для предоставления предопределенного ответа на вызовы методов, которые не влияют на проверку поведения тестируемого кода. Основная цель — заменить реальные зависимости и предоставить контролируемую среду для тестов. ✅Позволяют задать фиктивные данные, которые будут возвращены методами объекта. ✅Они не следят за вызовами методов или их параметрами.
class UserServiceTest extends TestCase {
    public function testGetUserName() {
        // Создаем стаб для UserRepository
        $userRepositoryStub = $this->createStub(UserRepository::class);
        
        // Настраиваем метод find на возврат заранее определенного результата
        $userRepositoryStub->method('find')
                           ->willReturn(new User('John Doe'));
        
        // Тестируем UserService с использованием стаба
        $userService = new UserService($userRepositoryStub);
        $this->assertEquals('John Doe', $userService->getUserName(1));
    }
}
Мок (Mock) ✅Используется для проверки взаимодействия между тестируемым кодом и его зависимостями. Моки могут устанавливать ожидания на вызовы методов, их количество и параметры, а также проверять, что эти ожидания были выполнены. ✅Следят за вызовами методов, позволяют устанавливать ожидания и проверять, что методы были вызваны определенное количество раз с определенными параметрами.
class UserServiceTest extends TestCase {
    public function testGetUserName() {
        // Создаем мок для UserRepository
        $userRepositoryMock = $this->createMock(UserRepository::class);
        
        // Настраиваем ожидания для метода find
        $userRepositoryMock->expects($this->once())
                           ->method('find')
                           ->with($this->equalTo(1))
                           ->willReturn(new User('John Doe'));
        
        // Тестируем UserService с использованием мока
        $userService = new UserService($userRepositoryMock);
        $this->assertEquals('John Doe', $userService->getUserName(1));
    }
}
Основные различия 1️⃣Цель: ✅Стаб: Предоставление предопределенных ответов, фокусировка на результатах методов. ✅Мок: Проверка взаимодействий между объектами, установка ожиданий на вызовы методов и их параметры. 2️⃣Проверка: ✅Стаб: Не проверяет, как и когда вызываются методы. ✅Мок: Проверяет вызовы методов, их количество и параметры. 3️⃣Использование: ✅Стаб: Используется, когда нужно подставить фиксированные данные и не важно, как они были получены. ✅Мок: Используется, когда нужно проверить, что определенные методы были вызваны определенное количество раз с определенными параметрами. ✅Стаб возвращает заранее определенные данные и не проверяет вызовы методов. ✅Мок устанавливает ожидания на вызовы методов и проверяет их выполнение. 👉 Можно посмотреть примеры как отвечают люди на этот вопрос, или перейти к списку 385 вопросов на PHP разработчика. Ставь 👍 если нравится контент 🔐 База собесов | 🔐 База тестовых

🤔 Что такое PSR в мире PHP?
Anonymous voting

Что такое односвязный список ? Спросят с вероятностью 7% Односвязный список (или просто связный список) — это базовая структура данных, состоящая из узлов, каждый из которых содержит данные и указатель (ссылку) на следующий узел в последовательности. Эта структура данных используется для хранения коллекции элементов и отличается от массивов тем, что элементы не обязательно расположены в последовательной памяти. Структура 1️⃣Узлы (Nodes): Каждый узел в односвязном списке состоит из двух частей: ✅Данные: Значение, которое хранится в узле (например, целое число, строка или объект). ✅Указатель: Ссылка на следующий узел в списке. 2️⃣Голова (Head): Указатель на первый узел списка. Если список пуст, голова указывает на null. 3️⃣Хвост (Tail): Последний узел списка, его указатель на следующий узел равен null. Пример реализаци
class Node:
    def __init__(self, data):
        self.data = data
        self.next = None

class SinglyLinkedList:
    def __init__(self):
        self.head = None

    def append(self, data):
        new_node = Node(data)
        if not self.head:
            self.head = new_node
            return
        last_node = self.head
        while last_node.next:
            last_node = last_node.next
        last_node.next = new_node

    def print_list(self):
        current_node = self.head
        while current_node:
            print(current_node.data, end=" -> ")
            current_node = current_node.next
        print("None")

# Использование односвязного списка
sll = SinglyLinkedList()
sll.append(1)
sll.append(2)
sll.append(3)
sll.print_list()  # Выведет: 1 -> 2 -> 3 -> None
Основные операции 1️⃣Вставка (Insertion): ✅В начало списка: Вставка нового узла в начало списка. ✅В конец списка: Вставка нового узла в конец списка (как показано в примере выше). ✅В середину списка: Вставка нового узла после определенного узла. 2️⃣Удаление (Deletion): ✅Удаление первого узла: Изменение указателя головы на второй узел. ✅Удаление последнего узла: Поиск предпоследнего узла и изменение его указателя на null. ✅Удаление узла в середине: Изменение указателя предыдущего узла на узел, следующий за удаляемым. 3️⃣Поиск (Search): Поиск узла с определенным значением, начиная с головы и проходя через каждый узел до нахождения нужного или достижения конца списка. 4️⃣Обход (Traversal): Прохождение через все узлы списка, обычно для выполнения какой-либо операции, такой как вывод данных всех узлов (как в методе print_list). Преимущества 1️⃣Динамическое управление памятью: Узлы могут быть добавлены и удалены без перераспределения всей структуры, что делает односвязные списки гибкими и экономными с точки зрения использования памяти. 2️⃣Простота вставки и удаления: Вставка и удаление узлов, особенно в начале списка, происходит за константное время O(1). Недостатки 1️⃣Сложность поиска: Поиск элемента в списке требует обхода всех узлов, что занимает линейное время O(n). 2️⃣Отсутствие прямого доступа: Нет возможности прямого доступа к элементу по индексу, как в массиве; необходимо пройти по всем предыдущим узлам, чтобы добраться до нужного. Односвязный список — это структура данных, состоящая из узлов, каждый из которых содержит данные и указатель на следующий узел. Он обеспечивает гибкое управление памятью и позволяет эффективно выполнять операции вставки и удаления. Однако поиск и доступ к элементам требуют линейного времени, что может быть неэффективно для больших списков. 👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти к списку 385 вопросов на PHP разработчика. Ставь 👍 если нравится контент 🔐 База собесов | 🔐 База тестовых

Как запустить собственный пет-проект и зарабатывать на нём зарплату senior-разработчика? На этом канале мы решаем сложные зад
Как запустить собственный пет-проект и зарабатывать на нём зарплату senior-разработчика? На этом канале мы решаем сложные задачи, которые часто попадаются на собеседованиях. Но что, если перевернуть игру и вместо работы на кого-то запустить собственный пет-проект, который будет приносить деньги? Александр Рогачев запустил телеграм-канал Indie Hackers, где рассказывает про пет-проекты, которые приносят стабильный доход своим создателям. Без венчурных инвестиций, без бизнес-планов и команды. Разве такое возможно? Да! Несколько примеров: Агрегатор вакансий c доходом в 4000$ / месяц Плагин для Chrome с доходом 20000₽ / месяц Если вы в поиске свежих идей, которые могут обеспечить стабильный пассивных доход, подписывайтесь на канал Indie Hackers. Уверен, что там вы найдёте то самое, что зажжёт огонь в вашем сердце ❤️‍🔥 ➡️ Ссылка для входа