Вопросы собеседования на C# программиста

Вопросы собеседования на C# программиста

Програмысли Влог

2 года назад

63,515 Просмотров

Ссылки и html тэги не поддерживаются


Комментарии:

@Dev-lessons
@Dev-lessons - 09.11.2021 15:55

СРАЗУ ЗАМЕЧУ - я не давал определений в видео и не пытался дать развернутые ответы. Более подробно по каждому пункту рекомендую еще обратиться к документации. У тех же структур больше отличий и они могут быть не только в стеке, но и в куче (сюрприз), у них есть еще отличие - сравнение по значению... В общем видео не отменяет работы с документацией и книгами

Ответить
@lefrutit228
@lefrutit228 - 02.02.2024 14:41

не согласен насчет множественного наследования, т.к. интерфейсы мы именно что имплементируем(реализуем), а не наследуем - термин другой)

Ответить
@rtm0076
@rtm0076 - 07.01.2024 18:17

1. Record ведут себя иначе при сравнении - это важно!
var person1 = new Person("Tom");
var person2 = new Person("Tom");
Console.WriteLine(person1.Equals(person2)); // TRUE!!!!!!
Сравнение идет на основе значений!

Ответить
@user-ml1qv4gx9r
@user-ml1qv4gx9r - 13.12.2023 10:58

Какая-то подмена понятий у наследования. Множественного наследования в C# нет, потому что интерфейсы не наследуются, они реализовываются. Просто в синтаксисе языка C# эти вещи выглядят одинаково, по это делает их по сути одинаковыми вещами.

Ответить
@LotmineRu
@LotmineRu - 13.12.2023 00:14

Реализации в интерфейсах, лол
прикольный язык)

Ответить
@Miketo_Sanso
@Miketo_Sanso - 03.12.2023 00:42

Пишу код на Unity, не понял почти ничего, кроме стека и кучи. Значит, я тупой в этом деле, и до Джуна мне как до Китая?))

Ответить
@samirsalimkhanov3554
@samirsalimkhanov3554 - 18.11.2023 13:04

Реализация методов в интерфейсах это боль!

Ответить
@micoptimus
@micoptimus - 11.11.2023 11:02

В динамический SQL в хранимых процедурах нельзя встраивать строковые параметры. В PHP класс наследуется через Extends а интерфейсы через Implement.

Ответить
@user-bh2ge1mu9x
@user-bh2ge1mu9x - 14.10.2023 06:08

Спасибо, иниересно. Про наследование от object спрашивают, чтобы потом поговорить какие его методы можно переопределить и как ( ToString, Equals, GetHashCode ). А Singletone при регистрации контекста, например используется.

Ответить
@user-qf5pm8ci2h
@user-qf5pm8ci2h - 12.09.2023 13:57

интерфейсы не наследуют , а реализуют

Ответить
@Sultan69996
@Sultan69996 - 10.09.2023 06:47

Всем привет. Пайтон и питон одно и тоже . Нужно все тексты (коды и тд ....) всех языков программирования переделать под пайтон. Языков программирования очень много и многие эти языки не понимают друг друга. Это полный пиз дец. Нужно обучать всех новичков в питон языку. Зачем создавать новые языки? Зачем усложнять себе жизнь? Нужно следующее обновление Пайтона чтобы он понимал другие языки программирования. Чем меньше языков программирования тем проще, удобнее и приятнее писать коды и читать их. Всем нужно начать изучать лишь 1 язык программирования. Да это будет неудобно, сложно и тяжело но оно того стоит. Нужно сам пайтон писать на языке пайтон. Нужно Пайтон улучшать чтобы он мог выполнять все то что умеет делать другие языки. Хватит быть крабом ведре. Отпустите других крабов. 1 и тоже можно делать на разных языках так зачем изучать другие языки? Проще от них отказаться. Это как отказаться от разных видов разъёмов для 1 вида разъёма. И имя ему тайпси. Люди до сих пор используют мини юсб, микро юсб, лайтнинг, тонкая нокия, толстая нокия, микро HDML ..... Все люди перешли на тайпси провод и разъём но некоторые все ещё создают лайтнинг ))))))).

Ответить
@arsfaraway
@arsfaraway - 06.09.2023 09:45

1. Абстрактные классы, классы, интерфейсы и структуры (отличие от класса - Value Type, хранение в стеке. ) данных. Сейчас и record-ы спрашивать начнут.
2. String Builder.
3. IDisposable.
4. Делегаты.
5. Множественное наследование.
6. Object - базовый класс (редко спрашивают)
7. SQL Injection.
8. Throw & Throw Exception (Ex).
9. Singleton (или другие) - как добиться этого.
10. Dependency Injection.
11. Async/await.

Ответить
@zool305
@zool305 - 10.08.2023 06:18

Интерфейсы реализуют а не наследуют

Ответить
@candor756
@candor756 - 24.07.2023 22:01

В синглтоне помимо private ,нужно использовать lock

Ответить
@zerxa
@zerxa - 10.07.2023 18:05

Как пройти собеседование на C#?
Заходишь в офис, говоришь, что С# гамно, а в Microsoft все пидарасы и геи.
Получаешь оффер и через год становишься начальником конторы, ведь она стала успешной и больше не пишет на С#.

Ответить
@slavaberdsky9666
@slavaberdsky9666 - 08.06.2023 19:12

В С++ классы и стрктуры ничем не отличаются, кроме модификаторов доступа по умолчанию.

Ответить
@ilyal5712
@ilyal5712 - 01.05.2023 10:37

Сейчас популярно описать реальную задачу и спросить, как собеседуемый будет ее решать. Интервьер обращает внимание на ход мыслей собеседуемого. Лучше задавать уточняющие вопросы обоим сторонам.

Ответить
@TWITexe
@TWITexe - 21.04.2023 22:17

Интерфейсы не наследуются, они реализуются. Разве нет..?
Однажды я сказал, что они наследуются --> меня послали просто на собеседовании.

Ответить
@sergey.tatevosyan
@sergey.tatevosyan - 08.04.2023 13:26

1) Dispose необходимо вызывать при использовании неуправляемых ресурсов для высвобождения памяти.
2) Интерфейсы реализуются, а не наследуется(для кого то это придирка, а для кого то понимание что такое интерфейс и для чего он нужен). Т.е. множественного наследования нету. В этом ключе как раз не вижу никаких диссонансов в том что дали возможность реализовывать в интерфейсах некоторые методы.

Ответить
@russianyoutubeuser5023
@russianyoutubeuser5023 - 20.03.2023 18:27

Если кто-то работает напрямую с потоками ( Threadings) то для них методы (parameterizedThread) ожидают именно object параметры. Тут может пригодиться.

Ответить
@Warstarherskiy
@Warstarherskiy - 03.02.2023 19:02

Отвратительный тип

Ответить
@user-fn1by5zo3p
@user-fn1by5zo3p - 31.01.2023 17:03

По поводу специфики работы GC меня несколько раз спрашивали. Хотя, по сути это никогда не пригодилось

Ответить
@silaevanton1844
@silaevanton1844 - 14.01.2023 16:45

так у типов значений базовым тоже является object

Ответить
@jonro753
@jonro753 - 12.01.2023 13:38

Очень хочу уже пойти на первое собеседование, но я все еще новичок :) совсем вот недавно закончил курс Сакутина по шарпу, сейчас ищу другие источники для получения знаний. Крутой монолог, во многом помог.

Ответить
@AEF23C20
@AEF23C20 - 06.01.2023 18:46

абстрактный класс - методы определены но без реализации (с) аутор
во-первых, не бывает абстрактных классов
бывает тип абстрактного класса - вот это бывает

abstract class Base
{
int Method() { return 0; } // опа! реализация!
}

и на самом деле я всего лишь про то, что "с точки зрения" некоего языка [что называется общим соглашением] вышеприведённый код является абстрактным классом

однако же "с точки зрения" рантайма - всё является типом))) рантайм собсна и проверяет типизацию, и не более того[!], но это же значит, что если сменить тип [и это весьма просто] то рантайм будет считать этот класс вовсе не абстрактным)

ну потому что только в типе указана абстрактность, и более нигде
впрочем даже если "где то" в потрохах и стоит флаг абстрактного класса, то и этот флаг разумеется можно снять

так вы про какие абстрактные классы парите?))) всегда нужно разделять некий язык и реализацию этого языка в суровую реальность рантайма
а для рантайма всё то что существует в языке - да плевал рантайм на это всё то, что существует в этом вашем языке ахаха!)))

Ответить
@user-nr1ff1by5o
@user-nr1ff1by5o - 05.01.2023 11:27

Про делегаты - Func, Action постоянно в вебе присутствуют, а так же лямбды, так что делегаты не покинули нас и в вебе )

Ответить
@user-yu5wu2du3e
@user-yu5wu2du3e - 08.12.2022 22:33

Очень приятный монолог)))

Ответить
@NikitaJe_
@NikitaJe_ - 03.12.2022 13:45

Абстрактные классы это классы без реализации, это как спросили: Что значит знак главная дорога, а Мы отвечаем ну он желтый.
Интерфейсы не наследуются а реализуются, это разные вещи совершено, наследовать класс и наследовать интерфейс. Это как дать в морду и дать в жопу. Вроде одно и тоже но смысл разный

Ответить
@vykotlov
@vykotlov - 08.11.2022 16:10

Интерфейс - это контракт. Он не наследуется, а реализуется. Именно поэтому и говорят, что в шарпе множественное наследование отсутствует.

Ответить
@proKaps
@proKaps - 08.11.2022 12:37

да я уже похоже готов пройти собес

Ответить
@aldmidmitr2223
@aldmidmitr2223 - 17.10.2022 09:59

object спрашивают как раз таки в теме Boxing/Unboxing. Когда метод принимает object т.к. этот метод по какой-то причине не делали generic, то скорее всего ожидают передачи reference type и downcast object к нужному типу. Но можно передать и value type. например int и нарваться на Boxing (когда со стека переменная переедет в кучу).

Ответить
@orlem5837
@orlem5837 - 30.09.2022 02:06

Какие-то легкие вопросы. В СНГ сейчас ко всему перечисленному спрашивают (на Senior позиции):
- Детали работы сборщика мусора, поколения объектов
- Task'и и детали работы: что там с потоками, перехват исключений, в каком потоке продолжается выполнение после await
- IEnumerable vs IQueryable
- Рефлексия
- SOLID, DRY, KISS
- Паттерны проектирования (одним синглтоном не отделаться, да и вообще начинать рассказ с синглотона - дурной тон)
- Многопоточность: дедлоки, примитивы синхронизации (lock, semaphore, monitor, mutex, event wait handle, Auto/Manual Reset Event и остальные)
в общем, CLR via C# приходится обновлять перед тем как собеседовать(ся)🤣

Ответить
@maxfilin1263
@maxfilin1263 - 29.09.2022 07:41

Спасибо за контент, который ты делаешь. Двигать образование - это круто. Хотел бы отметить, что утверждение "все значимые типы хранятся в стеке" верно лишь от части. Корректнее было бы сказать "все значимые типы хранятся там, где применяются", поскольку поле класса, которое является значимым типом хранится в куче, рядом с самим классом. На мой взгляд, это важно понимать, когда речь идет об организации памяти

Ответить
@olexkov4643
@olexkov4643 - 27.08.2022 11:27

В С++ разница между классом и структурой только в том что по умолчанию в структуре поля публичные а в классе приватные...и все.
Класc не наследует интерфейс а реализует его...:)

Ответить
@freedomtv2295
@freedomtv2295 - 25.08.2022 18:53

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

Ответить
@freedomtv2295
@freedomtv2295 - 25.08.2022 13:56

Окей, может быть я чего-то не понимаю, поясните плиз:если структура это поле класса, а объект класса лежит в хипе, то какого черта структура лежит только в стеке. Она же будет в хипе. Или где-то ошибка?

Ответить
@apdgslfhsodbna
@apdgslfhsodbna - 14.08.2022 23:48

Добавлю из своего опыта прохождения собеседований вопросы, которые задавали мне, может кому-то будет полезно:

1) В чём разница между абстрактным классом и интерфейсом, примеры использования.
2) Разница между анонимным типом и кортежем?
3) Разница между finalizer и disposable?
4) Расскажите про принцип работы GC — поколения и графы объектов.
5) В чем разница между throw без параметра и с параметром?
6) В чём основная фишка словаря?
7) В каких случаях уместно использовать монитор, а в каких мьютекс?
8) Сколько способов создания потока существует, и перечислить с примерами реализации.

Ответить
@volodyakachalka5187
@volodyakachalka5187 - 31.07.2022 10:38

Но в абстрактных классах могут быть и методы с реализацией

Ответить
@aKlnv
@aKlnv - 18.07.2022 11:47

вообще-то множественное наследование ни ни. Тк. интерфейс не наследуется, а реализуется.

Интерфейс - это контракт. Его реализация бывает явной и неявной. Но это не наследование. И даже не рядом.

Ответить
@azazellio
@azazellio - 06.07.2022 19:36

Интерфейсы реализуем, поэтому нет множ. Наследования

Ответить
@nikiv2688
@nikiv2688 - 06.07.2022 11:47

Блин, а я оказывается почти все знаю))

Ответить
@wladdovy4370
@wladdovy4370 - 28.06.2022 12:04

Хорошее, насыщенное видео. Лайк.
Только у нас в России за ответы типа есть "наследование интерфейса" интервьюеры обычно делают facepalm и говорят что-то "дорогой соискатель, интерфейсы не наследуют, интерфейсы реализуют".

Ответить
@ThePetrovpetrpetrovi
@ThePetrovpetrpetrovi - 18.06.2022 16:50

1. Struct vs Class мой любимый вопрос на собеседовании, на нем плывут 70-80% жунов и мидов. Все поголовно отвечают про копирование и про то что стурктуры в стеке, а классы в хипе(то что в интеренете за 5 минут можно найти). Следущий вопрос сразу а что будет если структура является полем класса, и тут труба... для тех кто ответит следующий вопрос: а зачем вообще структуры в C# и в чем разница массива структур и массива классов(например точка X,Y). А понимание ответов на самом деле очень важно при работе с большими данными.
2. Попросить рассписать сингелтон - таже беда, все слышали, но никто толком написать не может
3. В старом шарпе интерфейсу через экстеншены тоже можно методов написать, поэтому ничего кроме синтаксиса сильно не изменилось.
4. Еще 50% джунов и 25% мидов заявляют что Dispose удаляет объекты из памяти сразу по вызову ).

Ответить
@user-sp3hy7cw9x
@user-sp3hy7cw9x - 20.05.2022 20:10

ооо парень)) За все valuetype в стеке прям сразу смотреть дальше не буду)) Проблема современных прогеров - никто не знает ничего про процессор))

Ответить
@mv.mmaksm
@mv.mmaksm - 17.05.2022 16:11

Абстрактный класс:
1. Нельзя создавать объекты
2. Можно реализовывать свойства и методы
3. Позволяет объединить через наследование похожие по сущности классы
4. Абстрактрый класс именно наследуется, а не реализуется
5. Члены класса не обязательно должны быть public
6. Нет множественного наследования (относится ко всем классам)
Интерфейс:
1. Содержит только объявление методов и свойств без их реализации ( в последних версиях можно реализовывать)
2. Методы и свойства обязательно должны быть public
3. Объединяет разные по сущности классы, имеющие одинаковые свойства и методы, определенные в интерфейсе
4. Именно реализуется, а не наследуется
5. Возможна множественная реализация

Ответить
@etalzone961
@etalzone961 - 17.05.2022 12:41

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

Ответить
@alexpermenev
@alexpermenev - 13.05.2022 05:47

Информация в видео полезная, спасибо! А вот со множественным наследованием немного факапнулся) интерфейсы мы не наследуем а имлементируем, в джаве это явно показали разными операторами extends и implements)

Ответить