创新工场笔试题2013年校园招聘

huangxy10 2012-09-27 09:20:03
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个演员的身高和体重,请问最多能叠多少层?
...全文
470 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
jidakuner 2012-10-05
  • 打赏
  • 举报
回复
1,第一个大题:
#include <iostream>

#define MAX 100

using namespace std;



int a[]={1,2,5,10};
int M[MAX]={0};

int foo(int size)
{
if(size==1){return 1;}
if(size<=0){return 0;}
int sum=0;
for(int i=0;i<4;i++)
{
if(size-a[i]>0){
if(M[size-a[i]]==0)
sum+=foo(size-a[i]);
else
sum+=M[size-a[i]];
}
else if(size==a[i]){sum++;}
}
M[size]=sum;
return sum;
}

int main()
{
int size;
cin>>size;
cout<<foo(size)<<endl;
}

2,第二个大题:按身高排序,求最大体重递增子数组
#include <iostream>
#include <ctime>
#include <cstdlib>

using namespace std;

int a[10];
int M[10]={0};

int foo()
{
M[0]=1;
int max=M[0];
for(int i=1;i<10;i++)
{
M[i]=1;
for(int j=0;j<i;j++)
{
if(a[i]>a[j])
{
if(M[i]<M[j]+1)M[i]=M[j]+1;
}
}
if(M[i]>max)max=M[i];
}
return max;
}

int main()
{
srand(time(NULL));
for(int i=0;i<10;i++)
{
a[i]=rand()%20+1;
cout<<a[i]<<",";
}
cout<<"\n"<<foo()<<endl;
}
huangxy10 2012-09-29
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

创新工场什么职位招聘题呢?
[/Quote]

技术类的职位吧,去的有各种各样的。
我报的是软件开发好像。
wlnet 2012-09-29
  • 打赏
  • 举报
回复
嗯嗯,还应该加“=”
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;
}
wlnet 2012-09-29
  • 打赏
  • 举报
回复
哈哈,比较无聊,弄了下第一个算法题:
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;
}
冷月清晖 2012-09-29
  • 打赏
  • 举报
回复
创新工场什么职位招聘题呢?

33,007

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧