2012-9-25 创新工场笔试题

1. 字节对齐问题: sizeof(Student)=24(求解释,为什么不是20)

struct Student

{

int a; int b; double c; int d;

} ;

2. 高度为h的二叉树,其节点的度要么为0要么为2,问树中节点的最多最少(忘记了)的个数(树的节点的度是指该节点的子树的个数,也就是出度的数值,故最少为2^h+1, 最多为2^(h+1) -1)

3. 1024!的末尾0的个数,详细分析见http://bbs.chinaunix.net/thread-926848-1-1.html

4. 给定IP:10.23.24.29和子网掩码255.255.255.224,求跟该IP属于同一子网的IP地址(10.23.24.30)

5. 某一系统有5台绘图仪,现系统中有多个线程,每个线程需要两台绘图仪,现问至多可以给几个线程分配绘图仪而不发生死锁?(答案为4)

6. 不记得了

7. 百度首页输入搜索字符时会出现提示,问后台采用的是何种数据结构(感觉应该是哈希表)

8. 给定一个整数,将其奇数位比特和偶数位比特交换(思路:将该整数左移一位,后与10101010进行&运算后,就将原来的整数中的偶数位bit移动到了奇数位并且结果的偶数为全部为0; 将该整数右移一位后,与01010101进行&的运算,原奇数位移动到了偶数位并且奇数位全部为0;将前两步得到的结果进行|运算,即为最终结果)

9. 一下代码的输出

string c1("Ininiitt");
string c2("sdssdsdsd");
string& c3 = c1;
string* c4 = &c2;
c3=c2;
cout<<c2<<endl;
c4=&c1;
cout<<*c4;

结果:sdssdsdsd sdssdsdsd

10. 给定一段字符串,里面包含n个单词,单词与单词之间以空格分开,请将该字符串中单词逆置("this is a test"==》"test a is this“,不能使用字符串函数)求高效省空间算法

先将所有的字符串逆置,然后再针对每个单词逆置

void reversestr(char * str, int lenth)
{
    int half = lenth / 2;
    int i = 0, j = lenth-1;
    char temp = '\0';
    while(i < half)
    {
        temp = str[i];
        str[i++]=str[j];
        str[j--]=temp;
    }
}

void reverseSentence(char* str)
{
    if(str == NULL || (*str) == ' ') return;
    int lenth = strlen(str);
    reversestr(str, lenth);
    char* first=str, *second=str;
    while(*second !='\0')
    {
        if(*second==' ')
        {
            reversestr(first,second-first);
            while((*second)==' ') second++;
            first = second;
        }
        second++;
    }
    reversestr(first, second-first);
}


阅读更多
换一批

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

09-27

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

没有更多推荐了,返回首页