Что должен уметь junior C++?
Собственно, вопрос вынесен в заголовок, хочется получить указания от более опытных людей. Понятно, что надо знать синтаксис и базовые конструкции языка (циклы, операторы, функции и т.д.), уметь в ООП, крайне желательно быть знакомым с STL. А что ещё? Нужны ли boost, Qt? SQL? Иногда указывают что-то типа «базовых алгоритмов», это что и в каком объёме? Обязателен ли какой-то стоящий завершённый проект, который новичку не стыдно запостить на github?
О себе: бакалавр по направлению «физика», МГУ, реальные навыки описаны во втором предложении, в принципе во время учёбы пользовался Matlab и могу работать с ним, но почему-то сомневаюсь в его необходимости за пределами университета. Кстати, могут ли возникнуть в будущем затруднения, если остановиться на бакалавре и не получать магистра, или реальный опыт и навыки всегда ценятся выше формальных (надеюсь на это)?
P.S. Если ошибся с форумом и это не для Job, прошу перенести.
P.P.S. Подскажите адекватные среднерыночные деньги, на которые должен рассчитывать в Москве человек, устраивающийся джуном? На HeadHunter в большинстве стартовых вакансий почему-то зарплата не указывается. Я правильно понимаю что адекватно будет 30-40 тысяч?

Hasek ★★
08.08.16 09:19:59 MSK
Базовые алгоритмы—это понимать как работает поиск, сортировка и т.д., возможно в нескольких вариантах. Туда же понимание стандартных контейнеров, как минимум чем отличаются и какова цена операций вставки, удаления, поиска, в идеале—как устроены.
Библиотеки, я думаю, не обязательны.
По деньгам можно раза в два больше, если метить в топовые конторы вроде Google, Facebook, Intel, JetBrains, etc. Проблема только в том, что топовые международные конторы во-первых выводят R&D из России, во-вторых не во всех нужны плюсисты.
staseg ★★★★★
( 08.08.16 09:32:20 MSK )
Последнее исправление: staseg 08.08.16 09:38:08 MSK (всего исправлений: 1)

Подскажите адекватные среднерыночные деньги, на которые должен рассчитывать в Москве человек, устраивающийся джуном?
umren ★★★★★
( 08.08.16 10:35:49 MSK )

тебе щас местные насоветуют. ходи на собеседования и смотри что предлагают.
vvviperrr ★★★★★
( 08.08.16 10:37:07 MSK )

стати, могут ли возникнуть в будущем затруднения, если остановиться на бакалавре и не получать магистра, или реальный опыт и навыки всегда ценятся выше формальных (надеюсь на это)?
даже если будешь заводить трактор, то бакалавра будет достаточно, а так в рашке бакалавр магистр или кандидат наук, всем плевать, важно что ты умеешь на деле
umren ★★★★★
( 08.08.16 10:41:13 MSK )
Подскажите адекватные среднерыночные деньги, на которые должен рассчитывать в Москве человек, устраивающийся джуном?
Ща тебе про стотыщьмильёнов расскажут
sidor ★★
( 08.08.16 11:03:29 MSK )
Джун должен знать и главное помнить все тоже, что и сеньор, но работать при этом за еду. Прописная истина, сэр.
unt1tled ★★★★
( 08.08.16 11:11:35 MSK )
Ответ на: комментарий от staseg 08.08.16 09:32:20 MSK

EXL ★★★★★
( 08.08.16 11:19:47 MSK )
Ответ на: комментарий от EXL 08.08.16 11:19:47 MSK

fluorite ★★★★★
( 08.08.16 11:56:44 MSK )
Ответ на: комментарий от fluorite 08.08.16 11:56:44 MSK

ЛОл! Таки решили свои тормозные поделки с Java на C++ переписать, чтобы работали быстро?
EXL ★★★★★
( 08.08.16 12:01:31 MSK )
Ответ на: комментарий от EXL 08.08.16 12:01:31 MSK

Нам нужен сильный С++ специалист для работы над ядром продуктов dotTrace/dotCover/dotMemory.
stave ★★★★★
( 08.08.16 12:03:17 MSK )
Ответ на: комментарий от EXL 08.08.16 12:01:31 MSK

Таки решили свои тормозные поделки с Java на C++ переписать, чтобы работали быстро?
Гы, как будто подделки типа qt creator, kdevelop, etc работают лучше (притом функционала там сильно меньше)
umren ★★★★★
( 08.08.16 12:06:05 MSK )
Ответ на: комментарий от EXL 08.08.16 12:01:31 MSK

vvviperrr ★★★★★
( 08.08.16 12:06:13 MSK )
Ответ на: комментарий от umren 08.08.16 12:06:05 MSK

Работают они значительно быстрее, при сравнимом общем функционале.
Это неоспоримый факт.
Но тема не об этом, каюсь за оффтоп и сворачиваю беседу на эту тему. Если хочешь продолжить разговор, пиши в личку.
EXL ★★★★★
( 08.08.16 12:10:21 MSK )
Последнее исправление: EXL 08.08.16 12:11:34 MSK (всего исправлений: 1)
Ответ на: комментарий от fluorite 08.08.16 11:56:44 MSK
Джависты на 300к/мес не нужны? Я бы к вам подтянулся через 2 года.
unt1tled ★★★★
( 08.08.16 12:14:23 MSK )
Ответ на: комментарий от unt1tled 08.08.16 12:14:23 MSK

fluorite ★★★★★
( 08.08.16 12:28:44 MSK )
Там про стажера, а не джуна, но ты понял.
Deleted
( 08.08.16 19:04:31 MSK )
Ответ на: комментарий от EXL 08.08.16 12:01:31 MSK
Насколько я знаю, нативного кода у JetBrains если и есть, то очень немного, в отличие от C++/CLI (требуещееся владение C# намекает, что это как раз тот случай).
Тут, очевидно, дело не в языке, а в архитектуре — учитывая, сколько работы та же IDEA выполняет в фоне, понятно, что она на любом языке бы ела довольно много вычислительных ресурсов и тормозила в случае их нехватки.
Softwayer ★★
( 08.08.16 20:30:54 MSK )
Ответ на: комментарий от Softwayer 08.08.16 20:30:54 MSK

Насколько я знаю, нативного кода у JetBrains если и есть, то очень немного,
Нативного у них как минимум интеграция с дебаггерами, они недавно искали человека пилить lldb/gdb-интерфейс в их clion.
Засунь себе свой копрофантазии куда-нибудь подальше.
hateyoufeel ★★★★★
( 08.08.16 23:05:27 MSK )

Э-э-э. кое-как уметь нечто и уметь учить машину этому нечто?
ados ★★★★★
( 08.08.16 23:10:15 MSK )
Ответ на: комментарий от hateyoufeel 08.08.16 23:05:27 MSK

Сорри, это не твои копрофантазии, это суровая реальность 0_o
Мы программируем на С++/СLI, который компилируется в .NET-сборки.
hateyoufeel ★★★★★
( 09.08.16 00:59:41 MSK )
Ответ на: комментарий от Softwayer 08.08.16 20:30:54 MSK

Ну, так многие поделия на java жрут просто как жабы. Особенно раму. Вот пример: YouTrack. Какая-то простая система учёта проектов еле ворочается на 1 гиге оперативе. Jira: валится на гиге только в путь. Их (атласиан) git webserver тоже жрёт на старте под 2 гига, а даёт всё то же, что и https://gogs.io/ При этом gogs отвечает молниеносно и жрёт что-то около 10 Мб оперативки. Вот тебе и java.
На рубях такая же хрень — вся обвязка gitlab’а жрёт под 2 гига, а толку столько же, что и от gogs с 10 мегабайтами.
Так что будущее за go и swift.
menangen ★★★★★
( 09.08.16 02:30:27 MSK )
Ответ на: комментарий от menangen 09.08.16 02:30:27 MSK
Будущее за теми, кто умеет читать документацию про Xmx, как вообще работают различные аллокаторы и зачем JVM выделяет себе столько памяти.
И еще. Go и swift совершенно разные языки. Первый имеет GC, второй нет. Про это тоже почитай.
xpahos ★★★★★
( 09.08.16 03:51:41 MSK )
Последнее исправление: xpahos 09.08.16 03:52:46 MSK (всего исправлений: 1)
Иногда указывают что-то типа «базовых алгоритмов», это что и в каком объёме?
Умение писать fizzbuzz, insertion sort, mergesort, quicksort. Различные деревья с балансировкой и без. Алгоритмы на графах. Строковые алгоритмы. Динамическое программирование. Если ты никогда с этим не сталкивался, то можешь пройти курс Седжвика на курсере, а потом курс основанный на Кормане. Порешай задачки на leetcode, hackerrank, timus, project euler, etc.
Кстати, могут ли возникнуть в будущем затруднения, если остановиться на бакалавре и не получать магистра, или реальный опыт и навыки всегда ценятся выше формальных (надеюсь на это)?
Физика вряд ли тебе пригодится. Можешь пойти в ШАД, если тебе интересен ML.
Я правильно понимаю что адекватно будет 30-40 тысяч?
На данном этапе зарплата не имеет значения. Твоя задача попасть в как можно более крупную компанию. В аутсорсинговой компании скорее всего тебе дадут ачивку «Senior» просто за то, что ты там 5 лет будешь писать говнокод, но реальных навыков ты можешь и не получить. В большой компании вокруг тебя скорее всего будет довольно много крутых разработчиков и ты сможешь узнать много нового просто за обедом.
xpahos ★★★★★
( 09.08.16 04:06:12 MSK )
Ответ на: комментарий от xpahos 09.08.16 03:51:41 MSK

Ага, я тоже могу тебя отослать читать про то, что не язык имеет GC, а его реализация. Ты нашёл разность — теперь найди общее.
menangen ★★★★★
( 09.08.16 04:21:26 MSK )
Ответ на: комментарий от menangen 09.08.16 02:30:27 MSK

Жаль только гуев там буквально нет, сообщество не тянет, а создатели не хотят
поэтому нетормозящей идеи на го мы никогда не увидим
umren ★★★★★
( 09.08.16 09:08:36 MSK )
Ответ на: комментарий от menangen 09.08.16 02:30:27 MSK
Ну, так многие поделия на java жрут просто как жабы. Особенно раму. Вот пример: YouTrack. Какая-то простая система учёта проектов еле ворочается на 1 гиге оперативе. Jira: валится на гиге только в путь. Их (атласиан) git webserver тоже жрёт на старте под 2 гига, а даёт всё то же, что
Бизнес и ничего личного: [сервер 128GB ram](http://www.ebay.com/sch/i.html?_from=R40&_trksid=p2050601.m570.l1313.TR12. ) стоит 40к рублей, или 312 рублей за GB, или 44 минуты рабочего времени разработчика с окладом 90к в месяц.
snizovtsev ★★★★★
( 12.08.16 00:10:08 MSK )

На самом деле нет такого формализованного понятия Junior в С++ и соответственно нету и строгих требований. Каждая контора набирающая юных программистов имеет какой то свой профиль работы и соответственно свои неповторимые требования к кандидатам. Кто то пишет гуёвые проги на Qt, кто то прошивки для всяких встраиваемых устройств. У всех контор требования абсолютно разные. А тебе при этом надо изучать вещи универсальные для С++, основы языка, STL и пр. То что пригодиться в большинстве случаев. Чем лучше ты это изучишь, тем больше шансов попасть в Junior-ы. Пока свободен учись. Можешь поучиться подольше, написать какие то свои небольшие проекты тогда признают и опытным разрабом. Бакалавр ты или магистр значения не имеет, абсолютно никакого. Реальные навыки и только это.
Согласен, (с предыдущим оратором) лучше будет начинать в больших конторах. Но не факт что большие конторы захотят с тобой начинать. Как повезёт.
Matlab и твоя физика могут пригодиться когда станешь опытным программером. Иногда бывают вакансии на написание софта в этих предметных областях. Пока важно найти хоть какую то работу и получить начальный опыт.
Тут на форуме постоянно набирает начинающих сишников NatSys-Lab. Думаю будет очень хорошая позиция для тебя. Они занимаются системным софтом для Linux. Это конечно не C++, а просто C, но очень перспективное направление.
khenty
( 12.08.16 05:54:34 MSK )
Ответ на: комментарий от xpahos 09.08.16 04:06:12 MSK

никому не нужное дерьмо
insertion sort, mergesort, quicksort. Различные деревья с балансировкой и без. Алгоритмы на графах. Строковые алгоритмы. Динамическое программирование. Если ты никогда с этим не сталкивался, то можешь пройти курс Седжвика на курсере, а потом курс основанный на Кормане. Порешай задачки на leetcode, hackerrank, timus, project euler, etc.
всё это дерьмо не нужно на практике ( если ты не практикующий олимпиадник )
по сабжу. джуну C++ необходимо на три с плюсом знать язык ( т.е. как минимум осилить Страуструпа ) и знать азы апи операционки ( т.е. основы работы с памятью, файлами, тредами, процессами ) под которую он решил писать код, т.е. для онтопика это позикс.
peacelove
( 17.08.16 18:11:31 MSK )
Ответ на: никому не нужное дерьмо от peacelove 17.08.16 18:11:31 MSK
всё это дерьмо не нужно на практике ( если ты не практикующий олимпиадник )
Ты либо принимаешь правила и проходишь собеседование в топовую компанию, либо продолжаешь всем доказывать что алгоритмы не нужны и идешь работать в EPAM, Luxoft или в любую другую аутсорсинговую контору. Без знания алгоритмов ты никогда не попадешь в команду разработки очередной крутой распределенной системы для Google/Facebook/etc.
по сабжу. джуну C++ необходимо на три с плюсом знать язык ( т.е. как минимум осилить Страуструпа ) и знать азы апи операционки ( т.е. основы работы с памятью, файлами, тредами, процессами ) под которую он решил писать код, т.е. для онтопика это позикс.
Ахаха, ну да, ну да. А потом у таких спрашивают на собеседовании про виртуальные конструкторы и они начинают нести чушь. Треды и процессы это отдельная огромная часть CS. Lock free, сами блокировки, модель памяти итд итп.
xpahos ★★★★★
( 17.08.16 20:07:34 MSK )


kirk_johnson недавно говорил, что ищет спеца по плюсам. Может он тебя просветит про текущее положение дел на рынке.
Что должен знать C#/.NET разработчик в 2023 году

![]()
13.12.2022
![]()
24330
Рейтинг: 5 . Проголосовало: 10
Вы проголосовали:
Для голосования нужно авторизироваться

- Язык программирования C#
- ООП
- Алгоритмы и структуры данных
- Шаблоны проектирования
- Базы данных
- SQL
- Entity Framework Core
- LINQ
- ASP.NET
- ASP.NET Core
- Git
- Основы FrontEnd
- Английский язык
- Итоги
На сегодняшний день .NET программист может применять свои навыки в различных сферах разработки программных продуктов:
- создание веб-приложений и веб-сервисов
- создание настольных приложений;
- создание облачных сервисов;
- создание игр;
- создание мобильных приложений.
Когда говорят о .NET разработчиках, имеют в виду программистов, которые пишут на языке С#. Этот язык программирования, как и вся платформа .NET, был создан, развивается и поддерживается компанией Microsoft, которая стабильно уже несколько десятилетий входит в ТОП-10 компаний — мировых лидеров рынка информационных технологий. Все продукты компании Microsoft созданы на платформе .NET. Какие же технологии необходимо изучить, чтобы стать .NET программистом?
Поскольку львиная доля .NET-вакансий приходится именно на веб-сегмент, данная статья будет охватывать как фундамент, которым обязаны владеть все разработчики этой платформы, так и основные технологии серверной стороны веб-девелопмента.

Любой .NET разработчик не может называться и быть таковым, если он не умеет хорошо программировать на языке C#.
Это универсальный объектно-ориентированный язык, который является мощным инструментом создания программного обеспечения с широкой областью применения. При столь высокой функциональности он является достаточно несложным в изучении и отлично подойдет тем, кто собирается сделать первый шаг навстречу программированию.
Благодаря широкому спектру применения, С# является очень востребованным языком. Различные ресурсы по поиску работы предлагают большое количество вакансий, причем, как на крупные проекты с четко определенным консервативным стеком технологий, так и в компании, которые создают новый программный продукт с применением наиболее современных инструментов.
Компания Microsoft активно развивает свое детище — .NET направление, потому C# всегда актуален, идет расширение функционала, добавляются новые возможности. Тенденция последних лет — кроссплатформенность, реализуемая в .NET Core. Огромное количество учебных материалов, качественная официальная документация, видео курсы, образовательные вебинары, дружное комьюнити — всё это создает максимально комфортные условия для грамотного поэтапного изучения данного языка.
Объектно-ориентированное программирование — это методология разработки программного обеспечения, в основе которой лежат четыре главных принципа: абстракция, инкапсуляция, наследование и полиморфизм. Поскольку C# является объектно-ориентированным языком, необходимость изучения и полного понимания ООП парадигм обязательно. Однако, есть и приятная новость: все принципы быстро и легко усваиваются во время изучения C#.
Понимание алгоритмов и структур данных – также обязательно для любого программиста.
Тема связана со специальностями:
Изучив структуры данных, вы сможете управлять сложностью своих программ, делая их более доступными для понимания, а также разрабатывать высокопроизводительные программы, которые будут эффективно работать с памятью.
Знание алгоритмов позволит вам создавать сложные конструкции для эффективного решения широкого спектра задач.
Паттерны (они же шаблоны) представляют собой архитектурные конструкции, которые описывают типичные способы решения распространенных задач, возникающих в ходе проектирования программного обеспечения. Всего существует более двух десятков шаблонов, однако знать их все — это обязанность архитектора, а не разработчика платформы .NET. Обычно в одном проекте используется небольшое количество паттернов, поэтому вам достаточно помнить лишь самые популярные из них.
Каждое приложение оперирует данными – от интернет-магазинов и банковских систем до корпоративных приложений и социальных сетей. Регистрация, авторизация и аутентификация пользователя, прием, изменение и отправка данных на сервер или даже простое сохранение конфигурации приложения – все это данные, требующие отдельного места для их хранения.
Этим хранилищем служат базы данных (БД), представляющие собой организованную структуру для приема, хранения и обработки данных различного формата – от ФИО и номеров телефона до изображений и видео контента.
Именно поэтому знания БД очень важны в том числе и для .NET разработчиков. Необходимо владеть базовой теорией по БД: основные термины, реляционные и нереляционные базы данных (вы будете работать именно с реляционными – имеющими реляционную структуру), нормализация, отношение one-to-one, one-to-many и many-to-many, поиск и упорядочение информации, работа с таблицами и т.п.
Structured Query Language — декларативный язык структурированных запросов, который создан для взаимодействия с базами данных. Особенность SQL состоит в том, что он лишь описывает необходимые компоненты и желаемые результаты, не указывая, как именно эти результаты должны быть получены.
Изучение языка запросов очень тесно связано с изучением теории баз данных, поэтому углубляясь в БД, вы непременно начнете практиковаться и набивать руку и с SQL.
Entity Framework — специальная объектно-ориентированная технология на базе фреймворка .NET, которая позволяет разработчикам получать доступ к данным, используя концептуальную объектную модель, а не непосредственно реляционную базу данных. Это дает возможность абстрагироваться от самой БД и работать с данными на более высоком уровне абстракции, который более понятен и удобен для человека. Благодаря такому подходу уменьшается количество кода, необходимого для получения доступа к базе, растет производительность и уменьшается время на поддержку объектов в приложениях, которые работают с данными.
В двух словах, эта технология позволяет программисту абстрагироваться от самой базы данных и работать с данными независимо от типа хранилища.
Language Integrated Query (язык интегрированных запросов) — это простая и удобная .NET технология доступа к данным. Особенность данного языка запросов: возможность применения ко всем источникам данных (XML-документы, XML-потоки, наборы данных ADO.NET, базы данных SQL, массивы и коллекции .NET и т. д.) одного и того же самого подхода выборки данных.
Active Server Pages для .NET — платформа, использующая среду выполнения .NET Framework и предоставляющая необходимые службы для создания серверных веб-приложений и веб-сервисов. Является развитием более ранней технологии Microsoft ASP.
ASP.NET базируется на среде выполнения Common Language Runtime (CLR), которая является основой всех приложений Microsoft .NET. Также данная платформа имеет преимущество в скорости по сравнению со скриптовыми технологиями.
Видео курсы по схожей тематике:
Что нужно знать junior c++ разработчику?
Очень сильно интересует критика пути подготовки на трудоустройство junior c++ developer. У самого техническое образование, но в области электроники.
Хватит ли учебника С++ Стивена Праты, пройденного курса по с++ на stepik.org и прохождения курсов по алгоритмам и структурам данных https://ru.coursera.org/specializations/data-struc. для успешного трудоустройства на данный тип вакансий?
Что можно добавить/удалить из этого списка для повышения своих шансов?
Есть ли сборники задач и упражнений типа kaggle чтобы писать на с++ и прокачивать свои скиллы в области программирования?
На какую зарплату можно расчитывать новичку в с++ в Москве?
- Вопрос задан более трёх лет назад
- 9883 просмотра
2 комментария
Оценить 2 комментария
Что должен уметь Junior C# Web разработчик?
Всем привет! Я знаю, что во многом это зависит от компании, но, всё же, хотелось бы услышать и мнение хаброжителей). Что, по вашему мнению, должен уметь джун C# веб-разработчик?
- Вопрос задан более двух лет назад
- 2728 просмотров
Комментировать
Решения вопроса 3

Василий Банников @vabka Куратор тега C#
Токсичный шарпист
1. Уметь работать с asp net core.
Написание нового контроллера не должно вызывать никаких сложностей.
Должен знать про middleware и разные фильтры. Знать, какими сущностями в разные моменты времени обрабатывается запрос
2. Знать как устроен HTTP хотябы на поверхностом уровне.
Знать что в http-запросе есть заголовки и тело.
3. Уметь работать с dotnet cli, если понадобится. Уметь вызывать dotnet build, dotnet watch, dotnet run, и dotnet publish
4. Уметь искать нужные библиотеки в гугле и в нугете.
5. Уметь работать с git хотябы на базовом уровне: git init, git branch, git add, git commit, git merge.
Можно через GUI. Можно через встроенный плагин в IDE
6. Уметь работать с какой-нибудь одной IDE на базовом уровне: с VS или с Rider.
На базовом уровне — это значит, что ты можешь мышкой создать проект, добавить в него новые файлы, и запустить проект.
7. Хотябы поверхностно знать про фронтенд. Чтобы мог загуглить и решить несложную задачу.
8. Уметь работать с debugger-ом. Ставить точки останова, делать шаг вперёд, с заходом, с обходом.
9. Уметь работать с какой-нибудь реляционной БД. Знать основы про всякие нормальные формы, уметь писать сырой sql запрос.
10. Ну и кнонечно C#, ООП, всякие паттерны.
Ответ написан более двух лет назад
Нравится 5 7 комментариев