年后是一波大的找工作和跳槽浪潮。很多朋友都在忙着面试相关的准备。本文是我一位从事一线开发十余年架构师朋友整理出来的,所有面试资源,均是他本人在长期学习和工作中的过程中汇总,并以笔记形式记录下来的。看完本文,如果你有需要,尽管拿走好了~
获取方式详见文末。
概述
最近在准备面试的东西,整理了一些读书笔记分享给各位,大家可以自由下载,以下内容完全原创。
前两部分是对于一些 经典书籍的读书笔记和面试题,都是看书的时候觉得比较重要的部分,就通过Word文档的形式记录下来了。因为一直从事的是Android方面的相关工作,因此还是围绕着Android展开,包括了Java、C++、网络、数据结构等等。
最后一部分是面试时候的算法题,根据问题的类型分为了数组、数字、字符串、图、树等等。
先扯点题外话,这些基础知识虽然很久没看了,不过幸亏有这些笔记,现在看起来很快,像C++ Primer和Java面向对象编程这样很厚的书,通过看这些笔记两个小时就能复习完了。因此也建议大家平时看书的时候,多用文档和博客的形式记录下来,对于未来很有用。
我平时在学习的时候,一直秉承着要建立一个完整的架构体系,就像今年定的目标,要把之前两年的工作都总结一下,梳理成一个完整的框架,所以才有了 Android 知识梳理目录,每次完成一篇文章,就点亮了知识体系上的一个小点。
第一部分
- Java面向对象编程
- Unix网络编程
- Linux程序设计
- C++ Primer
- C
- TCP高效编程
- STL源码解析
- C++ 面试题
- Android
第二部分
- C++高效编程
- 计算机网络
- 算法导论
- 腾讯笔试题
- 终极版笔记
- 设计模式
- 数据结构
- 深度搜索C++对象模型
- 操作系统
- 海量数据处理
第三部分
这一部分是上学时候学习算法程序记录,都是通过C++来实现的,题目来自于编程之美、编程珠玑、网上的面试题等等,基本上囊括了所有可能会问到的算法题,大家可以当作复习的大纲。比较遗憾的是当时只记录了实现的代码,当时没有写下解答的思路以及分析,这个会在之后的博客中慢慢完善。
1.字符串
- 替换字符串中的空格
- 输入一个字符串,打印出该字符串的所有排列
- 第一个只出现一次的字符
- 翻转句子
- 计算字符串之间的距离
- 最短摘要生成
- 查找字符串中的最长重复子串
- 在字符串中找出最长的连续数字串
- 字符串转换成整数输出
- 在字符串中删除指定字符
- 判断一个字符串是否是对称的
- 将字符串中的移到前部,并且不改变非的顺序
- 不开辟用于交换的空间,完成字符串的逆序
- LCS
- 字符串相关的操作函数
2.图
- 广度优先搜索
- 深度优先搜索
- Bellman-Ford算法
- Dijkstra算法
- Floyed-Warshall算法
- Johnson算法
3.数字
- 斐波那契数列(循环算法)
- 斐波那契数列(矩阵算法)
- 跳台阶问题
- 数值的整数次方
- 打印1到最大的n位数
- 计算从1到n中1出现的个数
- 求两个数的二进制表示中有多少个是不同的
- 给定一个整数N,求N!的末尾有多少个0
- 给定一个整数N,求N!的二进制表示中最低位1的位置
- 最大公约数
- 精确地表达浮点数
- 任意给定一个正整数N,求一个最小的正整数M,使得N*M的十进制表示里仅含有0和1
- 计算1+2+..n
4.栈
- 创建一个空栈
- 压入
- 返回栈顶元素
- 弹出
- 打印栈内元素
- 获得栈中最小元素
- 将栈内元素反向
- 判断出栈顺序是否正确
- 利用两个栈实现队列
5.数组
- 二维数组的整数查找
- 旋转数组中的最小数字(旋转数组中的最大数字)
- 调整数组使奇数位于偶数之前
- 找出数组中出现次数超过一半的数字
- 找到最小的k个数
- 连续子数组的最大和
- 连续子数组的最大和(二维)
- 求数组当中的逆序对
- 查找数组中数字出现的次数
- 查找数组中只出现一次的两个数字
- 在有序数组中查找和为s的两个数
- 查找和为s的连续整数
- 求数组当中的最长递增子序列(求数组当中的最长递减子序列)
- 数组分割
- 数组当中的最大最小值
- 区间重合判断
- 一个整数数组,长度为n,将其分为m份,使各份的和相等,求m的最大值
6.排序
- 插入排序
- 希尔排序
- 选择排序
- 冒泡排序
- 计数排序
- 基数排序
- 归并排序
- 快速排序
- 双向扫描的快速排序
- 堆排序
7.链表
- 新建链表
- 反转链表(非递归)
- 反转链表(递归)
- 获得链表倒数第k个结点
- 获得链表的中间结点
- 删除链表结点
- 交换链表结点
- 获得带环链表中进入环的第一个元素
- 获得相交链表的结点
- 反向打印链表
- 链表排序
8.二分查找
- 普通二分查找
- 查找关键字第一次出现的位置
- 查找关键字最后一次出现的位置
- 查找小于关键字的最大数字出现的位置
- 查找大于关键字的最小数字出现的位置
- 在经过移位的有序数组中查找关键字出现的位置
9.二叉查找树
- 初始化
- 插入
- 搜索
- 最小值
- 删除
- 非递归先序遍历
- 非递归中序遍历
- 非递归后序遍历
10.二叉树
- 创建二叉树
- 递归先序遍历二叉树
- 递归中序遍历二叉树
- 递归后序遍历二叉树
- 分层打印二叉树
- 打印二叉树第N层
- 统计二叉树叶结点个数
- 统计二叉树的高度
- 获得二叉树的镜像
- 判断元素是否存在于二叉树中
- 打印二叉树中和为s的路径
- 获得二叉树的最大距离
- 判断二叉树是否是平衡树
- 将二叉树转换成为链表
- 判断数组是否为二叉树的后序遍历
- 判断某树是否是另一棵树的子树
- 根据前序和中序序列重建二叉树
- 把一个有序数组插入到二叉树中
11.动态规划
- 建立最优二叉查找树
- 矩阵链乘法
- 钢条切割问题
- 饮料问题
- 背包问题
- ·KMP算法
面试资料;
加Android进阶群701740775,找管理员免费领取一份详细的面试资料。麻烦备注一下csdn领取面试资料谢谢
附录
针对工作1到5年,想系统提升高级工程师的朋友
Android高级进阶技术大纲和资料.;
Android进阶资料;
加Android进阶群701740775,找管理员免费领取。麻烦备注一下csdn领取Android进阶资料谢谢