Python程序员面试算法宝典

Python程序员面试算法宝典

作者:猿媛之家张波楚秦 等

出版社:机械工业

出版年:2018年9月

ISBN:9787111607793

所属分类:历史文化

书刊介绍

《Python程序员面试算法宝典》内容简介

本书是一本讲解程序员面试笔试算法的书,代码采用Python语言编写,书中除了讲解如何解答算法问题以外,还引入了例子辅以说明,让读者更容易理解。
本书几乎将程序员面试笔试过程中算法类真题一网打尽,在题目的广度上,通过各种渠道,搜集了近3年来几乎所有IT企业面试笔试算法的高频题目,所选择题目均为企业招聘使用题目。在题目的深度上,本书由浅入深,庖丁解牛式地分析每一个题目,并提炼归纳。同时,引入例子与源代码、时间复杂度与空间复杂度的分析,这些内容是其他同类书籍所没有的。本书根据真题所属知识点进行分门别类,结构合理,条理清晰,对于读者进行学习与检索意义重大。
本书可作为计算机相关专业毕业生面试笔试的求职用书,也可以作为本科生、研究生学习数据结构与算法的辅导书籍,同时适合期望在计算机软硬件行业大显身手的计算机爱好者阅读。
张波,硕士,Python程序员,就职于知名互联网企业,多年软件开发经验。
猿媛之家成立于2015年8月,是国内首家致力于研究程序员人生规划、程序员技能与培训、程序员就业与发展的机构,成员均毕业于国内“985”、“211”高校的计算机相关专业,就职于BAT等顶尖IT企业。我们的宗旨是“服务大众,分层对待,整体提高,打造精品”,目标是“让天下没有找不到工作的程序员”。

作品目录

前言
面试笔试经验技巧篇
经验技巧1、如何巧妙地回答面试官的问题
经验技巧2、如何回答技术性的问题
经验技巧3、如何回答非技术性问题
经验技巧4、如何回答快速估算类问题
经验技巧5、如何回答算法设计问题
经验技巧6、如何回答系统设计题
经验技巧7、如何解决求职中的时间冲突问题
经验技巧8、如果面试问题曾经遇见过,是否要告知面试官
经验技巧9、被企业拒绝后是否可以再申请
经验技巧10、如何应对自己不会回答的问题
经验技巧11、如何应对面试官的“激将法”语言
经验技巧12、如何处理与面试官持不同观点这个问题
经验技巧13、关注职场暗语
面试笔试真题解析篇
第1章:链表
1.1、如何实现链表的逆序
1.2、如何从无序链表中移除重复项
1.3、如何计算两个单链表所代表的数之和
1.4、如何对链表进行重新排序
1.5、如何找出单链表中的倒数第k个元素
1.6、如何检测一个较大的单链表是否有环
1.7、如何把链表相邻元素翻转
1.8、如何把链表以K个结点为一组进行翻转
1.9、如何合并两个有序链表
1.10、如何在只给定单链表中某个结点的指针的情况下删除该结点
1.11、如何判断两个单链表(无环)是否交叉
1.12、如何展开链接列表
第2章:栈、队列与哈希
2.1、如何实现栈
2.2、如何实现队列
2.3、如何翻转栈的所有元素
2.4、如何根据入栈序列判断可能的
出栈序列
2.5、如何用O(1)的时间复杂度求栈中最小元素
2.6、如何用两个栈模拟队列操作
2.7、如何设计一个排序系统
2.8、如何实现LRU缓存方案
2.9、如何从给定的车票中找出旅程
2.10、如何从数组中找出满足a+b=c+d的两个数对
第3章:二叉树
3.1、二叉树基础知识
3.2、如何把一个有序整数数组放到二叉树中
3.3、如何从顶部开始逐层打印二叉树结点数据
3.4、如何求一棵二叉树的最大子树和
3.5、如何判断两棵二叉树是否相等
3.6、如何把二叉树转换为双向链表
3.7、如何判断一个数组是否是二元查找树后序遍历的序列
3.8、如何找出排序二叉树上任意两个结点的最近共同父结点
3.9、如何复制二叉树
3.10、如何在二叉树中找出与输入整数相等的所有路径
3.11、如何对二叉树进行镜像反转
3.12、如何在二叉排序树中找出第一个大于中间值的结点
3.13、如何在二叉树中找出路径最大的和
3.14、如何实现反向DNS查找缓存
第4章:数组
4.1、如何找出数组中唯一的重复元素
4.2、如何查找数组中元素的最大值和最小值
4.3、如何找出旋转数组的最小元素
4.4、如何找出数组中丢失的数
4.5、如何找出数组中出现奇数次的数
4.6、如何找出数组中第k小的数
4.7、如何求数组中两个元素的最小距离
4.8、如何求解最小三元组距离
4.9、如何求数组中绝对值最小的数
4.10、如何求数组连续最大和
4.11、如何找出数组中出现1次的数
4.12、如何对数组旋转
4.13、如何在不排序的情况下求数组中的中位数
4.14、如何求集合的所有子集
4.15、如何对数组进行循环移位
4.16、如何在有规律的二维数组中进行高效的数据查找
4.17、如何寻找最多的覆盖点
4.18、如何判断请求能否在给定的存储条件下完成
4.19、如何按要求构造新的数组
4.20、如何获取最好的矩阵链相乘方法
4.21、如何求解迷宫问题
4.22、如何从三个有序数组中找出它们的公共元素
4.23、如何求两个有序集合的交集
4.24、如何对有大量重复的数字的数组排序
4.25、如何对任务进行调度
4.26、如何对磁盘分区
第5章:字符串
5.1、如何求一个字符串的所有排列
5.2、如何求两个字符串的最长公共子串
5.3、如何对字符串进行反转
5.4、如何判断两个字符串是否为换位字符串
5.5、如何判断两个字符串的包含关系
5.6、如何对由大小写字母组成的字符数组排序
5.7、如何消除字符串的内嵌括号
5.8、如何判断字符串是否是整数
5.9、如何实现字符串的匹配
5.10、如何求字符串里的最长回文子串
5.11、如何按照给定的字母序列对字符数组排序
5.12、如何判断一个字符串是否包含重复字符
5.13、如何找到由其他单词组成的最长单词
5.14、如何统计字符串中连续的重复字符个数
5.15、如何求最长递增子序列的长度
5.16、求一个串中出现的第一个最长重复子串
5.17、如何求解字符串中字典序最大的子序列
5.18、如何判断一个字符串是否由 另外一个字符串旋转得到
5.19、如何求字符串的编辑距离
5.20、如何在二维数组中寻找最短路线
5.21、如何截取包含中文的字符串
5.22、如何求相对路径
5.23、如何查找到达目标词的最短链长度
第6章:基本数字运算
6.1、如何判断一个自然数是否是某个数的平方
6.2、如何判断一个数是否为2的n次方
6.3、如何不使用除法操作符实现两个正整数的除法
6.4、如何只使用+=操作符实现加减乘除运算
6.5、如何根据已知随机数生成函数计算新的随机数
6.6、如何判断1024!末尾有多少个0、6.7、如何按要求比较两个数的大小
6.8、如何求有序数列的第1500个数的值
6.9、如何把十进制数(long型)分别以二进制和十六进制形式输出
6.10、如何求二进制数中1的个数
6.11、如何找最小的不重复数
6.12、如何计算一个数的n次方
6.13、如何在不能使用库函数的条件下计算n的平方根
6.14、如何不使用^操作实现异或运算
6.15、如何不使用循环输出1到100、第7章:排列组合与概率
7.1、如何求数字的组合
7.2、如何拿到最多金币
7.3、如何求正整数n所有可能的整数组合
7.4、如何用一个随机函数得到另外一个随机函数
7.5、如何等概率地从大小为n的数组中选取m个整数
7.6、如何组合1,2,5这三个数使其和为100、7.7、如何判断还有几盏灯泡亮着
第8章:排序
8.1、如何进行选择排序
8.2、如何进行插入排序
8.3、如何进行冒泡排序
8.4、如何进行归并排序
8.5、如何进行快速排序
8.6、如何进行希尔排序
8.7、如何进行堆排序
8.8、如何进行基数排序
第9章:大数据
9.1、如何从大量的url中找出相同的url
9.2、如何从大量数据中找出高频词
9.3、如何找出访问百度最多的IP
9.4、如何在大量的数据中找出不重复的整数
9.5、如何在大量的数据中判断一个数是否存在
9.6、如何查询最热门的查询串
9.7、如何统计不同电话号码的个数
9.8、如何从5亿个数中找出中位数
9.9、如何按照query的频度排序
9.10、如何找出排名前500的数

相关推荐

微信二维码