08 2012 档案
摘要:内存重叠:拷贝的目的地址在源地址范围内。所谓内存重叠就是拷贝的目的地址和源地址有重叠。在函数strcpy和函数memcpy都没有对内存重叠做处理的,使用这两个函数的时候只有程序员自己保证源地址和目标地址不重叠,或者使用memmove函数进行内存拷贝。memmove函数对内存重叠做了处理。现在来看函数...
阅读全文
摘要:百度面试题:将多个集合合并成没有交集的集合2010-03-20 18:25给定一个字符串的集合,格式如:{aaa bbb ccc}, {bbb ddd},{eee fff},{ggg},{ddd hhh}要求将其中交集不为空的集合合并,要求合并完成后的集合之间无交集,例如上例应输出{aaa bbb ...
阅读全文
摘要:假定矩形是用一对点表达的(minx, miny) (maxx, maxy),那么两个矩形rect1{(minx1, miny1)(maxx1, maxy1)}rect2{(minx2, miny2)(maxx2, maxy2)} 相交的结果一定是个矩形,构成这个相交矩形rect{(minx, min...
阅读全文
摘要:题目:给定一个N位数,例如12345,从里面去掉k个数字,得到一个N-k位的数, 例如去掉2,4,得到135,去掉1,5,得到234。设计算法,求出所有得到的 N-k位数里面最小的那一个解决方案一:(1)第一步要确定剩余N-K位的数的最高位:从个位开始算起,从第N-K位开始向高位比较,求出最小数字,...
阅读全文
摘要:1、给定一个N位数,例如12345,从里面去掉k个数字,得到一个N-k位的数, 例如去掉2,4,得到135,去掉1,5,得到234。设计算法,求出所有得到的 N-k位数里面最小的那一个2、“找明星”,N个人中,只有一个明星:明星不认识其他所有的人,而其他人 都认识明星,这些人中也可能相互认识。你每次...
阅读全文
摘要:char *strcpy(char *des, const char *src){assert((des != NULL) && (src != NULL));char *add = des;while ((*des++ = *src++ ) != ‘\0’) ;return add;}void*m...
阅读全文
摘要:声明template参数时,前缀关键词class和typename可互换。也就是说以下两个没有区别:(1)templateclass Widget;(2)templateclass Widget。然而C++并不总是把class和typename视为等价。有时一定得使用typename。这种时机就是:...
阅读全文
摘要:TCP(Transmission Control Protocol) 传输控制协议TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接:位码即tcp标志位,有6种标示:SYN(synchronous建立联机) ACK(acknowledgement 确认) PSH(p...
阅读全文
摘要:题目:什么是单例模式?请写一段单例模式的程序?解决方案:单例模式也称为单件模式、单子模式,可能是使用最广泛的设计模式。其意图是保证一个类仅有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享。有很多地方需要这样的功能模块,如系统的日志输出,GUI应用必须是单鼠标,MODEM的联接需要一...
阅读全文
摘要:题目:如何查找完全二叉树最后一层的最右边的结点。解决方案:需要分两种情况考虑。(1)如果完全二叉树是用数组表示的,则直接取数组的最后一个元素。(2)如果完全二叉树是用指针表示的:可以如下解决:a. 从根节点开始,如果右子树存在,则每次先遍历右子树,如果右子树不存在,则访问左子树;b. 如果右子树是叶...
阅读全文
摘要:题目:输入两个字符串,比如abdbcc和abc,输出第二个字符串在第一个字符串中的连接次序。即输出125、126、145、146.解决方案:此处仅考虑第一个字符串中的字符在第二个字符串中的相对位置不变的情况。此时,可以按照递归的思路思考如下:(1)递归过程中:采用两个指针分别指向两个字符串,对应字符...
阅读全文
摘要:面试时经常被问到一连串的问题:1、什么是多态性?2、多态性的原理(多态是怎么实现的)?3、用C语言实现多态(写代码)。首先,我们来研究一下C++面向对象的内存模型,也就是实现虚函数时类的存储结构。1. 用 virtual 关键字申明的函数叫做虚函数,虚函数肯定是类的成员函数。2. 存在虚函数的类都有...
阅读全文
摘要:无向图:法1:如果存在回路,则必存在一个子图,是一个环路。环路中所有顶点的度>=2。 n算法: 中第一步:删除所有度=n,则根据图论知识可直接判断存在环路。 (证明:如果没有环路,则该图必然是k棵树k>=1。根据树的性质,边的数目m=n-k。k>=1,所以:m=V,这样算法的复杂度也只能为O(V ...
阅读全文
摘要:There are many factors that decide the size of an object of a class in C++. These factors are:Size of all non-static data members//静态数据成员的大小Order of d...
阅读全文
摘要:题目:void main() { unsigned int a = 0xFFFFFFF7; unsigned char i = (unsigned char)a; char* b = (char*)&a; printf("%08x, %08x\...
阅读全文
摘要:题目:给定一个字符串及一个字符串集合A,求该字符串中包含A中所有字符的最短子串长度。解决方案一:最直接的方法就是,直接开始遍历:查找任意两个子串之间是否包含str2,如果包含,记录下长度,求得最小值即可。str1 = "daebfacba";str2 = "abc";minLen = len(str...
阅读全文
摘要:一,设计一个魔方(六面)的程序。P194 思路:魔方总数9 + 9 + 8 = 26 魔方有六个面,需要定义六个结构体,内容为一个9个点和一个编号,其中每个点包含一个颜色标识;在魔方展开图中根据正方形的相邻关系编号,每个正方形都有四个函数:左翻、右翻、上翻、下翻根据相邻关系,每个操作都会引起相邻面的...
阅读全文
摘要:面试过程中,面试官会向应聘者发问,而应聘者的回答将成为面试官考虑是否接受他的重要依据。对应聘者而言,了解这些问题背后的“猫腻”至关重要。本文对面试中经常出现的一些典型问题进行了整理,并给出相应的回答思路和参考答案。读者无需过分关注分析的细节,关键是要从这些分析中“悟”出面试的规律及回答问题的思维方式...
阅读全文
摘要:1. Describe an instance where you set your sights on a high/demanding goal and saw it through completion.举例说明,你如何制定了一个很高的目标,并且最终实现了它。2. Summarize a si...
阅读全文
摘要:原文参见如下网址:原创文章,转载请注明:转载自董的博客本文链接地址:http://dongxicheng.org/cpp/ooc/
阅读全文
摘要:首先将“左右法则”的原文搬出来吧:The right-left rule: Start reading the declaration from the innermost parentheses, go right, and then go left. When you encounter par...
阅读全文
摘要:功能区别:sizeof用来求所占内存大小,而strlen用来求字符串长度。区别:(1)sizeof是一个操作符,它的结果类型为size_t(无符号整型数据),而strlen是一个函数,其结果类型也是size_t;(2)sizeof的参数可以是变量,也可以是类型,为变量的时候可以不加括号(sizeof...
阅读全文
摘要:memmove 和 memcopy1.memmove函数原型:void *memmove(void *dest, const void *source, size_t count)返回值说明:返回指向dest的void *指针参数说明:dest,source分别为目标串和源串的首地址。count为要...
阅读全文
摘要:题目:一个平面中,有很多正四边形,大小不一,任意四边形之间可以有重叠部分,如下图所示现在有2000个点,如何快速定位这些点分别属于哪些四边形区域?解决方案:采用区域分割+hash查找的方法。1. 预处理阶段:X将四边形按照左边进行排序,然后逐一按照X轴划分区域,如图:然后,将每一个区域的左边界和右边...
阅读全文
摘要:题目:已知一随机发生器,产生0的概率是p,产生1的概率是1-p,现在要你构造一个发生器,使得它构造0和1的概率均为1/2解决方案:这是随机概率发生器的典型题目。由于需要产生1/2,而用1位0,或1位1无法产生等概率,因此,考虑将随机数扩展成2位:00 p*p01 p*(1-p)10 (1-p)*p1...
阅读全文
摘要:问题叙述:*5.1-3 假设你希望以各1/2的概率输出0和1.你可以自由使用一个输出0或1的过程BIASED-RANDOM。它以概率p输出1,以概率1 - p输出0,其中 0 < p < 1,但是你并不知道p的值。给出一个利用BIASED-RANDOM作为子程序的算法,返回一个无偏向的结果,即以概...
阅读全文
摘要:题目:写一个函数判断一个int类型的数组是否是有效的。所谓有效是指:假设数组大小为n,那么这个int数组里的值为0~n-1之间的数,并且每个数只能出现一次,否则就是无效数组。例如[5,3,1,4,2,0]是有效的,[5,3,5,1,2,0]是无效的,[5,3,6,1,2,0]是无效的。解法思路一:置...
阅读全文
摘要:一、面试形式 1、3轮1V1的技术面试;某轮面试通过,稍事休息后开始下一轮面试。 2、面试过程基本分为两部分: 1)对简历上所写项目的描述,及回答对方感兴趣的项目细节; 2)对方给出数组、链表等常见程序设计问题,要求描述解决问题的思路;并把思路转化为代码(手写)。 这一部分是最重要的环节,占面试总时...
阅读全文
摘要:1. 快排每次以第一个作为主元,问时间复杂度是多少?(O(N*logN))2. T(N) = N + T(N/2)+T(2N), 问T(N)的时间复杂度是多少?(O(N))3. 从(0,1)中平均随机出几次才能使得和超过1?(e)4.编程题:一棵树的节点定义格式如下:struct Node{Node...
阅读全文
摘要:数学常数最令人着迷的就是,它们常常出现在一些看似与之毫不相干的场合中。 随便取一个 0 到 1 之间的数,再加上另一个 0 到 1 之间的随机数,然后再加上一个 0 到 1 之间的随机数⋯⋯直到和超过 1 为止。一个有趣的问题:平均需要加多少次,才能让和超过 1 呢?答案是 e 次。#define ...
阅读全文

浙公网安备 33010602011771号