网易、雅虎、小米、人人、微策略、纳拓笔试题(回忆版)
来源:互联网 发布:剑灵人女捏脸详细数据 编辑:程序博客网 时间:2024/05/16 03:17
网易互联网笔试
1、计算斐波那契数列的值,要求复杂度小于O(n^2)
2、位运算计算两个数的和
3、图的深度优先搜索(非递归算法)
4、检测CPU大小端
int checkSystem(){union check{int i;char ch;}c;c.i = 1;return c.ch == 1;}
5、有一个很大的文本文件,读出其中的K行(K很小,K行可以放入内存),设计算法,要求每一行读取的概率相等,写出核心算法,复杂度,以及算法原理
yahoo软件开发中心笔试
1、fork()函数的用法
2、字符串中最长的回文
3、(i<j)&& (a[i]>a[j])的数对
小米笔试
1、一个数组中有三个数字出现一次,其他出现两次,打印出三个中的一个
2、n个人,m对关系,最多有几个朋友圈
人人笔试
1、不带头节点循环单链表去连续的重复元素
2、十个加油站,挑选其中一个给其他的送一车油,就最短距离
3、杨辉三角 优化算法
uint64_t f(int x,int y){if(x==0 || y == 0)return 2;return f(x-1,y)+f(x,y-1);}int main(){cout<<f(8,8);return 0;}
微策略笔试题
1、魔法数:
bool isMagic(int N, int B) 将N转成B进制的数,如果转化后的数字各种数字最多出现一次,返回true
2、节点代替。树中各个节点的值不等
type struct Node{
int mKey;
Node* mparent;
Node* mpLeftChild;
Node* mpRightChild;
};
void replaceNode(Node* rpRoot, int iKey, Node* ipNode)
将根rpRoot所指的树中mKey = iKey的节点找出来,用ipNode节点代替
3、斐波那契数组。
可以简化成这样:27级台阶,每次可以蹦1级或者2级,但是不能经过第5,8,13级,求多少种方法
4、int getIthNum(int n, int l, int i)
在一个集合里,有n位二进制的数,把所有的n位二进制数中1的个数超过l个的元素踢去,剩下的元素组成一个集合,求第i个元素
5、double型数组A[],升序排列,给定M,对于i<j, |M-A[i][j]|最小的值
6、对于n(3~9),任意插入+ 或者 - ,使式子结果为0
例如:n = 7; 1- 2 3 - 4 5 + 6 7 = 0
对于不同的n,求所有满足结果的式子
Atrenta中国研发中心(上海纳拓)
1、FIFO,最多四个元素,设计一个FIFO
2、f(1) = 2, f(2) = 7; f(n)=2*f(n-1)-f(n-2)
3、有序单链表
1)删除值在[n,m]之间的元素
2)merge两个单链表
4、计算表达式的值:
struct Exper{
Code op;//+ - * / blank
int value;
Exper* arg0;
Exper* arg1;
}
计算表达式的值,例如: 1+2-3*5/6
5、计算两条直线的交点
struct Point{
int x;
int y;
};
直线要基于点的结构
6、有一个0、1组成的字符串,按下面规则输出:
1) 前面是字符串长度,再就是'sh,再就是16进制数
2) 最高位是符号位,如果为1则在最前面加1
例如:011010--->6'sh1a
7、元素小于10000个元素的集合S={s1,s2,s3,s4,....,sn},每个元素是一个集合,长度小于1000,判断某个s是不是在S中
例如S={{1,2,3},{1,2},{2,3}},s={2,3,1},s在S中
腾讯笔试
1、哪一种RAID不可靠
2、Class A{
public:
int m_a;
A():m_a(0){}
}
class B : public A
{
public:
int m_a;
B():m_a(2){}
}
A *a = new B()
cout<<a->m_a<<endl;
输出的结果是什么?(0)
3、C++四种类型转化符号
http://blog.sina.com.cn/s/blog_62b0a5e30100sxbs.html
4、腾讯游戏中玩的人最多的是QQ斗地主,有人说机器好就可以得到好牌,但是不是的,在服务器端,每次发牌前 服务器会洗牌,请设计一个洗牌算法 让牌能随机的打乱
#include<fstream>using namespace std;#include <ctime>int main(){int i,a[54],b[54],c[54];for (i =0;i<54;i++)a[i]=i+1;ofstream fout("Poker_num.txt",ios::out);int count=0;while (true){count++;for (i=0;i<54;i++)b[i]=a[i];for(i=0;i<54;i++)c[i]=i+1;for(i=53;i>=1;i--)swap(c[i], c[rand()%i]);for (i=0;i<54;i++)a[i] = b[c[i]-1];//cout<<count<<"\n";fout<<count<<"\n"; for (i=0;i<54;i++){ //cout<<a[i]<<" ";fout<<a[i]<<" ";} //cout<<"\n\n";fout<<"\n\n";}return 0;}
科大讯飞
1、静态函数与普通类的成员函数区别
成员函数与静态函数的区别
1、所有函数代码都在程序编译连接时放在一块,称为代码区,无论是静态还是非静态函数都一样,不存在 "构造一个类的对象(第一次构造对象)时,就会给成员函数(非静态成员函数)分配代码区空间 ",而是程序加载时,所有的代码已在内存空间存在. 只有函数中用到的局部变量才是函数调用时分配空间.
2、静态成员函数和成员函数之间根本的区别是:静态成员函数实际上是一个全局函数,不依赖一个类的对象.函数定义时之所以把静态成员函数定义在类中,是一种弱逻辑. 普通成员函数依赖一个类的对象,也就是它有this指针,必须指向一个类的对象.
3、建立类的对象时只是给成员变量分配空间,析构时也只回收这些空间,代码段里的函数以及静态函数和变量都是在程序结束后回收。
内联函数与普通函数的区别
普通函数在编译的过程中由编译器将函数体放入代码段,在调用函数过程中先进行参数的压栈,然后根据函数的调用地址调用函数,并执行,函数返回后执行出栈操作,这样就会有一个调用的过程,会有时间的消耗。内联函数可以避免这样的消耗,一个函数申明为内联函数,在编译的过程中,编译器会将函数体代码插入函数调用处,这样虽然会增加代码段的空间,但是可以避免时间上的消耗,提高了效率。
2、“参数不同但是可以是相同的处理逻辑”
2、将一个字节逆序
#include <stdio.h>unsigned rev(unsigned X){ X=(X&0x55)<<1 | (X&0xAA)>>1;//ABCDEFGH → BADCFEHGX=(X&0x33)<<2 | (X&0xCC)>>2;//BADCFEHG → DCBAHGFEX=(X&0x0F)<<4 | (X&0xF0)>>4;//DCBAHGFE → HGFEDCBAreturn X; }int main(){int a;scanf("%x",&a);printf("%x",rev(a));return 0;}
3、一个类不可以继承,可以实例化,且仅能实例化有限次
在C++ 中没有final 这个关键字,要实现这个要求还是需要花费一些精力。
首先想到的是在C++ 中,子类的构造函数会自动调用父类的构造函数。同样,子类的析构函数也会自动调用父类的析构函数。要想一个类不能被继承,我们只要把它的构造函数和析构函数都定义为私有函数。
class FinalClass1{public:static int count ;//实例化次数public : static FinalClass1* GetInstance() { if(count<=0) return 0; count--; return new FinalClass1; } static void setCount(int n) { count = n; } static void DeleteInstance( FinalClass1* pInstance) { delete pInstance; pInstance = 0; } private : FinalClass1() {} ~FinalClass1() {}};//////////////////////测试函数////////////////////////////////////////////////////////////#include<stdio.h>int FinalClass1::count=0; void main(){ FinalClass1::setCount(3); FinalClass1 *f1 = FinalClass1::GetInstance(); FinalClass1 *f2 = FinalClass1::GetInstance(); FinalClass1 *f3 = FinalClass1::GetInstance(); if (f3==NULL) printf("f3 NULL\n"); else printf("f3 Not NULL\n"); FinalClass1 *f4 = FinalClass1::GetInstance(); if (f4==NULL) { printf("f4 NULL\n"); } FinalClass1 *f5 = FinalClass1::GetInstance(); if (f5==NULL) { printf("f5 NULL\n"); }}
4、带空格的字符串,先输出字符串再输出字符
//注意:用gets接受输入的字符串void Output(char *str){char *p = str;int count=0;while (*str != '\0'){if (*str == ' ')count++;str++;}while (count--){printf(" ");}while (*p != '\0'){if (*p != ' ')printf("%c",*p);p++;}}
百度笔试题
简答题:
1、列举几种常用的Hash算法,说明Hash算法的用途。
http://blog.csdn.net/hupanfeng/article/details/6221944
http://yuhuafx.blog.hexun.com/58369610_d.html#
2、OSI模型有哪几层,HTTP协议工作在哪一层上
3、简述一个C语言程序运行所必须的东西和执行过程
算法题:
1、一车苹果,每3个装一袋剩2个,每5个装一袋剩3个,每7个装一袋剩2个,求满足此条件的N个解
void GetNResult(int N, int* A){int count=0;for (int i=1;count < N; i++){if ((21*i-1)%5 == 0)A[count++]=21*i+2;}}
2、用递归的算法,计算一个字符串中最长连续字符的问题。例如:aaabbccc→3,abbc→2
int getNum(char *str, int count, int& M){if (*str == '\0')return M;char temp = *str;if (*(++str) == '\0'){if (count>M)M = count;return M ;}if (*str == temp)count++;else{if (count>M)M = count;count = 1;}getNum(str,count, M);}
http://blog.csdn.net/arduousbonze/article/details/4293626
3、大树组问题。一个有序的超过100亿个元素的整型数组,将其分为若干段,每个段的元素个数少于20,将每个段内数据打乱,这样形成了一个新的数组,请将新数组排序,使用效率高的排序算法,分析算法复杂度。
设计题:
有关数据库的设计题。
大众点评笔试题目
1、给定一个正整数,输出分解质因数的表达式。例如,输入90,输出:90=2*3*3*5
int isPrime(int N){if (N == 1)return 0;if (N == 2 || N == 3)return 1;int m = sqrt(N);for (int i = 2; i <= m; i ++){if (! (N % i))return 0;}return 1;}int PrimeArray(int N, int *A){int i,j=0;for ( i=2; i < N; i++){if (isPrime(i))A[j++] = i;}return j;}void OutPut(int N){if (isPrime(N))printf("%d=%d\n",N,N);else{int m = N / 2;int *A;A = (int *)malloc(m*sizeof(int));int num = PrimeArray(N,A);printf("%d=",N);for (int i=0;i<num;){if (N % A[i] == 0){N = N / A[i];if (N == 1){printf("%d\n",A[i]);break;}elseprintf("%d*",A[i]);i = 0;}elsei++;}}}
2、计算一个树的深度,根的深度为1。函数原型为:
int TreeDepth(BinaryTree *pTreeNode);
struct BinaryTree{int data;BinaryTree* pLeftChild;BinaryTree* pRightChild;};int TreeDepth(BinaryTree *pTreeNode){int m,n;if (!pTreeNode)return 0;m = TreeDepth(pTreeNode->pLeftChild);n = TreeDepth(pTreeNode->pRightChild);return (m > n ? m : n) + 1;}
3、给定一个字符串,找出里面最长的连续不相同字符的个数。例如aadasddfasf,它的最长长度为:4,dfas。
- 网易、雅虎、小米、人人、微策略、纳拓笔试题(回忆版)
- 网易游戏2014年校招笔试题(回忆版)
- 人人网2011笔试题(C++方向)回忆
- 20091205中国人民银行笔试题(回忆版)
- 某次笔试题回忆版
- 360笔试题回忆版
- 20130321 网易实习招募 笔试回忆
- 新鲜的某公司笔试题(回忆版)
- 华仪智能 嵌入式软件笔试题 (回忆版)
- 2015腾讯软开类笔试题(回忆版)
- 四月份遇到的一些笔试题(回忆版一)
- 雅虎C#笔试题
- 雅虎C#笔试题
- 雅虎笔试题
- 雅虎笔试题
- 小米笔试题-小米Git
- 2013ebay笔试真题回忆版
- IGT视频算法笔试题回忆版
- 迷宫问题(DFS实现)
- MFC重写CView的getDocument()函数没有实现多态,只是静态联编
- 美国到底抓住了华为什么痛脚?
- LINUX交叉编译
- 关于地址栏传递中文参数的乱码的终极解决方案
- 网易、雅虎、小米、人人、微策略、纳拓笔试题(回忆版)
- 第七周上机任务之最大值与最小值
- 2.6.18-2内核中对S3C2440的引导启动分析
- 关于WPF体系结构的一些了解
- noip2012 阅读程序1
- 一个学生如何成为最优秀的程序员?
- noip2012 阅读程序2
- javascript 常用操作
- noip2012 阅读程序3