编辑推荐
“互联网+”风潮的到来,不仅是聚集财富资本和催生新型商业模式的过程,而且还提供了大量的IT专业技术工作岗位。各种概念、模式和奇思妙想*终都要通过一行行的计算机程序代码,变成形形色色的软件、网站、APP,才能改变人们的生活,为企业创造物质财富。对于广大计算机类专业的大学毕业生和想投身IT产业的年轻人,现在无疑正面临着更多、更好的机会。IT企业在提供高薪岗位的同时,也对求职者的专业素质和能力提出了很高的要求,特别是IT名企的招聘过程,往往要进行多轮的笔试和面试,应聘者要经过激烈的竞争才能*终获得满意的Offer。
本书精心选取了700道各IT名企程序员招聘笔试面试的真题,书中内容按照目前各主流IT企业技术类招聘考试试题所涉及到的专业知识领域,划分为8章:第1章为C语言程序设计,第2章为面向对象程序设计,第3章为数据结构与算法,第4章为计算机组成原理,第5章为操作系统,第6章为计算机网络,第7章为数据库系统,第8章为数学与逻辑。各章直接对招聘考试真题展开解析,将试题涉及到知识点进行精准地归纳和深入地阐述,而省去了与之不相关教材内容的堆砌,确保应聘者的学习更加有针对性。我们希望本书的读者能够把书中每一道试题的解析读懂、吃透,从而牢固掌握试题所涉及到相关知识的内涵、外延和综合应用,真正做到举一反三。
通过对近几年各大知名IT企业技术类招聘笔试、面试试题的分析,作者总结出这类考试具有以下两个特点:
(1)考试内容相对发散,没有明确的考试大纲、考试说明和教程可以参照。招聘企业的类型、产品、岗位各不相同,因此其笔试、面试的考试内容不局限于某一个知识领域,而是涉及到各种计算机软硬件理论、方法和技术。通常情况下,企业也不会专门为自己的招聘考试编写考试大纲或考试说明,指定专门的考试指导用书。应聘者需要专门拿出时间和精力对计算机学科的多门专业基础课程进行复习和准备。
(2)试题着重考查应聘者对专业基础知识的领会、综合、运用和迁移的情况,体现计算机学科逻辑思维和计算思维的能力目标。企业招聘考试中大部分试题所涉及的知识点都是计算机专业各学科*核心和*基础的内容,但应聘者通过“死记硬背”的方式往往是解答不出这些试题的,需要对这些基础知识真正的理解,并且能够在各种实际场景中综合应用这些知识来解决具体问题。
“拨开学习中的荆棘迷雾,指点探索中的灵感思路”,希望这本凝结了集体智慧和心血的图书,能够充分体现开点工作室的创作主旨,为广大IT求职者提供真正的帮助。希望每一名热爱这个行业,充满热情和力量的年轻人都能梦想成真。
内容简介
本书对近年来IT企业技术类招聘笔试、面试的试题进行全面的收集和梳理,并选取其中具有代表性的700道真题进行深入的解析,力图将其中所蕴含的计算机专业知识进行系统的归纳总结,既可以作为高等学校计算机类专业学生复习和练习的参考资料,也可以作为求职者快速学习和备考的综合教程。
本书内容按照目前各主流IT企业技术类招聘考试试题所涉及的专业知识领域,分为8章:第1章C语言程序设计,第2章面向对象程序设计,第3章数据结构与算法,第4章计算机组成原理,第5章操作系统,第6章计算机网络,第7章数据库技术,第8章数学与逻辑。各章直接对招聘考试真题展开解析,将试题涉及的知识点进行精准的归纳和深入的阐述,而省去了与之不相关的教材内容的堆砌,确保应聘者的学习更具有针对性。本书封面贴有清华大学出版社防伪标签,无标签者不得销售。
作者简介
开点工作室,是由一群重点高校计算机专业中青年骨干教师组成的教育教学兴趣小组。热爱计算机教学,喜欢钻研专业知识,关注学生的成长发展,是我们共同的特点。每年,我们都会目睹自己身边的学生求职找工作的过程,通过和他们的交流,我们深深感受到IT企业,特别是知名企业的招聘考试考查范围宽泛,试题形式灵活,综合性强,对于应聘者的要求是比较高的。学生在准备招聘考试的过程中,往往会遇到需要复习的内容纷繁众多,缺少针对性参考资料,没有真题的解析和练习等困惑。尤其是对于非计算机专业科班出身的学生,要让他们在短时间内熟练掌握多门计算机专业课程的知识是很困难的。为此,我们非常希望利用自身的专业知识和教学经验,编写出这样一部书籍:通过对近年来IT企业技术类招聘笔试、面试的试题进行全面地收集和梳理,并选取其中具有代表性的试题进入深入地解析,力图将其中所蕴含的专业知识进行系统地归纳总结,既可以作为计算机专业学生复习和练习的参考资料,也可以作为非计算机专业求职者快速学习、备考的综合教程。
内页插图
目录
第1章C语言程序设计Ⅷ
导读Ⅷ
1.1基本概念与基本运算2
1.2基本语句10
1.3函数16
1.4数组23
1.5指针31
1.6结构与联合50
1.7位运算58
1.8编程题64
第2章面向对象程序设计82
导读82
2.1基本概念83
2.2类和对象97
2.3继承、派生和多态104
2.4模板114
第3章数据结构与算法设计118
导读118
3.1线性表120
3.2栈、队列和数组131
3.3树与二叉树158
3.4图181
3.5查找192
3.6排序208
3.7时间复杂度225
3.8数字排列230
第4章计算机组成原理234
导读234
4.1计算机系统概述236
4.2数据的表示与运算237
4.3指令系统与处理器组织252
4.4存储器组织255
4.5输入输出组织264
4.6计算机系统综合271
第5章操作系统285
导读285
5.1进程管理286
5.2内存管理313
5.3文件管理322
5.4设备管理327
第6章计算机网络334
导读334
6.1应用层336
6.2传输层346
6.3网络层357
6.4数据链路层与局域网375
6.5网络与通信基础386
6.6网络安全393
第7章数据库技术398
导读398
7.1基本概念 400
7.2SQL语言 408
7.3数据库设计417
7.4数据库管理 418
7.5查询优化与索引422
7.6综合应用425
7.7其他类型题目434
第8章数学与逻辑437
导读437
8.1排列组合438
8.2概率统计447
8.3逻辑推理463
参考文献480
前言/序言
在2015年3月召开的全国两会上,李克强总理在政府工作报告中首次提出了“互联网+”的概念,标志着以互联网为代表的信息技术与传统行业全面融合的新型经济发展模式已经上升到了国家经济的战略层高度。金融、商业、教育、交通、医疗等各种传统行业,一旦插上了互联网的翅膀,便会展现出惊人的爆发力,创造出一个又一个科技和财富的神话。当阿里巴巴、腾讯、百度、小米等企业已经成为市值千亿的超级公司时,当每个月都有各种互联网创业企业获得千万级风险投资时,当人们每天的衣食住行已经离不开微信、淘宝、支付宝、滴滴打车、大众点评这些APP时,我们知道,一个新的时代开启了。
“互联网+”风潮的到来,不仅是聚集财富资本和催生新型商业模式的过程,而且还提供了大量的IT专业技术工作岗位。各种概念、模式和奇思妙想最终都要通过一行行的计算机程序代码,变成形形色色的软件、网站、APP,才能改变人们的生活,为企业创造物质财富。对于广大计算机类专业的大学毕业生和想投身IT产业的年轻人,现在无疑正面临着更多、更好的机会。IT类专业求职者眼中的理想公司已经不再局限为IBM、微软、甲骨文等国外老牌软硬件企业,以BAT为代表的国内互联网巨头,正在吸引着越来越多的优秀IT专业人才。同时,各种创新创业型中小企业,凭借丰厚的薪酬待遇和股权激励以及广阔的发展空间,也在积极地招兵买马,准备大干一场。在2015年这个“史上最难就业季”中,计算机专业仍然是最容易找工作、平均薪酬最高的专业之一。
互联网产业的繁荣和IT就业市场的火爆,并不意味着好工作就会自动落到每一个求职者的头上,企业在提供高薪岗位的同时,也对求职者的专业素质和能力提出了很高的要求。特别是像BAT、小米、华为、奇虎360等名企的招聘过程,往往要进行多轮的笔试和面试,应聘者要经过激烈的竞争才能最终获得满意的offer。
从一名计算机专业的学生成为一名合格的程序员,并不是一件很容易的事情,你需要接受系统的计算机专业教育,通常需要学习几十门专业课程,进行大量的软硬件实验,最好有机会参与实际项目的开发,这些努力和付出会让你掌握大量的专业知识,具备一定的专业技能和经验。最后,你还要把专业知识、技能、经验和素养尽可能充分地展示和证明给企业,从而让企业能够知道你可以成为一名合格的程序员。形形色色的IT企业笔试和面试便是检验和测量应聘者专业知识和能力的最直接的工具,也是大多数应聘者获得offer必须要跨过的一道门槛。要想获得心仪IT企业的工作机会,除了优异的专业课成绩、真实可信的项目经历外,认真对待和积极准备各大名企的笔试、面试也是应聘者取得成功的关键因素。
和其他各种考试项目一样,IT企业的技术类招聘考试也是一种心理测量形式,其考试本身应该具备一些固定的属性,包括:被测对象、考试内容、考查目标、考试难度等。有了这些属性,就可以比较全面的描述某一项考试。通过对近几年各大知名IT企业技术类招聘笔试、面试试题的分析,我们总结出这类考试具有以下两个特点:
(1)考试内容相对发散,没有明确的考试大纲、考试说明和教程可以参照。招聘企业的类型、产品、岗位各不相同,因此其笔试、面试的考试内容不局限于某一个知识领域,而是涉及各种计算机软硬件理论、方法和技术。通常情况下,企业也不会专门为自己的招聘考试编写考试大纲或考试说明,指定专门的考试指导用书。应聘者需要专门拿出时间和精力对计算机学科的多门专业基础课程进行复习和准备。
(2)试题着重考查应聘者对专业基础知识的领会、综合、运用和迁移的情况,体现计算机学科逻辑思维和计算思维的能力目标。企业招聘考试中大部分试题所涉及的知识点都是计算机专业各学科最核心和最基础的内容,但应聘者通过“死记硬背”的方式往往是解答不出这些试题的,需要对这些基础知识真正的理解,并且能够在各种实际场景中综合应用这些知识来解决具体问题。
开点工作室是由一群重点高校计算机专业中青年骨干教师组成的教育教学兴趣小组。热爱计算机教学,喜欢钻研专业知识,关注学生的成长发展,是我们共同的特点。每年,我们都会目睹自己身边的学生求职找工作的过程,通过和他们的交流,我们深深感受到IT企业,特别是知名企业的招聘考试考查范围宽泛,试题形式灵活,综合性强,对于应聘者的要求是比较高的。学生在准备招聘考试的过程中,往往会遇到需要复习的内容纷繁众多,缺少针对性参考资料,没有真题的解析和练习等困惑。尤其是对于非计算机专业科班出身的学生,要让他们在短时间内熟练掌握多门计算机专业课程的知识是很困难的。为此,我们非常希望利用自身的专业知识和教学经验,编写出这样一部书籍:通过对近年来IT企业技术类招聘笔试、面试的试题进行全面的收集和梳理,并选取其中具有代表性的试题进行深入的解析,力图将其中所蕴含的专业知识进行系统的归纳总结,既可以作为计算机专业学生复习和练习的参考资料,也可以作为非计算机专业求职者快速学习、备考的综合教程。
本书精心选取了700道各IT名企程序员招聘笔试面试的真题,书中内容按照目前各主流IT企业技术类招聘考试试题所涉及的专业知识领域划分为8章:第1章为C语言程序设计,第2章为面向对象程序设计,第3章为数据结构与算法,第4章为计算机组成原理,第5章为操作系统,第6章为计算机网络,第7章为数据库技术,第8章为数学与逻辑。各章直接对招聘考试真题展开解析,将试题涉及的知识点进行精准地归纳和深入地阐述,而省去了与之不相关教材内容的堆砌,确保应聘者的学习更加有针对性。我们希望本书的读者能够把书中每一道试题的解析读懂、吃透,从而牢固掌握试题所涉及相关知识的内涵、外延和综合应用,真正做到举一反三。同时,本书专注于计算机专业技术试题的分析讲解,不涉及性格测试、智力测验、常识测试、英语测试以及面试礼仪等非技术领域内容,真正做到“没有鸡汤,全是干货”。书中招聘考试真题来自互联网中求职网站、论坛、技术博客等渠道,还包括参加招聘考试学生的内容回忆,并且加入了其他领域有参考价值的试题,如研究生统考(408)中的部分试题。有些原始试题由于各种原因,内容不够完整或叙述不够准确,作者进行了适当的补充和修正,以免造成对读者学习的迷惑和误导。
“拨开学习中的荆棘迷雾,指点探索中的灵感思路”,希望这本凝结了集体智慧和心血的教材,能够充分体现开点工作室的创作主旨,为广大IT求职者提供真正的帮助。希望每一名热爱这个行业,充满热情和力量的年轻人都能梦想成真。
由于水平有限,加之时间仓促,书中肯定会有这样或那样的错误和不足,敬请读者提出宝贵意见,以便帮助我们修改完善。作者电子信箱:kaidiancs@163.com。
更多计算机知识学习、技术讲解、职业规划和求职指导的文章请扫描以下二维码,关注我们的微信公众号:开点工作室。
开点工作室2016年5月于北京
《代码炼金术:算法与数据结构精粹》 —— 助你洞悉程序本质,构建高效智能的软件世界 在这信息爆炸、技术飞速迭代的时代,软件开发早已不再是简单的代码堆砌,而是对逻辑思维、问题解决能力以及对计算科学深层理解的综合考验。无论是初出茅庐的学子,还是身经百战的工程师,面对日益复杂的业务需求和瞬息万变的行业格局,掌握核心的算法与数据结构知识,如同掌握了编程世界的“内功心法”,是提升自身竞争力、突破职业瓶颈的关键所在。 《代码炼金术:算法与数据结构精粹》正是这样一本旨在帮助开发者从“术”的层面迈向“道”的精粹之作。它并非一本罗列枯燥概念的教科书,也不是一本充斥着晦涩数学公式的理论探讨,而是一本将抽象的算法思想与具体的数据组织方式,通过清晰的逻辑、生动的图示以及贴近实际的应用场景,转化为开发者触手可及的强大工具。本书致力于让读者深刻理解“为何”如此设计,以及“如何”高效运用,从而在每一次编码实践中,都能构建出更优雅、更鲁棒、更具竞争力的解决方案。 核心内容与价值: 本书紧密围绕计算机科学的核心基石——算法与数据结构展开,力求为读者构建一套完整而系统的知识体系。我们深知,理解这些概念的精髓远比死记硬背重要。因此,本书在内容组织上,遵循从易到难、由浅入深的原则,循序渐进地引导读者深入理解。 第一部分:算法的思维艺术——解决问题的逻辑引擎 算法,是解决特定问题的步骤和方法。本书将算法的讲解提升到“思维艺术”的高度,不仅仅是介绍各种算法的流程,更重要的是剖析其背后的设计思想和解决问题的哲学。 基础排序算法的演进与权衡: 从直观的冒泡排序、选择排序,到效率的飞跃——插入排序、希尔排序;再到经典的快速排序、归并排序,以及原地排序的代表堆排序。我们将详细解析每种算法的内部机制,分析其时间复杂度和空间复杂度,并探讨在不同场景下的最优选择。理解这些基础算法,是理解更复杂算法的基石,更是培养严谨逻辑思维的绝佳途径。 搜索算法的效率之道: 无论是线性搜索的朴实无华,还是二分搜索的 logarithmic 效率,亦或是哈希查找的近乎常数时间,本书都将深入剖析其原理和适用范围。特别是对于二分搜索,我们将探讨其在有序数组、旋转数组等变种场景下的应用,以及如何避免常见的边界错误。 图论算法的连接世界: 图,是描述对象之间关系的强大模型。本书将从图的表示方法(邻接矩阵、邻接表)入手,逐步讲解深度优先搜索(DFS)和广度优先搜索(BFS)这两种核心的图遍历算法。在此基础上,我们将深入探讨寻找最短路径的Dijkstra算法、Floyd-Warshall算法,以及最小生成树的Prim算法和Kruskal算法。这些算法在网络路由、社交网络分析、资源分配等领域有着广泛的应用。 动态规划的优化智慧: 动态规划(DP)是解决重叠子问题和最优子结构问题的强大技术。本书将通过一系列经典的DP问题(如斐波那契数列、背包问题、最长公共子序列等)的讲解,阐述“状态定义”、“状态转移方程”和“边界条件”这DP三要素。读者将学会如何识别问题中的DP特性,并将其转化为高效的递归或迭代解法。 贪心算法的局部最优与全局最优: 贪心算法以其简洁高效而著称。本书将介绍贪心算法的核心思想,并通过活动选择、霍夫曼编码等实例,阐释何时贪心策略能够导出全局最优解,以及其局限性。 回溯与分支限界的探索边界: 对于一些组合搜索问题,回溯和分支限界是常用的解法。本书将深入讲解回溯算法的“深度优先”搜索思想,以及如何通过剪枝(Pruning)技术来优化搜索效率,如N皇后问题、数独求解等。 第二部分:数据结构的艺术——组织信息的智慧 数据结构,是组织和存储数据的方式,它直接影响到算法的效率和程序的性能。本书将以清晰的图示和丰富的代码示例,展现各种数据结构的内在美。 线性结构的优雅形态: 从最基础的数组(Array)和链表(Linked List),到双向链表、循环链表,本书将深入解析它们在插入、删除、查找等操作上的性能特点,并探讨其在内存管理、动态扩展等方面的优势与劣势。栈(Stack)和队列(Queue)作为重要的线性结构,本书将展示它们在函数调用、任务调度、表达式求值等场景下的典型应用。 树结构的层次之美: 树,是数据组织中至关重要的一环。本书将从二叉树(Binary Tree)开始,讲解前序、中序、后序遍历。随后,我们将深入探讨二叉搜索树(BST)的特性及其在查找、插入、删除操作中的效率,并分析其可能出现的退化问题。在此基础上,我们将引入平衡二叉搜索树的概念,如AVL树和红黑树,并概述其保持平衡的机制,这对于构建高性能的查找结构至关重要。特别的,我们将讲解堆(Heap)这种特殊的完全二叉树,以及其在优先队列(Priority Queue)中的应用,这对于实现很多算法(如Dijkstra)至关重要。 哈希表的效率奥秘: 哈希表(Hash Table),又称散列表,以其平均O(1)的查找、插入和删除时间复杂度,成为现代软件开发中不可或缺的数据结构。本书将详细讲解哈希函数的原理、冲突的产生原因以及各种冲突解决方法(如链地址法、开放地址法)。通过实例,读者将理解如何构建高效的哈希表,并避免常见的陷阱。 图结构的连接网络: 除了在算法部分讨论的图的表示方法,本书还将独立地探讨图结构本身。我们将详细讲解有向图(Directed Graph)和无向图(Undirected Graph),以及它们在现实世界中的映射,如社交网络、城市交通、网页链接等。 高级数据结构的探索: 本书还将触及一些更高级的数据结构,如Trie(前缀树)在字符串匹配、字典搜索中的应用;并对B树、B+树等在数据库索引中的作用进行简要介绍,帮助读者建立更广阔的技术视野。 本书的特色与优势: 深入浅出的讲解: 抽象的概念通过生动的图示和贴近实际的例子得以具象化,让读者更容易理解。 理论与实践并重: 在讲解算法和数据结构原理的同时,大量穿插了高质量的代码示例,读者可以边学边练。 注重问题解决导向: 每一章节的讲解都紧密围绕“如何解决问题”展开,强调算法和数据结构在实际开发中的价值。 强调设计思想: 不仅教授“如何做”,更注重解释“为何如此设计”,培养读者的设计能力和工程思维。 覆盖广泛的应用场景: 理论知识与实际项目中的常见应用场景相结合,让读者感受到所学知识的实用性。 严谨的复杂度分析: 详细讲解时间复杂度和空间复杂度的概念,帮助读者评估算法和数据结构的性能。 谁适合阅读本书? 计算机科学与技术、软件工程等相关专业的学生: 作为学习算法与数据结构的优秀参考书,夯实专业基础。 希望提升编程技能的初级开发者: 学习更高效、更优雅的编程方法,摆脱“写能跑的代码”的初级阶段。 有一定工作经验,寻求技术突破的工程师: 深入理解核心技术,为应对更复杂的项目挑战做好准备。 准备技术面试的求职者: 掌握面试中最常考察的算法与数据结构知识,自信应对技术评估。 对计算机科学底层原理感兴趣的任何技术爱好者: 探索代码背后的逻辑之美,理解软件高效运行的奥秘。 结语: 《代码炼金术:算法与数据结构精粹》不仅仅是一本书,更是一次关于编程智慧的探索之旅。它将帮助你掌握点石成金的技能,将平凡的数据转化为智能的解决方案,让你的代码在效率、可维护性和优雅性上实现质的飞跃。掌握了算法与数据结构,你就掌握了通往更广阔技术世界的那把金钥匙。让我们一起,用代码的智慧,炼就非凡的软件成就!