分享

原创面试资源免费送,Android、算法、面题一应俱全

 沧潇雨浪 2017-12-23


本文是我公众号的一位签约作者整理出来的,所有面试资源,均是他本人在长期学习的过程中汇总,并以笔记形式记录下来的。看完本文,如果你有需要,尽管拿走好了~


获取方式详见文末。


概述


最近在准备面试的东西,整理了一些读书笔记分享给各位,大家可以自由下载,以下内容完全原创。


前两部分是对于一些 经典书籍的读书笔记和面试题,都是上学看书的时候觉得比较重要的部分,就通过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算法




END



    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多