面试集锦
文章平均质量分 65
liuzhanchen1987
这个作者很懒,什么都没留下…
展开
-
面试集锦之---Top-K问题(百度面试题)
百度面试题: 搜索引擎会通过日志文件把用户每次检索使用的所有检索串都记录下来,每个查询串的长度为1-255字节。 假设目前有一千万个记录(这些查询串的重复度比较高,虽然总数是1千万,但如果除去重复后,不超过3百万个。一个查询串的重复度越高,说明查询它的用户越多,也就是越热门。),请你统计最热门的10个查询串,要求使用的内存不能超过1G。解题思路:step1:查询统计原创 2012-08-18 21:47:40 · 2744 阅读 · 0 评论 -
2012年九月六号阿里巴巴面试
1、介绍一下你自己。2、介绍一下你认为做的最好的一个项目。3、请用五分钟的时间把你做的项目的流程图画一下。4、项目中你遇到的难点是什么?怎么解决的?5、项目中你认为那个技术是你最拿手的?6、介绍一下HTTP协议7、如何把一个大的日志文件哈希到不同的哈希表中,这些哈希表的存储格式是什么?8、linux网络编程,画一个c/s通信的流程9、多线程了解多少,做过的项目中有没原创 2012-09-08 09:40:12 · 4191 阅读 · 16 评论 -
IBM笔试题
1.以下代码输出结果是intp=1;int q=-1;int i=-p++-q;printf("%d \n",i);答:结果是0。i=-p++-q;相当于i=-p-q;p++;最后p=2,q=-1。因为-的优先级大于++,2。以下代码输出结果是什么?注:原题为第三列代码,前两列为作为对照添加的代码#includeusing namespacest原创 2012-09-16 11:08:22 · 2187 阅读 · 0 评论 -
网罗业内大牛对面试嵌入式者的考察题目
从面试者的角度来讲,一个测试也许能从多方面揭示应试者的素质:最基本的,你能了解应试者C语言的水平。不管怎么样,看一下这人如何回答他不会的问题也是满有趣。应试者是以好的直觉做出明智的选择,还是只是瞎蒙呢?当应试者在某个问题上卡住时是找借口呢,还是表现出对问题的真正的好奇心,把这看成学习的机会呢?我发现这些信息与他们的测试成绩一样有用。有了这些想法,我决定出一些真正针对嵌入式系统的考题,希望这些令原创 2012-09-18 09:02:14 · 2259 阅读 · 0 评论 -
类成员函数的重载、覆盖和隐藏区别?
答案:a.成员函数被重载的特征:(1)相同的范围(比如在同一个类中);(2)函数名字相同;(3)参数不同;(4)virtual 关键字可有可无。b.覆盖是指派生类函数覆盖基类函数,特征是:(1)不同的范围(分别位于派生类与基类);(2)函数名字相同;(3)参数相同;(4)基类函数必须有virtual 关键字。c.“隐藏”是指派生类的函数屏蔽了与其同名的基原创 2012-09-18 10:51:26 · 8296 阅读 · 1 评论 -
百度笔试题目
1)此题10分 对任意输入的正整数N,编写C程序求N!的尾部连续0的个数,并指出计算复杂度。如:18!=6402373705728000,尾部连续0的个数是3。 (不用考虑数值超出计算机整数界限的问题) 答:此题可以转化成寻找能够被5整除和被10整除的数,然后统计该数中末尾0的个数和能被5整除的次数。#includeusing namespace std;int NumofZe原创 2012-09-17 15:46:57 · 1919 阅读 · 1 评论 -
2012年10月9号阿里巴巴笔试(c++)
1.BMP格式图像,图像深度为24位,一个512*1024的点阵图像所占空间是多少?答:(24/8)B*512*1024=1.5M2.十进制数字-3转换为3进制的补码结果是多少?答:-3可以表示为:符号位负号可表示为1, 3为十进制,可以表示为13,转换成三进制为110(符号位不变,3转变为10),补码的计算是源码的反码加1,110的反码为112(最高位为符号位不变,10反码为原创 2012-10-11 13:50:00 · 3200 阅读 · 7 评论 -
分享一道笔试题
打印一个N*N的方阵,N为每边字符的个数( 3〈N〈20 ),要求最外层为"X",第二层为"Y",从第三层起每层依次打印数字0,1,2,3,...例子:当N =5,打印出下面的图形:X X X X XX Y Y Y XX Y 0 Y XX Y Y Y XX X X X X 分析:该矩阵是一个原点对称矩阵,只要求出左上角的四分之一矩阵然后通过映射就可以。具体代码如原创 2012-09-20 11:01:52 · 1925 阅读 · 1 评论 -
C++类型转换
C++的类型转换符 使用标准C++的类型转换符:static_cast、dynamic_cast、reinterpret_cast、和const_cast。1static_cast用法:static_cast(expression) 该运算符把 expression 转换为 type-id 类型,但没有运行时类型检查来保证转换的安全性。它主要有如下几种转载 2012-10-12 11:03:47 · 1886 阅读 · 0 评论 -
2012年10月10号PPS笔试题目(c++开发)
1、智力题:有一堆扑克牌(具体哪个花色有哪些牌忘了),老师抽出一张来之后,告诉学生A这张牌的花色,告诉B这张牌的大小。然后A说:我不知道这张牌是什么。B说:我就知道你不知道这张牌的大小。A说:现在我知道了。B说:现在我也知道了。问:这张牌到底是什么?2.有11个乒乓球,有一个是伪劣产品,该产品较轻,现在有个没有砝码的天平,至多只称三次就能找出伪劣的产品。求怎么称。先左右各五个,如果一样原创 2012-10-11 15:16:00 · 5041 阅读 · 9 评论 -
四种进程或线程同步互斥的控制方法
四种进程或线程同步互斥的控制方法1、临界区:通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问。 2、互斥量:为协调共同对一个共享资源的单独访问而设计的。 3、信号量:为控制一个具有有限数量用户资源而设计。 4、事 件:用来通知线程有一些事件已发生,从而启动后继任务的开始。临界区(Critical Section)(同一个进程内,实现互斥)保证在某一时刻转载 2012-10-13 16:32:50 · 1594 阅读 · 0 评论 -
50道c++面试题
0. static有什么用途?(请至少说明两种)1).限制变量的作用域,全局变量加上static之后全局变量的作用域是定义该变量的单个文件,而不加static的全局变量可以被同一个工程中的其他文件引用2).设置变量的存储域。局部变量加上static之后变量的存储区由栈变为全局区(也可以成为静态区)1. 引用与指针有什么区别?1) 引用必须被初始化,指针不必。2) 引用初始化以后不能原创 2012-09-20 16:46:25 · 4077 阅读 · 3 评论 -
分享一道类继承的笔试题目
#includeusing namespace std;class A{public: virtual void fun1() { cout<<"A fun1"<<endl; } void fun2() { cout<<"A fun2"<<endl; }};class B :public A{public: void fun1原创 2012-10-15 21:39:57 · 2379 阅读 · 1 评论 -
2012九月3号阿里巴巴笔试题目
第一题、5亿个不重复的商品的ID(每一个商品的ID是64位),现在有一个存放了10亿个商品ID(商品的ID会有重复)的日志文件,请设计一种方法找出5亿个商品中没有出现在日志文件中的商品。假设所能使用的内存为2G。2G的文件只能存放2.5亿的商品ID,因为5亿商品大小为5*10^8*8B=4G。可以考虑将5亿商品ID哈希到四个文件中A[4]。然后将10亿个商品哈希到另外四个文件中B[4]。每次读原创 2012-09-08 14:10:31 · 4415 阅读 · 4 评论 -
面试集锦--函数的按引用返回与按地址返回
函数值按引用返回常见的一个错误:先来看一个错误代码:#includeusing namespace std;class A{private: int a;public: A(int num):a(num){cout<<"构造函数!"<<endl;} A(A &b) { a=b.a; cout<<"复制构造函数!"<<endl; } ~A() { cout原创 2012-08-25 19:06:33 · 925 阅读 · 0 评论 -
c++如何传递动态内存
先看一段代码:#includeusing namespace std;void GetMe(char *p,int num){ p=(char*)malloc(sizeof(char)*num); }int main(){ char *str=NULL; GetMe(str,100); strcpy(str,"Hello!"); cout<<str<<endl; re原创 2012-08-29 09:49:32 · 2213 阅读 · 1 评论 -
c++中传递字符指针容易犯的错误
先看一段容易犯错的代码段:#includeusing namespace std;char* GetMe(){ char st[]="hello word!"; return st; }int main(){ char *str; str=GetMe(); cout<<str<<endl; return 0;}该段代码可能输出正确结果,也可能输出错误结果。原原创 2012-08-29 10:29:31 · 3294 阅读 · 0 评论 -
静态成员变量与静态成员函数
静态成员变量不专属于某个对象,他属于整个类中所有对象的成员变量,在实例化一个对象的时候可能无法给它开辟内存,因此我们需要在全局为他开辟内存。#includeusing namespace std;class A { public: static int count; A(int i):key(i) { count++; cout<<"构造函数!"<<endl;原创 2012-08-27 14:54:34 · 1017 阅读 · 0 评论 -
关于创建对象时调用构造函数和析构函数的若干问题
先看一段代码输出的结果:#includeusing namespace std;class A{private: int b;public: A(int num):b(num){cout<<"带参构造函数!"<<endl;} A(){cout<<"不带参构造函数!"<<endl;} ~A(){cout<<"析构函数!"<<endl;}};A fun(A c){ r原创 2012-08-29 22:04:36 · 2572 阅读 · 0 评论 -
算法导论第32章——字符串匹配问题(KMP算法)
下面代码列举了普通字符串匹配算法和KMP算法。KMP算法原理见算法导论第32章。代码中有简单的注释可以帮助理解:#include#includeusing namespace std;#define MAX 10000//KMP算法时间复杂度为O(n+m),其中n为str的长度,m为pat的长度void kmp(string str,string pat){ boo原创 2012-09-01 11:10:41 · 3049 阅读 · 0 评论 -
类的内存对齐(类的sizeof)
1、空类的sizeof是1。空类是指没有成员的类,类中的函数不占空间,除非是虚函数。如: class A { public: A(){} ~A(){} void fun(){} };sizeo转载 2012-08-24 10:30:51 · 1453 阅读 · 1 评论 -
typedef和#define的区别
1) #define是预处理指令,在编译预处理时进行简单的替换,不作正确性检查,不关含义是否正确照样带入,只有在编译已被展开的源程序时才会发现可能的错误并报错。例如:#define PI 3.1415926 程序中的:area=PI*r*r 会替换为3.1415926*r*r 如果你把#define语句中的数字9 写成字母g 预处理也照样带入。 2)typedef是在编译时处理转载 2012-08-23 14:01:10 · 788 阅读 · 0 评论 -
什么是C++ traits
Traits技术可以用来获得一个 类型 的相关信息的。 首先假如有以下一个泛型的迭代器类,其中类型参数 T 为迭代器所指向的类型:template typename T>class myIterator{...};当我们使用myIterator时,怎样才能获知它所指向的元素的类型呢?我们可以为这个类加入一个内嵌类型,像这样:template typename T转载 2012-08-24 14:04:09 · 866 阅读 · 0 评论 -
面试集锦--09网易校园招聘笔试题
第一部分(必做): 计算机科学基础1. (单选)软件设计中模块划分应该遵循的准则是:A.低内聚低耦合 B.高内聚低耦合 C.低内聚高耦合 D.高内聚高耦合答案:B高内聚低耦合,是软件工程中的概念,是判断设计好坏的标准,主要是面向对象的设计,主要是看类的内聚性是否高,耦合度是否低。高内聚 内聚就是一个模块内各个元素彼此结合的紧密程度,高内聚就是一个模块内各个元素彼此结合的紧密程度高原创 2012-08-24 14:24:32 · 2436 阅读 · 0 评论 -
面试集锦--构造函数初始化顺序问题
从 C++ 托管到 Visual C++,类构造函数的初始化顺序已经发生变化。构造函数初始化顺序的比较在 C++ 托管扩展中,构造函数的初始化是按以下顺序进行的:如果存在基类的构造函数则调用该构造函数。计算该类的初始化列表。执行类构造函数的代码正文。此执行顺序与本机 C++ 编程遵守相同的约定。 新 Visual C++ 语言规定了 CLR 类的原创 2012-08-25 20:31:23 · 1110 阅读 · 1 评论 -
const对象与const成员函数
const对象只能调用const成员函数:#includeusing namespace std;class A { public: void fun()const { cout<<"const 成员函数!"<<endl; } void fun() { cout<<"非const成员函数 !"<<endl; }}; int main(){ con原创 2012-08-26 21:21:17 · 2566 阅读 · 0 评论 -
面试集锦--堆与栈的区别
1、在申请方式上的不同:栈是系统自动分配的,使用完后系统自动删除。堆是手动分配,使用完后手动删除。2、系统响应的不同:只要栈的剩余空间大于所申请的空间,系统就会为程序提供内存,否则系统提示栈溢出错误。但是系统收到堆申请空间,系统会遍历用于记录空闲内存的链表,直到找到满足大小的内存空间,,当找到后,系统就从内存空闲链表中删除,将该段内存分配给堆,同时在该段内存中的首地址处标记堆的大小。如果这原创 2012-08-25 14:39:06 · 1193 阅读 · 0 评论 -
分享一道笔试题目--关于static和extern变量的问题
#include using namespace std;int count = 3;int main(){ int i, sum, count = 2; //输出main函数的count即为2 //cout<<count<<endl; for(i = 0, sum = 0; i < count; i += 2,count++) { //输出main函数的count即为每次循原创 2012-10-27 19:04:25 · 2157 阅读 · 0 评论