Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤1
JMM гарантирует, что изменения в одной нити видны другим, регулируя порядок операций. Ключевые концепции включают видимость, атомарность и упорядоченность.
Пример:
volatile
гарантирует видимость изменений переменной между потоками.
class Example {
private volatile boolean flag = true;
void stop() {
flag = false; // Изменение видимо другим потокам
}
}
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤1
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)
);
Эта структура позволяет одному студенту записываться на несколько курсов и одному курсу иметь нескольких студентов.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥2
define('PI', 3.14); // Определение константы PI
const PI = 3.14; // Определение константы PI
const быстрее, так как обрабатывается на этапе компиляции.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤2
OAuth2 — это протокол, который позволяет приложениям выполнять аутентификацию и авторизацию без передачи паролей. Он использует токены доступа для предоставления ограниченного доступа к ресурсам.
Основные шаги:
1️⃣ Клиент запрашивает авторизацию у пользователя.
2️⃣ Пользователь предоставляет разрешение.
3️⃣ Клиент получает код авторизации.
4️⃣ Клиент обменивает код на токен доступа.
Ставь👍 , если было полезно!
Больше ответов на сайте👈
✈️ Backend собеседования
Основные шаги:
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤2
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥2
Создать 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, делая код более читабельным и поддерживаемым.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤1
Объявление класса начинается с ключевого слова
class
, за которым следует имя класса и тело класса в фигурных скобках. Внутри тела объявляются члены класса: переменные (поля) и функции (методы). По умолчанию все члены класса являются приватными, если не указано иное.
class MyClass {
private:
int privateVar; // Приватное поле
public:
void setVar(int value) { // Публичный метод
privateVar = value;
}
int getVar() { // Публичный метод
return privateVar;
}
};
В этом примере
privateVar
— приватное поле, доступное только внутри класса. Методы setVar
и getVar
— публичные, их можно вызывать извне для управления значением privateVar
.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Пример использования подзапроса для фильтрации:
SELECT name
FROM employees
WHERE department_id = (
SELECT id
FROM departments
WHERE name = 'Sales'
);
Здесь подзапрос возвращает идентификатор отдела "Sales", который затем используется в основном запросе для выбора сотрудников из этого отдела.
Подзапросы могут быть вложены в SELECT, FROM, WHERE, HAVING и другие части SQL-запроса. Они помогают структурировать сложные запросы и выполнять их поэтапно.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤1
Память в .NET делится на три поколения: 0, 1 и 2. Новые объекты создаются в поколении 0. Если объект переживает сборку мусора, он перемещается в следующее поколение. Чаще всего сборка мусора происходит в поколении 0, реже — в поколении 1, и ещё реже — в поколении 2.
GC работает в нескольких режимах: Workstation (для клиентских приложений) и Server (для серверных приложений). В режиме Server используется несколько потоков для сборки мусора, что повышает производительность.
Пример кода, показывающий, как можно влиять на GC:
// Принудительная сборка мусора
GC.Collect();
GC.WaitForPendingFinalizers();
// Отключение финализации для объекта
GC.SuppressFinalize(this);
GC автоматически определяет, когда нужно освободить память, но в некоторых случаях можно вручную вызвать сборку мусора, хотя это не рекомендуется делать без необходимости.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤1
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()
позволяет проверить принадлежность к типу или его подклассам, что делает его более гибким для работы с наследованием.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤1
Фреймворки ускоряют разработку, обеспечивают лучшую организацию кода и часто включают встроенные решения для типичных задач, таких как маршрутизация, работа с базами данных и безопасность.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
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
.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤1
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)
.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤1
class Animal {
public:
void eat() {
// Логика питания
}
};
class Dog : public Animal {
public:
void bark() {
// Логика лая
}
};
Здесь класс
Dog
наследует методы класса Animal
, такие как eat()
, и добавляет собственный метод bark()
. Модификаторы доступа (public,
protected
, private) определяют, как члены родительского класса будут доступны в дочернем. Например, public
наследование сохраняет уровень доступа членов родительского класса.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5