是程序员都会写C/C++程序。这是不是就说明C/C++比较容易掌握呢?非也!相比其他编程语言来说C/C++要庞大得多、复杂得多,要想用好C/C++不是易事。我用C编程有5个年头了,用C++也有4个年头了,然而我时常犯错,很多错误甚至是屡次三番的犯。
在实践中,我发现导致编程出错都是那些平时很少使用的貌似“偏僻”的C/C++特性,这些特性我们曾经都在某本教科书上学习过,但是印象不深刻,原因是这些教科书大都注重基础知识的教学,并且认为花费过多篇幅去介绍这些貌似“偏僻”的弊大于利:这些特性容易导致混淆,掌握不好很容易让程序出现很难更正的错误,因此大多数教科书都把这些特性分散到各个角落,并且是一笔带过。是的,我觉得这些教科书并没有错,它们这样降低了学习C/C++的难度,使得我们很快就能入门,然而,入门就够了么?一名好的程序员是永远不会满足于现状的,因此我们渴求掌握更多、更高级的语言特性。因为这些特性对我们来说相当重要!
这些特性“貌似偏僻”实质非常重要。举例为证:我毕业时(也就是今年的事)参加了许多公司的笔试和面试,其中包含:百度,华为,阿里巴巴,趋势科技,联华科技,银联商务……,这里可以给大家分享一下笔试面试的重点:其中百度笔试题目通常全部是算法题目,这些题目对时空复杂度要求非常高,而面试开始时通常会有C/C++的问题,这些问题都比较难,然后又是算法问题;华为我没参加任何笔试面试就被录用了(至今仍怀疑华为的招聘机制),因此没有发言权;阿里巴巴我是进行的电话面试