对于立志进一线互联网公司,同时不满足于一辈子干纯业务应用开发,希望在后端做点事情的同学来说,备战面试中的算法,分为哪几个步骤呢?
如直接想要突击算法手册的,请跳转至文末获取。
1、掌握一门编程语言
C的话,推荐Dennis M. Ritchie & Brian W. Kernighan合著的《C程序设计语言》,和《C和指针》;
C++ 则推荐《C++ Primer》,《深度探索C++对象模型》,《Effective C++》;
Java推荐《Thinking in Java》,《Core Java》,《Effictive Java》,《深入理解Java虚拟机》。
掌握一门语言并不容易,不是翻完一两本书即可了事,语言的细枝末节需要在平日不断的编程练习中加以熟练。
2、苦补数据结构基础
大部分的面试题都在围绕一个点:基于各种数据结构上的增删改查。如字符串的查找翻转,链表的查找遍历合并删除,树和图的查找遍历,后来为了更好地查找,我们想到了排序,排序仍然不够,我们有了贪心、动态规划,再后来东西多了,于是有了海量数据处理,资源有限导致人们彼此竞争,出现了博弈组合概率。
3、刷leetcode
如主要在国外找工作,推荐两个面试编程网站:一个是http://leetcode.com/ ,leetcode是国外一网站,它上面有不少编程题;另外一个是http://www.careercup.com/ ,而后这个网站的创始人写了本书,叫《careercup cracking coding interview》,最终这本英文书被图灵教育翻译出版为《程序员面试金典》。
若如果是国内找工作,则郑重推荐我编写的《程序员编程艺术》,有编程艺术博客版,以及在博客版本基础上精简优化的编程艺术github版。除此之外,还可看看《编程之美》,与《剑指offer》。
4、突击手册与后记
最后,我提供一份《程序员面试突击必会算法》。
下载地址:kdocs.cn/l/ck8Q6SzMWsRa
学习最忌心浮气躁,急功近利,即便练习了算法,也不一定代表能万无一失的通过笔试与面试环节,因为总体说来,在一般的笔试面试中,70%基础+ 30%coding能力(含算法),故如果做到了上文中的三个步骤,还远远不够。