程序员面试宝典
文章平均质量分 84
博主即将研究生毕业,面临找工作的大问题。遂整理一些有关程序员面试的东西,记录自己的找工作的心酸历程。主要是算法,也包括一些前辈们的至理名言和自己的一些感悟。欢迎大家批评指导,找我搬砖。
火雨_Nick
喜欢IT和机械
展开
-
蛇形矩阵
蛇形矩阵 生成并打印如下蛇形矩阵: 可以把矩阵想像成若干个圈,从外到内依次生成并打印蛇形矩阵。 对于一个4×4的矩阵,最后一圈有4个数字,其左上角的坐标是(1,1),我们发现4>1×1; 对于一个5×5的矩阵,最后一圈只有一个数字,对应坐标为(2,2),我们发现5>2×2依然成立。 所以可以得出让循环的继续条件为原创 2016-04-28 13:16:22 · 2937 阅读 · 0 评论 -
内部排序总结
内部排序总结 所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。排序算法,就是如何使得记录按照要求排列的方法。排序算法在很多领域得到相当地重视,尤其是在大量数据的处理方面。一个优秀的算法可以节省大量的资源。在各个领域中考虑到数据的各种限制和规范,要得到一个符合实际的优秀算法,得经过大量的推理和分析。 以下对排序算原创 2016-04-11 23:50:10 · 1424 阅读 · 2 评论 -
剑指Offer 面试题5 从尾到头打印链表
剑指Offer 面试题5 从尾到头打印链表 本文参考《剑指offer 名企面试官精讲典型编程题》面试题5。 题目5:输入一个链表的头结点,从尾到头反过来打印每个结点的值。 思路:从头到尾遍历一遍链表,将每个结点顺次压入栈中。遍历完链表后,再从栈顶开始逐个输出结点的值。代码中的链表插入方法为头插法原创 2016-04-11 14:41:04 · 943 阅读 · 0 评论 -
剑指Offer 面试题4 替换空格
剑指Offer 面试题4 替换空格 本文参考《剑指offer 名企面试官精讲典型编程题》面试题4。 感谢原书作者:何海涛。 题目4:请实现一个函数,把字符串中的每个空格替换成"%20"。例如:输入"hello world.",则输出"hello%20world."。 在网络编程中,如果URL参数中含有特殊字符,如空格,'#原创 2016-04-08 15:35:31 · 1280 阅读 · 0 评论 -
剑指Offer 面试题3 二维数组中查找
剑指Offer 面试题3 二维数组中查找 参加鹅厂实习生笔试,在算法上被虐惨,做项目花了大部分时间,算法能力没能提高,迫切需要提高算法能力。遂收集各种面试题,刷刷算法。 本文参考《剑指offer 名企面试官精讲典型编程题》面试题3。 题目3:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列按照从上到下递增的顺序排序。请完成一个函数,输入一个这样的原创 2016-04-07 21:03:29 · 1376 阅读 · 2 评论 -
快速排序算法
快速排序算法 本文参考清华大学出版社《数据结构与算法(C语言版)(第三版)》,详情请见书本。 快速排序是已知排序算法中速度最快的。 快速排序对序列S进行排序分成以下4步: (1)如果S中只有1或者0个元素,则返回。 (2)在S中任意取一个元素v,称为枢纽元(pivot)。 (3)将S-{v原创 2016-03-28 23:40:19 · 1722 阅读 · 0 评论 -
单链表的创建算法
单链表的创建算法 当一个序列中只含有指向它的后继结点的链接时,就称该链表为单链表。 单链表的示意图如下: Head指针为单链表的头指针,单链表L:L既是单链表的名字,也是其头指针。链表中的最后一个结点的指针域定义为空指针(NULL)。 单链表原创 2016-03-26 23:34:51 · 51928 阅读 · 5 评论 -
二叉排序树(BST)构造与应用
二叉排序树(BST)构造与应用 二叉排序树(BST):又称二叉查找树,其定义为:二叉排序树或者是空树,或者是满足以下性质的二叉树。 (1) 若它的左子树非空,则左子树上所有记录的关键字均小于根记录的值。 (2) 若它的右子树非空,则右子树上所有记录的关键字均大于根记录的值。 (3) 左、右子树本身又各是一棵二叉排序树。转载 2016-03-20 23:23:46 · 26530 阅读 · 5 评论 -
二叉树遍历算法总结
二叉树遍历算法总结 A. 二叉树的遍历 1.前序遍历二叉树: (1)若二叉树为空,则为空操作,返回空。 (2)访问根结点。 (3)前序遍历左子树。 (4)前序遍历右子树。 a.二叉树前序遍历的递归算法: void PreOrderTraverse(BiTree B转载 2016-03-20 18:43:19 · 13031 阅读 · 0 评论 -
哈夫曼树的创建和编码
哈夫曼树的创建和编码 1.哈夫曼树又称最优二叉树,是一类带权路径长度最短的树。 对于最优二叉树,权值越大的结点越接近树的根结点,权值越小的结点越远离树的根结点。 最优二叉树的构造算法步骤: (1)根据给定的n个权值w1,w2,...,wn构成n棵二叉树森林F={T1,T2,...,Tn},其中每一棵二叉原创 2016-03-19 21:30:16 · 41708 阅读 · 2 评论 -
广义表的创建与打印
广义表的创建与打印 1.广义表的创建: 广义表可以通过下面的递归方式进行定义。 基本项:(1)广义表为空表,当s为空时;(2)广义表为原子结点,当s为单字符串时。 归纳项:假设Subs为S去掉最外层括号对的串,记作“S1,S2,...,Sn”,其中Si(i=1,...,n)为非空字符串。对每个Si建立表结点,并令其hp域的指针为由Si建转载 2016-03-16 23:05:45 · 7591 阅读 · 1 评论 -
有向图的拓扑排序
有向图的拓扑排序 有向图的拓扑排序的基本思想是:首先在有向图中选取一个没有前驱的顶点,将其输出,从有向图中删除该顶点,并且删除以该顶点为尾的所有有向图的边。重复以上的步骤,直到图中的所有顶点均输出或是图中的顶点均没有前驱为止。对于后者,说明有向图中存在环,不能进行拓扑排序。 VS2010下C++ Win32 控制台应用程序,代码如下: #include转载 2016-03-15 23:01:41 · 36317 阅读 · 2 评论 -
开发Java Web平台型项目吐槽
开发Java Web企业级项目吐槽 本人是某985大学的一名研究生,读研之后,鲜有时间搞科研写论文。大部分时间都耗在开发导师安排的项目上。本来本人对此也乐此不疲,因为学计算机嘛!应该注重动手能力,干点活也无可厚非。之前接触的大都是.Net项目,很少参与Java Web方向的项目。自从去年接手现在的项目,才体会到什么是真正的软件产品?什么是用户需求? 规范编码的原创 2016-03-14 22:57:13 · 1485 阅读 · 0 评论 -
求最小生成树Kruskal算法
求最小生成树Kruskal算法 在VS2010中新建C++ Win32 控制台应用程序项目,创建结果截图: Kruskal算法的基本思想是:将图G中的边按权值从小到大的顺序依次添加,如果添加的边使生成树T构成回路,则将其舍弃,依此下去,直到T中包含的边数为n-1条边为止,此时的T即为最小生树。 为了方便输出,将最小生成树的输入格转载 2016-03-14 22:03:19 · 1601 阅读 · 0 评论 -
图的深度优先和广度优先搜索算法
图的深度优先和广度优先搜索算法 1.图的深度优先搜索算法: 图的深度优先搜索算法的基本思想是:从图G的某个顶点V0出发,访问V0,然后选择一个与V0相邻且未被访问过的顶点Vi访问,再从Vi出发选择一个与Vi相邻且未被访问的顶点Vj进行访问,依此下去,直到当前被访问过的顶点的所有邻接顶点都已被访问,则按相反顺序退回到已访问的顶点序列中,如果其中的顶点还存在未被访转载 2016-03-13 16:21:33 · 6715 阅读 · 2 评论 -
最短路径Dijkstra算法
最短路径Dijkstra算法 最短路径的Dijkstra算法的基本思想是:设S为最短路径已确定的顶点集,V-S是最短距离尚未确定的顶点集。初始时,将源点V0添加到顶点集S中,即S={V0}。在当前顶点集V-S中选择一个最短路径最小的顶点来扩充顶点集S,以保证算法按路径长度递增的次序产生各顶点的最短路径。 其程序如下: #include #i转载 2016-03-13 22:44:34 · 1426 阅读 · 2 评论