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

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

Все IT вакансии - @frontview_all_vacancies
Download Telegram
Канал в Go — это механизм для безопасной передачи данных между горутинами. Каналы позволяют синхронизировать выполнение горутин и обмениваться значениями определенного типа.


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


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


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


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

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

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


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


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

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

✈️ Backend собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥1
Первичный ключ (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
👍3
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
👍2
Логические операторы 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
👍3
Делегирует создание объектов подклассам, позволяя изменять тип создаваемых экземпляров без модификации основного кода.


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
👍3👨‍💻1