Співбесіда з C# розробником. 150+ запитань для рівня Junior, Middle, Senior

Цей текст присвячуємо C#, мові програмування для роботи з платформою .NET. Ця мова — восьма за популярністю серед розробників, згідно з дослідженням Stack Overflow.

Ми попросили експертів з різних компаній поділитися прикладами запитань, які можуть трапитися під час співбесід на позицію C# розробника. Матеріал не є вичерпною інструкцією та не містить усі можливі варіанти запитань, однак сподіваємося, стане вам у пригоді під час пошуку роботи. Маєте більше цікавих запитань? Діліться в коментарях :)

Більше матеріалів у рубриці за посиланням.


👼 Junior

Концепції ООП

  1. Які основні принципи ООП? Як вони реалізовані в C#?
  2. Які проблеми вирішуються цим підходом? Які недоліки ООП?
  3. Поясніть концепцію інкапсуляції в об’єктноорієнтованому програмуванні та як її реалізувати за допомогою C#.
  4. Чи можете ви пояснити концепцію успадкування в C# та навести приклад, де вона може бути використана в програмі?
  5. Що таке абстрактний клас? І чим відрізняється від звичайного класу?
  6. Що таке інтерфейс і які його ключові відмінності від абстрактного класу?
  7. Що дає ключове слово «virtual»? Які члени класу можуть бути позначені цим модифікатором?
  8. Яка різниця між перевантаженням методу та перевизначенням методу?
  9. Що таке upcast і downcast?
  10. Що таке події та делегати? Яка основна різниця між ними? Як їх використовувати для реалізації зворотного виклику в C#?

Основні концепції C#

  1. У чому різниця між масивом (T [ ]) та списком (List <T>)? Що таке колекції і як їх використовувати?
  2. Що таке хеш-таблиця? Що таке хеш-функція? Як обробляються колізії в словниках?
  3. Що таке Boxing і Unboxing?
  4. Які особливості використання запису (record) і запису-структури (record struct)?
  5. Що дає ключове слово «static»? Яка особливість статичних класів?
  6. Що дає ключове слово «sealed»?
  7. Яка різниця між типами значень і типами посилань? Коли який тип доцільно використовувати? Наведіть приклади неправильного використання типу посилання.
  8. Які типи даних доступні в C#? І в чому різниця між ними?
  9. У чому різниця між структурами та класами в C#?
  10. У чому різниця між стеком і купою (heap)?
  11. Що таке приведення типів? Яка різниця між явним і неявним приведенням типів?
  12. Як реалізувати патерн Singleton в C# та які його переваги й недоліки?
  13. Що таке LINQ-запити?
  14. Поясніть різницю між методами LINQ First vs FirstOrDefault vs Single vs SingleOrDefault.

Обробка винятків та управління помилками

  1. Що таке винятки (exceptions) і як їх обробляти в C#? Як створити свої винятки (custom exceptions)?
  2. Для чого використовуються try, catch, finally? У яких випадках блок finally може не виконатися? Яка різниця між throw; vs throw ex; vs throw new Exception();, якщо виняток перехоплено у блоку catch?

Структура коду та синтаксис

  1. Що таке умовний оператор і як його використовувати?
  2. Що таке цикл for і як його використовувати для повторюваних дій?
  3. Які є типи доступу (access modifiers) в C# і що вони означають?
  4. Що таке перевантаження методів? Що таке необов’язкові параметри у методах і в чому різниця їх використання від перевантаження методів? Чим відрізняється перевизначення методу (method override) від методу new?
  5. Що таке простір імен (namespace) і як його використовувати для організації коду в C#?
  6. Чим є Common Type System? Що таке анонімні типи, загальні типи (generics), кортежі (tuples)?
  7. Що таке розгалуження? Які види розгалужень ви знаєте? Можливо, ви знаєте «найкращі практики» використання розгалужень?

Принципи та шаблони проєктування програмного забезпечення

  1. Що таке SOLID? Поясніть кожен з принципів SOLID.
  2. Які програмні шаблони ви знаєте?
  3. Що таке стиль коду і чому його використовують?
  4. Які принципи найменування елементів класу ви знаєте?

Інше

  1. Що таке ORM?
  2. Принципи протоколу HTTP. Опишіть, як запит йде від браузера до сервера.

Тестування

  1. Для чого потрібні unit-тести?
  2. Які переваги та недоліки використання unit-тестів?
  3. З яких трьох логічних блоків складається unit-тест?


👱 Middle

Паралельність і багатопотоковість

  1. Що таке асинхронність? Які є способи зупинити виконання асинхронного методу?
  2. Як використовувати асинхронне програмування в C# за допомогою ключових слів «async» та «await»?
  3. Що таке багатопотоковість (multithreading) і як її реалізувати в C#?
  4. В чому різниця між потоком і процесом?
  5. Які конструкції синхронізації потоків ви знаєте?
  6. Чи можна використовувати await всередині блоку lock?
  7. Які шаблони багатопотокового програмування ви знаєте?
  8. Як правильно обробляти DbUpdateConcurrencyException для вирішення одночасних оновлень даних в базі даних?
  9. Що таке дедлок? Як його створити, а як — уникнути?

Особливості мови C#

  1. Що таке рефлексія (reflection) і як з нею працювати?
  2. Чим відрізняються String і StringBuilder в C#? Коли краще використовувати кожен з них?
  3. У чому різниця між Eager та Lazy Loading?
  4. Як реалізувати поліморфізм в C# за допомогою віртуальних і перевизначених методів?
  5. Як використовувати атрибути в C#? Для чого вони використовуються?
  6. Що таке серіалізація в C#? Як її використовувати для збереження об’єктів?
  7. Що таке Immutable? Які типи є незмінними?
  8. Чим відрізняється запис (record) від класу?
  9. Що таке Garbage Collector? Що таке покоління? Коли GC починає прибирання?
  10. Опишіть типовий сценарій використання Tuple та переваги використання ValueTuple.
  11. Як в C# реалізувати власні розширення методів (extension methods) для наявних типів?

Патерни програмування та архітектурні підходи

  1. Які шаблони проєктування ви використовуєте в C#? Наведіть приклади їх використання?
  2. Для чого потрібен LinkedList<T> в C#? Чим він відрізняється від інших колекцій?
  3. Що таке IEnumerator? Як з ним працювати?
  4. У чому відмінність IList від IEnumerable?
  5. Чим відрізняються IEnumerable та IQueryable?
  6. Для чого використовують ThreadPool? Опишіть його механізм роботи: як виділяються та повертаються потоки в ThreadPool.
  7. Які методи синхронізації потоків і що таке lock?
  8. Опишіть власну реалізацію словника, ключем в якому може бути будь-який клас, враховуючи функціональні та нефункціональні вимоги (для прикладу алгоритмічна складність та обсяг пам’яті) до System.Dictionary<TK, TV>.
  9. У чому різниця між MVC та MVP?
  10. Що таке dependency injection і навіщо воно потрібне?

Керування пам’яттю

  1. Розкажіть про принципи управління пам’яттю в .NET Core. Що таке керовані та некеровані ресурси?
  2. Чи можливі витоки пам’яті в .NET?

Бази даних

  1. Назвіть рівні ізоляції транзакцій та артефакти у вашій улюбленій системі управління базами даних.
  2. T-SQL nchar, nvarchar, char, varchar — чим відрізняються ці типи?

Entity Framework

  1. Назвіть основні особливості цього фреймворку.
  2. Як оптимально застосовувати конфігурації? Наведіть приклади неправильного використання конфігурації.
  3. Розкажіть про патерн Specification.
  4. Як відбувається відстеження одночасних оновлень даних в EFCore?
  5. Як правильно обробляти DbUpdateConcurrencyException для вирішення одночасних оновлень даних в базі даних?

Event Driven

  1. Які брокери повідомлень ви знаєте?
  2. Який життєвий цикл повідомлення в RabbitMQ/AWS SQS/Azure Service Bus.
  3. Що таке Dead Letter Queue?

Web

  1. Що таке JWT-токен і чим він відрізняється від bearer-токена?
  2. Чи треба використовувати cookies? Якщо так, то коли?
  3. Як написати свій Middleware?
  4. Що таке Minimal API?


🧔 Senior

Просунуті концепції C#

  1. Які шаблони проєктування реалізовані в C# та наведіть приклади їх використання?
  2. Як працює async/await (детально)? Чому не варто використовувати async void методи?
  3. Що таке Expression Tree?
  4. Що таке Race Condition?
  5. Як в C# використовувати індексацію типів (type indexing) для динамічного створення об’єктів та виклику методів на рантаймі?
  6. Як в C# використовувати динамічні типи (dynamic types) для роботи з об’єктами, типи яких відомі лише на етапі виконання програми?
  7. Як в C# використовувати і керувати пам’яттю за допомогою небезпечного коду (unsafe code) і вказівників (pointers)?
  8. Як в C# використовувати і реалізувати власні механізми моніторингу та логування для відстеження роботи програми і виявлення проблем?
  9. Що відбувається в методі Equals?
  10. Напишіть метод Transform таким чином, щоб метод Equals повернув true, для всіх значень, що передаються.
  11. Коли необхідне default interface implementation? На вашу думку, це гарна практика?
  12. Як працюють LINQ оператори Zip, Aggregate?
  13. Які ваші нові улюблені фічі в C# 8-12 ?
  14. У чому різниця між Semaphore vs SemaphoreSlim?

Підтримка та оптимізація застосунків у .NET-розробці

  1. Опишіть ситуацію, коли вам доводилося обирати конкретну структуру даних в програмі .NET з метою покращення продуктивності. Яка була проблема і як її розв’язали вибором структури даних?
  2. Опишіть найбільш значні поліпшення продуктивності у застосунку .NET на основі вашого досвіду. Які інструменти або методи ви використовували для виявлення та розв’язання проблеми?
  3. Опишіть зміни в роботі GC, введені в останніх версіях .NET. Як це покращує продуктивність програми та управління ресурсами?
  4. Як ви обробляєте помилки та винятки у своїх програмах .NET, щоб забезпечити стабільність і надійність? Чи можете ви описати сценарій, коли ваша стратегія обробки помилок запобігла потенційному збою у виробництві?
  5. Як ви реалізуєте журналювання та моніторинг у своїх програмах .NET? Опишіть інструменти або підходи, які ви використовуєте для моніторингу застосунків .NET та як вони допомагали вам виявляти та вирішувати проблеми у виробництві.
  6. Як ви дбаєте про безпеку своїх застосунків на .NET? Опишіть практики або інструменти, які використовуєте.
  7. Наведіть приклади використання (ref), (struct), записів (record). Які переваги це дає, якщо порівнювати з підходами в попередніх версіях .NET?
  8. Назвіть приклади шаблонів проєктування, що використовуються у власних бібліотеках .NET?
  9. Що таке контекст синхронізації та ConfigureAwait(false)?

Event Driven

  1. Які найпоширеніші проблеми ви знаєте в event-driven системах?
  2. Як боротися з concurrency в event-driven системах?
  3. Як боротися з race-condition в event-driven системах?
  4. Fat і thin events. Коли доцільно використовувати той чи інший тип?
  5. Опишіть Outbox-патерн.

Мікросервіси

  1. Як забезпечити транзакційність у розподілених системах?
  2. Які ви знаєте алгоритми балансування трафіку?
  3. Опишіть Circuit Breaker патерн.
  4. Які ви знаєте способи синхронізації доступу до спільних ресурсів?
  5. Які переваги і недоліки асинхронної та синхронної комунікації між сервісами?
  6. GRPC vs HTTP, коли що краще обрати та яка між ними різниця?
  7. Що таке Data Streaming та Kafka? Які базові концепції знаєте?
  8. Яка різниця між чергами та data streaming?
  9. Saga: хореографія та оркестрація. Що це таке?
  10. Що таке Sidecar pattern?
  11. Що таке Blue-Green deployment?
  12. Що таке CQRS-патерн ? Яка різниця з CQS? Коли це потрібно?
  13. Якщо патерни зв’язку з фронтендом ви знаєте (polling, long polling, server push, bi-directional)?
  14. Що таке pod, деплоймент, сервіс та Ingress в Kubernetes?
  15. Опишіть CI та CD процес на вашому проєкті.
  16. Що таке GitOps?

Кешування

  1. Які типи кешування ви знаєте? Які переваги та недоліки має кожен тип?
  2. Які стратегії кешування знаєте?

Бази даних

  1. NoSQL vs T-SQL. В яких випадках краще використовувати той чи інший тип?
  2. Які кроки треба виконати для пошуку повільних SQL запитів та подальшої їх оптимізації?
  3. Які ви знаєте типи індексів та чим вони відрізняються?
  4. Що таке CTE-запити?
  5. Чим відрізняються процедури та функції?
  6. Що таке тригери?
  7. Поясніть, що таке шардинг і реплікації. Для чого вони потрібні?
  8. Що таке денормалізація?
  9. Коли і які рівні ізоляції транзакцій можна використовувати?
  10. Чи доводилося оптимізувати запит у БД? Якщо так, то як?

Безпека

  1. Які типи атак на вебсервіси ви знаєте?
  2. Де краще зберігати авторизаційний токен у браузері?
  3. Наведіть 10 прикладів OWASP vulnerabilities.

Логування та дебагінг

  1. Як забезпечити можливість відстежування одного запиту в логах, якщо є послідовні виклики інших мікросервісів?
  2. Якщо є memory leak у сервісі, як знайти місце його виникнення? Які інструменти будете використовувати?
  3. Що таке Activity class?
  4. Що таке distributed tracing та structured logging?

Cloud

  1. Назвіть 5-10 сервісів, які ви використовували у роботі з хмарними технологіями.
  2. У чому перевага хмари перед On-Premise? Назвіть переваги On-Premise розгортання застосунку?
  3. Що таке клауд-функції (Lambdas)?
  4. Які методи оркестрації або хостингу застосунків у хмарі ви знаєте?


Запитання для матеріалу надали практики, дякуємо:

Окрема вдячність за технічну рецензію статті Андрію Губському, Software Architect в Outbrain, Олексію Войтюку, Олесю Дібрівному, Владиславу Фурдаку.

Оновлено 19 квітня: виправлені хибодруки.

Все про українське ІТ в телеграмі — підписуйтеся на канал DOU

👍ПодобаєтьсяСподобалось18
До обраногоВ обраному23
LinkedIn


14 коментарів

Підписатись на коментаріВідписатись від коментарів Коментарі можуть залишати тільки користувачі з підтвердженими акаунтами.
Як в C# використовувати і керувати пам’яттю за допомогою небезпечного коду (unsafe code) і вказівників (pointers)?

хотілось би почути версію відповіді автора на це питання, бо якось воно не дуже коректно сформульвано на мою думку.

Тут скорее хотелось бы услышать от автора вопроса, зачем подобным вообще заниматься? Ну хорошо, есть интероп с нативным кодом. Там маршалинг и прочие мерзкие вещи. Ну может еще работа с железом, но по факту это та же работа с нативным кодом.
А так 90% сеньоров пилили бизнес-код и никогда с подобным не сталкивались и не столкнутся.

ну останнім часом стикаюсь якраз із проектами де є інтероп. Але тут здається не про це. Тому все ж цікаво було б почути версію автора.
думаю йдеться про щось типу:

unsafe static void FastCopy ( byte* ps, byte* pd, int count ) {...}

проте останні версії фрейворку включають достатньо просунутих інструментів для подібних застосувань.

ну останнім часом стикаюсь якраз із проектами де є інтероп.

Если не секрет, то для чего именно?

Я в последний раз использовал интероп в пет-проекте для общения с DWM, а по работе — для общения с нативными драйверами БД и для встраивания окон WinForms и WPF в нативные Win приложения (и наоборот)

був проект з підтримкою хитрих принтерів де вся взаємодія була на написана на С++, а UI на WinForrms. Був старий проект де була система написана динозавром на С/С++ і яку крім нього ніхто не міг підтримувати, але для неї робився сучасний UI для поступової відмови від непідтримуваної системи і розробки нової. Був проект де були реалізовані певні цікаві high-performance алгоритми, а UI робився на WPF. Так шо є різні варіанти

Дивно, але я не побачив жодного питання про байндинг і особливості відладки WPF додатків, чи про особливості написання коду та використання winforms.
жодного питання про реалізації консольних додатків, чи питання по створенню/використанню сервісних програм, особливості побудови сервісів vpn чи ін.

ІМХО.
Всі питання в статті писали сугубо веб-орінтовані (фронтенд, фулстек, бекенд) розробники.
бо в коментарі я вказав лише маленьку частинку, з можливого обєма запитань.

Да и вопросов про ViewState в WebForms тоже нет почему-то.

Всі питання в статті писали сугубо веб-орінтовані (фронтенд, фулстек, бекенд) розробники.

Может потому что практически весь рынок сейчас это веб?

Які ви знаєте типи індексів та чим вони відрізняються?
Що таке CTE-запити?
Чим відрізняються процедури та функції?
Що таке тригери?

Оце як на мене питання більше до джуномідла ніж до сеньора

Не знаю чому так трапляється, але майже в кожній подібній підбірці від ДОУ є багато дивного...

У чому різниця між MVC та MVP?

Останній раз я бачив MVP років 15 тому у WinForms проекті, не впевнений що це надто актуальне питання. Я би вже про MVC проти MVVM питав.

Що таке JWT-токен і чим він відрізняється від bearer-токена?

По семантиці схоже на питання «що таке седан і чим він відрізняється від легкового автомобілю», бо JWT — це один з можливих форматів, а bearer — просто різновид токену, який дає доступ його власнику до якихось ресурсів. У якості bearer токену може виступати і JWT, і ідентифікатор якогось референс-токену, і взагалі що завгодно. Хочеться вірити, що автор це розуміє, і просто сформулював питання в провокаційній формі.

Як в C# використовувати індексацію типів (type indexing) для динамічного створення об’єктів та виклику методів на рантаймі?

Ви впевнені, що не самі вигадали ций термін? ;)

Як в C# використовувати і керувати пам’яттю за допомогою небезпечного коду (unsafe code) і вказівників (pointers)?

За майже 20 років роботи з .NET стеком не пам’ятаю коли доводилося писати unsafe код. Я не хочу сказати що він зовсім непотрібний, але питати про це на сферичний .NET співбесіді в вакумі я б не став. Тільки у випадку, коли через специфіку проекту це реально потрібно.

Що відбувається в методі IsEqual?

Може Equals? Чи може ви забули приклад коду навести? Чи йдеться про якийсь специфічний фреймворк?

Напишіть метод Transform таким чином, щоб метод IsEqual повернув true, для всіх значень, що передаються.

Який Transform? Це викликає ще більшу підозру що або приклад коду забули, або йдеться про якийсь специфічний фреймворк.

У чому різниця між Semaphore vs SmephoreSlim?

В тому, що другого в саме такому написанні не існує :)

Що таке POD-деплоймент, сервіс та Ingress в Kubernetes?

Ви впевнені, що між POD та деплоймент не потрібна кома? ;) POD — це не акронім, писати його тут капсом немає сенсу, та й взагалі я би всі ці терміни однією мовою вже писав би.

Що таке Activity class?

Одні з найнеефективніших питань на співбесіді — термінологічні. А чому не «Event category», «Log Category» або «Event group»? Краще питати взагалі які атрибути має сенс писати для кожної події в логах.

Ще дивує, що у мідла про бази даних питають про рівні ізоляції транзакцій, а про те як шукати та оптимізувати повільні запити — вже тільки у сіньора.

Молодець ! пройшов =)

Останній раз я бачив MVP років 15 тому у WinForms проекті, не впевнений що це надто актуальне питання. Я би вже про MVC проти MVVM питав.

Згоден що актуальніше про MV* питати, але можно і про MVP, потім про філософське що є презентором у MV*, питання задаються не для того щоб точку відповідь отримати як на екзамені, а щоб було про що поговорити та зрозуміти рівень розуміння взагалі.

По семантиці схоже на питання «що таке седан і чим він відрізняється від легкового автомобілю», бо JWT — це один з можливих форматів, а bearer — просто різновид токену, який дає доступ його власнику до якихось ресурсів. У якості bearer токену може виступати і JWT, і ідентифікатор якогось референс-токену, і взагалі що завгодно. Хочеться вірити, що автор це розуміє, і просто сформулював питання в провокаційній формі.

Ви хоч раз передавали JWT суто в якості bearer ? Формально — так, але JWT це вже еволюція та можно про це поговорити.

Ви впевнені, що не самі вигадали ций термін? ;)

Насправді type indexing дослівно переводиться як індексація типів. Питання не я писав, але так, можно перефразувати як індексатори типів.

Може Equals? Чи може ви забули приклад коду навести? Чи йдеться про якийсь специфічний фреймворк?

Ви ж зрозуміли що це йдеться про Equals, виправимо.

SmephoreSlim

Typo.

Ви впевнені, що між POD та деплоймент не потрібна кома? ;) POD — це не акронім, писати його тут капсом немає сенсу, та й взагалі я би всі ці терміни однією мовою вже писав би.

Typo, виправимо.

Одні з найнеефективніших питань на співбесіді — термінологічні. А чому не «Event category», «Log Category» або «Event group»? Краще питати взагалі які атрибути має сенс писати для кожної події в логах.

learn.microsoft.com/...​ics.activity?view=net-8.0
Дуже важлива річ в сучасній екосистемі мікросервісній.

Ще дивує, що у мідла про бази даних питають про рівні ізоляції транзакцій, а про те як шукати та оптимізувати повільні запити — вже тільки у сіньора.

малося на увазі, що синьор по дефолту повинен знати все, що знає міддл.Тому рівні ізоляції це рівень міддла.

Не знаю чому так трапляється, але майже в кожній подібній підбірці від ДОУ є багато дивного...

Тому що ви не написали статтю, нам прийшлося по вечорах накидувати перед сном. Чекаю на вашу версію)

За фідбек дякую.

Згоден що актуальніше про MV* питати, але можно і про MVP, потім про філософське що є презентором у MV*, питання задаються не для того щоб точку відповідь отримати як на екзамені, а щоб було про що поговорити та зрозуміти рівень розуміння взагалі.

Розробники без досвіду з WinForms з нульових або з поточних легасі проектів з великою ймовірністю не будуть знати що таке MVP, я про це. Ци має сенс тоді питати саме про нього? Чи буде мінусом, якщо кандидат нічого не чув про MVP, але знає про MVC та MVVM?

Ви хоч раз передавали JWT суто в якості bearer ? Формально — так, але JWT це вже еволюція та можно про це поговорити.

Що значить «суто в якості bearer»? :-) Bearer token — це просто токен, який дає доступ до якогось ресурсу тим, в кого цей токен є. З цієї точки зору, всім відомий з OAuth2 access token в форматі JWT і є bearer токеном. І передавати його в тому ж хедері Authorization з префіксом Bearer — стандартна практика.

Насправді type indexing дослівно переводиться як індексація типів. Питання не я писав, але так, можно перефразувати як індексатори типів.

Уточніть, будь ласка, на прикладі, про що саме мова? Про індексатори в C#, про нові можливості індексації елементів через System.Index або System.Range, або ще про щось?

Дуже важлива річ в сучасній екосистемі мікросервісній.

Тоді краще давати більш зрозумілий контекст, наприклад «Що таке клас Activity в інфраструктурі логування .NET»

малося на увазі, що синьор по дефолту повинен знати все, що знає міддл.Тому рівні ізоляції це рівень міддла.

Мідл, який знає про рівні ізоляції, але не знає що таке індекси і куди дивитися, якщо запити працюють повільно — це поганий мідл.

Тому що ви не написали статтю, нам прийшлося по вечорах накидувати перед сном. Чекаю на вашу версію)

Перелік моїх статей є в профілі ;-)

Що значить «суто в якості bearer»? :-) Bearer token — це просто токен, який дає доступ до якогось ресурсу тим, в кого цей токен є. З цієї точки зору, всім відомий з OAuth2 access token в форматі JWT і є bearer токеном. І передавати його в тому ж хедері Authorization з префіксом Bearer — стандартна практика.

Ну от гарна відповідь на питання

Розробники без досвіду з WinForms з нульових або з поточних легасі проектів з великою ймовірністю не будуть знати що таке MVP, я про це. Ци має сенс тоді питати саме про нього? Чи буде мінусом, якщо кандидат нічого не чув про MVP, але знає про MVC та MVVM?

Знов таки це не я писав питання, але якщо людина не знає що це таке це не є проблемою. Знов таки я не бачу інтрв’ю як анкетування.

Тоді краще давати більш зрозумілий контекст, наприклад «Що таке клас Activity в інфраструктурі логування .NET»

Кто працював — той працював

Перелік моїх статей є в профілі ;-)

Бачив

І ще пойнт — якщо люди що проводять інтерв’ю будуть питати про кенгуру — соррі але вам потрібно буде розібратись у кенгуру )) Наприклад якщо ви джуніор ви можете нескінченно сперчатись в коментарях або просто розібратись що питають олдскули 20+ років досвіду))

Кто працював — той працював

Так питання погано сформульоване. Я знаю про Activity та зв’язані класи, але був і проект, де один з атрибутів подій в логах називався «Activity class» для вказання категорії подій — Authorization, Configuration, System, etc. А тепер дивимось на формулювання — «Що таке Activity class». Виглядає як питання про якийсь термін типу «Що таке Optimistic locking» або «Що таке Correlation identifier». Якщо б воно було сформульоване хоча б як «Для чого потрібен клас Activity», або «Для чого потрібен клас Activity в .NET», або «Чи доводилося використовувати клас System.Diagnostics.Activity» — то вже дійсно можна було б говорити «Хто працював — той працював».

І взагалі, я би тут краще ставив відкрите питання типу «Як би ви реалізовували моніторинг продуктивності та логування в .NET-додатках? Які інструменти, бібліотеки, класи ви би використовували для спостереження за швидкістю виконання окремих частин цілого запиту?» Може бути, що кандидат нічого не знає про ActivitySource.StartActivity(), але користувався TelemetryClient.StartOperation() для Application Insights, тобто про потребу в наявності такого інструментарію в курсі.

Бачив

Тоді до чого коментар про вечори перед сном? :-)

І ще пойнт — якщо люди що проводять інтерв’ю будуть питати про кенгуру — соррі але вам потрібно буде розібратись у кенгуру )) Наприклад якщо ви джуніор ви можете нескінченно сперчатись в коментарях або просто розібратись що питають олдскули 20+ років досвіду))

Не зрозумів думку. Ну от я олдскул, але коли займався .NET-співбесідами, намагався не питати про неакутальні речі та про якісь дуже нишеві особливості, які проєкту непотрібні.

І взагалі, я би тут краще ставив відкрите питання типу «Як би ви реалізовували моніторинг продуктивності та логування в .NET-додатках? Які інструменти, бібліотеки, класи ви би використовували для спостереження за швидкістю виконання окремих частин цілого запиту?» Може бути, що кандидат нічого не знає про ActivitySource.StartActivity(), але користувався TelemetryClient.StartOperation() для Application Insights, тобто про потребу в наявності такого інструментарію в курсі.

Це ж стаття щоб люди готувались. Якшо написати більш вузькі теми то краще. Хоча загалом так можно і так сформулютваи.

Не зрозумів думку. Ну от я олдскул, але коли займався .NET-співбесідами, намагався не питати про неакутальні речі та про якісь дуже нишеві особливості, які проєкту непотрібні.

люді різні бувають

Підписатись на коментарі