Нужен совет о выборе области программирования
От: catr  
Дата: 25.08.07 08:15
Оценка:
Здравствуйте.
Нужен совет по выбору области программирования.
Полгода назад закончил универ (инженер), 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 ? Правильно ли я мыслю?
Главный вопрос — что читать? В Петцольде ничего этого нет.
Заранее благодарен за советы.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.