摘要: 编程之美--3.5最短摘要生成 Alibaba笔试题:给定一段产品的英文描述,包含M个英文字母,每个英文单词以空格分隔,无其他标点符号;再给定N个英文单词关键字,请说明思路并编程实现方法String extractSummary(String description,String[] key words),目标是找出此产品描述中包含N个关键字(每个关键词至少出现一次)的长度最短的子串,作为产品简介输出。(不限编程语言)20分。 这道笔试题和编程之美最短摘要生成的方法类似,我用java实现了这个方法。 先来看看这些序列:w0,w1,w2,w3,q0,w4,w5,q1,w6,w7,w8,q... 阅读全文
posted @ 2013-06-25 17:02 夜雨阑珊 阅读(926) 评论(0) 推荐(0)
摘要: 思路:最大公约数问题也是一个非常典型的递归算法的应用。每次递归使得原来求两个大数之间的公约数转变成求两个稍微小点的数之间的公约数,要求转换的过程要保证不会改变公约数的值。这就要看其中转换的原理了。原理从《几何原本》中得出--辗转相除。假设f(x, y) 表示x,y的最大公约数是g,而k = x/y,b= x%y,则g必能整出b。因为x = ky + b,b = x - ky,b/g = (x-ky)/g一定为整数,所以必有g整除b。如下所示:f(42, 30) = f(30, 12) = f(12, 6)= f(6, 0) = 6代码如下:[html]view plaincopyintgcd( 阅读全文
posted @ 2013-06-25 17:01 夜雨阑珊 阅读(346) 评论(0) 推荐(0)
摘要: 题目:给定两个字符串S1,S2,要求判断是否通过S1循环移位可以得到S2,比如说:S1 = AABCD,S2 = CDAA,结果返回true。给定S1=ABCD和S2=ACBD,结果返回false。方法1:最简单的就是将S1循环一遍,每一次都是将S1循环右移一位,然后和S2进行比较。效率低到O(len(S1)*len(S2)).代码:#include "stdafx.h"#include#include#include#include#include#include#include#includeusing namespace std;//O(len(s1)*len(s2) 阅读全文
posted @ 2013-06-25 17:00 夜雨阑珊 阅读(694) 评论(0) 推荐(0)
摘要: 题目:给定一个长度为N的整数数组,只允许使用乘法,不能用除法,计算任意N-1个数的组合中乘积中最大的一组,并写出算法的时间复杂度。解法: 实际上第一反应就是先将N个数相乘得到结果,然后遍历每一个数,看去掉哪个数最适合,注意正负号。效率O(N). 但是文章在最后指出不允许用除法的用意是这样的,乘法很容易溢出。意思是干脆乘法也不要用。文中给出如下几种算法:源码出自:http://blog.csdn.net/qq120848369/archive/2010/05/12/5583796.aspx算法一: 枚举每一个不在N-1内的数,分别计算剩余N-1个数的乘积, 由于有N种情况,每种情况遍历计算乘积, 阅读全文
posted @ 2013-06-25 16:59 夜雨阑珊 阅读(1801) 评论(0) 推荐(0)
摘要: http://www.cnblogs.com/flyoung2008/archive/2011/08/16/2141579.html中序和后序也能重构------------前序和后序好像不能重构----没找到资料已只二叉树的前序和中序遍历,要求构建出完整的二叉树 如前序遍历为:a b d c e f 中序遍历为:d b a e c f 由于前序遍历先访问的是根节点所以整棵树的根节点是a 中序遍历中,先访问左子树,再访问右子树,所以d b 是左子树,e c f 是右子树 如此递归下去,可以找到整棵树的结构#include #define TREELEN ... 阅读全文
posted @ 2013-06-25 16:58 夜雨阑珊 阅读(494) 评论(0) 推荐(0)
摘要: 问题描述:写一个程序,对于一个64位正整数,输出它所有可能的连续自然数(两个以上)之和的算式。例如:3=1+2; 9=5+4; 9=2+3+4。刚开始看到这个题目,直接想到的方法就是蛮力解决:即对于每一个输入的整数,从1开始加,一直加到等于或者大于这个整数为止。如果等于这个整数,则找到了一种连续自然数相加的模式;如果大于这个整数,则无法找到,继续从2开始加,依次类推。例如对于5来说,首先从1开始加:1+2+3=6>5,这样从1开始就无法找到,从而停止继续相加;然后从2开始相加:2+3=5,成功找到。这是很自然的一种想法,可以达到题目要求。但是,很显然工作量比较大,程序时间复杂度高。于是百 阅读全文
posted @ 2013-06-25 16:57 夜雨阑珊 阅读(532) 评论(0) 推荐(0)
摘要: Tango是微软亚洲研究院的一个试验项目。研究院的员工和实习生们都很喜欢在Tango上面交流灌水。传说,Tango有一大“水王”,他不但喜欢发贴,还会回复其他ID发的每个帖子。坊间风闻该“水王”发帖数目超过了帖子总数的一半。如果你有一个当前论坛上所有帖子(包括回帖)的列表,其中帖子作者的ID也在表中,你能快速找出这个传说中的Tango水王吗?分析与解法首先想到的是一个最直接的方法,我们可以对所有ID进行排序。然后再扫描一遍排好序的ID列表,统计各个ID出现的次数。如果某个ID出现的次数超过总数的一半,那么就输出这个ID。这个算法的时间复杂度为O(N * log2N + N)。如果ID列表已经是 阅读全文
posted @ 2013-06-25 16:56 夜雨阑珊 阅读(574) 评论(0) 推荐(0)
摘要: 原创文章,转载请注明出处~~ http://www.cnblogs.com/justinzhang/问题描述:给定平面上N个点的坐标,找出距离最近的两个点。 这是编程之美2.11的一道题目,从昨天到现在就一直在设法解决它;如果用常规的解法,只需要将N个点两两计算距离,然后找出最小距离的两个点就可以了;但是这种解法的算法复杂度为O(N^2); 为了降低算法的复杂度,我们需要有更好的方法。这里我们找到的解法是分治法。设点集为S,|S|=N,S的横坐标集合为Sx,纵坐标集合为Sy;算法的步骤如下:1.找出Sx的中位数:median_Sx;用median_Sx对点集S进行划分,左边的为S1,右边的为S 阅读全文
posted @ 2013-06-25 16:55 夜雨阑珊 阅读(2069) 评论(0) 推荐(0)
摘要: 这是编程之美书第2.5节的一道题目。各种解法:解法一,用nlgn复杂度的排序算法对数组进行从大到小排序,取前K个。但这方法做了两件不必要做的事:它对想得到的K个数进行了排序,对不想得到的n-K个数也进行了排序。方法不可取。解法二,用选择排序或冒泡排序,复杂度O(NK)。但这方法也做了不必要做的一件事:对想得到的K个数进行了排序。方法不可取。解法三,用顺序统计位(类快排)算法来计算(可参考算法导论)。算法导论上说这种方法从平均性能上来讲是线性的,但编程之美上却说复杂度是O(N*lgK)。对于这点,我对编程之美持怀疑态度。我认为,对于一个无序的数组,用顺序统计位算法,可以在近似O(n)的时间复杂度 阅读全文
posted @ 2013-06-25 16:54 夜雨阑珊 阅读(674) 评论(0) 推荐(0)
摘要: 最简单的方法就是N中的每个数分别和max,min比较,看似2N次比较,其实大于max的就不必和min比较,小于min的也不必和max比较,因此比较的次数不足2N次,程序如下:[cpp]view plaincopyboolMaxMin(std::vectorarray,T*max,T*min){if(array.size()*max){10. *max=array[i];11. }elseif(array[i]boolMaxMin_1(std::vectorarray,T*max,T*min){if(array.size()=array[index+1]){12. if(array[index] 阅读全文
posted @ 2013-06-25 16:52 夜雨阑珊 阅读(1483) 评论(0) 推荐(0)
摘要: 求数组中最长递增子序列写一个时间复杂度尽可能低的程序,求一个一维数组(N个元素)中的最长递增子序列的长度。例如:在序列1,-1,2,-3,4,-5,6,-7中,其最长的递增子序列为1,2,4,6。分析与解法根据题目的要求,求一维数组中的最长递增子序列,也就是找一个标号的序列b[0],b[1],…,b[m](0 1,2>-1。因此,最长的递增序列为(1,2),(-1,2),长度为2。在这里,2前面是1还是-1对求出后面的递增序列没有直接影响。(但是在其它情况下可能有影响)依此类推之后,我们得出如下的结论。假设在目标数组array[]的前i个元素中,最长递增子序列的长度为LIS[i]。那么, 阅读全文
posted @ 2013-06-25 16:51 夜雨阑珊 阅读(841) 评论(0) 推荐(0)
摘要: 设计一个算法,把一个含有N个元素的数组循环右移K位,要求时间复杂度为O(N),且只允许使用两个附加变量。不合题意的解法如下:我们先试验简单的办法,可以每次将数组中的元素右移一位,循环K次。abcd1234→4abcd123→34abcd12→234abcd1→1234abcd。伪代码如下:代码清单2-33RightShift(int* arr, int N, int K){while(K--){int t = arr[N - 1];for(int i = N - 1; i > 0; i --)arr[i] = arr[i - 1];arr[0] = t;}}虽然这个算法可以实现数组的循环 阅读全文
posted @ 2013-06-25 16:50 夜雨阑珊 阅读(10541) 评论(1) 推荐(2)
摘要: 题目概述:有一个没有排序,元素个数为2N的正整数数组。要求把它分割为元素个数为N的两个数组,并使两个子数组的和最接近。假设数组A[1..2N]所有元素的和是SUM。模仿动态规划解0-1背包问题的策略,令S(k, i)表示前k个元素中任意i个元素的和的集合。显然:S(k, 1) = {A[i] | 1N?N:k;i>=1;i--){//这点有点难以理解啊//两层外循环是遍历集合S(k,i)for(j=0;j=A[k]&&flag[i-1][j-A[k]])flag[i][j]=true;}}}for(i=sum/2;i>=0;i--){if(flag[N][i]){c 阅读全文
posted @ 2013-06-25 16:49 夜雨阑珊 阅读(4083) 评论(0) 推荐(0)
摘要: 求子数组之和的最大值是一个很经典的问题。问题的描述如下:一个有N个整形数的一维数组(A[0], A[1], ... A[n-1]),这个数组有很多子数组,那么子数组之和的最大值是什么呢? 这个问题的解答其实在《编程珠玑》一书有的。一共是4中方法:第一种是穷举法,计算所有可能子数组的和,时间复杂度为O(n3)。第二种其实也是穷举法。代码如下:[cpp]view plaincopyfor(i=0;imaxsum)maxsum=sum;}10. } 很明显复杂度为O(n2)。第三种方法是分治法,将数组元素均分成两部分,那么最大子数组和只有三种情况。在左边部分,右边部分,以及跨越了边界部... 阅读全文
posted @ 2013-06-25 16:48 夜雨阑珊 阅读(1049) 评论(0) 推荐(0)
摘要: 题目:给定一些无序区间,判断某个给定的特定区间是否在这些无序的区间内。这个题目比较简单,首先将给定的区间排序,在对重合的区间进行排序,使得区间变成递增且不重叠的若干个区间,对于给定的区间在已经处理好的区间内进行二分查找,完成区间覆盖的判断。程序如下:[cpp]view plaincopy#include#include#includeclassInterval{public:Interval(intstart,intend):start_(start),end_(end){}Interval():start_(0),end_(0){}staticboolOrderByStart(constIn 阅读全文
posted @ 2013-06-25 16:47 夜雨阑珊 阅读(1148) 评论(0) 推荐(0)
摘要: 问题描述:一个比较经典的问题,判断两个链表是否相交,如果相交找出他们的交点。思路:1、碰到这个问题,第一印象是采用hash来判断,将两个链表的节点进行hash,然后判断出节点,这种想法当然是可以的。2、当然采用暴力的方法也是可以的,遍历两个链表,在遍历的过程中进行比较,看节点是否相同。3、第三种思路是比较奇特的,在编程之美上看到的。先遍历第一个链表到他的尾部,然后将尾部的next指针指向第二个链表(尾部指针的next本来指向的是null)。这样两个链表就合成了一个链表,判断原来的两个链表是否相交也就转变成了判断新的链表是否有环的问题了:即判断单链表是否有环?这样进行转换后就可以从链表头部进行判 阅读全文
posted @ 2013-06-25 16:46 夜雨阑珊 阅读(598) 评论(0) 推荐(0)
摘要: 题目:有一根27厘米长的细木杆,在第3厘米,7厘米,11厘米,17厘米,23厘米这五个位置上各有一只蚂蚁,木杆很细,不能同时通过两只蚂蚁,开始时,蚂蚁的头朝向左还是右是任意的,它们只会朝前走或掉头,但不会后退,当任意两只蚂蚁相遇后,蚂蚁会同时掉头朝反方向走,假设蚂蚁们每秒钟可以走1厘米的距离。编写程序(C/C++),求所有蚂蚁都离开木杆的最小时间和最大时间。(百度面试题)读完这道题以后,我的想法是:最短时间考虑如下:首先标出木杆的中点,即在(0+27)/2=13.5厘米处。然后所有的蚂蚁都沿着木杆向离自己较近的一端走,这样所有蚂蚁都离开木杆的时间是最短的,即,为距离木杆中点最近的蚂蚁走向离它最 阅读全文
posted @ 2013-06-25 16:44 夜雨阑珊 阅读(1283) 评论(0) 推荐(0)
摘要: 2012-04-18 16:412.12快速寻找满足条件的两个数---程序员编程艺术之五第一节、寻找满足条件的两个数第14题(数组):题目:输入一个数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字。要求时间复杂度是O(n)。如果有多对数字的和等于输入的数字,输出任意一对即可。例如输入数组1、2、4、7、11、15和数字15。由于4+11=15,因此输出4和11。分析:咱们试着一步一步解决这个问题(注意阐述中数列有序无序的区别):直接穷举,从数组中任意选取两个数,判定它们的和是否为输入的那个数字。此举复杂度为O(N^2)。很显然,我们要寻找效率更高的解法。 题目相当于,对每个 阅读全文
posted @ 2013-06-25 16:43 夜雨阑珊 阅读(685) 评论(0) 推荐(0)
摘要: 本人阅读了《编程之美》,参阅了其中的——计算字符串的相似度——一节。感觉颇为实用。现将这一文章贴于此处,并将代码赋予其后。 许多程序会大量使用字符串。对于不同的字符串,我们希望能够有办法判断其相似程度。我们定义了一套操作方法来把两个不相同的字符串变得相同,具体的操作方法为: 1.修改一个字符(如把“a”替换为“b”)。 2.增加一个字符(如把“abdd”变为“aebdd”)。 3.删除一个字符(如把“travelling”变为“traveling”)。 比如,对于“abcdefg”和“abcdef”两个字符串来说,我们认为可以通过增加/减少一个“g“的方式来达到目的。上面... 阅读全文
posted @ 2013-06-25 16:42 夜雨阑珊 阅读(1113) 评论(0) 推荐(0)
摘要: 分层遍历二叉树《编程之美》3.10问题:给定一颗二叉树,要求按分层遍历该二叉树,即从上到下按层次访问该二叉树(每一层单独输出一行),每一层要求访问的顺序为从左到右,并将节点依次编号。解:算法1printNodeAtLevel(Node *root, int level)if(level == 0 && root) 输出root->data returnif(root==NULL) returnprintNodeAtLevel(root->left, level-1)printNodeAtLevel(root->right, level-1)如果写成:print 阅读全文
posted @ 2013-06-25 16:41 夜雨阑珊 阅读(1383) 评论(0) 推荐(0)
摘要: 昨天花了一个晚上为《编程之美》,在豆瓣写了一篇书评《迟来的书评和感想──给喜爱编程的朋友》。书评就不转载到这里了,取而代之,在这里介绍书里其中一条问题的另一个解法。这个解法比较简短易读及降低了空间复杂度,或者可以说觉得比较「美」吧。问题定义如果我们把二叉树看成一个图,父子节点之间的连线看成是双向的,我们姑且定义"距离"为两节点之间边的个数。写一个程序求一棵二叉树中相距最远的两个节点之间的距离。书上的解法书中对这个问题的分析是很清楚的,我尝试用自己的方式简短覆述。计算一个二叉树的最大距离有两个情况:情况A: 路径经过左子树的最深节点,通过根节点,再到右子树的最深节点。情况B: 阅读全文
posted @ 2013-06-25 16:38 夜雨阑珊 阅读(1981) 评论(0) 推荐(0)
摘要: 问题:设计一个队列能够在O(1)时间内取得队列的最大值。分析:这个问题和设计一个在O(1)时间内取最大值的堆栈看似比较相似,但实现难度要比最大值的堆栈困难一些,开始想模仿最大值堆栈的思想来设计取最大值的堆栈都失败了。实际上这个问题可以拆分成两个问题:1)设计一个在O(1)时间内取最大值的堆栈;2)如何使用堆栈来实现一个队列;如果这两个问题解决了,O(1)时间取最大值的队列也就解决了,这体现了把一个困难的问题,分解为几个比较简单的问题,分步骤处理的思想。 首先看第一个问题:设计一个在O(1)时间内取最大值的堆栈是比较容易的,我们可以使用两个堆栈来保存数据,其中一个保存正常的数据,另一个保存最大. 阅读全文
posted @ 2013-06-25 16:37 夜雨阑珊 阅读(676) 评论(0) 推荐(0)
摘要: 首先,对于文章中给出的bisearch()程序有一点疑问,对于strcmp()函数调用的字符指针都不判断是否为空。显然,这个保证留给了该函数的调用者,本身也没什么问题。但是,我觉得在实际代码中,起码应该使用assert()来测试一下为好。但是考虑到字符指针数组其实在运行时可能经常变化,其实风险还是有的。其实这样的东西严格来讲的确不能算错误,但是却是真真正正的风险。好了,言归正传。给定一个单链表,只给出头指针h:1、如何判断是否存在环?2、如何知道环的长度?3、如何找出环的连接点在哪里?4、带环链表的长度是多少?解法:1、对于问题1,使用追赶的方法,设定两个指针slow、fast,从头指针开始, 阅读全文
posted @ 2013-06-25 16:35 夜雨阑珊 阅读(698) 评论(0) 推荐(0)
摘要: 题目:假设有一个没有头指针的单链表。一个指针指向此单链表中间的一个节点(非第一个节点, 也非最后一个节点)。请将该节点从单链表中删除。解答:典型的“狸猫换太子”, 若要删除该节点,正常情况下,应该要知道该节点的前面节点的指针,但是由于单链表中没有头结点,所以无法追溯到该节点前面的那个节点,因此,这里采用了“移花接木”的方法。设该节点为B,下一个节点为C。那么,首先将B节点的内容替换为C节点的内容,然后,将C节点删除,这样就达到了我们的目的。代码如下:pcur->next = pnext->next;pcur->data = pnext->date;delete pnex 阅读全文
posted @ 2013-06-25 16:33 夜雨阑珊 阅读(5339) 评论(0) 推荐(1)
摘要: 在31年前(1979年),一名刚获得博士学位的研究员,为了开发一个软件项目发明了一门新编程语言,该研究员名为Bjarne Stroustrup,该门语言则命名为——C with classes,四年后改称为C++。C++是一门通用编程语言,支持多种编程范式,包括过程式、面向对象(object-oriented programming, OP)、泛型(generic programming, GP),后来为泛型而设计的模版,被发现及证明是图灵完备的,因此使C++亦可支持模版元编程范式(template metaprogramming, TMP)。C++继承了C的特色,既为高级语言,又含低级语言功 阅读全文
posted @ 2013-06-25 16:28 夜雨阑珊 阅读(4565) 评论(0) 推荐(0)
摘要: 保存变量到一个文件,可以是部分变量或者全部变量save('back.mat','a');%把a变量保存在文件中加载文件中的变量可以是部分或者全部变量load('matlab.mat','a') 向字符串打印数据a=1;name=sprintf('cqi%02d',a)c中是sprintf(name,'cqi%d',a);x=1:5;y1=sin(x);y2=log(x);y3=log2(x);y4=2.^x;H=plot(x,y1,x,y2,x,y3,x,y4);set(H,{'color& 阅读全文
posted @ 2013-06-25 16:08 夜雨阑珊 阅读(886) 评论(0) 推荐(0)
摘要: 三维绘图1 三维绘图指令类 别指 令说 明网状图mesh, ezmesh绘制立体网状图meshc, ezmeshc绘制带有等高线的网状图meshz绘制带有“围裙”的网状图曲面图surf, ezsurf立体曲面图surfc, ezsurfc绘制带有等高线的曲面图surfl绘制带有光源的曲面图曲线图plot3, ezplot3绘制立体曲线图底层函数surfaceSurf函数用到的底层指令line3plot3函数用到的底层指令等高线contour3绘制等高线水流效果waterfall在x方向或y方向产生水流效果影像表示pcolor在二维平面中以颜色表示曲面的高度2 基本XYZ立体绘图命令l mesh 阅读全文
posted @ 2013-06-25 16:05 夜雨阑珊 阅读(827) 评论(0) 推荐(0)
摘要: matlab legend 使用用Matlab画图时,有时候需要对各种图标进行标注,例如,用“+”代表A的运动情况,“*”代表B的运动情况。legend函数的基本用法是LEGEND(string1,string2,string3, ...)分别将字符串1、字符串2、字符串3……标注到图中,每个字符串对应的图标为画图时的图标。例如:plot(x,sin(x),'.b',x,cos(x),'+r')legend('sin','cos')这样可以把"."标识为'sin',把"+"标 阅读全文
posted @ 2013-06-25 16:04 夜雨阑珊 阅读(5594) 评论(0) 推荐(0)
摘要: 算法竞赛-入门经典-作者刘汝佳.doc第1部分 语 言 篇第1章 程序设计入门学习目标þ 熟悉C语言程序的编译和运行þ 学会编程计算并输出常见的算术表达式的结果þ 掌握整数和浮点数的含义和输出方法þ 掌握数学函数的使用方法þ 初步了解变量的含义þ 掌握整数和浮点数变量的声明方法þ 掌握整数和浮点数变量的读入方法þ 掌握变量交换的三变量法þ 理解算法竞赛中的程序三步曲:输入、计算、输出þ 记住算法竞赛的目标及其对程序的要求计算机速度快,很适合做计算和逻辑判断工作。本章首先介绍顺序结构程序设计,其基 阅读全文
posted @ 2013-06-25 15:47 夜雨阑珊 阅读(1833) 评论(0) 推荐(0)
摘要: 一、cpp文件的建立1、 打开vc6.0程序在开始菜单的程序选单中有Microsoft Visual Studio 6.0图标,选择其中的Microsoft Visual C++ 6.0即可运行(或者双击windows桌面上VC6.0快捷方式即可运行)。2、 新建cpp文件单击vc6.0界面菜单栏中的文件选项(快捷方式为Alt+F)然后直接单击“新建”选项以上操作也可同时按下 Ctrl + N 完成接下来,在弹出窗口中单击文件选项卡然后单击选择 “C++ Soutce File”,再点下确定(或直接双击 “C++ Soutce File”也可)如要直接输入文件名则在文件名输入框中输入文件名和选 阅读全文
posted @ 2013-06-25 15:45 夜雨阑珊 阅读(534) 评论(0) 推荐(0)
摘要: 电信基础知识题库 (以下题目可以按填空、判断或简答方式出题,也可以经过变化成为选择题) Asynchronous Transfer Mode(ATM) 异步传输模式(ATM) ATM是一项数据传输技术, 有可能革新计算机网络建立的方法。是一种面向连接的快速分组交换技术,建立在异步时分复用基础上,并使用固定长度的信元,支持包括数据、语音、图象在内的各种业务的传送。 ATM技术特点: ATM真正具有电路交换和分组交换的双重性: 二、业务/产品适用范围 金融,证券公司,保险公司,制造业,交通运输,政府机构等。 三、业务/产品应用方案与成功案例 通过ATM技术可完成企业总部与各办事处及公司分部... 阅读全文
posted @ 2013-06-25 15:24 夜雨阑珊 阅读(1174) 评论(0) 推荐(0)
摘要: 软件测试:V模型,还是X模型?X模型的目标是弥补V模型的一些缺陷。X模型真的能解决测试过程各方面的问题,例如交接、经常性的集成? 在软件测试方面,V模型是最广为人知的模型,尽管很多富有实际经验的测试人员还是不太熟悉V模型,或者其它的模型。V模型已存在了很长时间,和瀑布开发模型有着一些共同的特性,由此也和瀑布模型一样地受到了批评和质疑。在《软件测试:不可忽略的阶段》中已经详细讨论了V模型,这里只作一个概要的介绍。 V模型中的过程从左到右,描述了基本的开发过程和测试行为。V模型的价值在于它非常明确地标明了测试过程中存在的不同级别,并且清楚地描述了这些测试阶段和开发过程期间各阶段的对应关系。 图1- 阅读全文
posted @ 2013-06-25 15:21 夜雨阑珊 阅读(363) 评论(0) 推荐(0)
摘要: 华为软件测试工程师面试题http://www.mianwww.com/html/category/it-interview/softwaretestQ1:请你分别划划OSI的七层网络结构图,和TCP/IP的五层结构图?答:七层结构从上到下依次是:7 应用层 ;6 表示层 ;5 会话层 ;4 传输层 ;3 网络层 ;2 数据链路层 ;1 物理层 五层结构是5 应用层;4 运输层;3 网络层; 2 链路层;1 物理层。Q2:请你详细的解释一下IP协议的定义,在哪个层上面,主要有什么作用? TCP与UDP呢?答:UDP,TCP在传输层,IP在网络层, TCP/IP是英文Transmission Co 阅读全文
posted @ 2013-06-25 15:19 夜雨阑珊 阅读(673) 评论(0) 推荐(0)
摘要: 软件测试基础教程测试的基本概念测试是软件生存周期中十分重要的一个过程,是产品发布、提交给最终用户前的稳定化阶段。 α β测试事实上,软件开发人员不可能完全预见用户实际使用程序的情况。例如,用户可能错误的理解命令,或提供一些奇怪的数据组合,亦可能对设计者自认明了的输出信息迷惑不解,等等。因此,软件是否真正满足最终用户的要求,应由用户进行一系列“验收测试”。验收测试既可以是非正式的测试,也可以有计划、有系统的测试。有时,验收测试长达数周甚至数月,不断暴露错误,导致开发延期。一个软件产品,可能拥有众多用户,不可能由每个用户验收,此时多采用称为α、β测试的过程,用来发现那些似乎只有最终用户才能发现的问 阅读全文
posted @ 2013-06-25 15:17 夜雨阑珊 阅读(475) 评论(0) 推荐(0)
摘要: 功能自动化测试工具 厂商 工具名称 * Mercury Winrunner 备注:世界上最古老、经典的测试工具厂商Mercury Interactive公司(2004年改名Mercury)的绝对主打产品,于Loadrunner、Testdirector并称三雄,统治IT行业测试工具市场的20世纪末的10余年。然而它过时了,随着20世界末WEB应用技术的盛行,Winrunner显得力不从心。故2003年Mercury公司开发新产品QuickTest,而后Winrunner退居二线。2006年Mercury公司被HP全权收购,如今Winrunner已从HP产品家族中消失。一代巨星就这样陨落了... 阅读全文
posted @ 2013-06-25 15:16 夜雨阑珊 阅读(2898) 评论(0) 推荐(0)
摘要: 1 安装及下载client 端2 什么是SVN(Subversion)?3 为甚么要用SVN?4 怎么样在Windows下面建立SVN Repository?5 建立一个Working目录6 新增档案及目录到Repository中7 更新档案及目录8 更新至特定版本9 复制档案及目录10 制作Tag或是Release11 快速参考11.1 取得(Checkout)Repository11.2 更新(Update)档案或目录11.3 新增(Add)档案或目录11.4 提交(Commit)修改过的档案或目录11.5 Copy/Tag/Branch/Release档案或目录安装及下载client 端 阅读全文
posted @ 2013-06-25 15:02 夜雨阑珊 阅读(250) 评论(0) 推荐(0)
摘要: 在本演练中,您将创建一个动态链接库 (DLL),其中包含可供其他应用程序使用的有用例程。使用 DLL 是一种重用代码的绝佳方式。您不必在自己创建的每个程序中重新实现这些例程,而只需对这些例程编写一次,然后从需要该功能的应用程序引用它们即可。本演练使用本机 C++。有关使用本机 C++ 创建静态库的演练,请参见演练:创建和使用静态库。有关使用面向公共语言运行库的 Visual C++ 的演练,请参见演练:创建和使用托管程序集。本演练涵盖以下内容:创建新的动态链接库 (DLL) 项目向动态链接库添加类创建引用动态链接库的应用程序在控制台应用程序中使用类库的功能运行应用程序先决条件本主题假定您具备 阅读全文
posted @ 2013-06-25 14:44 夜雨阑珊 阅读(17135) 评论(0) 推荐(1)
摘要: 第七章。指针和函数的关系可以把一个指针声明成为一个指向函数的指针。 intfun1(char*,int); int(*pfun1)(char*,int); pfun1=fun1; .... .... inta=(*pfun1)("abcdefg",7);//通过函数指针调用函数。 可以把指针作为函数的形参。在函数调用语句中,可以用指针表达式来作为实参。 例十三: intfun(char*); inta; charstr[]="abcdefghijklmn"; a=fun(str); ... ... intfun(char*s) { intnum=0; f 阅读全文
posted @ 2013-06-25 12:43 夜雨阑珊 阅读(335) 评论(0) 推荐(0)
摘要: C++笔记 第十四天 2007年4月10日 1、对文件的分类 (1)文本文件:每个字节都是有效的可显示的ASCII码 ,getline() , >> (2)二进制文件:字节是连续的,不能用vi , more查看文件内容,read按字节数读取 , write 100 是整数的100,占4个字节 “100”是字符数组,占3个字节 2、异常 (1)人为错误:由于程序员编码不当 客观错误:不能避免的错误 (2)通过返回值判断程序的错误情况,对调用者的要求高,要写if()else()判断,而且对于返回值的含义要非常的清楚 所以C++中提供了异常处理机制 3 异常的工作原理: 1) 程序员写的 阅读全文
posted @ 2013-06-25 12:42 夜雨阑珊 阅读(501) 评论(0) 推荐(0)
摘要: 1、类和对象 类就是对对象的描述,主要从属性和行为两个方面描述。 对于属性一般作成private , 行为作为public 函数 (1)构造函数,初始化所有的成员变量,系统自动调用,可以重载 (2)析构函数,在对象生命周期结束的时候自动被调用调用,不准重载 构造函数和析构函数都是系统自动调用的,析构函数可以通过对象调用 A a; a.A(); //error 构造函数是不能手工调用的 a.~A(); //right 手工调用析构函数时,会被当作一个普通的成员函数调用,其中的代码会被执行,对象不被销毁 (3)get,set方法 用于访问私有的成员变量的,外界访问变量的唯一通道 (4)类本身的行. 阅读全文
posted @ 2013-06-25 12:41 夜雨阑珊 阅读(242) 评论(0) 推荐(0)
摘要: 1、数组是自动分配空间,指针要手工分配空间(int *p = new int;)2、在Unix上,程序出现段错误的时候,系统会生成core 文件,会把出现错误的那一刻的程序镜像保存在此文件中3、结构的成员变量出现数组: struct Account{ long id ; //char name[ 50 ] ; //char password[ 10 ] ; char * pname ; char * ppwd ; double balance ; }; 数组长度100-200字节,最好用数组做,这样方便 数组很大的时候,可以考虑用指针,赋值的时候要注意: a.pname = new char[ 阅读全文
posted @ 2013-06-25 12:39 夜雨阑珊 阅读(257) 评论(0) 推荐(0)
摘要: 1、程序由函数组成,函数只完成自己特定的功能即可 把函数声明写在头文件里(想使用函数时,可直接导入头文件,调用函数),把函数实现写在".cc"文件中 把多个".cc"文件编译成可执行文件 ->分别编译成".o"文件,再连接到一起 2、值传递 函数中的参数传递是值传递,形参只是实参的一份拷贝数据,在函数中改变形参的值,对实参无影响 3、作业分析:显示层(与用户的交互) 操作数据(完成业务逻辑) biz层 数据(id , password , balance ) Bank实现代码 ========================== 阅读全文
posted @ 2013-06-25 12:38 夜雨阑珊 阅读(217) 评论(0) 推荐(0)
摘要: 1、%ldd 可行文件的名字; ---可查看连接库 2、C++严格区分大小写,变量命名只能使用字母,数字,或下划线,第一个字母必须使用字母或下划线3、float单精度,double双精度 sizeof(int)---返回int在内存中占的大小 size(bool)=1 size(char)=1 size(short)=2 size(int)=4 size(long)=4 size(float)=4 size(double)=8 无符号的数据一旦溢出,将成为0。 有符号的int最大值2147483647,益处变为最小值,负数4、不同数据间赋值:有兼容性的,占空间小的数据类型,可以给占空间大的数. 阅读全文
posted @ 2013-06-25 12:36 夜雨阑珊 阅读(203) 评论(0) 推荐(0)