架构感悟 8- 为什么喜欢面试算法
进一线互联网公司,或者不满足于一辈子干纯业务应用开发,希望在后端做点事情的同学来说,备战面试时,算法是必不可少的。
算法是你努力的样子
天赋决定上限,努力决定下限
毕业生刚毕业,工作经验较少,这样能体现自己与别人的差距。就只有基础知识是否扎实,思维是否严谨,理解是否透彻,知识是否“私有化”(是否变成自己的理解记忆的)。
有些同学刷leecode,的确很好,但不能为了刷题而刷题,应该去思考每个题背后解决问题的能力考核点,即建模思想和解题思路。思路有了,解题总是很轻松,长进也很大。
算法体现了思维能力
“写一个函数将 ipv4 地址字符串 (仅包含数字,点,空格) 转化成 32 位整数,另外,数字和点之间的空格是合法的,其他情况均为非法地址,要求输出合法地址的 32 位整型结果。”
这个题目不需要任何的算法背景和技巧,纯粹考察候选人的基本编程素质:逻辑思维是否清晰,细节是否考虑全面,是否能写出 bug free 的代码,是否有计算机思维能关注时间空间复杂度等。而且在候选人完成代码之后,还会要求候选人将代码讲给我听,当然不是因为面试官看不懂,而是这样还能顺带考察候选人的表达能力,沟通能力,毕竟讲给别人听让别人理解要比单纯自己理解难很多。
除此之外,不建议编程题目涉及需要记忆的算法,比如被很多人诟病的面试题:写个快排,没有人会天天背诵快排算法,写不出来也理所应当,如果换个问法,比如给候选人讲一下快排的思想,然后让候选人代码实现,测试候选人是否能写出 bug free 的代码,这反倒是一个比较好的编程题目。
还有,不建议面试需要特殊解题方法或技巧的编程题目,比如需要用到动态规划,线段树,Trie 树等高级一点的解题思路,毕竟大家工作中不常用到。
版权声明: 本文为 InfoQ 作者【旭东(Frank)】的原创文章。
原文链接:【http://xie.infoq.cn/article/94942ae25b4527d71d8ffeb35】。文章转载请联系作者。
评论