Модераторы: Partizan, gambit

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> junior C# developer 
:(
    Опции темы
ArniLand
Дата 28.7.2011, 12:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 17.8.2008

Репутация: нет
Всего: нет



Подскажите, что необходимо знать для того чтобы устроиться junior C# developer.
PM MAIL   Вверх
gambit
Дата 28.7.2011, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***
Награды: 1



Профиль
Группа: Комодератор
Сообщений: 1359
Регистрация: 25.6.2006
Где: я?

Репутация: 3
Всего: 40



Это из темы инструктора Epam, Александра Кузнецова(кстати отличного человека и специалиста) - "Что должен знать практикующий .NET разработчик"

1. Собственно .NET (основные принципы работы, внутреннее устройство и прочее). В зависимости от позиции может потребоваться как поверхностное знание, так и детальное понимание принципов работы того же сборщика мусора и компиляции кода на лету.
2. Reflection. Выделил отдельно, хотя является составной частью 1. Сейчас на этой штуке большинство всех привязок данных построены, так что знать надо.
3. ADO .NET. В небольших проектах сейчас активно заменяется новомодными фреймворками, типа того же Entity Framework, но еще полно старых проектов, да и в крупных от EF как-то больше геморроя. Ну а уж про то, что надо знать основы...
3*. Как справедливо заметил ниже Даниил, SQL знать тоже обязательно. smile Как минимум, это базовые запросы на уровне SELECT, INSERT, UPDATE, DELETE, JOIN и т.д. + представлять, что же такое хранимые процедуры. Но желательно, все-таки, уметь писать скрипты для разворачивания тестовой базы.
4. Entity Framework. Средство крайне быстрой генерации слоя доступа к данным. В небольших проектах однозначно рулит, в крупных... на то, чтобы научиться его правильно готовить, надо потратить время, сопоставимое со временем написания всего проекта.
5. LINQ. Средство крайне удобного описания запросов к данным в различного рода хранилищах. Для начала достаточно понять LINQ to objects, а дальше уже в зависимости от конкретики.
6. XML + XSD + XSLT + XPath. К .NET отношение имеет слабое, скорее, однозначный must have. Но в любом случае, возможности .NET по работе с ними знать надо
7. Сервисы. WCF в последнее время явный лидер, но и о старых тоже забывать не стоит.
8. WWF??? Не знаю, не пользовался. И как-то не особо доводилось видеть, чтобы ее использовали .
9. Remouting.

Дальше начинается UI
10. WinForms. Жива еще. Хотя разбираться с ней "на перспективу" уже не стоит.
11. WPF. Создавался как замена Winforms и постепенно успешно ее с рынка вытесняет.
12. ASP .NET средство создания web-приложений. В чистом виде используется уже редко, подменяясь AJAX, Silverlight, или активно тренсформируясь с использованием MVC
13. JavaScript + AJAX (Средство асинхронных запросов из JavaScript к серверу) Опять же не .NET, но знать надо
14. Silverlight. Средство создания UI для веб с использованием WPF. От полного WPF отличается урезанными возможностями и рядом заморочек.

Как-то так. Желающие могут продолжить/покритиковать. Естественно, все из этого знать на 100% не стоит (да и вряд ли возможно), но направление для раскопок, надеюсь, задал .

http://vkontakte.ru/topic-21396110_23476592

Это сообщение отредактировал(а) gambit - 28.7.2011, 13:19
PM MAIL ICQ Skype   Вверх
gmx
  Дата 28.7.2011, 15:08 (ссылка)   | (голосов:4) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 28.7.2011

Репутация: нет
Всего: нет



gambit, не согласен, потому что:

1-ый пункт - его слабо знают даже системные архитекторы в консалтинговых компаниях ( не смотря на громкое название должности ), в R&D Intel, к примеру, знают. Так что, тут нужно нюансы все учитывать. Что системный архитектор в ООО "Мухосранск-компани" или в Интел - это разные вещи, собственно относится, как и к junior, везде разный уровень серьезности.

Хотя, нет...

Вообще, несогласен с пунктами всеми, т.к. .net-программисты обычно имеют кривое понимание работы системы в целом... и тут можно затрагивать все аспекты, что и модель OSI плохо знают, и как вообще устроена сеть, как реально разбираются сетевые пакеты, и как устроена работа процессов в ОС, и как вообще устроена файловая система и тд и тп, и на чем сам был написан Silverlight любимый у .net-фанатов ( не только в плане ЯПа, а что NPAPI мало кто знает используется в ряде браузеров для создания подобных технологий ), да и вообще не владеют порой даже простейшими моделями построения данных, как связные списки ( LinkedList<T> в .NET - это не то! ).

Да, и вообще среди .net программистов не так много людей, которые закончили технические вузы по профилирующей специальности.

Да и работы с указателями норм - нет... smile

Кстати, вот интересно, как раз коль про такие основы, как связные списки затронули ( что, след. код будет фильмом ужасов для C#-программистов - это ясно, но все же интересно, как разберете ):

Задачка: построить односвязный список при помощи указателей , а не встроенного класса из Collection.Generics, и рекурсивно спуститься по нему, при этом изменяя каждый раз значения.

И код ниже, с еще задачами: "Почему после AddNewElement(&list, int); - нельзя будет просмотреть список *list?" и "Какие можно отключить сборку мусора ( или отложить ее до завершения опред. действий?"

Код

using System;

unsafe struct A
{
    public int num;
    public A* next;
};

unsafe struct P
{
    static void AddNewElement(A** begin, int num)
    {
        A ob1 = new A();
        A* ob2 = &ob1;
        ob2->num = num;

        if (*begin == null)
        {
            ob2->next = null;
            *begin = ob2;
        }
        else
        {
            ob2->next = (*begin)->next;
            (*begin)->next = ob2;
        };
    }

    static void DeleteLastItem(A** list)
    {
        A* next = null;

        if ((*list)->next != null)
        {
            next = (*list)->next;
            *list = null; GC.Collect();
            *list = next;
        };
    }

    static void PrintAll(A* list)
    {
        for (A* current = list; current != null; current = current->next)
        {
            Console.WriteLine(current->num + "\n");
        };
    }

    static int Main()
    {
        A* list = null;

        AddNewElement(&list, 14);
        AddNewElement(&list, 44);
        AddNewElement(&list, 24);
        AddNewElement(&list, 44);
        AddNewElement(&list, 4);

        PrintAll(list);
        DeleteLastItem(&list);
        PrintAll(list);

        return 0;
    }
};

PM MAIL   Вверх
Экскалупатор
Дата 28.7.2011, 15:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1746
Регистрация: 1.4.2009
Где: г. Минск

Репутация: 5
Всего: 24



gmx, ничего супер мега сложного в твоих примерах нету, первый курс решает подобные. а за использование "unsafe" на некоторых конторах можно и по голове больно получить. несомненно что знать нужно много, но junior он на то и junior что бы учиться...
Цитата(gmx @  28.7.2011,  14:08 Найти цитируемый пост)
Да и работы с указателями норм - нет

да и зачем если в этом языке их нет?

если нравиться Си/С++ то зачем тогда тебе .net?

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

Это сообщение отредактировал(а) Экскалупатор - 28.7.2011, 15:40
PM MAIL ICQ   Вверх
gmx
Дата 28.7.2011, 15:45 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 28.7.2011

Репутация: нет
Всего: нет



Цитата

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

где я сказал КОНКРЕТНО , что не надо? я написал. что .net программисты обычно реально не знают, как это работает, а не то, что это не надо знать, смысл был в том, что .net программисты все равно не знают реального ус-ва памяти

Цитата

gmx, ничего супер мега сложного в ваших примерах нету

ок, тогда отвечай на мои задачки , написать "ничего сложного - нет" - это не ответ, за одно и посмотрим, как .net-программист ответит на это

Цитата

первый курс решает подобные.

первый курс НЕ решает подобное и на других курсах, в нормальных вузах C#/.NET вообще не преподают, т.к. не несет академической ценности - это раз, кривое - это два
первый курс обычно штудирует алгоритмы и опред. разделы математики и лабы выполняют (о Боже!) на bash или подобном, где нет возни с памятью, т.к. на 1-ом курсе это не нужно
Вы из какого ВУЗа? фак-т && спец-ть (или какой закончили)?

Цитата

да и зачем если в этом языке их нет?

Они есть. Кстати, зачем они нужны в C# ?

Цитата


а за использование "unsafe" на некоторых конторах можно и по голове больно получить


Видимо, это конторы из рязряда, где на Sharepoint отмывают деньги.



Это сообщение отредактировал(а) gmx - 28.7.2011, 15:47
PM MAIL   Вверх
Экскалупатор
Дата 28.7.2011, 16:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1746
Регистрация: 1.4.2009
Где: г. Минск

Репутация: 5
Всего: 24



Цитата(gmx @  28.7.2011,  14:08 Найти цитируемый пост)
"Почему после AddNewElement(&list, int); - нельзя будет просмотреть список *list?" и "Какие можно отключить сборку мусора ( или отложить ее до завершения опред. действий?"

1. что подразумевается под словами "посмотреть список"? в дебагере не видно? потому что указатель в неуправляемую память...

2. GC.KeepAlive. это как бы кошерно, но "утечку памяти" вполне реально вызвать и самостоятельно, хотя и не совсем тривиально.

ps. твой код не работает, PrintAll(list); генерирует "NullReferenceException" Object reference not set to an instance of an object.

и таки да, динамические структуры это первый курс, второй семестр. там где бинарные деревья и пр.

Это сообщение отредактировал(а) Экскалупатор - 28.7.2011, 16:31
PM MAIL ICQ   Вверх
WarHog
Дата 28.7.2011, 16:39 (ссылка) |    (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 20.10.2007
Где: Воронеж

Репутация: нет
Всего: 2



Цитата

в нормальных вузах C#/.NET вообще не преподают, т.к. не несет академической ценности - это раз, кривое - это два

А С++, стало быть, прям и несет несомненную академическую ценность  smile
Луговского на вас нет, gmx
--------------------
PM MAIL   Вверх
Экскалупатор
Дата 28.7.2011, 16:45 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1746
Регистрация: 1.4.2009
Где: г. Минск

Репутация: 5
Всего: 24



 smile чувствую дело пахнет холиваром...
напомню что тема топика несколько в другом...

по теме: 
ArniLand, ориентируйся на конкретную контору, так будет надежнее, посмотри что они пишут(на сайте конторы обычно перечисляют продукты которые они пишут/писали, типа рекламы что то) ну и можно посмотреть что для этого чаще всего нужно, какие технологии используются и пр. от себя добавлю что в разных местах разные требования, где то нужно просто знать что существует XML и этого для начала будет достаточно, а где то нужно будет уметь рассказать что это и для чего это можно использовать в реальных проектах. знаю что непременным условием остается иностранный язык, но опять же на разных конторах к этому относятся по разному...
PM MAIL ICQ   Вверх
gambit
Дата 28.7.2011, 21:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***
Награды: 1



Профиль
Группа: Комодератор
Сообщений: 1359
Регистрация: 25.6.2006
Где: я?

Репутация: 3
Всего: 40



Цитата(gmx @  28.7.2011,  15:08 Найти цитируемый пост)
Вообще, несогласен с пунктами всеми, т.к. .net-программисты обычно имеют кривое понимание работы системы в целом...

В вы каким образом связаны с .net??

Цитата(gmx @  28.7.2011,  15:08 Найти цитируемый пост)
1-ый пункт - его слабо знают даже системные архитекторы в консалтинговых компаниях

Да, я бы тоже не стал с вами работать. Базовое понимание механизмов сборки мусора, рефлексии, имен сборок и пр. необходимо для того кто хочет развиваться в данном направлении, а не писать всю жизнь "Hello world". И раз уж это написал эпамовец, то расскажу про них: у них знание базовых вещей платформы, далеко не единственное, но одно из основных требований для принятия джуниора.

Цитата(Экскалупатор @  28.7.2011,  16:45 Найти цитируемый пост)
знаю что непременным условием остается иностранный язык, но опять же на разных конторах к этому относятся по разному... 

Я в эпам не попал по причине плохого английского, а сейчас работаю в компании, за пол года англ ни разу не понравился. А ни по условиям, ни по зарплате с эпамом никаких различий.
PM MAIL ICQ Skype   Вверх
gmx
Дата 29.7.2011, 11:04 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 28.7.2011

Репутация: нет
Всего: нет




Модератор: Сообщение скрыто.

PM MAIL   Вверх
Экскалупатор
Дата 29.7.2011, 11:28 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1746
Регистрация: 1.4.2009
Где: г. Минск

Репутация: 5
Всего: 24



 smile 
gmx, ты вот скажи, с чего ты решил что в этой ветке форума кому то интересны твои познания в С++? это тема не этого топика и даже не этого раздела. го в флуд и там делай что хочешь... ты лучше свой пример исправь, что бы он работал, а потом будешь учить остальных и показывать свои глубокие познания, а пока что видно что даже если и знаешь названия то применять не умеешь...

а то мне прямо страшно от таких слов:

Цитата(gmx @  29.7.2011,  10:04 Найти цитируемый пост)
пройдусь в целом по .net 

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

оставь лучше этот холивар, он тут мало кого тронет.
PM MAIL ICQ   Вверх
gmx
Дата 29.7.2011, 11:36 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 28.7.2011

Репутация: нет
Всего: нет



Цитата(Экскалупатор @  29.7.2011,  11:28 Найти цитируемый пост)
ты лучше свой пример исправь, что бы он работал, а потом будешь учить

1). уже сказал, что до выходных сделаю пост - раз
2). пример с таким же кодом на С/C++ рабочий, и сам ответить почему .net-кун, из-за чего среде .net будет ошибка во время исполнения , а в нативе нет? прежде, чем комментить надо и про др. вар-ты не забывать, код как раз-таки именно такой взят и был специально и исправлять в нем нечего, поэтому сначала учимся глубже думать, а потом комментарии вешать, ок?

все, более подробный ответ по всем - будет до выходных
PM MAIL   Вверх
Экскалупатор
Дата 29.7.2011, 11:46 (ссылка) |    (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1746
Регистрация: 1.4.2009
Где: г. Минск

Репутация: 5
Всего: 24



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

p.s. мне кажется что эту тему пора выпилить, ну или как минимум закрыть.
PM MAIL ICQ   Вверх
gmx
Дата 29.7.2011, 11:56 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 28.7.2011

Репутация: нет
Всего: нет



Цитата(Экскалупатор @  29.7.2011,  11:46 Найти цитируемый пост)
и попытки отмазаться словами "код как раз-таки именно такой взят и был специально" у тебя не получится

так, это ты не ответил мне почему NullReference? я четко написал код, и что код работает на С++ можешь проверять. у меня отмазок - нет, ты мне до сих пор ответа не смог дать, и все это видно


Цитата(Экскалупатор @  29.7.2011,  11:46 Найти цитируемый пост)
 пример г... и не работает

значит ты:
1). ни разу не видел в глаза односвязные списки ( это по поводу гавна )
2). не знаешь из-за чего именно NullReference, и что в свою очередь может показать твои незнания в организации памяти, да и самой работы .net ( а это по поводу, почему это работет в нативе , а в .net  - нет )



Цитата(Экскалупатор @  29.7.2011,  11:46 Найти цитируемый пост)
не хватало что бы еще сказал потом: "ты меня как бы убил, но я как бы из последних сил!

не скажу, потому что ты меня НЕ убил, а сам не можешь ответить на два вопросы выше

так почему код рабочий на нативе и почему в .net ошибка среды исполения? отвечай и сам неувиливай

Это сообщение отредактировал(а) gmx - 29.7.2011, 11:57
PM MAIL   Вверх
lamber
Дата 11.8.2011, 11:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 143
Регистрация: 20.12.2008

Репутация: нет
Всего: нет



Код который привел gmx формально верен, но не работает, кто-нибудь может объяснить почему, данный код был запощен на MSDN тут ответа так и не было получено. По каким-то причинам список собираются GC и как этого избежать.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | .NET для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1074 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.