当我看到Google,Amazon等的工作描述时,他们都需要C ++和Linux / Unix经验。 有人可以定义这通常意味着在工作资格的背景下吗? 我知道如何浏览Linux中的文件系统吗? 我知道如何运行命令吗? C / C ++编码完全不同于Linux / Unix的envs(编译器应该只是不同的权利)? 谢谢。
这通常意味着您知道* nix系统上可用的开发人员工具,以及os接口(系统调用)的低级架构。 具体来说,图书馆的布局方式是/ usr / include,例如,在* nix系统上工作的方式。 可用的shell以及它们的区别(bash,ksh,sh)以及如何使用这些工具(命令)来创建复杂的脚本。 这也意味着知道系统调用,所以你可以levereage低层次的语义。
Linux / Unix部分是ennuikiller描述的,知道系统,基本用法,APIs,Makefile等等。
第二部分C ++倾向于分为两类。 人们在寻找对指针,内存使用,STL,模板等的基本理解,或者正在寻找像Boost或Qt这样的特定库的开发经验。
我想说,我所看到/采访的大部分是第一部分,语言的基本知识,指针,模板。 每隔一段时间,我都会看到一份要求Qt或Boost经验的工作,但这些工作通常是针对中高级职位的。
总而言之,如果您已经安装了Linux发行版并尝试使用* nix工具进行开发,那么对于第一个需求应该足够了解。 对于C ++来说,如果你可以创建一个链表模板类的基本实现(append / delete / print / search / sort functions),你就足够了解了。
当然,这只是基于这两个要求,而不了解这个位置。 您可能需要了解Linux网络功能,文件I / O,排序,树遍历以及其他API和算法的主机,具体取决于工作要求。
有了C ++的经验,没有Linux经验,我可以成为一名高级开发人员:独立负责独立功能/组件的设计,编码和测试。
不过,我需要一个愿意回答我的Unix特定问题的帮手/团队领导,