Backend собеседования
466 subscribers
104 photos
104 links
Подготовка к собеседованиям на позицию Backend-разработчик

Еще больше разобранных вопросов для подготовки на сайте https://frontview-it.ru

Все IT вакансии - @frontview_all_vacancies
Download Telegram
🟠 Цикл for в C++ используется для повторения блока кода определенное количество раз. Он состоит из трех частей: инициализация, условие и итерация.


#include <iostream>

int main() {
// Инициализация: int i = 0
// Условие: i < 5
// Итерация: i++
for (int i = 0; i < 5; i++) {
std::cout << "Итерация: " << i << std::endl; // Вывод текущей итерации
}
return 0;


Инициализация выполняется один раз в начале. Условие проверяется перед каждой итерацией. Итерация выполняется после каждого прохода цикла. Если условие ложно, цикл завершает выполнение.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Backend собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍82
❗️Связь "один ко многим" в SQL реализуется с помощью внешнего ключа. В таблице "многие" создается столбец, который ссылается на первичный ключ таблицы "один".


CREATE TABLE Authors (
AuthorID INT PRIMARY KEY, -- Первичный ключ таблицы авторов
Name VARCHAR(100)
);

CREATE TABLE Books (
BookID INT PRIMARY KEY, -- Первичный ключ таблицы книг
Title VARCHAR(100),
AuthorID INT, -- Внешний ключ, ссылающийся на таблицу Authors
FOREIGN KEY (AuthorID) REFERENCES Authors(AuthorID)
);


В данном примере один автор может иметь много книг.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Backend собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥2
Task представляет собой асинхронную операцию в C#, которая может выполняться в фоновом режиме, не блокируя основной поток, и позволяет управлять её завершением. Task<T> является обобщённой версией Task, которая возвращает результат типа T после завершения асинхронной операции, что позволяет получать данные из асинхронных методов.

✈️ Backend собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍51
Динамическая типизация означает, что переменные не имеют фиксированного типа данных. Тип переменной определяется во время выполнения, в зависимости от присвоенного значения. Это позволяет гибко работать с переменными, но требует осторожности, чтобы избежать ошибок.

Пример:


$value = 10; // Переменная $value имеет тип integer
$value = "Hello"; // Теперь $value имеет тип string


PHP автоматически преобразует типы, когда это необходимо, например, при сложении числа и строки:


$sum = 5 + "10"; // Результат: 15, строка "10" преобразуется в число


Динамическая типизация упрощает код, но может привести к неожиданным результатам, если не учитывать преобразования типов.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Backend собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍51
Встроенные функции — это функции, которые доступны по умолчанию и не требуют дополнительного импорта модулей. Они предоставляют базовые операции, такие как преобразование типов, работа с коллекциями и выполнение математических вычислений.

✈️ Backend собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍61
🛑Docker — это платформа для автоматизации развертывания, масштабирования и управления приложениями в контейнерах.

🛑Контейнеры позволяют упаковать приложение и все его зависимости в единый исполняемый компонент, который может работать в любом окружении, обеспечивая консистентность и изоляцию от системы, на которой он запускается.

🛑Это упрощает процесс разработки, тестирования и развертывания приложений, делая его более эффективным и предсказуемым.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Backend собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
Структура — это пользовательский тип данных, который позволяет объединять данные разных типов в одном логическом блоке, что упрощает управление сложными данными. Для объявления структуры используется ключевое слово type, за которым следует имя структуры и ключевое слово struct с набором полей, определяющих её свойства.

✈️ Backend собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍51
▶️ Java Memory Model (JMM) определяет, как потоки в Java взаимодействуют через память. Он описывает правила чтения и записи переменных, обеспечивая предсказуемость многопоточного поведения.

JMM гарантирует, что изменения в одной нити видны другим, регулируя порядок операций. Ключевые концепции включают видимость, атомарность и упорядоченность.

Пример: volatile гарантирует видимость изменений переменной между потоками.


class Example {
private volatile boolean flag = true;

void stop() {
flag = false; // Изменение видимо другим потокам
}
}


Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Backend собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍71
Указатель в C++ — это переменная, которая хранит адрес другой переменной в памяти, позволяя напрямую работать с этой памятью. Указатель объявляется с использованием символа *, например, int* ptr, где ptr — это указатель на переменную типа int.

✈️ Backend собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Реализация связи "многие ко многим" требует создания промежуточной таблицы, которая будет содержать внешние ключи, ссылающиеся на первичные ключи связанных таблиц. Это позволяет каждой записи из одной таблицы соответствовать нескольким записям из другой и наоборот.


-- Таблица студентов
CREATE TABLE Students (
StudentID INT PRIMARY KEY,
Name VARCHAR(100)
);

-- Таблица курсов
CREATE TABLE Courses (
CourseID INT PRIMARY KEY,
Title VARCHAR(100)
);

-- Промежуточная таблица для связи "многие ко многим"
CREATE TABLE StudentCourses (
StudentID INT,
CourseID INT,
FOREIGN KEY (StudentID) REFERENCES Students(StudentID),
FOREIGN KEY (CourseID) REFERENCES Courses(CourseID),
PRIMARY KEY (StudentID, CourseID)
);


Эта структура позволяет одному студенту записываться на несколько курсов и одному курсу иметь нескольких студентов.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Backend собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
String представляет собой неизменяемый объект, что означает, что любые операции над строками создают новые экземпляры, тогда как StringBuilder предназначен для изменения строк без создания новых объектов, что делает его более эффективным для частых операций изменения строк. Использование StringBuilder рекомендуется, когда требуется выполнять множество операций над строками, чтобы избежать избыточного расхода памяти.

✈️ Backend собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥2
define() и const используются для объявления констант, но имеют различия.

1️⃣ define() создает константу во время выполнения. Она глобальна и доступна везде. Можно использовать для любых типов данных, кроме объектов. Пример:

define('PI', 3.14); // Определение константы PI


2️⃣ const используется для объявления констант на этапе компиляции. Она может быть объявлена только в области видимости класса или глобально. Поддерживает только скалярные значения. Пример:

const PI = 3.14; // Определение константы PI


const быстрее, так как обрабатывается на этапе компиляции.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Backend собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍51
🔴В Python основные типы данных включают в себя: числа (int, float, complex), строки (str), списки (list), кортежи (tuple), множества (set), словари (dict), а также логический тип (bool) и тип None. Эти типы данных позволяют эффективно работать с различными структурами данных и значениями в программах.

✈️ Backend собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍62
OAuth2 — это протокол, который позволяет приложениям выполнять аутентификацию и авторизацию без передачи паролей. Он использует токены доступа для предоставления ограниченного доступа к ресурсам.

Основные шаги:

1️⃣ Клиент запрашивает авторизацию у пользователя.
2️⃣ Пользователь предоставляет разрешение.
3️⃣ Клиент получает код авторизации.
4️⃣ Клиент обменивает код на токен доступа.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Backend собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍42
Горутина в Go создаётся с помощью ключевого слова go, за которым следует вызов функции или метода. Для запуска горутины достаточно написать go перед функцией, и она будет выполняться асинхронно, позволяя основной программе продолжать выполнение.

✈️ Backend собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥2
EnumSet — это специализированная коллекция в Java, предназначенная для работы с перечислениями (enum). Она реализует интерфейс Set и обеспечивает высокую производительность при работе с битовыми представлениями значений перечисления. Преимущества использования EnumSet включают более компактное хранение данных и простоту в использовании.

Создать EnumSet можно с помощью статических методов, например, EnumSet.of, EnumSet.allOf и EnumSet.noneOf. EnumSet поддерживает операции добавления, удаления и проверки наличия элементов.


enum Color { RED, GREEN, BLUE }

EnumSet<Color> colors = EnumSet.of(Color.RED, Color.GREEN); // Создание EnumSet с выбранными цветами

colors.add(Color.BLUE); // Добавление элемента

if (colors.contains(Color.RED)) { // Проверка наличия элемента
// Действия, если элемент найден
}


Использование EnumSet позволяет легко управлять группами связанных значений enum, делая код более читабельным и поддерживаемым.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Backend собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍61
Клонирование существующего репозитория выполняется с помощью команды git clone, за которой следует URL репозитория. Это создает локальную копию всех файлов и истории изменений удаленного репозитория.

✈️ Backend собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍51
📝 Класс в C++ — это пользовательский тип данных, который объединяет данные и методы для работы с ними. Класс является основой объектно-ориентированного программирования и позволяет инкапсулировать данные, управлять доступом к ним и определять поведение объектов.

Объявление класса начинается с ключевого слова class, за которым следует имя класса и тело класса в фигурных скобках. Внутри тела объявляются члены класса: переменные (поля) и функции (методы). По умолчанию все члены класса являются приватными, если не указано иное.


class MyClass {
private:
int privateVar; // Приватное поле

public:
void setVar(int value) { // Публичный метод
privateVar = value;
}

int getVar() { // Публичный метод
return privateVar;
}
};


В этом примере privateVar — приватное поле, доступное только внутри класса. Методы setVar и getVar — публичные, их можно вызывать извне для управления значением privateVar.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Backend собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Подзапросы — это запросы, вложенные внутрь другого запроса. Они используются для выполнения промежуточных вычислений или фильтрации данных перед их использованием в основном запросе. Подзапросы могут возвращать одно значение, набор строк или таблицу.

Пример использования подзапроса для фильтрации:


SELECT name
FROM employees
WHERE department_id = (
SELECT id
FROM departments
WHERE name = 'Sales'
);


Здесь подзапрос возвращает идентификатор отдела "Sales", который затем используется в основном запросе для выбора сотрудников из этого отдела.

Подзапросы могут быть вложены в SELECT, FROM, WHERE, HAVING и другие части SQL-запроса. Они помогают структурировать сложные запросы и выполнять их поэтапно.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Backend собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍51
🔥 Сборка мусора (Garbage Collection, GC) в .NET — это автоматический процесс управления памятью, который освобождает ресурсы, занимаемые объектами, когда они больше не используются. Основная цель GC — предотвращение утечек памяти.

Память в .NET делится на три поколения: 0, 1 и 2. Новые объекты создаются в поколении 0. Если объект переживает сборку мусора, он перемещается в следующее поколение. Чаще всего сборка мусора происходит в поколении 0, реже — в поколении 1, и ещё реже — в поколении 2.

GC работает в нескольких режимах: Workstation (для клиентских приложений) и Server (для серверных приложений). В режиме Server используется несколько потоков для сборки мусора, что повышает производительность.

Пример кода, показывающий, как можно влиять на GC:


// Принудительная сборка мусора
GC.Collect();
GC.WaitForPendingFinalizers();

// Отключение финализации для объекта
GC.SuppressFinalize(this);


GC автоматически определяет, когда нужно освободить память, но в некоторых случаях можно вручную вызвать сборку мусора, хотя это не рекомендуется делать без необходимости.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Backend собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍51