04 2011 档案

摘要:清晰是革命的本钱2011-04-25腾讯二面终笔试:笔试觉得做的还可以一面:凸显出写代码能力差,慌乱,没有整体清晰思路。对OS,linux不熟可能也是败笔二面:讲述自己做的项目,另问2亿张图片如何存储?如何将项目与此问题结合起来。说了一通,表现出天马星空,逻辑性差。凸显问题:把当前问题应用用该项目的解决办法并未最佳,在讲述之后应予以说明,另有更好的方法。第二,可以参考Facebook的图片存储方案。暴露:天马行空:表现出逻辑性差,讲述模糊晰,不能给对方一个清晰的认识基础不扎实:双链表的合并写出的代码乱七八糟,考虑问题不全面不自信,或者轻浮。真诚对待“你”时刻要体现出团队合作的意识解决:key- 阅读全文
posted @ 2011-04-29 23:04 ForA 阅读(613) 评论(0) 推荐(0)
摘要:最常用的设计模式设计模式通常是对于某一类的软件设计问题的可重用的解决方案,将设计模式引入软件设计和开发过程,其目的就在于要充分利用已有的软件开发经验。最常用的设计模式根据我的经验我把我经常用到的设计模式在这里做个总结,按照我的经验,它们的排序如下:1)单件模式、2)抽象工厂模式和工厂模式、3)适配器模式、4)装饰模式、5)观察者模式、6)外观模式 其他模式目前还很少用到。单件模式这是用的最多的模式,每一个正式的软件都要用它,全局配置、唯一资源、还有一个就是所有的工厂我都设计为单件模式,因此它的使用量大于工厂模式和抽象工厂模式之和。是用来创建一个需要全局唯一实例的模式。只是需要纠正一点。sing 阅读全文
posted @ 2011-04-29 15:20 ForA 阅读(35570) 评论(1) 推荐(4)
摘要:strok的实现,分割字符串char *xl_strtok(char *s, const char *dm) { static char *last; char *tok; if(s == NULL) s = last; if(s == NULL) return NULL; tok = s; while (*s != '\0') { while (*dm) { if (*s == *dm) { *s = '\0'; last = s + 1; break; } s++; } } return tok;} 阅读全文
posted @ 2011-04-28 18:22 ForA 阅读(378) 评论(0) 推荐(0)
摘要:1. 给你一个长度为N的链表。N很大,但你不知道N有多大。你的任务是从这N个元素中随机取出k个元素。你只能遍历这个链表一次。你的算法必须保证取出的元素恰好有k个,且它们是完全随机的(出现概率均等)。 解:先选中前k个,从第k+1个元素到最后一个元素为止,以k/i(i=k+1, k+2,...,N)的概率选中第i个元素,并且随机替换掉一个原先选中的元素,这样遍历一次得到k个元素,可以保证完全随机选取。这个算法叫做蓄水池抽样,在某门课上听到的,证明起来也不是很复杂。 证:最后一个元素选中概率=K/N,倒数第2个元素选中概率=(K/N-1)*(1-(K/N)*(1/K))=K/N,以此类推……2. 阅读全文
posted @ 2011-04-26 20:48 ForA 阅读(505) 评论(0) 推荐(0)
摘要:C++代码,发现异常没那么简单,使用须谨慎。翻阅了《Effective C++》 《More Effective C++》《Inside The C++ Object Model》的相关章节,大概弄明白了一些东东,总结在本文。本文不是总结普适的C++异常机制,还没有这个内力哈! 主要是结合构造函数和析构函数,来总结异常对他俩的影响。构造函数和析构函数本来就很折磨脑筋,再叠加上异常机制,确实比较复杂。异常与析构函数本节内容较少,因此先说。构造函数放到下一节讨论。绝对不要将异常抛出析构函数这一条在《Effective C++》 《More Effective C++》中均被作为独立章节讲解,可见其 阅读全文
posted @ 2011-04-26 20:09 ForA 阅读(599) 评论(0) 推荐(0)
摘要:问的问题很多,以下是脑中还有印象的面试题。一面:为什么应聘测试开发的职位?介绍下你的keyvalue存储项目。这个项目有什么改进的思路,如何做?分布式!window进程间通信的方式WPF有什么缺点编程题:如何判断一个数组的前K大的数假设client与server的应用程序进行通信时发生故障了(原来没有问题,现在不能通信了),而client打开浏览器可以正常访问互联网,你是如何采取方法,最快找出问题的所在为什么要选嵌入式开发这个职位?看好它的前景曝露出的问题:在不了解面试官需求的情况下,多问几个为什么。二面:你给自己的C++水平打多少分(满分10分),为什么虚析构函数可能抛出异常吗?如果不可以, 阅读全文
posted @ 2011-04-26 19:48 ForA 阅读(1475) 评论(0) 推荐(0)
摘要:以 ssize_t write(int filedes, const void *buff, size_t nbytes)和size_t fwrite(const void *ptr, size_t size, size_t nobj, FILE *fp)来讲讲自己对unix系统下带缓存的I/O和不带缓存的I/O的区别。首先要清楚一个概念,所谓的代缓存并不是指上面两个函数的buff参数,而是指unix系统在内核中所设的缓冲存储器。当将数据写到文件上时,内核先将该数据写到缓存,如果该缓存未满,则并不将其排入输出队列,直到缓存写满或者内核再次需要重新使用此缓存时才将其排入输入队列,待其到达对首,在 阅读全文
posted @ 2011-04-25 22:03 ForA 阅读(1039) 评论(0) 推荐(0)
摘要:按层次遍历树中结点void LayerOrderTraverse(BiNode* T){ Queue<Node *> q; if(NULL == T) return; q.push(T); while(!q.isEmpty()) { T = q.pop(); printf("%d ",T->data); if(T->lchild) q.push(T->lchild); if(T->rchild) q.push(T->rchild); }} 阅读全文
posted @ 2011-04-24 23:09 ForA 阅读(168) 评论(0) 推荐(0)
摘要:淘宝开源Key/Value结构数据存储系统Tair技术剖析编辑点评:Tair在淘宝开源平台上正式对外开源,本文较详细地介绍了Tair提供的功能及其实现的细节,希望对大家进一步了解Tair有所帮助。 Tair是由淘宝网自主开发的Key/Value结构数据存储系统,在淘宝网有着大规模的应用。您在登录淘宝、查看商品详情页面或者在淘江湖和好友“捣浆糊”的时候,都在直接或间接地和Tair交互。 Tair于2010年6月30号在淘宝开源平台上正式对外开源,本文较详细地介绍了Tair提供的功能及其实现的细节,希望对大家进一步了解Tair有所帮助。 Tair的功能 Tair是一个Key/Value结构数据的解 阅读全文
posted @ 2011-04-23 20:51 ForA 阅读(421) 评论(0) 推荐(0)
摘要:IBM招聘面试题1.一个粗细均匀的长直管子,两端开口,里面有4个白球和4个黑球,球的直径、两端开口的直径等于管子的内径,现在白球和黑球的排列是wwwwbbbb,要求不取出任何一个球,使得排列变为bbwwwwbb。2.一只蜗牛从井底爬到井口,每天白天蜗牛要睡觉,晚上才出来活动,一个晚上蜗牛可以向上爬3尺,但是白天睡觉的时候会往下滑2尺,井深10尺,问蜗牛几天可以爬出来? (8tian)3.在一个平面上画1999条直线最多能将这一平面划分成多少个部分?(2+2+3+...+1999)4.在太平洋的一个小岛上生活着土人,他们不愿意被外人打扰,一天,一个探险家到了岛上,被土人抓住,土人的祭司告诉他,你 阅读全文
posted @ 2011-04-07 23:54 ForA 阅读(1043) 评论(0) 推荐(0)
摘要:调度算法是指:根据系统的资源分配策略所规定的资源分配算法。一、先来先服务和短作业(进程)优先调度算法 1. 先来先服务调度算法。先来先服务(FCFS)调度算法是一种最简单的调度算法,该算法既可用于作业调度, 也可用于进程调度。FCFS算法比较有利于长作业(进程),而不利于短作业(进程)。由此可知,本算法适合于CPU繁忙型作业, 而不利于I/O繁忙型的作业(进程)。 2. 短作业(进程)优先调度算法。短作业(进程)优先调度算法(SJ/PF)是指对短作业或短进程优先调度的算法,该算法既可用于作业调度, 也可用于进程调度。但其对长作业不利;不能保证紧迫性作业(进程)被及时处理;作业的长短只是被估算出 阅读全文
posted @ 2011-04-05 19:34 ForA 阅读(17937) 评论(1) 推荐(1)
摘要:N个鸡蛋放到M个篮子中,篮子不能为空,要满足:对任意不大于N的数量,能用若干个篮子中鸡蛋的和表示。写出函数,对输入整数N和M,输出所有可能的鸡蛋的放法。比如对于9个鸡蛋5个篮子解至少有三组:1 2 4 1 11 2 2 2 21 2 3 2 1思路:C/C++ code int F( int p[], int n, int m ){ if( n < m ) return 0; if( m == 1 ) return !( 1 - n ); int sum = 0; for( int i = ( n - 1 ) / ( m - 1 ); i <= ( n + 1 ) / 2; i++ 阅读全文
posted @ 2011-04-05 10:06 ForA 阅读(608) 评论(0) 推荐(0)