我在学校的编程课是C ++,但是最近几年我最终从事C#工作。如果某个职位要求说1或2年C ++经验,那么我在C#方面的经验值得考虑吗?我担任这样的职位有多有效?那么,我是否需要以入门级C ++程序员的身份开始学习以获得必要的经验?
我在学校的编程课是C ++,但是最近几年我最终从事C#工作。如果某个职位要求说1或2年C ++经验,那么我在C#方面的经验值得考虑吗?我担任这样的职位有多有效?那么,我是否需要以入门级C ++程序员的身份开始学习以获得必要的经验?
Answers:
大约2年前,我在同一条船上。您的c#经验对于c ++作业可能不如c ++对ac#作业有价值。就是说,如果您知道c#的实际工作方式(很少有c#程序员实际上是这样做的),并且很好地学习了c ++,那么c ++就不会成为问题。问题是您已经习惯了某些设计模式,这对于c ++来说太高了。
例如,从漂亮的ADO.NET数据访问模型到使用cppcon进行mysql访问,System.Collections.Generic到使用stl,多继承,垃圾回收来清理析构函数中的内存等,所有这些是艰难的过渡。C ++并不是问题,学习库,设计模式以及如何使用它们是挑战。大多数招聘人员都没有意识到这一点。如果您可以进行基本设计并且可以使用c ++的实际常用功能,那么在面试中应该没问题。
但是,为工作做好准备是另一回事。不过,这是一个有趣的挑战,我希望一切顺利。
您的情况与4年前完全一样。
我在学习期间做了一些C ++,但我讨厌它。当我有空的时候可以从事这个领域的工作,我做了很多网络开发工作。
当我搬家时,我申请了一份具有2年C ++经验的C ++工作。好吧,在面试之前,我刷新了C ++的记忆,当测试时间到了时,我设法摆脱了一些事情,但我不确定自己做得是否正确。
但是大多数采访都是关于解决问题和创造性解决方案的,而C ++只是次要因素。
因此,机会的确取决于雇主及其职位。
如果您正在通过一家招聘机构,您将“很可能”被告知您的个人资料不匹配。但是,有了真正的雇主,您的机会就会变多,因为他们真的知道他们需要什么。
这确实取决于您要申请的业务的性质。如果他们正在寻找具有良好的基于OO的编程和体系结构技能的人,那么C#可能和接下来的事情一样好。
如果他们以软件的速度/响应能力为荣,那么您将需要了解您的算法,因为这比微优化更重要-哈希表与线性查找等。C#在这里仍然很重要,但是您需要展示对性能特征的理解-例如,并不是每个人都了解ngen.exe。
如果它们位于嵌入式/移动和/或非垃圾收集环境中,则您确实需要了解如何有效管理内存。@DeadMG指出,智能指针在这里很关键,但了解内存分配配置文件也很关键。游戏程序员经常预先分配大量对象并回收它们,以便预先了解内存需求并减少每帧的未知数。这也是在iOS中滚动TableViews中使用的技术。
如果有任何集成工作,就语言之间的数据编组(如P / Invoke)而言,您可能需要C级专业知识,而且需要字节级的理解如何使用这些数据结构的知识,这在实践中并不常见。以我的经验使用C#。