创新工场笔试题2013年校园招聘
http://blog.csdn.net/huangxy10/article/details/8026464
时间:2012年9月27日 地点:鼎好大厦10层
考试时长:1小时
一, 选择题
1,求zd结果
[cpp] view plaincopyprint?
#define N 3
#define Y(n) ((N+1)*n)
z = 2*(N+Y(5+1));
2,有关多线程,多进程的描述错误的是
A, 子进程获得父进程的数据空间,堆和栈的复制品
B, 线程可以与同进程的其他线程共享数据,但是它拥有自己的栈空间且拥有独立的执行序列
C, 线程执行开销小,但是不利于资源管理和保护
D, 进程适合在SMP机器上进行,而线程则可以跨机器迁移
3,
[cpp] view plaincopyprint?
struct s
{ int x:3;
int y:4;
int y:5;
double a;
}
求sizeof(s)
4,序列{2,1,4,9,8,10,6,20}是某排序算法第二轮排序的结果,则该算法只能是
A快速排序 B冒泡排序
C选择排序 D插入排序
5,我们需要监听一个事件状态,让它在状态发生改变时主动发出通知,请问需要哪种设计模式?
A装饰者模式 B建造者模式
C创新工场模式 D观察者模式
6,有2012瓶矿泉水,其中有一瓶有毒,请问需要多少只老鼠才能一次性找到有毒的矿泉水?
二, 问答题
1, 有0-n这n+1个数,但是其中丢了一个数,请问如何找出丢了哪个数?
2, 解释
[cpp] view plaincopyprint?
#typedef char (*func)(int,char*)
3, 求输出结果
[cpp] view plaincopyprint?
int a[2][2][3]= { {{1,2,3},{4,5,6}},{{7,8,9},{10,11,12}}};
int *ptr=(int *)(&a+1);
printf(“%d %d”, *(int*)(a+1), *(ptr-1));
4,求输出结果
[cpp] view plaincopyprint?
#include <iostream>
using namespace std;
class A
{
public:
virtual void print()
{ cout << "A::print()" <<endl;}
};
class B: public A
{
public:
virtual void print()
{ cout << "B::print()" <<endl;}
};
class C: public A
{
public:
virtual void print()
{ cout << "C::print()" <<endl;}
};
void print(A a)
{
a.print();
}
void main()
{
A a,*aa,*ab,*ac;
B b;
C c;
aa=&a;
ab=&b;
ac=&c;
a.print();
b.print();
c.print();
aa->print();
ab->print();
ac->print();
print(a);
print(b);
print(c);
}
[cpp] view plaincopyprint?
三,算法编程题
1,有1分,2分,5分,10分四种硬币,每种硬币数量无限,给定n分钱,求有多少种组合可以组合成n分钱?
2,马戏团里有个叠罗汉的表演,为了便于美观,下面的人身高和体重都要大于上面的人。现在知道n个演员的身高和体重,请问最多能叠多少层?
[解决办法]
嗯嗯,还应该加“=”
int t(int n){
int a=1;
int b=2;
int c=5;
int d=10;
int m = 0;
for (int i = 0; i * d <= n; i++) {
for (int j = 0; j * c + i * d <= n; j++) {
for (int k = 0; k * b + j * c + i * d <= n; k++) {
if((n-(k * b + j * c + i * d))%a==0){
m++;
}
}
}
}
return m;
}