摘要:
2014-04-25 20:47题目:分配一个二维数组,尽量减少malloc和free的使用次数,要求能用a[i][j]的方式访问数据。解法:有篇文章讲了六种new delete二维数组的方式,其中最后一种灰常高效。链接在此,解法六是巧妙的,不过里面的说法不对,而且还不标明转载原地址,可见这些技术网... 阅读全文
摘要:
2014-04-25 20:37题目:请设计一个字节对齐的malloc函数,配套上对应的free函数。要求这个函数分配出的内存块儿的首地址是某个值n的整数倍,n是2的整次幂,比如128、1024之类的。解法:默认的malloc分配的首地址是不确定的,所以我们需要多分配一些内存,才能保证其中至少有一个... 阅读全文
摘要:
2014-04-25 20:27题目:实现一个能够通过引用计数来实现自动回收数据的智能指针,用C++,不是java。解法:这题真心牛,我的第一反应是发呆,因为对引用计数的了解仅限于这个名词,完全没办法建立模型。之后仔细把题解读了两遍之后,照样敲了一遍代码。然后边调试边阅读才有了些理解。引用计数有四点... 阅读全文
摘要:
2014-04-25 20:18题目:给定一个Node结构体,其中包含数据成员和两个Node*指针指向其他两个Node结构(还不如直接说这是个图呢)。给你一个Node指针作为参数,请做一份深拷贝作为结果返回。解法:BFS搞定,需要检测重复节点以防止死循环,用一个哈希表可以做大。这样肯定只能找出一个完... 阅读全文
摘要:
2014-04-25 20:07题目:为什么基类的析构函数必须声明为虚函数?解法:不是必须,而是应该,这是种规范。对于基类中执行的一些动态资源分配,如果基类的析构函数不是虚函数,那么 派生类的析构函数在自动调用的时候,不会调用基类的析构函数,这样就会造成资源未释放引起的内存泄漏。代码: 1 // 1... 阅读全文
摘要:
2014-04-25 19:59题目:C的关键字volatile有什么用?解法:搞硬件设计的人好像更关注这个关键字。volatile本身是易变的意思,应该和persistent有反义词关系吧。说一个变量或是函数是易变的,就是说不知道会发生什么变化,所以不要编译器按规则进行优化处理,这就是我对此关键字... 阅读全文
摘要:
2014-04-25 19:50题目:深拷贝和浅拷贝有什么区别?如何应用?解法:深拷贝传值,浅拷贝传引用。java里对此做了限制,而C++里面用起来更自由。大结构不宜传值,因为拷贝过程效率低。代码: 1 // 13.4 What's deep copy and shallow copy? Expai... 阅读全文
摘要:
2014-04-25 19:42题目:C++中虚函数的工作原理?解法:虚函数表?细节呢?要是懂汇编我就能钻的再深点了。我试着写了点测大小、打印指针地址之类的代码,能起点管中窥豹的作用,从编译器的外部感受下虚函数表、虚函数指针的存在。代码: 1 // 13.3 How does virtual fun... 阅读全文
摘要:
2014-04-25 19:29题目:对比一下哈希表和STL中的map的区别,哈希表如何实现?如果数据规模比较小,可以用什么来代替哈希表?解法:哈希表可以理解为一堆桶,每个桶都有唯一的id,桶里可以存至少一个元素;而STL的map是一棵平衡二叉搜索树,每个节点存一个元素。还有很多细节要说,如果on-... 阅读全文
摘要:
2014-04-25 19:13题目:用C++写一个读取文件倒数K行的方法。解法:因为是要取倒数K行,所以我的思路是一行一行地读。过程中需要保存一个长度为K的链表,每次新读到一行都将表头节点移到表尾,如此滚动直到文件结束。最后表头节点中存的字符串就是倒数第K行,依次输出就是倒数K行了。不过当时做这题... 阅读全文
摘要:
2014-04-25 00:53题目:你要如何测试一个分布式银行系统的ATM机?解法:ATM是Automatic Teller Machine,取钱的。我想了半天,没找到什么很清晰的思路,也许是因为自己不常取款吧。看了书后解答之后,觉得也不算很靠谱的答案,所以认为这题比较扯淡了。代码:1 // 12... 阅读全文
摘要:
2014-04-25 00:41题目:怎么测试一支笔?(Pen?您老说的是钢笔?)解法:这种简约而不简单的题目,实在是面试官最喜欢,面试者最头疼的类型了。面试官可以只花三秒,以一种灰常高贵冷艳的语气甩出这道题。然后头疼脑热的就是你了。怎么做呢?Brainstorming,找特征,分解问题,关联问题和... 阅读全文
摘要:
2014-04-25 00:35题目:没有专门的测试工具,你要如何对一个网页进行压力测试?解法:拼手速,拼电脑数量呗。快捷键+复制粘贴网址,狂搞一番。话说回来,有脚本语言的情况下,直接写个脚本来模拟大量的访问行为肯定是更合理的,手速再快比不过程序。没有工具时,应该想着如何制造工具,而不是赤手空拳去搞... 阅读全文
摘要:
2014-04-24 23:28题目:玩象棋游戏,你要设计一个bool型的方法来检测一个棋子能否移动到指定位置。解法:不同的棋子有不同的移动规则,那么应该采取棋子基类实现接口,各个棋子子类来实现的方式。棋子除了类型之外,还必须要记录当前位置,作为判断的依据。而要移到的位置,则作为参数传给方法。不过这... 阅读全文