Я разработчик программного обеспечения, опыт работы с C # (5 лет опыта) наряду с несколькими другими языками.
Моя «работа мечты» - работа в видеоиграх в качестве разработчика.
Большинство работ требует знания C ++, которого у меня сейчас нет (за исключением некоторых основ).
Я посмотрел вокруг, и большинству крупных игровых компаний требуется что-то из 3-5 лет предыдущего опыта работы с C ++.
Мой вопрос - какой будет хороший путь, чтобы подняться до этого необходимого уровня опыта, исходя из C #?
Я подумал о некоторых возможных способах сделать это:
Получите больше знаний о C ++ из книг. Участвуйте в проектах с открытым исходным кодом, написанных на C ++. Как лучше всего изучать C ++ и иметь опыт работы с ним, особенно в игровой индустрии?
c++
c#
software-engineering
jobs
spaceOwl
источник
источник
Ответы:
Как разработчик игры, моей главной проблемой при найме парня на C # было бы отсутствие знаний низкого уровня.
Итак, рассмотрим проект, в котором ваша работа влечет за собой низкоуровневую оптимизацию, например, реорганизацию структуры данных классов или переписывание кода, чтобы воспользоваться преимуществами SIMD-инструкций. Возьмите игру с открытым исходным кодом на C ++, оптимизируйте ее и опубликуйте увеличение частоты кадров в своем резюме.
Если бы я брал у вас интервью, я бы меньше заботился о C ++ в вашем резюме и больше о том, можете ли вы ответить на мои вопросы по C / C ++ / интервью низкого уровня. Я попробую ответить на некоторые стандартные вопросы интервью, с которыми у вас могут возникнуть проблемы (предупреждение: я не эксперт по C #):
источник
Что сказал Эрик. Я также добавил бы, чтобы избежать "нового", где это не обязательно. Это очень часто встречается в C #, но считается плохой практикой в C ++ 11, а также медленнее, чем выделение стека, и более опасно, потому что вы должны вручную освободить его.
Я был бы также осторожен со старыми книгами, они преподают старые методы. Я лично предпочитаю надежные форумы / сайты, stackoverflow / isocpp.
источник
new
» - это действительно не разумная рекомендация. Вы используете,new
когда у вас есть указатели. Еслиclass Derived : Base
, то этоBase var = Derived();
незаконно, ноBase *var = new Derived();
законно. Так что вам нужны указатели, чтобы заставить полиморфизм работать правильно, много.Base var = Derived()
будет работать , но он будет разрезан и, без вашего ведома, информация потеряна вvar
. Чтобы решить проблему нарезки, вы можете использовать указатели.