C# | Вопросы собесов
Kanalga Telegram’da o‘tish
Cайт easyoffer.ru Реклама @easyoffer_adv ВП @easyoffer_vp Тесты t.me/+nebTPWgpeGs1OWFi Задачи t.me/+Xy-0H7xKlgo0NDVi Вакансии t.me/+BQFHXZQ0zrViNGIy
Ko'proq ko'rsatish5 042
Obunachilar
-624 soatlar
-167 kunlar
-3030 kunlar
Postlar arxiv
5 041
🤔 Зачем нужен Git?
Это система контроля версий, которая позволяет отслеживать изменения в коде, сотрудничать в командах и управлять проектами.
1. Она сохраняет историю изменений и упрощает возврат к предыдущим версиям.
2. Обеспечивает возможность ветвления и слияния для параллельной разработки.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
5 041
🤔 Что такое static?
Static - это ключевое слово, которое используется для объявления статических членов в классе. Статические члены принадлежат самому классу, а не его экземплярам.
🚩Основные моменты использования
🟠Поля
Статические поля объявляются с использованием ключевого слова
static и принадлежат классу в целом. Все экземпляры класса разделяют одно и то же статическое поле.
public class Example
{
public static int Counter;
}
// Доступ к статическому полю
Example.Counter = 10;
Console.WriteLine(Example.Counter); // Выведет 10
🟠Методы
Статические методы могут быть вызваны без создания экземпляра класса. Статические методы могут обращаться только к другим статическим членам класса.
public class Calculator
{
public static int Add(int a, int b)
{
return a + b;
}
}
// Вызов статического метода
int sum = Calculator.Add(5, 3);
Console.WriteLine(sum); // Выведет 8
🟠Свойства
Статические свойства похожи на статические поля, но с доступом через методы get и set.
public class Configuration
{
private static string _setting;
public static string Setting
{
get { return _setting; }
set { _setting = value; }
}
}
// Доступ к статическому свойству
Configuration.Setting = "My Setting";
Console.WriteLine(Configuration.Setting); // Выведет "My Setting"
🟠Конструкторы
Статические конструкторы используются для инициализации статических членов класса. Они вызываются один раз при первом обращении к статическим членам.
public class Database
{
public static string ConnectionString;
static Database()
{
ConnectionString = "Initial Catalog=myDatabase;Data Source=myServer;";
}
}
// При первом доступе вызывается статический конструктор
Console.WriteLine(Database.ConnectionString); // Выведет строку подключения
🚩Зачем нужен?
🟠Общие данные и функции:
Статические члены полезны для хранения данных или функций, которые должны быть общими для всех экземпляров класса.
🟠Упрощение доступа:
Позволяет вызывать методы и свойства без необходимости создавать экземпляр класса.
🟠Инициализация ресурсов:
Статические конструкторы полезны для инициализации ресурсов или настройки параметров, необходимых для работы класса.
🚩Ограничения
🟠Статические методы не могут обращаться к нестатическим членам напрямую, так как у них нет доступа к экземпляру класса.
🟠Статические конструкторы не могут иметь параметры и вызываются автоматически при первом обращении к классу.
Ставь 👍 и забирай 📚 Базу знаний5 041
🤔 Какие бывают самые популярные коды ошибок в HTTP?
1. 400 Bad Request: запрос клиента некорректен.
2. 401 Unauthorized: требуется аутентификация.
3. 403 Forbidden: доступ запрещён.
4. 404 Not Found: ресурс не найден.
5. 500 Internal Server Error: ошибка на стороне сервера.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
5 041
🤔 Что такое события?
Это механизм, который позволяет объектам уведомлять другие объекты о том, что произошло определенное действие. Это важная часть паттерна "наблюдатель" (observer pattern), который используется для реализации асинхронного взаимодействия между объектами.
🚩Основные компоненты событий
🟠Делегаты
Делегаты определяют сигнатуру методов, которые могут быть вызваны при возникновении события.
🟠События
События — это специальные делегаты, которые могут быть вызваны для уведомления подписчиков о происходящем действии.
🟠Подписчики
Объекты, которые подписаны на событие и реагируют на его вызов.
🚩Пример использования событий
Определение делегата и события
public class Publisher
{
// Определение делегата
public delegate void NotifyEventHandler(object sender, EventArgs e);
// Определение события на основе делегата
public event NotifyEventHandler Notify;
// Метод, вызывающий событие
public void RaiseEvent()
{
if (Notify != null)
{
Notify(this, EventArgs.Empty);
}
}
}
Подписка на событие и обработчик события
public class Subscriber
{
public void OnNotify(object sender, EventArgs e)
{
Console.WriteLine("Получено уведомление о событии.");
}
}
class Program
{
static void Main(string[] args)
{
Publisher publisher = new Publisher();
Subscriber subscriber = new Subscriber();
// Подписка на событие
publisher.Notify += subscriber.OnNotify;
// Вызов события
publisher.RaiseEvent();
}
}
Ставь 👍 и забирай 📚 Базу знаний5 041
🤔 Что такое DELETE?
Это HTTP-метод, используемый для удаления ресурса на сервере.
1. Указывает серверу удалить указанный ресурс по заданному URL.
2. Также является идемпотентным, так как повторные вызовы не изменяют результат.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
5 041
🤔 В какой момент отправляется запрос к базе данных?
Запрос к базе данных отправляется в момент выполнения операций, которые требуют взаимодействия с базой данных. В контексте использования ORM, таких как Entity Framework, это происходит в определенные моменты, когда вы явно вызываете методы для сохранения изменений или выполнения запросов.
🚩Основные моменты отправки запросов к базе данных
🟠При вызове SaveChanges()
Все изменения, сделанные в контексте (например, добавление, обновление, удаление объектов), отправляются в базу данных.
using (var context = new AppDbContext())
{
var product = new Product { Name = "Example" };
context.Products.Add(product);
context.SaveChanges(); // Запрос к базе данных отправляется здесь
}
🟠При выполнении LINQ-запросов с использованием методов, которые требуют данных из базы
Методы, такие как ToList(), FirstOrDefault(), SingleOrDefault(), Count(), и другие, вызывают выполнение запроса к базе данных для получения данных.
using (var context = new AppDbContext())
{
var products = context.Products.ToList(); // Запрос к базе данных отправляется здесь
}
🟠При использовании методов асинхронного выполнения запросов
Асинхронные методы, такие как SaveChangesAsync(), ToListAsync(), и другие, также отправляют запросы к базе данных.
using (var context = new AppDbContext())
{
var product = new Product { Name = "Example" };
context.Products.Add(product);
await context.SaveChangesAsync(); // Запрос к базе данных отправляется здесь
}
Ставь 👍 и забирай 📚 Базу знаний5 041
🤔 Что такое PUT?
Это HTTP-метод, используемый для создания или полного обновления ресурса на сервере.
1. Если ресурс существует, он обновляется, а если нет — создаётся.
2. Это идемпотентный метод, что означает одинаковый результат при многократных вызовах с теми же данными.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
5 041
🤔 Что такое ORM?
Это технология, которая позволяет автоматически связывать объекты в коде с таблицами в базе данных. Это упрощает работу с базой данных, позволяя разработчикам работать с данными как с объектами, а не писать сложные SQL-запросы.
🚩Плюсы
➕Упрощает работу с БД
Позволяет использовать объектно-ориентированный подход.
➕Автоматизация запросов
Генерирует SQL-запросы автоматически.
➕Поддержка транзакций
Управляет транзакциями на уровне объектов.
➕Поддержка миграций
Легко обновлять структуру БД через код.
Пример с Entity Framework (C#)
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
}
public class AppDbContext : DbContext
{
public DbSet<Product> Products { get; set; }
}
// Использование
using (var context = new AppDbContext())
{
var product = new Product { Name = "Example" };
context.Products.Add(product);
context.SaveChanges();
}
Ставь 👍 и забирай 📚 Базу знаний5 041
+5
🧠 Machine Learning — авторский канал, где собрана вся база по ИИ и машинному обучению.
Senior разработчик AI-алгоритмов и автономных агентов, разбирает гайды, редкую литературу и код топовых моделей машинного обучения и искусственного интеллекта.
В 2025 году ИИ выйдет на совершенно новый уровень тот, кто не успеет за прогрессом - отстанет, а кто разберется - сорвет куш.
Стоит подписаться: t.me/ai_machinelearning_big_data
5 041
🤔 Где используются интерфейсы?
Интерфейсы применяются для создания контракта, который классы должны реализовать.
1. Обеспечивают гибкость и модульность, позволяя использовать зависимости через абстракции.
2. Используются в многократной реализации, так как классы могут реализовывать несколько интерфейсов.
3. Позволяют писать тестируемый код за счёт внедрения зависимостей (Dependency Injection).
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
5 041
Repost from easyoffer
📊 Реклама в сети телеграм каналов easyoffer
✈️ Для заказа пишите @easyoffer_adv
easyoffer
Backend
Python | Вопросы
Python | Удалёнка
Python | LeetCode
Python | Тесты
Frontend | Вопросы
Frontend | Удалёнка
JavaScript | LeetCode
Frontend | Тесты
Java | Вопросы
Java | Удалёнка
Java | LeetCode
Java | Тесты
Тестировщик | Вопросы
Тестировщик | Удалёнка
Тестировщик | Тесты
Data Science | Вопросы
Data Science | Удалёнка
Data Science | Тесты
C# | Вопросы
C# | Удалёнка
C# | LeetCode
C# | Тесты
C/C++ | Вопросы
C/C++ | Удалёнка
C/C++ | LeetCode
C/C++ | Тесты
Golang | Вопросы
Golang | Удалёнка
Golang | LeetCode
Golang | Тесты
DevOps | Вопросы
DevOps | Удалёнка
DevOps | Тесты
PHP | Вопросы
PHP | Удалёнка
PHP | LeetCode
PHP | Тесты
Kotlin | Вопросы
Kotlin | Удалёнка
Kotlin | LeetCode
Kotlin | Тесты
Swift | Вопросы
Swift | Удалёнка
Swift | LeetCode
Swift | Тесты
📊 Реклама в сети телеграм каналов easyoffer
✈️ Для заказа пишите @easyoffer_adv
5 041
🤔 Зачем используется библиотека Moq?
Библиотека для создания заглушек (mock-объектов) в модульных тестах. Она позволяет изолировать тестируемый код от внешних зависимостей, таких как базы данных или веб-сервисы, упрощая и повышая надежность тестирования.
🚩Плюсы
➕Изоляция кода
Изолирует тестируемый код от внешних зависимостей.
➕Упрощение тестирования
Легко создавать заглушки и настраивать их поведение.
➕Проверка поведения
Проверяет вызовы методов заглушек, параметры и частоту вызовов.
🚩Пример использования
Интерфейс и класс
public interface IUserRepository
{
User GetUserById(int id);
void SaveUser(User user);
}
public class UserService
{
private readonly IUserRepository _userRepository;
public UserService(IUserRepository userRepository)
{
_userRepository = userRepository;
}
public void UpdateUser(int id, string newName)
{
var user = _userRepository.GetUserById(id);
if (user == null) throw new ArgumentException("User not found");
user.Name = newName;
_userRepository.SaveUser(user);
}
}
public class User
{
public int Id { get; set; }
public string Name { get; set; }
}
Модульный тест с Moq
using Moq;
using Xunit;
public class UserServiceTests
{
[Fact]
public void UpdateUser_ShouldUpdateUserName()
{
// Arrange
var mockRepository = new Mock<IUserRepository>();
var user = new User { Id = 1, Name = "Old Name" };
mockRepository.Setup(repo => repo.GetUserById(1)).Returns(user);
var userService = new UserService(mockRepository.Object);
// Act
userService.UpdateUser(1, "New Name");
// Assert
Assert.Equal("New Name", user.Name);
mockRepository.Verify(repo => repo.SaveUser(user), Times.Once);
}
[Fact]
public void UpdateUser_ShouldThrowExceptionIfUserNotFound()
{
// Arrange
var mockRepository = new Mock<IUserRepository>();
mockRepository.Setup(repo => repo.GetUserById(1)).Returns((User)null);
var userService = new UserService(mockRepository.Object);
// Act & Assert
Assert.Throws<ArgumentException>(() => userService.UpdateUser(1, "New Name"));
}
}
Ставь 👍 и забирай 📚 Базу знаний5 041
🤔 Что такое куча?
Это область памяти, выделяемая динамически для объектов во время выполнения программы.
1. Используется для хранения объектов и данных, срок жизни которых заранее не известен.
2. Память в куче управляется сборщиком мусора (GC).
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
5 041
🤔 Что такое куки и где оно хранится в запросе?
Это небольшие фрагменты данных, которые веб-сайты сохраняют на устройствах пользователей для хранения информации о сессии и отслеживания состояния. Куки используются для различных целей, таких как аутентификация пользователей, хранение настроек и предпочтений, а также отслеживание активности пользователей на сайте.
🚩Основные свойства
🟠Имя (Name)
Уникальный идентификатор для каждого куки.
🟠Значение (Value)
Данные, которые хранит куки.
🟠Домен (Domain)
Домен, для которого куки действителен.
🟠Путь (Path)
Путь на сервере, для которого куки действителен.
🟠Время истечения (Expiration/Max-Age)
Дата или время, когда куки должен быть удален.
🟠Безопасность (Secure)
Указывает, что куки должны передаваться только через HTTPS.
🟠HTTPOnly
Указывает, что куки недоступен через JavaScript, только через HTTP(S) запросы.
🚩Где хранятся
🟠Установка куки с сервера (Set-Cookie)
Сервер отправляет куки в ответе на запрос клиента с использованием заголовка
Set-Cookie.
HTTP/1.1 200 OK
Set-Cookie: sessionId=abc123; Path=/; Expires=Wed, 09 Jun 2023 10:18:14 GMT
Content-Type: text/html
🟠Отправка куки клиентом (Cookie)
Браузер автоматически добавляет соответствующие куки в заголовок Cookie при каждом последующем запросе к серверу, для которого эти куки действительны.
GET /dashboard HTTP/1.1
Host: example.com
Cookie: sessionId=abc123
🚩Пример использования
Установка куки на сервере (пример на Node.js с использованием Express)
const express = require('express');
const app = express();
app.get('/', (req, res) => {
// Устанавливаем куки
res.cookie('sessionId', 'abc123', {
maxAge: 900000,
httpOnly: true
});
res.send('Куки установлены');
});
app.listen(3000, () => {
console.log('Server is running on port 3000');
});
Доступ к куки на клиенте (пример на JavaScript)
// Установка куки
document.cookie = "username=JohnDoe; expires=Thu, 18 Dec 2023 12:00:00 UTC; path=/";
// Получение всех куки
let cookies = document.cookie;
console.log(cookies);
🚩Важные моменты
🟠Безопасность
Куки с флагом Secure передаются только по HTTPS-соединениям. Куки с флагом HttpOnly недоступны через JavaScript, что помогает защитить их от XSS-атак.
🟠Размер и количество
Обычно один куки не должен превышать 4KB, и на одном домене может быть установлено не более 20-30 куки.
🟠Конфиденциальность
Куки могут содержать чувствительные данные, поэтому важно защищать их и использовать шифрование, если необходимо.
Ставь 👍 и забирай 📚 Базу знаний5 041
🤔 Что такое .NET Core?
Это кросс-платформенный фреймворк для разработки приложений.
1. Поддерживает Windows, macOS и Linux.
2. Легковесный, с открытым исходным кодом, предназначен для высокой производительности.
3. Подходит для разработки веб-приложений, облачных сервисов и микросервисов.
Ставь 👍 и забирай 📚 Базу знаний
5 041
🤔 Какие типы http запросов бывают и где в них передаются данные?
HTTP-запросы делятся на несколько типов, каждый из которых предназначен для выполнения определенных операций. Основные типы HTTP-запросов включают GET, POST, PUT, DELETE, PATCH и другие. Данные в этих запросах могут передаваться через URL, заголовки или тело запроса в зависимости от типа запроса и его назначения.
🚩Основные типы
🟠GET
Запрос для получения данных с сервера. Данные передаются в URL в виде параметров запроса.
GET /api/products?category=electronics&page=2 HTTP/1.1
Host: example.com
🟠POST
Запрос для отправки данных на сервер для создания ресурса. Данные передаются в теле запроса.
POST /api/products HTTP/1.1
Host: example.com
Content-Type: application/json
{
"name": "New Product",
"price": 19.99
}
🟠PUT
Запрос для отправки данных на сервер для обновления существующего ресурса. Данные передаются в теле запроса.
PUT /api/products/1 HTTP/1.1
Host: example.com
Content-Type: application/json
{
"name": "Updated Product",
"price": 29.99
}
🟠DELETE
Запрос для удаления ресурса на сервере. Данные могут передаваться в URL или заголовках, но тело запроса обычно не используется.
DELETE /api/products/1 HTTP/1.1
Host: example.com
🟠PATCH
Запрос для частичного обновления ресурса на сервере. Данные передаются в теле запроса.
PATCH /api/products/1 HTTP/1.1
Host: example.com
Content-Type: application/json
{
"price": 24.99
}
🟠HEAD
Запрос, аналогичный GET, но сервер возвращает только заголовки ответа без тела. Данные передаются в URL, как и в GET-запросе.
HEAD /api/products HTTP/1.1
Host: example.com
🟠OPTIONS
Запрос для получения поддерживаемых сервером методов HTTP для указанного ресурса. Данные передаются в URL.
OPTIONS /api/products HTTP/1.1
Host: example.com
🚩Примеры использования в коде
GET-запрос с использованием fetch API в JavaScript
fetch('https://example.com/api/products?category=electronics&page=2')
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
POST-запрос с использованием fetch API в JavaScript
fetch('https://example.com/api/products', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
name: 'New Product',
price: 19.99
})
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
Ставь 👍 и забирай 📚 Базу знаний5 041
🤔 Какие минусы у микросервисов?
1. Сложность разработки: управление большим числом сервисов требует дополнительных инструментов.
2. Усложнение взаимодействия: требуется настройка API и их маршрутизации.
3. Трудности тестирования и деплоя: распределённые системы сложнее тестировать и синхронизировать.
4. Затраты на ресурсы: каждый сервис требует выделения собственных ресурсов, что увеличивает их потребление.
Ставь 👍 и забирай 📚 Базу знаний
5 041
🤔 Как работает Routing?
Маршрутизация в ASP.NET Core сопоставляет URL-запросы с контроллерами и действиями.
Определение маршрутов
public void Configure(IApplicationBuilder app)
{
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
}
Пример контроллера
public class HomeController : Controller
{
public IActionResult Index()
{
return View();
}
}
public class ProductsController : Controller
{
public IActionResult Index() => View();
public IActionResult Details(int id) => View();
}
Атрибуты маршрутизации
[Route("api/[controller]")]
public class ProductsController : Controller
{
[HttpGet("{id}")]
public IActionResult GetProduct(int id)
{
return View();
}
}
Ставь 👍 и забирай 📚 Базу знаний5 041
🤔 Какие есть принципы SOLID?
1. S: Принцип единственной ответственности (Single Responsibility Principle).
2. O: Принцип открытости/закрытости (Open/Closed Principle).
3. L: Принцип подстановки Барбары Лисков (Liskov Substitution Principle).
4. I: Принцип разделения интерфейсов (Interface Segregation Principle).
5. D: Принцип инверсии зависимостей (Dependency Inversion Principle).
Ставь 👍 и забирай 📚 Базу знаний
5 041
🤔 Что такое DNS?
DNS (Domain Name System) переводит доменные имена (например,
www.example.com) в IP-адреса (например, 192.0.2.1), чтобы компьютеры могли общаться.
🚩Основные шаги
1⃣Запрос от клиента
Браузер отправляет запрос к DNS-серверу.
2⃣Рекурсивный поиск
DNS-сервер обращается к корневым, TLD и авторитетным серверам.
3⃣Ответ
Авторитетный сервер возвращает IP-адрес.
4⃣Соединение
Браузер использует IP-адрес для соединения с веб-сайтом.
🚩Виды DNS-записей
🟠A
IPv4-адрес.
🟠AAAA
IPv6-адрес.
🟠CNAME
Псевдоним.
🟠MX
Почтовый сервер.
🟠TXT
Текстовые данные.
Ставь 👍 и забирай 📚 Базу знаний
Endi mavjud! Telegram Tadqiqoti 2025 — yilning asosiy insaytlari 
