Cracking the coding interview---中文解析版



转自: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%的学生

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
程序员面试金典.Cracking the Coding Interview.第5 英文 一书在手,面试机会我有 这本书详细讲解了一般技术公司面试的流程,评价标准设置,最后还有一个章节为你在薪水上讨价还价进行支招。 当然,书中最核心的还是面试中的题目了。本书的题目以算法和数据结构为主,但也分别有一个章节涵盖分布式系统设计,c/c++、java、sql、多线程等知识性的内容。所有题目都有解答思路和答案,算法题目的实现使用了java。只要有一点java基础的同学,应该都可以看明白。 书中有一道习题使用了后缀树。后缀树这个特殊的结构在《算法导论》等众多书中都没有出现,可以在网上找到一些计算生物学的课件。很多匹配字符串相关的问题都可以用后缀树或者广义后缀树给出一个线性解法。但注意的是这个数据结构所占用的空间也是很大的。虽然一些情况下可以优化到线性,但这种优化在一些具体的问题中会改变问题的语意,因此不是任何时候都可以适用的。对后缀树和广义后缀树感兴趣可以参考http://book.douban.com/subject/1765938/,网上也可以找到一些相关的课件 书中有”连续子序列最大和值“和”最长递增子序列“这样的题目。但是没有包含”连续子序列最大积值“这样的题目,并且”最长递增子序列“给出的解答不是最优的,这两个题目大家可以额外思考一下,面试中也很常见。 另外,面试过程中也会遇到很多与系统相关的知识性的题目,如流水线、虚拟内存、进程线程、地址空间结构、异常处理、并发编程等等,这些内容可以参考《深入理解计算机系统》http://book.douban.com/subject/5407246/。 网络相关的内容可以参考《TCP/IP详解》卷一http://book.douban.com/subject/1099252/。 一些更具体的内容,如linux启动过程、linux文件系统原理、浏览器访问网址过程等,可以查看wikipedia相关页面,linux相关的内容可以访问鸟哥的私房菜基础篇的相关文章http://linux.vbird.org/linux_basic/

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值