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

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

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

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


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


def greet(name):
return f"Hello, {name}"


В данном примере создана функция greet, которая принимает один аргумент name и возвращает строку с приветствием. Функция может быть вызвана с передачей аргумента:


message = greet("Alice")


Функции могут иметь параметры по умолчанию, что делает их более гибкими:


def greet(name="Guest"):
return f"Hello, {name}"


Если аргумент не передан, будет использовано значение по умолчанию.

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

✈️ Backend собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍51
Паттерн Adapter (Адаптер) — структурный шаблон проектирования, который позволяет объектам с несовместимыми интерфейсами работать вместе. Адаптер выступает прослойкой, преобразуя интерфейс одного класса в интерфейс, ожидаемый другим классом.


interface Target {
void request();
}

class Adaptee {
void specificRequest() {
// Логика, которая должна быть адаптирована
}
}

class Adapter implements Target {
private Adaptee adaptee;

Adapter(Adaptee adaptee) {
this.adaptee = adaptee;
}

@Override
public void request() {
adaptee.specificRequest();
}
}


В примере Adapter реализует интерфейс Target и использует объект Adaptee, чтобы адаптировать его метод specificRequest под метод request. Это позволяет клиенту работать с Adaptee через интерфейс Target, не изменяя его исходный код.

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

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


go func() {
fmt.Println("Выполняется в горутине")
}()


Горутины создаются с помощью ключевого слова go. Они работают поверх потоков ОС, но потребляют меньше ресурсов. Планировщик Go автоматически распределяет их по доступным ядрам процессора.


func main() {
go task("A")
go task("B")
time.Sleep(time.Second) // Ожидание завершения горутин
}


Для синхронизации горутин используются каналы (chan) или примитивы из пакета sync. Горутины завершаются при завершении функции или при выходе из программы.

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

✈️ Backend собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
🟥 Чтобы создать новую ветку, используется команда git branch.


git branch new-feature


Эта команда создает ветку с именем new-feature, но не переключает на нее. Для создания и переключения одновременно используется команда git checkout -b.


git checkout -b new-feature


После создания ветки можно начать работу с ней. Чтобы отправить новую ветку в удаленный репозиторий, используется команда git push.


git push -u origin new-feature


Флаг -u связывает локальную ветку с удаленной, чтобы в дальнейшем можно было использовать git push без указания имени ветки.

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

✈️ Backend собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
➡️ STL (Standard Template Library) — это библиотека, предоставляющая набор шаблонов для работы с контейнерами, алгоритмами, итераторами и функторами. Она позволяет эффективно управлять данными, используя готовые реализации структур, таких как векторы, списки, множества и ассоциативные массивы.


#include <vector>
#include <algorithm>

std::vector<int> numbers = {3, 1, 4, 1, 5};
std::sort(numbers.begin(), numbers.end()); // Сортировка вектора


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

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

✈️ Backend собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
▶️DDL (Data Definition Language) используется для определения и изменения структуры базы данных, например, создания, изменения или удаления таблиц. Основные команды: CREATE, ALTER, DROP.


CREATE TABLE users (id INT PRIMARY KEY, name VARCHAR(50));


DML (Data Manipulation Language) предназначен для работы с данными внутри таблиц: вставка, обновление, удаление и выборка. Основные команды: INSERT, UPDATE, DELETE, SELECT.


INSERT INTO users (id, name) VALUES (1, 'Alice');


DDL работает со структурой, а DML — с содержимым таблиц.

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

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


class Person {
public string Name;
public int Age;

// Конструктор с параметрами
public Person(string name, int age) {
Name = name;
Age = age;
}
}


В этом примере конструктор принимает два параметра и присваивает их значения полям объекта. Если конструктор не определён, компилятор создаёт конструктор по умолчанию без параметров.

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

✈️ Backend собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
▶️Для открытия файла для чтения в PHP используется функция fopen() с режимом "r". Она возвращает указатель на файл, который можно использовать для дальнейшего чтения.


$file = fopen("example.txt", "r");
if ($file) {
while (($line = fgets($file)) !== false) {
echo $line;
}
fclose($file);
} else {
echo "Не удалось открыть файл.";
}


Функция fgets() читает файл построчно. После завершения работы с файлом его необходимо закрыть с помощью fclose(). Если файл не существует или недоступен, fopen() вернёт false.

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

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