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

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

Все IT вакансии - @frontview_all_vacancies
Download Telegram
Реализация связи "многие ко многим" требует создания промежуточной таблицы, которая будет содержать внешние ключи, ссылающиеся на первичные ключи связанных таблиц. Это позволяет каждой записи из одной таблицы соответствовать нескольким записям из другой и наоборот.


-- Таблица студентов
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
Основные методы оптимизации PHP включают использование кэширования (например, OPcache), минимизацию запросов к базе данных и оптимизацию кода. Также важно уменьшать количество подключаемых файлов и использовать эффективные алгоритмы.

✈️ Backend собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥1
👉 Для проверки типа переменной используется функция type() или isinstance().


x = 42
print(type(x) == int) # True, проверяет, является ли тип переменной x целым числом
print(isinstance(x, int)) # True, проверяет, является ли x экземпляром int или его подкласса


type() возвращает точный тип объекта, а isinstance() позволяет проверить принадлежность к типу или его подклассам, что делает его более гибким для работы с наследованием.

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

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

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

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

✈️ Backend собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
🔲Интерфейсы в Go определяют набор методов, которые должны быть реализованы типом. Для создания интерфейса используется ключевое слово interface.


type Writer interface {
Write([]byte) (int, error)
}


В этом примере интерфейс Writer требует реализации метода Write, который принимает срез байт и возвращает количество записанных байт и ошибку.

Чтобы тип реализовал интерфейс, он должен содержать все методы интерфейса с точно такой же сигнатурой. Например:


type File struct {
name string
}

func (f File) Write(data []byte) (int, error) {
// Логика записи данных
return len(data), nil
}


Тип File реализует интерфейс Writer, так как содержит метод Write с соответствующей сигнатурой. Это позволяет использовать File везде, где требуется Writer.

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

✈️ Backend собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍61
➡️ Методы в Java объявляются внутри класса. Они состоят из модификаторов доступа, возвращаемого типа, имени метода и параметров (если есть).


public class Calculator {
public int add(int a, int b) {
return a + b;
}
}


В этом примере метод add объявлен с модификатором доступа public, возвращает тип int и принимает два параметра типа int. Метод выполняет сложение двух чисел и возвращает результат.

Методы могут быть статическими, если используется ключевое слово static. Такие методы вызываются через имя класса, а не через экземпляр объекта.


public class MathUtils {
public static int multiply(int a, int b) {
return a * b;
}
}


Здесь метод multiply статический и может быть вызван как MathUtils.multiply(2, 3).

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

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

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


class Animal {
public:
void eat() {
// Логика питания
}
};

class Dog : public Animal {
public:
void bark() {
// Логика лая
}
};


Здесь класс Dog наследует методы класса Animal, такие как eat(), и добавляет собственный метод bark().

Модификаторы доступа (public, protected, private) определяют, как члены родительского класса будут доступны в дочернем. Например, public наследование сохраняет уровень доступа членов родительского класса.

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

✈️ Backend собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
JOIN в SQL используется для объединения строк из двух или более таблиц на основе связанного между ними столбца. Основные типы JOIN:

- INNER JOIN: возвращает строки, где есть совпадение в обеих таблицах.
- LEFT JOIN: возвращает все строки из левой таблицы и совпадающие строки из правой. Если совпадений нет, возвращается NULL.
- RIGHT JOIN: аналогичен LEFT JOIN, но возвращает все строки из правой таблицы.
- FULL JOIN: возвращает строки, если есть совпадение в одной из таблиц.


SELECT orders.id, customers.name
FROM orders
INNER JOIN customers ON orders.customer_id = customers.id;


В этом примере объединяются таблицы orders и customers по полю customer_id, чтобы получить заказы с именами клиентов.

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

✈️ Backend собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
▶️ Сборка в .NET — это единица развертывания и исполнения, которая содержит скомпилированный код, метаданные и ресурсы. Сборки могут быть двух типов: исполняемые (EXE) и библиотечные (DLL).

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

Пример создания сборки:

// Простой класс в сборке
public class Calculator
{
public int Add(int a, int b) => a + b;
}


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

Сборки могут быть приватными (для одного приложения) или общедоступными (GAC — Global Assembly Cache), если они используются несколькими приложениями.

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

✈️ Backend собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍51
В PHP поддерживаются следующие типы данных:

Скалярные типы:
- int — целые числа.
- float (или double) — числа с плавающей точкой.
- string — строки.
- bool — логические значения (true/false).

Составные типы:
- array — массивы, которые могут содержать элементы разных типов.
- object — экземпляры классов.

Специальные типы:
- null — отсутствие значения.
- resource — ссылка на внешний ресурс (например, файл или соединение с базой данных).

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

$number = 42; // int
$price = 19.99; // float
$name = "PHP"; // string
$isActive = true; // bool
$colors = ["red", "green", "blue"]; // array


PHP — язык с динамической типизацией, поэтому тип переменной определяется в момент присваивания значения.

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

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