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

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

Все IT вакансии - @frontview_all_vacancies
По рекламе - @frontviewit
Download Telegram
▶️Множество в Python создается с помощью фигурных скобок {} или функции set(). Особенность множества заключается в том, что оно содержит только уникальные элементы и не поддерживает порядок.


my_set = {1, 2, 3, 4} # Создание множества


Если передать список или строку в set(), будут удалены дубликаты:


unique_elements = set([1, 2, 2, 3]) # {1, 2, 3}


Множества поддерживают операции объединения, пересечения и разности.

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

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

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


func readFile(filename string) {
file, err := os.Open(filename)
if err != nil {
log.Fatal(err)
}
defer file.Close() // Закрытие файла будет выполнено перед выходом из функции

// Работа с файлом
}


Функции, вызванные с defer, выполняются в порядке LIFO (последний добавленный — первый выполненный). Это гарантирует, что ресурсы освобождаются в правильном порядке.

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

✈️ Backend собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
➡️ Для создания объекта в Java используется ключевое слово new, за которым следует вызов конструктора класса. Конструктор инициализирует объект и выделяет память под него.


ClassName obj = new ClassName();


Если у класса есть параметризованный конструктор, можно передать аргументы:


ClassName obj = new ClassName(arg1, arg2);


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

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

✈️ Backend собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
🟠Для просмотра истории коммитов используется команда git log. Она отображает список коммитов в обратном хронологическом порядке, включая хэш, автора, дату и сообщение коммита.


git log


Для более компактного вывода можно добавить флаг --oneline, который покажет только хэш и сообщение коммита.


git log --oneline


Чтобы ограничить количество отображаемых коммитов, используется флаг -n, например, -n 5 покажет последние 5 коммитов.

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

✈️ Backend собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
Для создания объекта класса необходимо объявить переменную этого класса. Если у класса есть конструктор по умолчанию, объект создается без передачи аргументов. Если конструктор требует параметры, они передаются при создании объекта.


class MyClass {
public:
MyClass() {
// Конструктор по умолчанию
}
};

MyClass obj; // Создание объекта


Если конструктор принимает параметры, объект создается так:


MyClass obj(arg1, arg2); // Передача аргументов в конструктор


Также объект можно создать динамически с помощью оператора new, что возвращает указатель на объект.


MyClass* obj = new MyClass(); // Динамическое создание объекта


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

✈️ Backend собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
▶️ Индексы в SQL — это структуры данных, которые ускоряют поиск и сортировку в таблицах. Они работают как указатели на данные, позволяя СУБД быстрее находить строки, соответствующие условиям запроса.


CREATE INDEX idx_name ON users (name);


В примере создается индекс для столбца name в таблице users. Это ускоряет поиск по имени, но может замедлить операции вставки и обновления, так как индексы требуют дополнительных ресурсов для поддержания актуальности.

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

✈️ Backend собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
🟡 В C# основные типы данных делятся на встроенные (примитивные) и пользовательские. К встроенным относятся целочисленные (int, long), вещественные (float, double), символьный (char), логический (bool) и строковый (string).


int number = 42;
double pi = 3.14;
bool isTrue = true;
string text = "Hello";


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

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

✈️ Backend собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
▶️ Laravel — это PHP-фреймворк для разработки веб-приложений, известный своей простотой и элегантностью. Основные особенности включают встроенную поддержку ORM (Eloquent), систему маршрутизации, шаблонизатор Blade и механизм миграций для работы с базой данных.


Route::get('/user', [UserController::class, 'index']);


Пример маршрута, который связывает URL с методом контроллера. Laravel также предоставляет инструменты для аутентификации, кеширования и обработки очередей, что ускоряет разработку.

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

✈️ Backend собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
F-строки — это способ форматирования строк в Python, начиная с версии 3.6. Они позволяют встраивать выражения внутри строки с использованием фигурных скобок {}, что делает код более читаемым и удобным.


name = "Alice"
age = 30
message = f"My name is {name} and I am {age} years old."


В примере переменные name и age подставляются непосредственно в строку. F-строки поддерживают любые выражения, включая вызовы функций и арифметические операции.

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

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


def example_function(**kwargs):
for key, value in kwargs.items():
print(f"{key}: {value}")


Внутри функции kwargs становится словарем, где ключи — это имена аргументов, а значения — соответствующие им данные. Это часто используется для гибкости и расширяемости функций.

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

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

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

✈️ Backend собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
Канал в Go — это механизм для безопасной передачи данных между горутинами. Каналы позволяют синхронизировать выполнение горутин и обмениваться значениями определенного типа.


ch := make(chan int) // Создание канала для передачи целых чисел


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


ch <- 42 // Отправка значения в канал
value := <-ch // Получение значения из канала


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

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

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

HashSet хранит элементы в хэш-таблице, что обеспечивает вставку, удаление и поиск за время O(1) в среднем случае. Элементы не упорядочены.


Set<String> hashSet = new HashSet<>();
hashSet.add("apple");
hashSet.add("banana");


TreeSet использует красно-черное дерево для хранения элементов, что гарантирует их сортировку в натуральном порядке или по компаратору. Операции вставки, удаления и поиска выполняются за O(log n).


Set<String> treeSet = new TreeSet<>();
treeSet.add("apple");
treeSet.add("banana");


Выбор между HashSet и TreeSet зависит от необходимости сортировки и требуемой производительности.

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

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


int x = 10;
int* ptr = &x; // ptr хранит адрес переменной x


Указатели могут быть использованы для доступа к значению по адресу с помощью оператора разыменования *. Например, *ptr вернёт значение переменной x.

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

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


CREATE TABLE Users (
id INT PRIMARY KEY,
username VARCHAR(50) NOT NULL
);


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

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

✈️ Backend собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
Boxing — это процесс преобразования значимого типа (value type) в ссылочный тип (object), что позволяет хранить его в куче. Unboxing — обратный процесс, при котором значение из ссылочного типа извлекается обратно в значимый тип.


int x = 42;
object obj = x; // Boxing
int y = (int)obj; // Unboxing


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

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

✈️ Backend собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
Логические операторы and, or и not работают с булевыми значениями, но поддерживают short-circuit evaluation (ленивое вычисление).

result = x and y  # Возвращает x, если оно ложно, иначе y  
result = x or y # Возвращает x, если оно истинно, иначе y
result = not x # Инвертирует булево значение


Операторы and/or возвращают последнее вычисленное значение, а не обязательно True/False.

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

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


abstract class Creator {
abstract Product factoryMethod();
}

class ConcreteCreator extends Creator {
Product factoryMethod() {
return new ConcreteProduct();
}
}


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

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

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