面试
wshelly
业精于勤荒于嬉行成于思毁于随三千年读史不外功名利禄九万里悟道终归诗酒田园
展开
-
1000瓶酒其中1瓶有毒,10只老鼠找出毒酒
1: 折半查找的方式 容易理解 500瓶每瓶1滴放在一起看老鼠喝了死不死 依次类推 250->125->63->32->16->8->4->2->12: 转换为二进制形式 2的10次方 = 1024 > 1000 即1000 都可以表示成10位二进制的形式 则取10个碗,对应10位 1 2 3 4 5 6 7原创 2012-10-15 11:21:37 · 14741 阅读 · 0 评论 -
一个好理解的快速排序
快速排序: 20 40 50 10 60left = 20 right = 60 base = leftleft指针,right指针,base参照数。其实思想是蛮简单的,就是通过第一遍的遍历(让left和right指针重合)来找到数组的切割点。第一步:首先我们从数组的left位置取出该数(20)作为基准(base)参照物。第二步:从数组的rig原创 2013-07-01 17:29:41 · 2099 阅读 · 1 评论 -
linus大神写链表删除
教科书写法:typedef struct node{ struct node * next; ....} node; typedef bool (* remove_fn)(node const * v); // Remove all nodes from the supplied list for which the// supplied remove f原创 2013-02-05 15:42:28 · 1098 阅读 · 0 评论 -
sting split
#include #include #include using namespace std;int main(){ string test = "aa aa bbc cccd"; vector strvec; string strtemp; string::size_type pos1, pos2原创 2013-03-28 11:12:44 · 1099 阅读 · 0 评论 -
字符串过滤程序
通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉。比如字符串“abacacde”过滤结果为“abcde”。 要求实现函数:void stringFilter(const char *pInputStr,long lInputLen, char *pOutputStr);原创 2013-04-09 17:54:17 · 5805 阅读 · 10 评论 -
判断ip地址是否合法
IP地址是否合法STATUS ip_valid_check(const char* v_p_Str) { int i; int tmp; char* p = NULL; if(strlen(v_p_Str) > 15) { return ERROR; } p = (char*)v_p_原创 2013-02-25 21:27:05 · 1211 阅读 · 0 评论 -
已知一个函数f可以得到1-5间的随机数,问怎么得到1-7的随机数
I suppose what you mean is given a random number generator that generates 1-5 with equal prob. (1/5), create another random generator that generates 1-7with equal prob (1/7).Assuming the 1-5 g原创 2013-02-18 18:31:00 · 2414 阅读 · 0 评论 -
交换两个数组值使两个数组之差最小
有两个序列a,b,大小都为n,序列元素的值任意整数,无序;要求:通过交换a,b 中的元素,使[序列a 元素的和]与[序列b 元素的和]之间的差最小。例如:var a=[100,99,98,1,2, 3];var b=[1, 2, 3, 4,5,40];假设序列a,b中元素的和为sum_a和sum_b。假设aa和bb分别为序列a,b中的元素,则交换aa,bb后序列的和变为sum_原创 2013-02-19 16:52:09 · 2296 阅读 · 0 评论 -
(he)的平方等于she
其中h e s分别为0-9的一个数字 求解其代表的数字其中s、h、e=0,1,2,.....,9(即he为一个两位数,she是一个三位数)由于he的尾数e的平方还是e,因为 0的平方=0 1的平方=1 5的平方=25 6的平方=36,所以e只可能是 0、1、5、6中的某个数。再者,100 ≤ (he)的平方<1000,可以推导计算出 10 ≤原创 2013-01-10 17:51:09 · 1912 阅读 · 0 评论 -
两个人租房分摊房租问题
两个人A,B合租一个二居的房子,比如每个月是1500美元,因为主卧和次卧有大有小,价格肯定是不均的,怎么样的算法能让双方都满意两个人分别写两个价格,也就是对主卧和次卧的心理价格。可以很极端,比如1400:100,但总额必须是1500,因为这是A,B必须接受的大条件,然后公开,除掉开价完全相当的情况,两间卧室必然各有一个出价最高的人,价高者入住,而月租则是A,B对这个卧室开价的均原创 2013-01-05 10:55:12 · 2646 阅读 · 1 评论 -
为什么TCP连接需要三次握手分开需要四次握手
TCP的三次握手和四次断开TCP是一个面向连接的服务,面向连接的服务是电话系统服务模式的抽象,每一次完整的数据传输都必须经过建立连接,数据传输和终止连接3个过程,TCP建立连接的过程称为三次握手,下面看一下三次握手的具本过程TCP三次握手过程1 主机A通过向主机B 发送一个含有同步序列号的标志位的数据段给主机B ,向主机B 请求建立连接,通过这个数据段,主机A告诉主机B 两件事原创 2012-10-09 19:37:36 · 3249 阅读 · 1 评论 -
实现str基本函数
字节拷贝函数:void * memcpy1(void *dest, const void *src, size_t n){ assert(dest!=NULL&&src!=NULL); //有效性检测 if(dest == src) return dest; else if(dest转载 2012-10-24 10:33:53 · 586 阅读 · 0 评论 -
百度笔试
注:答案为个人整理,不一定正确,还望大家多多交流,找出更加完美的解答。一:简答题(30)1:数据库以及线程发生死锁的原理及必要条件,如何避免死锁答:产生死锁的原因主要是:(1) 因为系统资源不足。(2) 进程运行推进的顺序不合适。(3) 资源分配不当等。产生死锁的四个必要条件:(1)互斥条件:一个资源每次只能被一个进程使用。(2)请求与保持条件:一个进程原创 2012-11-01 15:54:32 · 688 阅读 · 0 评论 -
25匹马赛跑问题
25匹马通过赛跑来决出前三名,每轮最多5匹马参赛,求最少需要几轮?条件:1、最多5匹马一组,可以决出本组比赛的次序。2、没有计时工具,假设马每轮的速度相同。=====================================================================原创 2012-09-25 14:45:47 · 6689 阅读 · 0 评论 -
为什么free时不用指定字节数
1:关于这两个函数使用需要注意的一些地方:A、申请了内存空间后,必须检查是否分配成功。B、当不需要再使用申请的内存时,记得释放;释放后应该把指向这块内存的指针指向NULL,防止程序后面不小心使用了它。C、这两个函数应该是配对。如果申请后不释放就是内存泄露;如果无故释放那就是什么也没有做。释放只能一次,如果释放两次及两次以上会出现错误(释放空指针例外,释放空指针其实也等于啥也没做,所以释原创 2012-09-25 14:42:46 · 2617 阅读 · 0 评论 -
交换两个数组的值,使其和的差值最小
求解思路: 当前数组a和数组b的和之差为 A = sum(a) - sum(b) a的第i个元素和b的第j个元素交换后,a和b的和之差为 A' = sum(a) - a[i] + b[j] - (sum(b) - b[j] + a[i]) = sum(a) - sum(b) - 2 (a[i] - b[j])转载 2012-09-25 19:09:02 · 2707 阅读 · 0 评论 -
判断两个有序数组中是否存在相同的数字
1./* 2. * 判断两个有序数组中是否存在相同的数字(要求时间复杂度为O(n)) 3. */ 4.#include 5.#include 6. 7.bool existthesame(int *a,int n1,int *b,int n2) 8.{ 9. int i=0; 10. int j=0; 11.原创 2012-10-15 19:06:24 · 1940 阅读 · 0 评论 -
N!末尾有多少个零
题目一:210!最后结果有几个零。请自己思索10分钟以上再看解释凡是这种题目必有规律可言, 关键是你找到这个规律的恒心。可采用笨拙的方法思考。1! = 1 ---- 无02! = 2 * 1! = 2原创 2013-07-31 15:29:02 · 3259 阅读 · 2 评论