程序员如何快速准备面试中的算法
前言
我决定写篇短文,即为此文。之所以要写这篇文章,缘于微博上常有朋友询问,要毕业找工作了,如何备战算法。尽管在微博上简单梳理过,如下图所示:
但因字数限制,许多问题无法一次性说清楚,故特撰此文着重阐述下:程序员如何快速准备面试中的算法,顺便推荐一些相关的书籍或资料。
备战面试中算法的五个步骤
总体来说,备战面试中的算法,分为五个步骤,如下:
1、掌握一门编程语言
首先你得确保你已掌握好一门编程语言:
- C的话,推荐Dennis M. Ritchie & Brian W. Kernighan合著的《C程序设计语言》,和《C和指针》;
- C++ 则推荐《C++ Primer》,《深度探索C++对象模型》,《Effective C++》 。
掌握一门语言并不容易,不是翻完一两本书即可了事,语言的细枝末节需要在平日不断的编程练习中加以熟练。 2、过一遍微软面试100题系列
我从2010年起开始整理微软面试100题系列,见过的题目不可谓不多,但不管题目怎般变化,依然是那些常见的题型和考察点,当然,不考察任何知识点,纯粹考察编程能力的题目也屡见不鲜。故不管千变万化,始终不离两点:①看你基本知识点的掌握情况;②编程基本功。
而当你看了一遍微软面试100题之后(不要求做完),你自会意识到:数据结构和算法在笔试面试中的重要性。
3、苦补数据结构基础
如果学数据结构,可以看我们在大学里学的任一本数据结构教材都行,如果你觉得实在不够上档次,那么可以再看看《STL源码剖析》。
4、看算法导论
《算法导论》上的前大部分的章节都在阐述一些经典常用的数据结构和典型算法(如二分查找,快速排序、Hash表),以及一些高级数据结构(诸如红黑树、B树),如果你已经学完了一本数据结构教材,那么建议你着重看贪心、动态规划、图论等内容,这3个议题每一个议题都大有题目可出。同时,熟悉常用算法的时间复杂度。
如果算法导论看不懂,你可以参看本博客。
5、刷leetcode或cc150或编程艺术系列
而不论是准备国内还是国外的海量数据处理面试题,此文必看:教你如何迅速秒杀掉:99%的海量数据处理面试题。
此外,多看看优秀的开源代码,如nginx或redis,多做几个项目加以实践之,尽早实习(在一线互联网公司实习3个月可能胜过你自个黑灯瞎火摸爬滚打一年)。
当然,如果你是准备社招,且已经具备了上文所说的语言 & 数据结构 & 算法基础,可以直接跳到本第五步骤,开始刷leetcode或cc150或编程艺术系列。
后记
学习最忌心浮气躁,急功近利,即便练习了算法,也不一定代表能万无一失通过笔试面试关,因为总体说来,在一般的笔试面试中,70%基础+ 30%coding能力(含算法),故如果做到了上文中的5个步骤,还远远不够,最后,我推荐一份书单,以此为大家查漏补缺(不必全部看完,欢迎大家补充):
- 《深入理解计算机系统》
- W.Richard Stevens著的《TCP/IP详解三卷》,《UNIX网络编程二卷》,《UNIX环境高级编程:第2版》,详见此豆瓣页面;
- 你如果要面机器学习一类的岗位,建议看看相关的算法(如支持向量机通俗导论(理解SVM的三层境界)),及老老实实补补数学基础,包括微积分、线性代数、概率论与数理统计(除了教材,推荐一本《数理统计学简史》)、矩阵论(推荐《矩阵分析与应用》)等..
综上:上述全部过程短则半年,长则三年。
最后要强调的是:急功近利者必败,越想快速越要循序渐进,踏实前进,若实在觉得算法 & 编程太难,转产品、运营、测试、运维、前端、设计都是不错的选择,因为虽然编程有趣,但不一定人人适合编程。
分享到:
相关推荐
在“面试算法”这一标签中,我们可以推断出书中的重点内容。面试算法通常包括但不限于排序算法(如快速排序、归并排序)、查找算法(二分查找、哈希表查找)、图论问题(最短路径算法、拓扑排序)、动态规划等。这些...
《程序员面试经典算法题》是针对程序员在面试过程中可能会遇到的算法问题进行深入解析的一份资源。这份资料旨在帮助程序员提升算法思维,从而在技术面试中脱颖而出。通过学习和掌握这些经典算法,不仅可以提高编程...
《程序员面试算法大全》这份资料集是专门为准备面试的程序员们精心整理的资源,涵盖了大量常见面试题目的实例和解析,旨在帮助求职者提升在面试中的表现。由于标签为"test",我们可以推断这份资料主要关注的是测试...
总之,《程序员代码面试指南》是一本全面且深入的资源,它不仅提供了大量的代码示例,还涵盖了理论知识和实践经验,对于希望提升自己算法能力、准备IT名企面试的程序员来说,是一本不可多得的宝典。
程序员面试题精选 C++ 算法 微软 google 程序员面试题精选 C++ 算法 微软 google
《Python程序员面试算法宝典》是一本专门为Python程序员面试准备的指南,涵盖了广泛的数据结构和算法知识,旨在帮助读者在面试中展现出扎实的编程基础和解决问题的能力。这本书以PDF格式包含在"Python程序员面试算法...
本"Scala程序员面试算法宝典代码"集合了多种常见算法的实现,旨在帮助求职者提升面试成功率。 1. **基础数据结构** - 数组:数组是最基本的数据结构,用于存储固定大小的同类型元素集合。在Scala中,可以使用Array...
总之,"程序员算法面试笔试大全data structures and algorithms"是一个全面的学习资源,覆盖了程序员面试中数据结构与算法的各个方面。通过学习和实践,你可以增强自己的编程能力,为应对面试中的挑战做好充分准备。
• 第六章 海量数据处理 o 6.0 本章导读 o 6.1 关联式容器 o 6.2 分而治之 o 6.3 simhash 算法 o 6.4 外排序 o 6.5 MapReduce o 6.6 多层划分 o 6.7 Bitmap o 6.8 Bloom filter o 6.9 Trie 树 o 6.10 数据库 o 6.11 ...
《程序员求职面试英语宝典》是一本专门为程序员准备的面试英语指南,旨在帮助程序员在英语面试中提升自己的表现。此书涵盖了与编程、软件开发、项目管理、技术趋势等相关领域的专业词汇,以及面试中可能遇到的常见...
总结,掌握这些知识点对于程序员面试至关重要。熟练地使用数据结构如双向链表,理解并应用模板特化,以及熟悉链表操作,这些都是评估编程技能和逻辑思维能力的重要指标。在准备面试时,除了理解这些概念,还要通过...
- 检测算法中遍历字符串,遇到开括号则将其推入栈中,遇到闭括号则比较是否与栈顶的开括号匹配,若匹配则弹出栈顶元素,否则表示括号不匹配。 代码示例: ```c typedef struct { SElemType* base, * top; int ...
总之,这些压缩包中的资源是准备程序员面试的宝贵资料。通过系统学习和反复练习,你可以不断提升自己的算法水平,增强解决问题的能力,从而在求职竞争中脱颖而出。记得,理论知识与实践操作相结合,才是面试成功的...
《程序员面试全攻略》是一本全面指导程序员求职过程的实用指南,旨在帮助程序员们在竞争激烈的IT行业中脱颖而出,成功找到理想的工作。这本书涵盖了从准备简历、与猎头接触,到面试技巧和程序设计能力的提升等多个...
《程序员面试宝典》是一本专门针对程序员面试的书籍,旨在帮助求职者充分准备,提升在面试中的竞争力。这本书涵盖了编程基础、数据结构、算法、操作系统、计算机网络、数据库等多个核心领域,为读者构建了一个全面的...
《程序员面试宝典》是一本专门为程序员准备面试所编写的参考资料,它覆盖了算法思想、数据结构以及计算等多个方面,针对程序员在面试过程中可能遇到的问题提供了深入的分析和解答。 首先,在算法思想方面,书中介绍...
《程序员代码面试指南》是一本专注于IT名企面试中常见的算法和数据结构问题的书籍,其核心在于提供最优解的代码实现。这本书旨在帮助程序员在求职过程中更好地应对技术面试,尤其是那些涉及算法和数据结构的问题。书...
《程序员代码面试指南:IT名企算法与数据结构题目最优解-代码》是一部专为准备IT企业面试的程序员量身定制的指南。本书的核心内容围绕算法和数据结构展开,通过Java语言实现,旨在帮助读者掌握解决常见面试问题的...