“学过一点。”
“学过什么语言?”
“C,PythOn,Java都碰过。”
瘦高个的眉毛动了一下。
他显然没预料到一个文科生能一口气报出三门语言的名字。
“我们协会有个惯例,新入社的成员需要做一套简单的测试题。这是给非专业同学的基础版。”
瘦高个从桌上翻出一张A4纸,推过去,
“不限时间,手写伪代码就行。”
顾屿低头看那张纸。
三道题。
第一道:实现一个冒泡排序算法,并分析其时间复杂度。
第二道:给定一个字符串,判断它是否为回文。
第三道:用递归实现斐波那契数列的第N项,并说明递归方案的缺陷及优化方向。
顾屿差点没绷住。
冒泡排序。回文判断。斐波那契递归。
这三道题,对顾屿来说实在太小儿科了。
前世他创业没钱雇人,产品、开发、测试全是他一个人硬扛,硬生生被逼成了个全栈野路子。
这种感觉怎么形容呢。
大概就是让一个开了十五年卡车的老司机,去考科目一的口头题:“红灯亮了应该怎么办?”
顾屿拿起旁边的圆珠笔。
第一道题。
他没用标准教科书的写法。
手起笔落,直接写了一版双向冒泡排序的优化变体,减少了接近一半的无效遍历。
时间复杂度分析写了三行,从最优O(n)到最差O(n²),顺带提了一句在近乎有序的数据集上,插入排序的常数项优势更大。
第二道题。
回文判断。
他用双指针法写完,又在旁边补了一行注释:若输入是UniCOde字符串,需额外处理代理对的边界情况。
第三道题。
斐波那契递归。
顾屿写完朴素递归版本后,在下面画了一棵递归树,标注了大量重复子问题。
然后给出了两种优化方案:备忘录法和自底向上的动态规划。
最后,他在纸张空白处加了一行小字:“如果N极大且只需精确值,建议用矩阵快速幂,时间复杂度可压到O(lOgN)。”
全程不到四分钟。
顾屿把笔放下,把那张A4纸推回去。
瘦高个接过来,低
本章未完,请点击下一页继续阅读!