Здравствуйте.
Нужен совет по выбору области программирования.
Полгода назад закончил универ (инженер), 24 года. Программирование нравится, в городе (миллионнике) сейчас неплохие зарплаты для программистов. Работал php-программистом, немного знаю MySQL (на уровне запросов), верстал сайты. 4 года занимаюсь Shareware: пишу на C++, MFC, WinAPI в Visual C++.
Теперь хочу выбрать новую область и развиваться в ней. Поизучав рынок, вакансии, зарплаты, пришел к выводу, что наиболее перспективной интересной и наиболее оплачиваемой является .NET. Так же всерьез рассматриваем в будущем иммиграцию в Канаду по программе Skilled Worker, потому хотелось бы выбрать область которая будет там востребована, чтобы не было проблем с работой.
Кстати вопрос: что перспективнее .NET или Java? 2 года назад меня брали в одну большую компанию на программиста Java, тогда будущий начальник сказал что можно разбираться с Java "с нуля" и улучшать свои скиллзы в Java можно бесконечно. Но учеба помешала работать на полный день, потому отказался.
Про .NET я ничего не знаю, но думаю что опыт C++ и MFC поможет его освоить.
Теперь хочу подготовиться теоретически, почитать книжки, самостоятельно потыкаться в .NET прежде чем искать работу.
Вопрос: с чего начать? Посоветуйте книжки, сайты, статьи, и т.д. Как можно максимально быстро разобраться с .NET и пойти работать программистом .NET?
Скачал Петцольда "Программирование для Window на C#" в двух томах, полистал — написано как создавать формы, отрисовка, пользовательский интерфейс, менюшки, файлы, печать и т.д. Наверное сейчас это не совсем то, что нужно, т.к. в принципе тот же MFC и ИМХО проще разбираться по ходу работы.
На одном из сайтов нашего города опубликовали список вопросов, которые задают претендентам на должность программиста .NET:
Для начинающих:
1) Алгоритмы и структуры данных
— Списки\массивы: алгоритмы сортировки и поиска (какие знаете, обычно об одном ли 2-х — рассказать подробнее, дать оценку времени работы)
— Деревья: какие бывают (например, бинарные или B-деревья), простые алгоритмы на деревьях (например, поиска в бинарном дереве)
2) C#\.NET
— Общие вопросы: что такое тип, экземпляр, метод, свойство, виртуальный метод, ссылка, ссылочный тип, ValueType, интерфейс и т.п.
— Вопросы по языковым конструкциям C#
— Вопросы по сборке мусора (как работает, как ведет себя по отношению к потокам, что такое слабые ссылки и т.п.) — не обязательно знать хорошо, но хорошее знание этого рассматривается, как большой плюс.
— Вопросы по основным типам, в т.ч. по ArrayList, Hashtable, IList\ICollection\IEnumerable, IDisposable и т.п. (рассматривается, как плюс)
3) SQL, RDBMS concepts
— Основные понятия: схемы, таблицы, колонки, индексы, отношения, views (рассматривается, как плюс)
— Транзакции: что такое транзакции, изоляция (уровни изоляции), блокировки, deadlocks и т.п. (рассматривается, как плюс)
Для профи:
1) Алгоритмы и структуры данных
— (!!) Списки\массивы: алгоритмы сортировки и поиска (какие знаете, обычно об одном ли 2-х — рассказать подробнее, дать оценку времени работы)
— (!) Деревья: какие бывают (например, бинарные или B-деревья), простые алгоритмы на деревьях (например, поиска в бинарном дереве)
— Графы, простые алгоритмы на графах.
2) C#\.NET
— (!!) Общие вопросы: что такое тип, экземпляр, метод, свойство, виртуальный метод, ссылка, ссылочный тип, ValueType, интерфейс и т.п.
— (!!) Вопросы по сборке мусора (как работает, как ведет себя по отношению к потокам, что такое слабые ссылки и т.п.)
— (!!) Вопросы по основным типам, в т.ч. по ArrayList, Hashtable, IList\ICollection\IEnumerable, IDisposable и т.п.
— (!) Многопоточность \ IPC в .NET: Monitor, lock (x) {...}, ReaderWriterLock, SyncRoot и т.п.
— (!) Вопросы по языковым конструкциям C# (например, как работат foreach или чем отличается приведение типа по as от приведения типа "скобочками")
— (!) Reflection, аттрибуты: что такое, примеры.
— Сериализация: что это такое, как работает, примеры форматтеров, атрибуты, ISerializable, IDeserializationCallback
— (!) .NET Remoting: как работает, отличия между MBV & MBR-типами, связь с сериализацией, .NET Remoting и многопоточность.
— (!) ASP.NET: как работает, request processing pipeline, основные классы (HttpApplication, IHttpHandler, Page, Control и т.п.), жизненный цикл контролов на странице, отношение к многопоточности и прочие не слишком сложные вопросы (например, что такое ViewState или AJAX).
— WindowsForms: общие вопросы + отношение к многопоточности, асинхронные операции (how to).
— System.Data: довольно простые вопросы по основынам типам (IDbConnection, IDbCommand, IDataReader, DataSet, DataTable и т.п.)
— System.Xml: простые вопросы по XmlDocument, XPath & XSLT.
3) SQL, RDBMS concepts
— (!!) Основные понятия: схемы, таблицы, колонки, индексы, отношения, views
— (!) Транзакции: что такое транзакции, изоляция (уровни изоляции), блокировки, deadlocks и т.п.
Важность вопросов:
— (!!) — я считаю, что это must know
— (!) — знать желательно, но менее важно
— (без пометки): плюс, если хорошо знаком
Достаточно ли разобраться с каждым пунктом (хотя бы поверхностно), чтобы начинать искать работу программиста .NET ? Правильно ли я мыслю?
Главный вопрос — что читать? В Петцольде ничего этого нет.
Заранее благодарен за советы.
Читать безусловно Рихтера CLR via C#ю Еще можно Троелсена. А вообще чем больше прочтет тем лучше
Здравствуйте, catr, Вы писали:
C>Кстати вопрос: что перспективнее .NET или Java? 2 года назад меня брали в одну большую компанию на программиста Java, тогда будущий начальник сказал что можно разбираться с Java "с нуля" и улучшать свои скиллзы в Java можно бесконечно. Но учеба помешала работать на полный день, потому отказался.
C>Про .NET я ничего не знаю, но думаю что опыт C++ и MFC поможет его освоить.
А что этот дот нет. Он продвигается одной конторой (хоть и довольно мощной). Охладеет Microsoft нему, и крынтец. А java уже давно по-большому счету двигается open-source движением. SAP и тот между дот нетом и явой в свое время сделал ставку на яву (хотя у него были идеи и то и другое продвигать) — открытые стандарты это не пустые слова. Oracle по-моему тоже до сих пор дотнет игнорирует как платформу для своих приложений.
Я понимаю когда студенты говорят — вот в дот нете все понятно, захотел создать консольное приложение, легко делается, а с явой непонятно ничего (почти дословно привел). А так специалисту по-моему все равно, дотнет, ява... У нас несколько людей на java-проекте уже успели с дотнетом поработать. Только что-то опять их ява притянула, наверное уровень зарплаты
а может еще какие то мотивы. При этом отмечают, что комьюнити у явы очень мощное.
Я уже например как-то привык, что легко достать нужную java-библиотеку, причем бесплатно, так еще с исходниками. Причем обычно есть выбор между различными реализациями. Есть ли такое в дотнете?...
Здравствуйте, catr, Вы писали:
C>Здравствуйте.
C> 4 года занимаюсь Shareware: пишу на C++, MFC, WinAPI в Visual C++.
какая разница для шароварения на с++ ты его будешь писать или еще на чем то?
ты хочешь перейти к работе на дядю и продавать труд? так задавай вопрос тогда верно
... << RSDN@Home 1.2.0 alpha rev. 728>>