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

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

Все IT вакансии - @frontview_all_vacancies
Download Telegram
В 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
▶️Множество в 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
👍3
Микросервисная архитектура обеспечивает лучшее масштабирование и гибкость, так как каждый сервис может разрабатываться, развертываться и масштабироваться независимо. Она также упрощает поддержку и обновление системы, так как изменения в одном сервисе не влияют на другие.

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


ClassName obj = new ClassName();


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


ClassName obj = new ClassName(arg1, arg2);


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

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

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


git log


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


git log --oneline


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

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

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


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
👍3
▶️ Индексы в SQL — это структуры данных, которые ускоряют поиск и сортировку в таблицах. Они работают как указатели на данные, позволяя СУБД быстрее находить строки, соответствующие условиям запроса.


CREATE INDEX idx_name ON users (name);


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

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

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


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


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

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

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

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

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