阿里巴巴-2015秋招研发工程师附加题
public static void main()
{
int box=500000;
string User;
try
{
for(int i=1;i<32767;i++)
{
if(user[i].getPoint>99 && user[i].getNBox()=0)
{
box--;
user[i].setNBox()=1;
user[i].setPoint();
}
else
{
System.out.println("User:"+user[i].name+"don't have enough point.\n");
}
}
catch
{
System.out.println("下单失败");
}
}
class user
{
public:
int id;
string name;
int getPoint();
int getBox();
private:
int point=99;
int nBox=0;
}
第一题:数据库的设计需要设计一个Use(ID,UserName,Point,nBox),然后还需要建立一个下
单列表Order(ID,UserName,BoolOfOrder)
其中,第一个数据表的每个元祖是用来存储每一条用户的信息的,而第二个表的每一条元组
是用来存储每一个下单成功的订单的信息。
第二题:瓶颈是当用户量大的时候对于数据表的检索要考虑到数据库结构的设计,所有这是
最大的瓶颈,这时候就要吧所有用户映射到一个散列表中,然后在对散列表进行查找,这时
候就会提高效率。
第三题:数据库事务是需要的,在扣减用户积分和增加用户换的的磨合数量需要同时进行,所以需要数据库食物。
#include <stdio.h>//头文件
#include <stdlib.h>
#include <malloc.h>
#include <math.h>
//定义结构体
typedef struct BiTNode
{
int data;
struct BiTNode *lchild;
struct BiTNode *rchild;
}
BiTNode,*BiTree;//定义结点类型
int max=-32767;//把max定义得足够小
int min=32768;//把min定义得足够大
BiTree CreateBiTree()//先序递归创建树
{
int p;BiTree T;
scanf("%d",&p);//注意每输入两个值的时候用空格各隔开
if(p==0)
T=NULL;
else
{
T=(BiTNode *)malloc(sizeof(BiTNode));//为结点开辟空间
T->data=p;
T->lchild=CreateBiTree();
T->rchild=CreateBiTree();
}
return (T);
}
int Max(BiTree T)//求最大(递归算法)
{
if(T==NULL)
return 0;
if(T!=NULL)
{
if(T->data>max)
max=T->data;
Max(T->lchild);
Max(T->rchild);
}
return max;
}
int Min(BiTree T)//求最大(递归算法)
{
if(T==NULL)
return 0;
if(T!=NULL)
{
if(T->data>min)
min=T->data;
Min(T->lchild);
Min(T->rchild);
}
return max;
}
void main()//主函数
{
BiTree Ta;
Ta=CreateBiTree();
int maxEle_BiTree=Max(Ta);
int minEle_BiTree=Min(Ta);
printf("二叉树的节点中相差最大的两个节点之间的插值绝对值为:%d\n",abs(maxEle_BiTree-minEle_BiTree));
}
char * search(char *cpSource, char ch)
{
char *cpTemp=NULL, *cpDest=NULL;
int iTemp, iCount=0;
while(*cpSource)
{
if(*cpSource == ch)
{
iTemp = 0;
cpTemp = cpSource;
while(*cpSource == ch)
++iTemp, ++cpSource;
if(iTemp > iCount)
iCount = iTemp, cpDest = cpTemp;
if(!*cpSource)
break;
}
++cpSource;
}
return cpDest;
}