Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Типовые вопросы по C#.NET


Автор: ДобренькийПапаша 8.9.2009, 19:43
Вот http://forum.vingrad.ru/forum/topic-262419/0.html аналогичная тема, я решил тут открыть новую по C#.NET, через несколько дней предстоит собеседование в очень крупную IT-компанию с такими требованиями (я ещё неопытен, может тысяч 6 строк тока написал на C# и сотню хранимых процедур на T-SQL):

#
  •  знание принципов объектно-ориентированного программирования,
  •  навыки программирования на одном из языков: C++/Java/C#,
  •  знание теоретических основ реляционных БД и языка SQL.

Что могут спрашивать? И вообще, что скажете по этому поводу?

Автор: Экскалупатор 8.9.2009, 19:53
что такое структура? (вчера был на собеседовании спрашивали).

Автор: ДобренькийПапаша 8.9.2009, 20:02
абстракция совокупности данных как единого целого, обяъявляется ключевым словом struct, наследуется от System.Value. 
Это сходу)))

Добавлено через 1 минуту и 44 секунды
з.ы. А это вам единственный вопрос задали?)))

Автор: Экскалупатор 8.9.2009, 20:04
))) 
у меня спрашивали можно ли в структуре объявлять методы и если да то чем она отличается от класса.

Автор: ДобренькийПапаша 8.9.2009, 20:10
Вам более серьёзные вопросы задавали, или мне из Вас вопросы клещами вытягивать?  smile 

Автор: Экскалупатор 8.9.2009, 20:22
конечно не единственный, просто C# это была не основная специализация. 
1. спрашивали про интерфейсы, что это, что дает, какие стандартные интерфейсы я знаю
2. какой базовый класс в .NET и какие методы он реализует.
3. ну и были задания на реализацию методов. (например реализовать метод который бы возвращал номер недели по введенной дате.)
вроде все. если еще вспомню то напишу.

Автор: ДобренькийПапаша 8.9.2009, 21:03
А вот зачем такой вопрос по методу который возвращал бы номер недели.
Я вот помню, что это в объекте DateTime есть функция какая-то, но я её не помню, поэтому погляжу в МСДН просто, а на собеседовании чё делать? Реализовать сходу как-нибудь напролом, если не помнишь, или лучше сказать мол вот DateTime но метод объекта не помню?

Автор: Экскалупатор 8.9.2009, 21:16
там по условию нельзя пользоваться стандартными функция(иначе действительно нет смысла спрашивать), можно пользоваться функцией возвращающий номер дня в неделе и номер дня в году. на первый взгляд вроде все очевидно, получил номер дня в году, разделил на 7 и все, но вот например 5 января 2009 года это вторая неделя, а по сему решение в лоб не работает, такие задания наверное просто для проверки способностей к "мыслению" делают.

Автор: Darkmaster 10.9.2009, 13:43
2Экскалупатор,

Если не сложно, то можете привести хотя бы 2-3 задания ? Просто очень интересно попробовать решить. 

Автор: gambit 10.9.2009, 14:24
Цитата(Экскалупатор @  8.9.2009,  21:16 Найти цитируемый пост)
там по условию нельзя пользоваться стандартными функция(иначе действительно нет смысла спрашивать),

Почему же нельзя? Весь смысл в том, знаешь ли ты стандартные функции. На работу берут программиста, а не изобретателя велосипеда, который вместо того чтобы использовать функцию, потратит пол дня на реализацию своего варианта.

Автор: PashaPash 10.9.2009, 14:38
ДобренькийПапаша, 
у нас три контрольных вопроса:
1. Жизненный цикл страницы в asp.net
2. Сборщик мусора
3. LEFT JOIN
иногда еще доп. - про виртуальные и абстрактные функции. ;)

Автор: Экскалупатор 10.9.2009, 15:27
gambit, их особо не интересовало знаешь ли ты весь MSDN наизусть, задача для того что бы решить поставленную задачу теми средствами, которые тебе ДАЛИ, а не теми которые ты знаешь, т.е. надо подумать и решить. это как задачи в школе, все знают что высоту треугольника можно тупо измерить линейкой, но по условию задачи ее нужно найти... так и тут. наверное хотели проверить способность именно решать задачи,  а не просто знать.
всего меня просили написать две вещи:
1. метод сортировки пузырьком, при чем после того как я его написал попросили объяснить и оптимизировать т.е. сделать так что бы не было лишних проходов и проверок.
2. это про недели.


остальное устно, мне больше всего понравился вопрос про структуры... 

Автор: ДобренькийПапаша 10.9.2009, 19:49
PashaPash, по поводу первого вопроса, а если программер не вэб-ориентированный?))) 
Механизм работы сборщика глубоко требуете знать или можно рассказать поверхностно? 

Автор: fromrus 10.9.2009, 20:04
Цитата(PashaPash @ 10.9.2009,  14:38)
ДобренькийПапаша, 
у нас три контрольных вопроса:
1. Жизненный цикл страницы в asp.net
2. Сборщик мусора
3. LEFT JOIN
иногда еще доп. - про виртуальные и абстрактные функции. ;)

Если я не веб программист то как я отвечу на первый вопрос?Ну если тока набор идет на вебистов...
остальные два легкие(мозгов не надо,тока знания)....
Обычно в более менее адекватных фирмах спрашивают не о том ,как я знаю .НЕТ,а то как я умею программировать на .НЕТ...
К примеру,какие паттерны я знаю и как они реализуются средствами .НЕТ...+абстрактыне вопросы по платформе,типа того,как работает сборщик мусора,или "какие способы асинхронного вызова существуют в .НЕТ"....
Эт мне знакомые рассказывали..)
А ваще я хз,сам так не устраивался,у меня на собеседовании спросили как с базой работать и что я писал вообще(нормально да??? smile )...Прошел...

Автор: PashaPash 11.9.2009, 16:38
ДобренькийПапаша, fromrus, мы набираем в основном web-ориентированныхsmile
Важно не ответил/не ответил, а до какого уровня ответил. 
Если на вопрос про сборщик мусора ответил "да, есть такой, мусор собирает" - не ответил. Если примерно рассказал, как именно собирает - как минимум читал что-то. Если знает как лечить OutOfMemoryException-ы и может сходу сказать сколько всего managed-куч в дотнете - у него есть не только знания, но и мозги чтобы эти знания получить.
На самом деле страшно много людей даже через эти 3 вопроса не проходят, и не доходят до паттернов и прочего.

LEFT JOIN - отсев на хоть какое-то знание SQL. 

Способы асинхронного вызова есть даже в книжке по сдаче на MCTS. Еще спрашиваем знание базовых паттернов, умение писать тесты и прочее, но это неосновные вопросы.
Цитата(fromrus @  10.9.2009,  20:04 Найти цитируемый пост)
у меня на собеседовании спросили как с базой работать и что я писал вообще(нормально да??? smile )

Я устроился на свою текущюю работу, спросив arilou-а "это был вопрос про LEFT JOIN?" когда он запутался в формулировке smile

Автор: ДобренькийПапаша 11.9.2009, 17:15
PashaPash, Перечислите, пожалста, базовые паттерны. И что значит "сколько всего управляемых куч в .NET???"

Автор: PashaPash 11.9.2009, 19:00
Цитата(ДобренькийПапаша @  11.9.2009,  17:15 Найти цитируемый пост)
PashaPash, Перечислите, пожалста, базовые паттерны. И что значит "сколько всего управляемых куч в .NET???" 

Базовые - субъективно - Singleton, Factory на уровне "как реализовать". IoC/DI, Query Object, Data Mapper, Metadata Mapping, Repository. Последние обычно не по названиям, а в виде "расскажите как был построен DAL на вашем последнем проекте".
А управляемых куч - как минимум две. Но до этого уровня никто не добирается. Все обламываются на на "а как GC узнает, что объект больше не используется?" - все предпочитают работать с GC как с черным ящиком, из которого изредка выскакивают грабли  :(

Автор: ДобренькийПапаша 11.9.2009, 19:18
Цитата(PashaPash @ 11.9.2009,  19:00)
"а как GC узнает, что объект больше не используется?"

Ведёт счётчик ссылок и если счётчик равен нулю, то удаляет, вроде так)))
Ну окей. Всем спасибо.

Автор: PashaPash 11.9.2009, 19:50
Цитата(ДобренькийПапаша @  11.9.2009,  19:18 Найти цитируемый пост)

Ведёт счётчик ссылок и если счётчик равен нулю, то удаляет, вроде так)))

неа, не угадал smile

Автор: Rohoss 11.9.2009, 20:00
Цитата(PashaPash @  11.9.2009,  19:50 Найти цитируемый пост)
Цитата(ДобренькийПапаша @  11.9.2009,  19:18 )Ведёт счётчик ссылок и если счётчик равен нулю, то удаляет, вроде так)))неа, не угадал 

Вроде так… Только счётчик ссылок это уже относится к COM. А GC проверяет участки занятой памяти, и смотрит, ссылаются ли на неё объекты.

Добавлено через 10 минут и 41 секунду
Цитата(PashaPash @  11.9.2009,  19:00 Найти цитируемый пост)
А управляемых куч - как минимум две

Одна из куч – это та, в которой находятся объекты, которые живут долго… Есть предположения, что чем дольше прожил объект, тем дольше он проживёт, а значит нет смысла его постоянно проверять.

Добавлено через 12 минут и 30 секунд
Типа разные поколения объектов. А разве может быть больше двух куч? Вроде как есть ещё какая – то куча для особо больших объектов?

Автор: PashaPash 11.9.2009, 20:18
Rohoss, уже ближе. На самом деле GC просто пробегается от GC-корней - статических полей, локальных переменных, и т.д., и строит список используемых объектов. И потом перекладывает используемые объекты поплотнее. Что избавляет его от необходимости хранить статус каждого участка памяти. И потом в эту простую систему вписывается куча хаков для pinned-объектов, поддержки поколений, финализации и объектов больше 85000 байт :(
А как оно на самом деле там внутри работает - никто не знает smile

Кстати, на собеседованиях обычно спрашивают совсем не то, что на самом деле требуется от разработчика.

Автор: ДобренькийПапаша 13.9.2009, 18:57
Цитата

А управляемых куч - как минимум две.


Только что, прочитал у Троелсена, цитирую:
"Вполне допустимо считать, управляемую динамическую память единым регионом в памяти".

Да, там была речь про особо крупные объекты, к ним сборщик обращается реже. Но это не меняет дела. Управляемая куча, по сути, одна...
Я, собственно, всегда так думал)))

Автор: jonie 13.9.2009, 22:41
http://www.dotnetfunda.com/interview/showcatquestion.aspx?category=34

Автор: PashaPash 14.9.2009, 13:43
Цитата(ДобренькийПапаша @  13.9.2009,  18:57 Найти цитируемый пост)

Только что, прочитал у Троелсена, цитирую:
"Вполне допустимо считать, управляемую динамическую память единым регионом в памяти".

Вполне допустимо на уровне "прочитал Троелсона". На самом деле есть особенности для многопроцессорных систем - там по одной физической куче на процессор. И для больших объектов - фрагментация LoH, она же "почему упало с OutOfMemory, когда памяти еще много".

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)