剑指Offer:名企面试官精讲典型编程题

剑指Offer:名企面试官精讲典型编程题
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者:
2012-01
版次: 1
ISBN: 9787121148750
定价: 45.00
装帧: 平装
开本: 16开
纸张: 胶版纸
页数: 260页
字数: 354千字
正文语种: 简体中文
  •   《剑指Offer:名企面试官精讲典型编程题》剖析了50个典型的程序员面试题,从基础知识、代码质量、解题思路、优化效率和综合能力五个方面系统整理了影响面试的5个要点。全书分为7章,主要包括面试的流程,讨论面试流程中每一环节需要注意的问题;面试需要的基础知识,从编程语言、数据结构及算法三方面总结了程序员面试的知识点;高质量的代码,讨论影响代码质量的的3个要素(规范性、完整性和鲁棒性),强调高质量的代码除了能够完成基本的功能之外,还能考虑到特殊情况并对非法输入进行合理的处理;解决面试题的思路,总结在编程面试中解决难题的常用思路,如果在面试过程中遇到了复杂的难题,应聘者可以利用画图、举例和分解复杂问题3种方法化繁为简,先形成清晰的思路再动手编程;优化时间和空间效率,介绍如何优化代码的时间效率和空间效率,读完这一章读者将学会常用的优化时间效率及空间换时间的常用算法,从而在面试中找到最优的解法;面试中的各种能力,本章总结应聘者在面试过程中如何表现学习能力和沟通能力,并通过具体的面试题讨论如何培养知识迁移能力、抽象建模能力和发散思维能力;两个面试案例,这两个案例总结了应聘者在面试过程中哪些举动是不好的行为,而哪些表现又是面试官所期待的行为。 何海涛,现思科高级软件工程师,曾先后就职于Autodesk和微软。分别于2003年和2006年于浙江大学获得计算机专业学士和硕士学位。主要关注程序员求职应聘领域、以及软件设计、开发和调试技术。著有《剑指Offer——名企面试官精讲典型编程题》一书。 第1章面试的流程
    1.1面试官谈面试
    1.2面试的三种形式
    1.2.1电话面试
    1.2.2共享桌面远程面试
    1.2.3现场面试
    1.3面试的三个环节
    1.3.1行为面试环节
    应聘者的项目经验
    应聘者掌握的技能
    回答“为什么跳槽”
    1.3.2技术面试环节
    扎实的基础知识
    高质量的代码
    清晰的思路
    优化效率的能力
    优秀的综合能力
    1.3.3应聘者提问环节
    1.4本章小结

    第2章面试需要的基础知识
    2.1面试官谈基础知识
    2.2编程语言
    2.2.1C++面试题1:赋值运算符函数
    经典的解法,适用于初级程序员
    考虑异常安全性的解法,高级程序员必备
    2.2.2C#
    面试题2:实现Singleton模式
    不好的解法一:只适用于单线程
    不好的解法二:可用于多线程但效率不高
    可行的解法:同步锁前后两次判断
    推荐的解法一:利用静态构造函数
    推荐的解法二:按需创建实例
    解法比较
    2.3数据结构
    2.3.1数组
    面试题3:二维数组中的查找
    2.3.2字符串
    面试题4:替换空格O(n2)的解法,不足以拿到Offer
    (n)的解法,搞定Offer就靠它
    2.3.3链表
    面试题5:从尾到头打印链表
    2.3.4树
    面试题6:重建二叉树
    2.3.5栈和队列
    面试题7:用两个栈实现队列
    2.4算法和数据操作
    2.4.1查找和排序
    面试题8:旋转数组的最小数字
    2.4.2递归和循环
    面试题9:斐波那契数列
    效率很低的解法,面试官不会喜欢
    面试官期待的实用解法O(logn)但不够实用的解法
    解法比较
    2.4.3位运算
    面试题10:二进制中1的个数
    可能引起死循环的解法
    常规解法
    能给面试官带来惊喜的解法
    2.5本章小结

    第3章高质量的代码
    3.1面试官谈代码质量
    3.2代码的规范性
    3.3代码的完整性
    从3方面确保代码的完整性
    3种错误处理的方法
    面试题11:数值的整数次方
    自以为题目简单的解法
    全面但不够高效的解法,离Offer已经很近了
    全面又高效的解法,确保能拿到Offer
    面试题12:打印1到最大的n位数
    跳进面试官陷阱
    在字符串上模拟数字加法
    把问题转换成数字排列
    面试题13:在O(1)时间删除链表结点
    面试题14:调整数组顺序使奇数位于偶数前面
    只完成基本功能的解法,仅适用于初级程序员
    考虑可扩展性的解法,能秒杀Offer
    3.4代码的鲁棒性
    面试题15:链表中倒数第k个结点
    面试题16:反转链表
    面试题17:合并两个排序的链表
    面试题18:树的子结构
    3.5本章小结

    第4章解决面试题的思路
    面试题19:二叉树的镜像
    面试题20:顺时针打印矩阵
    面试题21:包含min函数的栈
    面试题22:栈的压入、弹出序列
    面试题23:从上往下打印二叉树
    面试题24:二叉搜索树的后序遍历序列
    面试题25:二叉树中和为某一值的路径
    面试题26:复杂链表的复制
    面试题27:二叉搜索树与双向链表
    面试题28:字符串的排列

    第5章优化时间空间效率
    面试题29:数组中出现次数超过一半的数字
    基于Partition函数的O(n)算法
    利用数组特点的O(n)算法
    解法比较
    面试题30:最小的k个数O(n)的算法,只当可以修改输入数组时可用
    O(nlogk)的算法,适合处理海量数据
    解法比较
    面试题31:连续子数组的最大和
    举例分析数组的规律
    应用动态规划法
    面试题32:从1到n整数中1出现的次数
    不考虑效率的解法,想拿Offer有点难
    明显提高效率的解法,让面试官耳目一新
    面试题33:把数组排成最小的数
    面试题34:丑数
    逐个判断整数是不是丑数的解法
    创建数组保存已经找到的丑数的解法
    面试题35:第一个只出现一次的字符
    面试题36:数组中的逆序对
    面试题37:两个链表的第一个公共结点

    第6章面试中的各项能力
    6.1面试官谈能力
    6.2沟通能力和学习能力
    沟通能力
    学习能力
    善于学习、沟通的人也善于提问
    6.3知识迁移能力
    面试题38:数字在排序数组中出现的次数
    面试题39:二叉树的深度
    重复遍历结点的解法,不足以打动面试官
    只遍历结点一次的解法,正是面试官喜欢的
    面试题40:数组中只出现一次的数字
    面试题41:和为s的两个数字VS和为s的连续正数序列
    面试题42:翻转单词顺序VS左旋转字符串
    6.4抽象建模能力
    面试题43:n个骰子的点数
    基于递归求骰子点数,时间效率不够高
    基于循环求骰子点数,时间性能好
    面试题44:扑克牌的顺子
    面试题45:圆圈中最后剩下的数字
    经典的解法,用循环链表模拟圆圈
    创新的解法,拿到Offer不在话下
    6.5发散思维能力
    面试题46:求1+2+…+n
    利用构造函数求解
    利用虚函数求解
    利用函数指针求解
    利用模板类型求解
    面试题47:不用加减乘除做加法
    面试题48:不能被继承的类
    常规的解法:把构造函数设为私有函数
    新奇的解法:利用虚拟继承
    6.6本章小结

    第7章两个面试案例
    7.1案例一:(面试题49)把字符串转换成整数
    7.2案例二:(面试题50)树中两个结点的最低公共祖先
  • 内容简介:
      《剑指Offer:名企面试官精讲典型编程题》剖析了50个典型的程序员面试题,从基础知识、代码质量、解题思路、优化效率和综合能力五个方面系统整理了影响面试的5个要点。全书分为7章,主要包括面试的流程,讨论面试流程中每一环节需要注意的问题;面试需要的基础知识,从编程语言、数据结构及算法三方面总结了程序员面试的知识点;高质量的代码,讨论影响代码质量的的3个要素(规范性、完整性和鲁棒性),强调高质量的代码除了能够完成基本的功能之外,还能考虑到特殊情况并对非法输入进行合理的处理;解决面试题的思路,总结在编程面试中解决难题的常用思路,如果在面试过程中遇到了复杂的难题,应聘者可以利用画图、举例和分解复杂问题3种方法化繁为简,先形成清晰的思路再动手编程;优化时间和空间效率,介绍如何优化代码的时间效率和空间效率,读完这一章读者将学会常用的优化时间效率及空间换时间的常用算法,从而在面试中找到最优的解法;面试中的各种能力,本章总结应聘者在面试过程中如何表现学习能力和沟通能力,并通过具体的面试题讨论如何培养知识迁移能力、抽象建模能力和发散思维能力;两个面试案例,这两个案例总结了应聘者在面试过程中哪些举动是不好的行为,而哪些表现又是面试官所期待的行为。
  • 作者简介:
    何海涛,现思科高级软件工程师,曾先后就职于Autodesk和微软。分别于2003年和2006年于浙江大学获得计算机专业学士和硕士学位。主要关注程序员求职应聘领域、以及软件设计、开发和调试技术。著有《剑指Offer——名企面试官精讲典型编程题》一书。
  • 目录:
    第1章面试的流程
    1.1面试官谈面试
    1.2面试的三种形式
    1.2.1电话面试
    1.2.2共享桌面远程面试
    1.2.3现场面试
    1.3面试的三个环节
    1.3.1行为面试环节
    应聘者的项目经验
    应聘者掌握的技能
    回答“为什么跳槽”
    1.3.2技术面试环节
    扎实的基础知识
    高质量的代码
    清晰的思路
    优化效率的能力
    优秀的综合能力
    1.3.3应聘者提问环节
    1.4本章小结

    第2章面试需要的基础知识
    2.1面试官谈基础知识
    2.2编程语言
    2.2.1C++面试题1:赋值运算符函数
    经典的解法,适用于初级程序员
    考虑异常安全性的解法,高级程序员必备
    2.2.2C#
    面试题2:实现Singleton模式
    不好的解法一:只适用于单线程
    不好的解法二:可用于多线程但效率不高
    可行的解法:同步锁前后两次判断
    推荐的解法一:利用静态构造函数
    推荐的解法二:按需创建实例
    解法比较
    2.3数据结构
    2.3.1数组
    面试题3:二维数组中的查找
    2.3.2字符串
    面试题4:替换空格O(n2)的解法,不足以拿到Offer
    (n)的解法,搞定Offer就靠它
    2.3.3链表
    面试题5:从尾到头打印链表
    2.3.4树
    面试题6:重建二叉树
    2.3.5栈和队列
    面试题7:用两个栈实现队列
    2.4算法和数据操作
    2.4.1查找和排序
    面试题8:旋转数组的最小数字
    2.4.2递归和循环
    面试题9:斐波那契数列
    效率很低的解法,面试官不会喜欢
    面试官期待的实用解法O(logn)但不够实用的解法
    解法比较
    2.4.3位运算
    面试题10:二进制中1的个数
    可能引起死循环的解法
    常规解法
    能给面试官带来惊喜的解法
    2.5本章小结

    第3章高质量的代码
    3.1面试官谈代码质量
    3.2代码的规范性
    3.3代码的完整性
    从3方面确保代码的完整性
    3种错误处理的方法
    面试题11:数值的整数次方
    自以为题目简单的解法
    全面但不够高效的解法,离Offer已经很近了
    全面又高效的解法,确保能拿到Offer
    面试题12:打印1到最大的n位数
    跳进面试官陷阱
    在字符串上模拟数字加法
    把问题转换成数字排列
    面试题13:在O(1)时间删除链表结点
    面试题14:调整数组顺序使奇数位于偶数前面
    只完成基本功能的解法,仅适用于初级程序员
    考虑可扩展性的解法,能秒杀Offer
    3.4代码的鲁棒性
    面试题15:链表中倒数第k个结点
    面试题16:反转链表
    面试题17:合并两个排序的链表
    面试题18:树的子结构
    3.5本章小结

    第4章解决面试题的思路
    面试题19:二叉树的镜像
    面试题20:顺时针打印矩阵
    面试题21:包含min函数的栈
    面试题22:栈的压入、弹出序列
    面试题23:从上往下打印二叉树
    面试题24:二叉搜索树的后序遍历序列
    面试题25:二叉树中和为某一值的路径
    面试题26:复杂链表的复制
    面试题27:二叉搜索树与双向链表
    面试题28:字符串的排列

    第5章优化时间空间效率
    面试题29:数组中出现次数超过一半的数字
    基于Partition函数的O(n)算法
    利用数组特点的O(n)算法
    解法比较
    面试题30:最小的k个数O(n)的算法,只当可以修改输入数组时可用
    O(nlogk)的算法,适合处理海量数据
    解法比较
    面试题31:连续子数组的最大和
    举例分析数组的规律
    应用动态规划法
    面试题32:从1到n整数中1出现的次数
    不考虑效率的解法,想拿Offer有点难
    明显提高效率的解法,让面试官耳目一新
    面试题33:把数组排成最小的数
    面试题34:丑数
    逐个判断整数是不是丑数的解法
    创建数组保存已经找到的丑数的解法
    面试题35:第一个只出现一次的字符
    面试题36:数组中的逆序对
    面试题37:两个链表的第一个公共结点

    第6章面试中的各项能力
    6.1面试官谈能力
    6.2沟通能力和学习能力
    沟通能力
    学习能力
    善于学习、沟通的人也善于提问
    6.3知识迁移能力
    面试题38:数字在排序数组中出现的次数
    面试题39:二叉树的深度
    重复遍历结点的解法,不足以打动面试官
    只遍历结点一次的解法,正是面试官喜欢的
    面试题40:数组中只出现一次的数字
    面试题41:和为s的两个数字VS和为s的连续正数序列
    面试题42:翻转单词顺序VS左旋转字符串
    6.4抽象建模能力
    面试题43:n个骰子的点数
    基于递归求骰子点数,时间效率不够高
    基于循环求骰子点数,时间性能好
    面试题44:扑克牌的顺子
    面试题45:圆圈中最后剩下的数字
    经典的解法,用循环链表模拟圆圈
    创新的解法,拿到Offer不在话下
    6.5发散思维能力
    面试题46:求1+2+…+n
    利用构造函数求解
    利用虚函数求解
    利用函数指针求解
    利用模板类型求解
    面试题47:不用加减乘除做加法
    面试题48:不能被继承的类
    常规的解法:把构造函数设为私有函数
    新奇的解法:利用虚拟继承
    6.6本章小结

    第7章两个面试案例
    7.1案例一:(面试题49)把字符串转换成整数
    7.2案例二:(面试题50)树中两个结点的最低公共祖先
查看详情
12