转自:CTCI面试系列——谷歌面试官经典作品 | 快课网
谷歌面试官经典作品(CTCI)目录
1.1 判断一个字符串中的字符是否唯一
1.2 字符串翻转
1.3 去除字符串中重复字符
1.8 利用已知函数判断字符串是否为另一字符串的子串
2.1 从链表中移除重复结点
2.2 实现一个算法从一个单链表中返回倒数第n个元素
2.3 给定链表中间某结点指针,删除链表中该结点
2.4 求由两个链表结点组成的数之和
2.5 给定一个循环链表,实现一个算法返回这个环的开始结点
3.1 如何只用一个数组实现三个栈
3.2 实现一个栈,要求实现min函数以返回栈中的最小值
3.3 实现数据结构SetOfStacks来模拟叠盘子
3.4 编程解决汉诺塔问题
3.5 使用两个栈实现一个队列
3.6 写程序将一个栈按升序排序
4.1 用一个函数判断一棵树是否平衡
4.2 设计算法判断有向图两结点间是否存在路径
4.3 将递增数组构建成一颗最小高度二叉树
4.4 将二叉树每一层结点构建成一个链表
4.5 查找二叉查找树的任意给定结点的“下一个”结点
4.6 找出一棵二叉树中两个结点的第一个共同祖先结点
4.7 判断一棵二叉树是否为另一棵二叉树的子树
4.8 输出二叉树中路径上结点值之和为给定值的所有路径
5.1 写程序使整数N中第i位到第j位的值与整数M中的相同
5.2 给定一个字符串类型表示的小数,输出其二进制表示
5.3 给定一个整数x,找出另外两个二进制表示中1的个数和x相同的数
5.4 解释以下代码的作用:((n & (n-1)) == 0)
5.5 写程序计算从整数A变为整数B需要修改的二进制位数
5.6 交换一个整数二进制表示中的奇数位和偶数位
5.7 写程序找出丢失的整数,要求时间复杂度O(n)
6.1-6.6 程序员”脑筋急转弯”
7.1 为通用卡牌游戏设计数据结构,并设计子类
7.2 为电话呼叫中心设计类和数据结构
7.3 用面向对象的方法设计一个音乐播放机
7.4 用面向对象思想设计一个国际象棋游戏
7.5 利用OOP思想设计在线读书系统
7.6 设计一个拼图游戏的数据结构
7.7 如何设计一个聊天服务程序
7.8 用面向对象思想设计奥赛罗游戏(Othello)
7.9 为一个内存文件系统设计数据结构和算法
7.10 使用C++实现一个垃圾回收器
8.1 写一个函数来产生第n个斐波那契数
8.2 机器人路径计算
8.3 写一个函数返回一个集合中的所有子集
8.4 写一个函数返回一个串的所有排列
8.5 实现一个算法打印出n对括号的有效组合
8.6 实现图像处理软件中的“填充”函数
8.7 有25分,10分,5分和1分的硬币无限个,计算组成n分的组合数
8.8 经典八皇后问题
9.1 写一个函数将数组B融入数组A,并使其有序
9.2 写一个函数对字符串数组排序,使所有变位词都相邻
9.3 在一个数字中查找特定元素
9.4 如何给一个2G文件中的字符串排序?
9.5 写一个函数找到给定字符串的位置
9.6 在一个矩阵中找出特定的数
9.7 写一个函数模拟叠罗汉节目
10.1-10.7 程序员面试——数学相关题目
11.1-11.6 程序员面试—测试相关题目
12.1 股价信息摘要整合方案
12.2 如何为社交网站(如facebook,新浪微博)设计数据结构
12.3 在40亿个整数值中查找特定数据
12.4 数组去重(限制内存为4kb)
12.5 如果让你设计一个网络爬虫,你怎么避免陷入无限循环?
12.6 10亿个url,每个url对应一个网页,如何检测重复的网页?
12.7 如何设计一个支持TB级别数据的数据库
13.1 用C++写一个函数,输出文件的最后k行。
13.2 浅析哈希表和STL map
13.3 C++中的虚函数是如何工作的?
13.4 深拷贝和浅拷贝有什么区别,如何使用?
13.5 C语言关键字”volatile”的作用?
13.6 C++中名字隐藏是指什么?
13.7 为什么基类中的析构函数要声明为虚析构函数?
13.8 写一个函数,返回传入数据结构的一份完全拷贝
13.9 写一个智能指针类(smart_ptr)
15.1 写一条SQL语句找到每个部门员工的数量
15.2 SQL的连接有哪些不同的类型?并解释其异同点
15.3 什么是反范式?它的优缺点是什么?
15.4 画一个数据库的(ER图),实体包括:公司、人、 专业人士
15.5 写SQL查询语句查询成绩排名前10%的学生
16-20章请见 编程艺术