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

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

Все IT вакансии - @frontview_all_vacancies
Download Telegram
🟠 Функция main() в пакете main в языке Go играет ключевую роль, так как она является точкой входа для выполнения программы. Когда программа запускается, Go ищет пакет main и вызывает функцию main(). Без этой функции программа не будет компилироваться.


package main

import "fmt"

// Функция main() является точкой входа программы
func main() {
fmt.Println("Hello, World!")
}


🟠 Пакет main и функция main() обязательны для создания исполняемого файла. Все остальные функции и пакеты вызываются из main(), что делает её центральной частью программы.

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

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

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

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

✈️ Backend собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥2
🟠 Цикл 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