11 2012 档案

摘要:程序员面试题精选 100 题(39)-颠倒栈 题目:用递归颠倒一个栈。例如输入栈{1, 2, 3, 4, 5},1 在栈顶。颠倒之后的栈为{5, 4, 3, 2, 1},5 处在 栈顶。 分析:乍一看到这道题目,第一反应是把栈里的所有元素逐一 pop 出来,放到一个数组里,然后在数 组里... 阅读全文
posted @ 2012-11-24 11:20 Mr.Rico 阅读 (222) | 评论 (0) 编辑
摘要:Chapter 16 | Low Level 16.1 Explain the following terms: virtual memory, page fault, thrashing. SOLUTION Virtual memory is a computer system... 阅读全文
posted @ 2012-11-23 23:53 Mr.Rico 阅读 (262) | 评论 (0) 编辑
摘要:11.1 If you were integrating a feed of end of day stock price information (open, high, low, and closing price) for 5,000 companies, how would you do ... 阅读全文
posted @ 2012-11-23 23:53 Mr.Rico 阅读 (767) | 评论 (0) 编辑
摘要:7.1 Design the data structures for a generic deck of cards. Explain how you would subclass it to implement particular card games. SOLUTION Assume... 阅读全文
posted @ 2012-11-23 23:51 Mr.Rico 阅读 (6241) | 评论 (0) 编辑
摘要:1.6 90度旋转NxN矩阵Given an image represented by an NxN matrix, where each pixel in the image is 4 bytes, write a method to rotate the image by 90 degrees.... 阅读全文
posted @ 2012-11-23 23:39 Mr.Rico 阅读 (1160) | 评论 (0) 编辑
摘要:K阶锦标赛算法一个赛马场有100匹马,5条赛道,至少要比赛多少场才能选出跑得最快的10匹马?步骤:1. 将100匹马分成20次比赛,每次5匹马,并保存每次比赛的结果(即第1名到第5名的顺序)2. 从胜利的20匹马分成4次比赛,每次5匹马,并保存每次比赛的结果(即第1名到第5名的顺序)3. 对最后的4... 阅读全文
posted @ 2012-11-20 16:05 Mr.Rico 阅读 (163) | 评论 (0) 编辑
摘要:1. strcpy 的部分理解 char* strcpy(char *dest, const char*src) { while(*dest++=*src++) return dest-1; } 这是strcpy的实现,这个实现是比较简洁的。 ... 阅读全文
posted @ 2012-11-20 15:41 Mr.Rico 阅读 (181) | 评论 (0) 编辑
摘要:第一次笔试:1. Buddy System 怎么进行内存的分配. 解答:在Linux内核中,空闲内存管理的基本单位是页面(x86/x86-64 CPU定义的页面),即以页面为单位来管理物理内存(kmalloc等slab/slub机制,是比页面更小的细分)。 Linux内核管理的每个内存空闲块都是2的... 阅读全文
posted @ 2012-11-19 23:43 Mr.Rico 阅读 (196) | 评论 (0) 编辑
摘要:24.Algorithm Gossip: 洗扑克牌(乱数排列)说明洗扑克牌的原理其实与乱数排列是相同的,都是将一组数字(例如1~N)打乱重新排列,只不过洗扑克牌多了一个花色判断的动作而已。解法初学者通常会直接想到,随机产生1~N的乱数并将之存入阵列中,后来产生的乱数存入阵列前必须先检查阵列中是否已有... 阅读全文
posted @ 2012-11-13 08:29 Mr.Rico 阅读 (126) | 评论 (0) 编辑
摘要:42.Algorithm Gossip: 循序搜寻法(使用卫兵)说明搜寻的目的,是在「已排序的资料」中寻找指定的资料,而当中循序搜寻是最基本的搜寻法,只要从资料开头寻找到最后,看看是否找到资料即可。解法初学者看到循序搜寻,多数都会使用以下的方式来进行搜寻:while(i #include #in... 阅读全文
posted @ 2012-11-13 08:29 Mr.Rico 阅读 (108) | 评论 (0) 编辑
摘要:34.Algorithm Gossip: Shell 排序法 - 改良的插入排序说明插入排序法由未排序的后半部前端取出一个值,插入已排序前半部的适当位置,概念简单但速度不快。排序要加快的基本原则之一,是让后一次的排序进行时,尽量利用前一次排序后的结果,以加快排序的速度,Shell排序法即是基于此一概... 阅读全文
posted @ 2012-11-13 08:29 Mr.Rico 阅读 (121) | 评论 (0) 编辑
摘要:4.Algorithm Gossip: 三色棋说明三色旗的问题最早由E.W.Dijkstra所提出,他所使用的用语为Dutch Nation Flag(Dijkstra为荷兰人),而多数的作者则使用Three-Color Flag来称之。假设有一条绳子,上面有红、白、蓝三种颜色的旗子,起初绳子上的旗... 阅读全文
posted @ 2012-11-13 08:28 Mr.Rico 阅读 (331) | 评论 (0) 编辑
摘要:14.Algorithm Gossip: 蒙地卡罗法求 PI说明蒙地卡罗为摩洛哥王国之首都,该国位于法国与义大利国境,以赌博闻名。蒙地卡罗的基本原理为以乱数配合面积公式来进行解题,这种以机率来解题的方式带有赌博的意味,虽然在精确度上有所疑虑,但其解题的思考方向却是个值得学习的方式。解法蒙地卡罗的解法... 阅读全文
posted @ 2012-11-13 08:28 Mr.Rico 阅读 (417) | 评论 (0) 编辑
摘要:49.Algorithm Gossip: 奇数魔方阵说明将1到n(为奇数)的数字排列在nxn的方阵上,且各行、各列与各对角线的和必须相同,如下所示:解法填魔术方阵的方法以奇数最为简单,第一个数字放在第一行第一列的正中央,然后向右(左)上填,如果右(左)上已有数字,则向下填,如下图所示:一般程序语言的... 阅读全文
posted @ 2012-11-13 08:27 Mr.Rico 阅读 (3446) | 评论 (0) 编辑
摘要:27.Algorithm Gossip: 排列组合说明将一组数字、字母或符号进行排列,以得到不同的组合顺序,例如1 2 3这三个数的排列组合有:1 2 3、1 3 2、2 1 3、2 3 1、3 1 2、3 2 1。解法可以使用递回将问题切割为较小的单元进行排列组合,例如1 2 3 4的排列可以分为... 阅读全文
posted @ 2012-11-13 08:27 Mr.Rico 阅读 (719) | 评论 (0) 编辑
摘要:1. 传统的字符串匹配算法传统匹配思想是,从目标串Target的第一个字符开始扫描,逐一与模式串的对应字符进行匹配,若该组字符匹配,则检测下一组字符,如遇失配,则退回到Target的第二个字符,重复上述步骤,直到整个Pattern在Target中找到匹配,或者已经扫描完整个目标串也没能够完成匹配为止... 阅读全文
posted @ 2012-11-13 08:26 Mr.Rico 阅读 (195) | 评论 (0) 编辑
摘要:1. 简述数据库操作的过程。 以下给出的应用程序A读取数据库中数据的一般步骤和过程,并体现了三级模式的作用。不同的数据库管理系统其操作细节可能存在差异,但其基本过程大体一致。至于其它的数据操作,如写入数据、修改数据、删除数据等,其步骤会有增加或变化,但总体上是十分相似的,在此不在详细叙述,下面是操... 阅读全文
posted @ 2012-11-12 22:49 Mr.Rico 阅读 (135) | 评论 (0) 编辑
摘要:选择题:1.比较 U盘写入,100m以太网,卡车运磁带,用PCI声卡播放mp3的时候的数据传输速率2.程序题,a[10]=[1..10] // 伪代码&a[5]-4=6; <===这一行的结果3. [-2,2]的区间上,随机取俩数,和大于1的概率4. 5个小组单循环比赛,赢3分,负0分,平各1分。问... 阅读全文
posted @ 2012-11-12 22:48 Mr.Rico 阅读 (115) | 评论 (0) 编辑
摘要:腾讯电面 自我介绍后,直接上基础知识问题,30分钟狂轰烂炸。 C++中virtual的作用是什么?为什么要把基类的析构函数定义成virtual? 宏定义和inline的区别,说说inline使用的场合。为什么加了inline的函数中不能有循环? Windows下进程间通信的方式有哪些? 说下对堆,栈... 阅读全文
posted @ 2012-11-12 22:05 Mr.Rico 阅读 (148) | 评论 (0) 编辑
摘要:百度二面 第一题,任意给一个数,试证明这个数的某个倍数的十进制表示是01串,比如3的倍数111是二进制表示,5的倍数10是二进制表示,等等。解答: 假设序列1,11,111,1111…用A1~AN标识,下脚标N即为1的个数,如:A1=1,A2=11,A3=111… 其中没有... 阅读全文
posted @ 2012-11-12 21:19 Mr.Rico 阅读 (145) | 评论 (0) 编辑
摘要:1. 简述数据库操作的过程。 以下给出的应用程序A读取数据库中数据的一般步骤和过程,并体现了三级模式的作用。不同的数据库管理系统其操作细节可能存在差异,但其基本过程大体一致。至于其它的数据操作,如写入数据、修改数据、删除数据等,其步骤会有增加或变化,但总体上是十分相似的,在此不在详细叙述,下面是操... 阅读全文
posted @ 2012-11-12 21:13 Mr.Rico 阅读 (176) | 评论 (0) 编辑
摘要:1. Android中Activity, Intent, Content, Provider, Service 各自的作用和区别. 2. ARM处理器有哪些工作模式? 3. 程序中应尽量避免魔鬼数字, 有什么好处? 4. kmalloc,vmalloc, _get_free_pages... 阅读全文
posted @ 2012-11-12 21:09 Mr.Rico 阅读 (84) | 评论 (0) 编辑
摘要:1. 在Intel 多核CPU上, 以下多线程对int型变量x的操作,哪几个不是原子操作,假定变量的地址都是对齐的.A. x=y B. - -x C. x-=1 D. x=-1 E.x-=y2. 下面程序的输出结果:#include using namespace ... 阅读全文
posted @ 2012-11-12 20:57 Mr.Rico 阅读 (203) | 评论 (0) 编辑
摘要:一.选择题: 1. A,B,O,AB血型的比例为:10%,20%,30%,40%,现在选择一批人,如果需要这批人中,至少有一个是B型血的概率不小于90%,那么至少应该选择几个人? A.9 B.10 C.11 D:12 解析:题目要求,至少有一个是B型血,那么我们可以求:一个B型血也没... 阅读全文
posted @ 2012-11-12 20:57 Mr.Rico 阅读 (206) | 评论 (0) 编辑
摘要:1. 逆序对 问题:对于一个包含N个非负整数的数组A[1..n],如果有iA[j],则称(A[i] ,A[j])为数组A中的一个逆序对。 例如,数组(3,1,4,5,2)的逆序对有(3,1),(3,2),(4,2),(5,2),共4个。 方法一:最原始的方法,利用两重循环进行枚举。该算... 阅读全文
posted @ 2012-11-12 20:57 Mr.Rico 阅读 (207) | 评论 (0) 编辑
摘要:应聘算法工程师一面:1. 两个球分别沿不同轨道往下走,哪个先到?轨道如下:可以画出他们的v-t图像分析,左边的先到。2. 二叉搜索树,寻找大于等于a的那个元素?(a有可能不在树里面,寻找后继)寻找后继:如果节点x的右子树非空,那么其右子树的最左节点即是;如果节点x的右子树为空,且x有后继,那么其后继... 阅读全文
posted @ 2012-11-12 20:43 Mr.Rico 阅读 (73) | 评论 (0) 编辑
摘要:一.选择题: 1.下面程序的输出是 (C): char s[] = "lightinthebox"; printf("%s%d",s+5,sizeof(s)); A. lightinthbox13 B. inthebox13 C. inthebox14 D. lightint... 阅读全文
posted @ 2012-11-12 16:32 Mr.Rico 阅读 (616) | 评论 (0) 编辑
摘要:1. 给出树的中序:ABCDEFGH和后序ABEDCHGF,求出前序. 2. 给出"HELLO_HULU"的最小的二进制编码码长(使用霍夫曼编码) 3. 长度为12的有序数组,进行二分查找,平均所需要的查找次数是多少? 4. 一副扑克牌(去掉两张王牌), 每人随意摸两张牌,至少有... 阅读全文
posted @ 2012-11-12 16:14 Mr.Rico 阅读 (376) | 评论 (0) 编辑
摘要:1. 堆删除的复杂度 2. 彩票中奖:共33个红球, 16蓝球, 给出中奖号码红1,3,4,7,12,13和蓝4, 只要至少有4个红球猜中或猜中蓝球,就是中奖, 给出中奖概率: 3. 死锁的条件 4. 二叉搜索树删除根节点, 然后使用其左子树作为根节点,并且要维持二叉搜索树的... 阅读全文
posted @ 2012-11-12 15:53 Mr.Rico 阅读 (113) | 评论 (0) 编辑
摘要:多玩的三个大题:1:X和Y是两串长度一样的字符串,X和Y的差异值定义为在两个字符串上对应位置上不一样的字符的个数,比如“ant”和“art”的差异值是1.给定两个字符串A和B,A的长度小于或者等于B,你可以在A的前面或者后面任意添加字符,使得A和B长度一样。写一个方法求出最后能得到的最小的差异值是多... 阅读全文
posted @ 2012-11-11 22:49 Mr.Rico 阅读 (100) | 评论 (0) 编辑
摘要:1、数N在B进制下被称为magic数定义为所有位的数字都不一样,写函数bool isMaigc(int N, int B),保证2<=B<=10 2、一个树,将其中某个值为特定值的结点换成另一个结点 3、类似楼梯1步2步走,走法问题,但其中限定了几个楼梯不能走,问走法,描述计算过程并给出数... 阅读全文
posted @ 2012-11-11 22:38 Mr.Rico 阅读 (117) | 评论 (0) 编辑
摘要:1, 假设A上台阶,一次可以跨1层,2层或3层,问A上50层台阶,有多少种走法?假设A上台阶,一次可以跨1层,2层,3层.. 或m层,问A上n层台阶,有多少种走法?其中,m和n都是正整数,并且 m <= n, m <= 10, n <= 50请编程解决这个问题,并详细说明解题思路。答:到第n层,必然... 阅读全文
posted @ 2012-11-11 22:30 Mr.Rico 阅读 (146) | 评论 (0) 编辑
摘要:握手问题:一对夫妇邀请N-1对夫妇参加聚会(因此聚会上总共有2N人)。每个人都和所有自己不认识的人握了一次手。然后,男主人问其余所有人(共2N-1个人)各自都握了几次手,得到的答案全部都不一样。假设每个人都认识自己的配偶,那么女主人握了几次手?答案:握手次数只可能是从0到2N-2这2N-1个数。除去... 阅读全文
posted @ 2012-11-09 21:31 Mr.Rico 阅读 (346) | 评论 (0) 编辑
摘要:1. 利用stack计算整数表达式. 2. 硬币正面朝下, 第一次全部翻转, 第2次反转2的倍数(2,4,6,...), 第3次反转3的倍数(3,6,9...), 这样一直进行下去,操作100次, 问有多少正面朝上. 是1-2006之间的完全平方数,数的奇偶性,可以发现这个硬币号码的约数有几个,就会... 阅读全文
posted @ 2012-11-09 21:22 Mr.Rico 阅读 (239) | 评论 (0) 编辑
摘要:1. multiset操作这儿是对STL各个容器的相关介绍. http://www.cplusplus.com/reference/stl/multiset比较重要的操作就是: insert, erase, count和find2. memcpy实现void *Memcpy(void *dst, c... 阅读全文
posted @ 2012-11-09 21:10 Mr.Rico 阅读 (1447) | 评论 (0) 编辑
摘要:首先我们来一道最简单的题目作为引子 1、已知有一个随机函数rand_0_and_1_with_p(),它能以概率p产生0,以概率1 - p产生1,只使用该函数,设计一新的随机函数,要求以等概率产生1和0。 我们知道,运行rand_0_and_1_with_p()函数一次,那么P(0) = p... 阅读全文
posted @ 2012-11-08 15:54 Mr.Rico 阅读 (219) | 评论 (0) 编辑
摘要:Buddy System是一种经典的内存管理算法. 在Unix和Linux操作系统中都有用到. 其作用是减少存储空间中的空洞, 减少碎片, 增加利用率. 在Webus空间管理组件(WSM)中, 我也提供了Buddy System的实现, 关于这种算法的详细描述, 建议大家看经典教材 " 数据结构" ... 阅读全文
posted @ 2012-11-08 12:06 Mr.Rico 阅读 (988) | 评论 (0) 编辑
摘要:归并排序算法(mergesort)是将一个序列划分为同样大小的两个子序列,然后对两个子序列分别进行排序,最后进行合并操作,将两个子序列合成有序的序列.在合成的过程中,一般的实现都需要开辟一块与原序列大小相同的空间,以进行合并操作。这儿有比较全的排序算法:http://www.cnblogs.com/... 阅读全文
posted @ 2012-11-07 13:01 Mr.Rico 阅读 (329) | 评论 (0) 编辑
摘要:4.1 金刚坐飞机问题 4.2 瓷砖覆盖地板 4.3 买票找零(Catalan数) 4.4 点是否在三角形内 4.5 磁带文件存放优化 4.6 桶中取黑白球 4.7 蚂蚁爬杆 #if 0void calc_time(double len,double* pos,int n,doubl... 阅读全文
posted @ 2012-11-07 10:48 Mr.Rico 阅读 (97) | 评论 (0) 编辑
摘要:3.1. 字符串移位包含问题方法1:分别对字符串进行循环移1位,2位,3位…,来判断给定的字符串是否是其中一个字串.复杂度是O(n^3)方法2:这也是一种利用空间换时间的方法.代码如下, 为了简便实现,采用了C库中的字符串操作函数:#if 0/* * 3.1 */bool isRotate(char... 阅读全文
posted @ 2012-11-07 10:47 Mr.Rico 阅读 (83) | 评论 (0) 编辑
摘要:2.1 求二进制数数中1的个数2.2 不要被阶乘吓到2.3 寻找发帖”水王”这个问题就是寻找数组中总数超过一半的数.现在有一个数组,已知一个数出现的次数超过了一半,请用O(n)的复杂度的算法找出这个数。第1种方法:创建一个hash_map,key为数组中的数,value为此数出现的次数。遍历一遍数组... 阅读全文
posted @ 2012-11-07 10:34 Mr.Rico 阅读 (74) | 评论 (0) 编辑
摘要:1. 使CPU占有率画出正弦曲线linux下的代码:#if 0/* * Q1.1 */int get_tick_count(){ struct timeval tv; gettimeofday(&tv,NULL); return tv.tv_sec*1000000+tv.tv_us... 阅读全文
posted @ 2012-11-07 10:12 Mr.Rico 阅读 (110) | 评论 (0) 编辑
摘要:#if 0int GetFirstK(int* data, int length, int k, int start, int end);int GetLastK(int* data, int length, int k, int start, int end);int GetNumberOfK(i... 阅读全文
posted @ 2012-11-07 10:04 Mr.Rico 阅读 (131) | 评论 (0) 编辑
摘要:代码如下:#if 0bool g_bInputInvalid = false;bool CheckInvalidArray(int* numbers, int length){ g_bInputInvalid = false; if(numbers == NULL && length... 阅读全文
posted @ 2012-11-07 09:54 Mr.Rico 阅读 (79) | 评论 (0) 编辑
摘要:#if 0void MirrorRecursively(BinaryTreeNode *pNode){ if(pNode==0||pNode->m_pLeft==0&&pNode->m_pRight==0) return ; swap(pNode->m_pLeft,pNod... 阅读全文
posted @ 2012-11-07 09:43 Mr.Rico 阅读 (78) | 评论 (0) 编辑
摘要:第3章 高质量代码3中错误处理的方法面试题11: 数值的整数次方bool g_InvalidInput = false;bool equal(double num1, double num2);double PowerWithUnsignedExponent(double base, unsigne... 阅读全文
posted @ 2012-11-07 08:57 Mr.Rico 阅读 (89) | 评论 (0) 编辑
摘要:面试题1: 赋值运算符函数一般的写法是如下形式:CMyString& operator=(const CMyString& str){ if(this!=&str){ delete[] m_pData; int sz=... 阅读全文
posted @ 2012-11-07 08:47 Mr.Rico 阅读 (172) | 评论 (0) 编辑