Какие знания С# я должен иметь?

Очень открытый вопрос. Я программировал на С# для за последние 5 месяцев выполнял небольшие проекты, которые я завершил успешно.

Сегодня я пошел в интервью для роли С#. Первый вопрос "Расскажи мне о боксе". Учитывая мой опыт, у меня не было Идея, что имел в виду парень. Излишне говорить интервью не так хорошо. Другие вопросы были "почему бы и нет" рекомендуется использовать ArrayList of int ',' скажите мне, что вы знать о потоке "и т.д.

Я действительно не хочу, чтобы это повторилось, поэтому я планирую потратьте некоторое время на чтение (и практикуете) больше на С#. я понять, что лучший способ обучения - это кодирование, но кодирование не помогло бы мне ответить на вопрос например, о "боксе".

Я не прошу вас ответить на вышеуказанные технические вопросы. Фактически, я знаю теперь их ответ, когда я пошел прямо Google после интервью, и я понял, что мой Знание С# несколько ограничено.

Мой вопрос: на ваш взгляд, какие знания должны быть У разработчика С# есть? В идеале было бы лучше, если бы вы могли классифицировать его (базовые знания, которые любой человек должен иметь без исключение, передовые знания, экспертные знания и т.д.). Не нужно чтобы вдаваться в подробности. Изучение того, что вы перечислите, будет быть хорошим упражнением для меня.

Ответ 2

Я бы ожидал, что кто-то будет заниматься профессиональной работой С#, чтобы узнать о:

  • Общие и общие коллекции
  • Интерфейсы (общие)
  • Интерфейсы (специфические), а именно -
    • IDisposable: как он интегрируется в язык и почему
    • IEnumerable: включая общие методы расширения, блоки итератора и отложенное выполнение
  • Обзор сериализации в .Net(возможно, не сделал этого, но поймите, что это такое, и узнайте, где искать в иерархии пространства имен и документации)
  • Обзор Xml в .Net(так же, как сериализация)
  • Обзор концепций потоков (таких же, как xml/serialization). Бонусные баллы за понимание того, почему большинство потокобезопасных коллекций не являются.
  • Использовали анонимных делегатов /lambdas по крайней мере в одном проекте и поэтому также имеют базовое представление о закрытии.
  • Удобное объяснение некоторых базовых понятий по крайней мере из одной из winforms, wpf, webforms или MVC
  • Уметь отвечать на некоторые простые вопросы по конкретным общим классам в .Net BCL: именно из System.Data(подумайте о параметризованных запросах!) и System.IO(filestreams, path).
  • Сбор мусора: когда вы должны называть GC.Collect(подсказка: почти никогда) и почему

Ответ 3

Мой личный опыт с давних времен, когда я учился в школе.

Я пошел, чтобы увидеть, как мой отец работает в банке. В то время большая часть его дня занималась учетными записями и следила за тем, чтобы все работало. Я видел, что он пытался подсчитать/вычислить большие числа и вычислить (базовые дополнения/умножения...).

После того, как он заметил его, я спросил его: Папа, если все, что вам нужно сделать, это основные дополнения и умножения, почему нужно учиться до окончания?

Его ответ был: хотя вам не нужно использовать все знания, которые вы приобрели, это знание поможет вам принимать обоснованные решения.

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

Мое предложение вместе с остальными сообщениями состояло в том, чтобы попытаться потратить некоторое время на stackoverflow каждый день.

Удачи.

Ответ 4

Хороший собеседник не собирается заманить вас в пустяки. Вот почему у нас есть Google. Хороший собеседник собирается найти те районы, которые вы не знаете, и задавать вам вопросы там, так как это лучшее место, чтобы узнать, как вы реагируете, когда сталкиваетесь с чем-то, чего у вас нет.

Лучший совет, который я могу дать для интервью, - не слишком беспокоиться о технических мелочах. Вместо этого, в интервью, сосредоточьтесь на навыках решения проблем. Если вы ничего не знаете, не пытайтесь скрыть это, просто признайте это. Если вы думаете, что знаете, все в порядке, чтобы сказать: "Я не уверен, но я думаю, что это так". И не смущайтесь - в этот момент, как правило, интервьюер даст вам подсказку. Это не просто дает вам ответ, это еще одна часть теста - чтобы убедиться, что, учитывая толчок в правильном направлении, вы можете экстраполировать оттуда.

Для вопросов бокса /ArrayList/int, если бы я брал интервью, и вы не понимали бокса, я бы дал вам общее описание того, что сделал бокс. Тогда я бы спросил вас, зная, что я вам только сказал, почему вы думаете, что использование ints в ArrayList может быть плохой идеей.

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

1) Входы к методу 2) ожидаемый выход метода 3) Граничные и краевые случаи.

Это звучит смешно, но удивительно, как многие разработчики, даже те, кто имеет опыт, не думают об этом. Код решает проблему - если вы не понимаете проблему правильно, вы не можете решить ее правильно.

Ответ 7

Я должен был бы сказать, что если собеседника можно одурачить, если у кого-то есть больше возможностей .NET/С#, он или она посещает веб-страницу, тогда интервьюер не работает. Я сам взял интервью у нескольких людей, и мне очень нравится подход, который дает им понять, какую проблему решить, и попросить их написать код на белой доске. Даже если они запомнили ответы на каждый вопрос в блоге Скотта Хансельмана, я бы много узнал о том, насколько они удобны на этом языке, а также о том, как они решат проблемы. Я ищу разработчика, а не партнера для Trivial Pursuit,.NET Developer Edition.

Тем не менее, поддерживать блоги, такие как Hanselman, - это фантастический способ не отставать от жаргона. Вы можете кодировать С# в вакууме в течение многих лет, полностью понять преимущество строго типизированного List <int> над ArrayList, но на самом деле не используют термин "бокс". Но гораздо больше времени в интервью, чтобы спросить: "Опишите преимущество повторения с помощью List <int> вместо ArrayList of int", чем нужно спросить: "Расскажите мне о боксе". Плюс, фактически исследуя ответы на вопросы интервью Hanselman.NET(особенно, если вы изучите детали и спросите "Почему?" ), Вы сделаете вас лучшим разработчиком. Так что, непременно, продолжая читать Гензельмана.

И еще одно примечание... Если я спрошу кого-нибудь, является ли String ссылочным типом или типом значения, и они просто говорят: "Хммм... Тип ссылки", я не буду так же счастлив, как Я бы ответил: "Хммм... Тип ссылки, но это интересный вопрос". "Почему это?", Я говорю... "Поскольку строка реализована так, что строка неизменна, позволяя вам делать что-то с ней, как безопасно использовать ее как хэш-ключ. Или передать ее методу, зная значение не может быть изменено. Таким образом, строки могут действовать так же, как типы значений..." И это будет отличный разговор, который заставит меня спросить: "Так расскажите мне больше о том, почему ключи хэша должны быть неизменными..."

Это не просто разница между правильным ответом на вопрос 50/50 и всей дополнительной информацией во втором ответе. Интеллектуальная беседа с собеседником приводит меня к мысли, что я буду проводить такие разговорные разговоры на регулярной основе, как только собеседник станет моим коллегой. И это то, что я точно ищу.

Ответ 9

Также зависит от роли. Если это было объявлено как роль jnr, то вопрос о потоке немного жесткий... иногда агентства/работодатели имеют нереалистичные ожидания.

Ответ 10

Аналогичная вещь произошла с моим значительным другом, проводящим тест вождения. Государственный солдат сказал: "Сделайте круговую развязку", и она не знала, о чем он говорит. Мы оба считаем, что круговое движение - это тип дорожной разметки с большим кругом, а не разворот, как это имел в виду инструктор. Поэтому я знаю, что вы имеете в виду.

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

Ответ 11

Это то, о чем я много размышлял в последнее время. Использование С# много, но не уверен, что мне не хватает.

Я заказал

Фонд разработки приложений Microsoft®.NET Framework

Что покрывает много земли, связанной с С#

Также смотрите С# в глубине

Прочитайте это уже. Имеет отличную информацию от автора высокого качества.

В глубине продается также через Jon Skeet blog

Ответ 12

Пять месяцев без знания бокса? Мой дорогой, дорогой, мальчик. Я бы смутился быть на вашем месте. Почему, я помню те дни, когда я, как и ты сейчас, тоже не обладал некоторыми базовыми знаниями об инструментах моего ремесла. Но, не отчаивайтесь, парень! У вас есть время и желание учиться. Давайте немедленно дадим вам некоторые знания, которые вы можете использовать для своей будущей выгоды! Ура!

Прочитайте CLR Via С# для обложки. Возьмите книгу Linq (не могу рекомендовать никого с головы). Напишите приложение с помощью WPF (для xaml). Эти три вещи, которые, я думаю, дадут вам самый большой удар для вашего доллара прямо сейчас.