程序员如何快速准备面试中的算法

    程序员如何快速准备面试中的算法

  准备面试、学习算法,特别推荐最新出版的 新书《编程之法:面试和算法心得》,已经上架 京东等各大网店


前言

    我决定写篇短文,即为此文。之所以要写这篇文章,缘于微博上常有朋友询问,要毕业找工作了,如何备战算法。尽管在微博上简单梳理过,如下图所示:

   

    但因字数限制,许多问题无法一次性说清楚,故特撰此文着重阐述下:程序员如何快速准备面试中的算法,继而推荐一些相关的书籍或资料。顺便也供节后跳槽、3月春季招聘小高潮、及6月毕业找工作的朋友参考。


备战面试中算法的五个步骤

    对于立志进一线互联网公司,同时不满足于一辈子干纯业务应用开发,希望在后端做点事情的同学来说,备战面试中的算法,分为五个步骤,如下:

    1、掌握一门编程语言

    首先你得确保你已掌握好一门编程语言:
  • C的话,推荐Dennis M. Ritchie & Brian W. Kernighan合著的《C程序设计语言》、《C和指针》,和《征服C 指针》;
  • C++ 则推荐《C++ Primer》,《深度探索C++对象模型》,《Effective C++》 。
    掌握一门语言并不容易,不是翻完一两本书即可了事,语言的细枝末节需要在平日不断的编程练习中加以熟练。
    2、过一遍微软面试100题系列

    我从2010年起开始整理微软面试100题系列,见过的题目不可谓不多,但不管题目怎般变化,依然是那些常见的题型和考察点,当然,不考察任何知识点,纯粹考察编程能力的题目也屡见不鲜。故不管千变万化,始终不离两点:①看你基本知识点的掌握情况;②编程基本功。

    而当你看了一遍微软面试100题之后(不要求做完,且这个系列的有些答案存在不少问题,建议以我的新书《编程之法》为准),你自会意识到:数据结构和算法在笔试面试中的重要性。
    3、苦补数据结构基础

    如果学数据结构,可以看我们在大学里学的任一本数据结构教材都行,包括链表、数组、字符串、矩阵、树、图等等,如果你觉得实在不够上档次,那么可以再看看《STL源码剖析》。
    4、看算法导论

    《算法导论》上的前大部分的章节都在阐述一些经典常用的数据结构和典型算法(如二分查找快速排序Hash表),以及一些高级数据结构(诸如红黑树B树),如果你已经学完了一本数据结构教材,那么建议你着重看贪心、动态规划、图论等内容,这3个议题每一个议题都大有题目可出。同时,熟悉常用算法的时间复杂度

    如果算法导论看不懂,你可以参看本博客。

    5、刷leetcode或cc150或编程艺术系列

  • 如主要在国外找工作,推荐两个编程面试网站:一个是国外一网站leetcode,它上面有个OJ对于找工作的同学来说非常值得一刷https://oj.leetcode.com/;另外一个是http://www.careercup.com/,而后这个网站的创始人写了本书,叫《careercup cracking coding interview》,最终这本英文书被图灵教育翻译出版为《程序员面试金典》。
  • 若如果是国内找工作,则郑重推荐编程之法github,尤其是在博客版本基础上精简优化的我的新书《编程之法。除此之外,还可看看《编程之美》,与《剑指offer》。

    而不论是准备国内还是国外的海量数据处理面试题,此文必看:教你如何迅速秒杀掉:99%的海量数据处理面试题。收录于新书《编程之法》第六章。

    另,多看看优秀的开源代码,如nginx或redis,多做几个项目加以实践之,尽早实习(在一线互联网公司实习3个月可能胜过你自个黑灯瞎火摸爬滚打一年)。

    当然,如果你已经具备了上文所说的语言 & 数据结构 & 算法基础,可以直接跳到本第五步骤,开始刷leetcode或cc150或编程艺术系列。此外,特别推荐此面试求职&算法在线课程


后记

    学习最忌心浮气躁,急功近利,即便练习了算法,也不一定代表能万无一失通过笔试面试关,因为总体说来,在一般的笔试面试中,70%基础+ 30%coding能力(含算法),故如果做到了上文中的5个步骤,还远远不够,最后,我推荐一份非算法的书单,以此为大家查漏补缺(不必全部看完,欢迎大家补充):

  1. 《深入理解计算机系统》
  2. W.Richard Stevens著的《TCP/IP详解三卷》,《UNIX网络编程二卷》,《UNIX环境高级编程:第2版》,详见此豆瓣页面
  3. 你如果要面机器学习一类的岗位,建议看看相关的算法(支持向量机通俗导论(理解SVM的三层境界),收录于新书《编程之法》第7.1节),及老老实实补补数学基础,包括微积分、线性代数、概率论与数理统计(除了教材,推荐一本《数理统计学简史》)、矩阵论(推荐《矩阵分析与应用》)等..
    综上:上述全部过程短则半年,长则三年。
    最后要强调的是:切忌急功近利,越想快速越要循序渐进,踏实前进,若实在觉得算法 & 编程太难,转产品、运营、测试、运维、前端、设计都是不错的选择,因为虽然编程有趣,但不一定人人适合编程。

    重大消息:我的 新书《编程之法:面试和算法心得》终于在2015年10月14日上架开卖了! 京东抢购地址http://item.jd.com/11786791.html。目前,京东、当当、亚马逊等各大网店均已有现货销售。
  • 220
    点赞
  • 578
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 84
    评论
《C语言程序员面试宝典》是一本专门为C语言程序员准备面试指南。该书内容涵盖了面试的各个方面,从面试准备、常见问题到专业知识和编程技巧等等。这本书的问答形式非常实用,有助于读者全面了解面试所需的知识和技巧。 首先,《C语言程序员面试宝典》介绍了面试准备阶段应该注意的事项。书强调了对企业的了解,以及对岗位需求的分析。对于简历的准备和修改也给出了一些指导意见。同时,书还提供了一些常见面试问题及其答案,帮助读者在面试更加自信和准备充分。 其次,《C语言程序员面试宝典》逐个章节介绍了C语言常见的面试问题和解决方案。这些问题包括基础知识、数据结构、算法、内存管理、指针、函数等等。每个问题都有相应的解答及其解析,帮助读者理解问题的本质和解决思路。通过逐个问题的介绍,读者可以系统性地习C语言的知识和技巧。 最后,《C语言程序员面试宝典》还提供了一些编程实例和代码片段,帮助读者更好地掌握C语言的编程技巧。编程实例包括一些常见的算法和数据结构实现,读者可以通过阅读和实践这些例子来提高自己的编程能力。 总的来说,《C语言程序员面试宝典》是一本非常实用的面试指南,适合C语言程序员准备面试使用。通过阅读和习这本书,读者可以全面提升自己的面试能力,增加成功的机会。无论是对于初入职场的程序员还是有一定经验的程序员,这本书都是一本值得阅读的好书。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 84
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

v_JULY_v

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值