剑指Offer简介
《剑指Offer:名企面试官精讲典型编程题》剖析了50个典型的程序员面试题,从基础知识、代码质量、解题思路、优化效率和综合能力五个方面系统整理了影响面试的5个要点。全书分为7章,主要包括面试的流程,讨论面试流程中每一环节需要注意的问题;面试需要的基础知识,从编程语言、数据结构及算法三方面总结了程序员面试的知识点;高质量的代码,讨论影响代码质量的3个要素(规范性、完整性和鲁棒性),强调高质量的代码除了能够完成基本的功能之外,还能考虑到特殊情况并对非法输入进行合理的处理;解决面试题的思路,总结在编程面试中解决难题的常用思路,如果在面试过程中遇到了复杂的难题,应聘者可以利用画图、举例和分解复杂问题3种方法化繁为简,先形成清晰的思路再动手编程;优化时间和空间效率,介绍如何优化代码的时间效率和空间效率,读完这一章读者将学会常用的优化时间效率及空间换时间的常用算法,从而在面试中找到最优的解法;面试中的各种能力,本章总结应聘者在面试过程中如何表现学习能力和沟通能力,并通过具体的面试题讨论如何培养知识迁移能力、抽象建模能力和发散思维能力;两个面试案例,这两个案例总结了应聘者在面试过程中哪些举动是不好的行为,而哪些表现又是面试官所期待的行为。
面试题02: 实现Singleton模式
面试题03: 二维数组中的查找
面试题04: 替换空格
面试题05: 从尾到头打印链表
面试题06: 用两个栈实现队列
面试题07: 旋转数组的最小数字
面试题08: 斐波那契数列
面试题10: 二进制中1的个数
面试题11: 数值的整数次方
面试题12: 打印1到最大的n位数
面试题13: 在O(1)时间删除链表结点
面试题14: 调整数组顺序使奇数位于偶数前面
面试题15: 链表中倒数第k个结点
面试题16: 反转链表
面试题17: 合并两个排序的链表
面试题18: 树的子结构
面试题19: 二叉树的镜像
面试题20: 顺时针打印矩阵
面试题21: 包含min函数的钱
面试题22: 栈的压入、弹出序列
面试题23: 从上往下打印二叉树
面试题24: 二叉搜索树的后序遍历序列
面试题25: 二叉树中和为某一值的路径
面试题26: 复杂链表的复制
面试题27: 二叉搜索树与双向链表
面试题28: 字符串的排列
面试题29: 数组中出现次数超过一半的数字
面试题30: 最小的k个数
面试题31: 连续子数组的最大和
面试题32: 求从1到n的整数中1出现的次数
面试题33: 把数组排成最小的数
面试题34: 丑数
面试题35: 第一个只出现一次的字符
面试题36: 数组中的逆序对
面试题37: 两个链表的第一个公共结点
面试题38: 数字在排序数组中出现的次数
面试题39: 二叉树的深度
面试题40: 数组中只出现一次的数字
面试题41: 和为s的两个数字vs和为s的连续正数序列
面试题42: 翻转单词顺序vs左旋转字符串
面试题43: n个锻子的点数
面试题44: 扑克牌的顺子
面试题45: 圆圈中最后剩下的数字(约瑟夫环问题)
面试题46:
面试题47: 不用加减乘除做加法
面试题48:
面试题49: 把字符串转换成整数
面试题50: 树中两个结点的最低公共祖先
面试题51: 数组中重复的数字
面试题52: 构建乘积数组
面试题53: 正则表达式匹配
面试题54: 表示数值的字符串
面试题55: 字符流中第一个不重复的字符
面试题56: 链表中环的入口结点
面试题57: 删除链表中重复的结点
面试题58: 二叉树的下一个结点
面试题59: 对称的二叉树
面试题60: 把二叉树打印出多行
面试题61: 按之字形顺序打印二叉树
面试题62: 序列化二叉树
面试题63: 二叉搜索树的第k个结点
面试题64: 数据流中的中位数
面试题65: 滑动窗口的最大值
面试题66: 矩阵中的路径
面试题67: 机器人的运动范围