1. 1~n共n个数,少一个数字,求少的数字
1)加和的方法 2)异或 先设Y=1^2^3...^n,然后将Y和那n-1个数字进行异或,得到所求的数字
2.甲;乙;丙;丁四个人过桥,分别需要1,2,5,10分钟。因为天黑,必须借助手电筒过桥可是总共只有一个手电,问最少多长时间可以全部过桥
分析:时间最少,肯定是甲和乙搭档,丙和丁搭档,需要中间有一个送手电筒的,所以是甲和乙先过去,花费2分钟,然后甲回去,花费1分钟,然后丙和丁过河,花费10分钟,然后乙把手电筒送回来,花费2分钟,然后甲和乙在过去,花费2分钟,共:
2+1+10+2+2 = 17分钟.
3. 25匹马比赛,每场可以五匹马一起比,取前三需要七场比赛,如果取前五名,最好情况可以在第8场角逐出前5名,最差也可以在第9场搞定,http://hxraid.iteye.com/blog/662643
4. char *s = "abcdef";
printf("%d %d\n",sizeof(s),strlen(s));
printf("%d %d\n",sizeof(s),strlen(s));
结果是4,6;解释:s是个指针,sizeof(s)就是四个字节,strlen(s)是求字符串的长度
5. fork()
fork&&fork()||fork()
fork()
生成19个进程的解法:
http://blog.youkuaiyun.com/hs794502825/article/details/10242091
fork&&fork()||fork()
fork()
生成19个进程的解法:
http://blog.youkuaiyun.com/hs794502825/article/details/10242091
6. 第一道题是有一个int型数组,每两个相邻的数之间的差值不是1就是-1.现在给定一个数,要求查找这个数在数组中的位置。
7. 一个射击运动员,他射中1-10环的概率都是0.1,不会脱靶,问题是他射击10次总环数是80环的概率是多少
8.
9. 内存
黑板上有一排数为1,2,3,4,……19,20。甲乙两人轮流划掉任意相邻的两个数,如果甲划过之后乙再也划不成了,甲就算胜 了,甲有必胜的把握吗?他应怎么做?
有,第一次要画最中间的两个 10 11,这样两边都剩对称9个数,然后不管乙怎么画,你只要和他对称一样画就OK了.
桌子上有2014枚棋子,甲乙两人轮流取走棋子.规则是:每人每次取的个数是1枚至5枚,谁最后取光桌上的棋子谁就获胜.如果甲先取,那么甲先 取______枚棋子,才能保证自己必胜.
2014÷(1+5), =2014÷6, =335(次)…4(个); 只要甲先取4个,然后再看看乙每次取几个,只要每次与乙所取棋子数和满足是6,甲就能取胜. 答:应选取4个,然后再看乙每次取几个,只要每次与乙所取棋子数和满足是6,甲就能取胜. 故答案为:4. |
【内部碎片】
内部碎片就是已经被分配出去(能明确指出属于哪个进程)却不能被利用的内存空间;
内部碎片是处于区域内部或页面内部的存储块。占有这些区域或页面的进程并不使用这个存储块。而在进程占有这块存储块时,系统无法利用它。直到进程释放它,或进程结束时,系统才有可能利用这个存储块。
单道固定连续分配只有内部碎片。多道固定连续分配既有内部碎片,又有外部碎片。
【外部碎片】
外部碎片指的是还没有被分配出去(不属于任何进程),但由于太小了无法分配给申请内存空间的新进程的内存空闲区域。
外部碎片是出于任何已分配区域或页面外部的空闲存储块。这些存储块的总和可以满足当前申请的长度要求,但是由于它们的地址不连续或其他原因,使得系统无法满足当前申请。
多道可变连续分配只有外部碎片。
内部碎片就是已经被分配出去(能明确指出属于哪个进程)却不能被利用的内存空间;
内部碎片是处于区域内部或页面内部的存储块。占有这些区域或页面的进程并不使用这个存储块。而在进程占有这块存储块时,系统无法利用它。直到进程释放它,或进程结束时,系统才有可能利用这个存储块。
单道固定连续分配只有内部碎片。多道固定连续分配既有内部碎片,又有外部碎片。
【外部碎片】
外部碎片指的是还没有被分配出去(不属于任何进程),但由于太小了无法分配给申请内存空间的新进程的内存空闲区域。
外部碎片是出于任何已分配区域或页面外部的空闲存储块。这些存储块的总和可以满足当前申请的长度要求,但是由于它们的地址不连续或其他原因,使得系统无法满足当前申请。
多道可变连续分配只有外部碎片。
10.Linux硬链接和软连接
硬连接指通过索引节点来进行连接
软连接类似于Windows的快捷方式
如果对一个文件建立了硬链接和软链接,那么删除文件后,硬链接不失效,通过硬链接可以找到该文件,软连接失效
http://www.cnblogs.com/itech/archive/2009/04/10/1433052.html
11.
美团2013哈尔滨笔试:
一堆硬币,一个机器人,如果是反的就翻正,如果是正的就抛掷一次,无穷多次后,求正反的比例
假设在上一个状态中,正面占比p,反面占比1-p,那么无穷多次后,正反比例达到平衡后,下一个状态的正面比例也应该是p,上一个状态将正面的再抛一次且反正调整为正面后出现正面的概率是p/2+(1-p) = p,所以p = 2/3,反正是1/3,正反比例是2:1
12. struct 和class的区别;
1)默认的访问继承权限,struct是public的,class是private
2)struct 作为数据结构的实现体,它的成员默认访问控制权限是public的,class作为对象的实现体,它的成员默认访问控制权限是private的
3)class可以作为定义模板参数的关键词,如template <class(或typename) T>
4)C++中的struct是对C中的struct的扩充,那么可以直接赋值,例如struct p{int a;int b;}p;那么p={1,2};
13. 引用和指针的区别:
1)引用只能在定义时初始化一次,之后不再变化,指针可变
2)const可以修饰指针,不可以修饰引用
3)引用是一个别名,指针是实体
4)sizeof(指针)是4个字节(32位系统),sizeof引用是引用指的数据
5)指针和引用的++操作意义不同
14. new和malloc、free和delete的区别
1) new可以直接申请int *A = new int[2],数据的大小,而malloc申请的是字节数
2) new 返回的是具体的类型,malloc返回的是void*
3) new和delete申请和释放对象时可以调用构造函数,malloc和free不可以
4) new是类型安全的,malloc不是.int *p = new float[2] 是错误的,但是malloc不检查其错误
5) maloc/free需要<stdlib.h>的支持,但是new和delete不需要任何库的支持
6) new 和 delete是运算符,free和malloc是函数