请把代码基本功打扎实——给想当程序员的应届生同学的一点建议
最近面试了不少同学,有应届生,也有社招生,符合岗位要求的极少。这让我对自己筛选简历的水平有了极大的怀疑。
我们公司对于面试官有严格要求,我常常提醒自己:“不要迟到, 要尊重应聘者,不要泄漏公司机密,不能泄漏面试评语,不能卖弄技术,态度要温和,面试要循序渐进,循循善诱,要给应聘者发挥空间,让面试者尽展所能……”。然而受限于自己的水平,许多时候做得不够好,不像一个专业的面试官。
不同的人当然有不同的技能,所以面试当然是要因材提问。 当然应聘程序员,代码当然也是要考察的。代码题当然应该有适当的难度,以展现应聘者在思维逻辑、算法、数据结构、编码、调试等方面的能力。
然而题目假如有适当难度,大部分人都写不出来。所以从“循序渐进”的角度出发,我第一题通常是让写一个冒泡排序。当然要先寒暄一下:“了解哪些排序算法呀?各算法的时间复杂度和空间复杂度是多少呀?……”等等。 假如他提到冒泡排序,就问一下:“冒泡算法是什么原理呀?算法复杂度怎么样呀?最坏情况和最好情况分别怎么样呀?可不可以优化呀?”等等, 然后顺水推舟地借问一句:”你现在愿意写一个冒泡排序的代码吗?“ 我问这个问题时,心中也很忐忑,既怕他感觉受到侮辱而断然拒绝,又怕他写不出来而难堪。通常应聘者都会答应,并开始写起来, 大约80%的同学无法在15分钟内写出正确的代码。
作为一个老年程序员,我是有点不能理解的,为什么想当程序员却写不出冒泡排序?估计有许多读者也不敢相信。我下面发一份代码给大家看一下。 代码上没有应聘者的名字,我认为并没有侵犯到应聘者的隐私,并且也没有不尊重应聘者的意思,希望应聘者不要责怪我。不会写代码不是错,世界上99%的人都不会写代码,真的。其实世界上有很多条路,并不是程序员才能赚钱。有许多工作既有钱,又有面子,还能轻松找到女朋友。
他的第一版代码是这样的(腾讯会议截图):
这个代码当然有问题,跑起来会下标越界:
于是他修改了一下,下标-1避免越界:
这里面只有一个小问题,排序结果当然是错的。到此时间已经过去了30分钟,我相信再给他一点时间应该可以改对。但是面试时间已经超过了,所以没有让他继续写下去了。
所以我给想当程序员的应届生同学的一点建议:请把代码基本功打扎实。什么叫代码基本功?就是任何一个具体的算法,都能快速地翻译成代码。当然我还希望应届生同学能把算法基本功打扎实^0^