大众点评



 稀里糊涂的就投了一个大众点评网,没过多久就收到了笔试通知,居然是在线测试,感觉这种方式很新颖。

2013.4.24当天就在线做了题目,比较坑爹的发现,我们三个人做的题目是一样的,自己居然是第一个做的,前面的逻辑题与数学推理题还算是比较简单的,有一点毛病就是自己太不淡定了,碰到不会做的东西就比较着急,找借口,这也是自己性格中的毛病之一吧。

大概过了一个礼拜之后,就接到了大众点评的面试电话,电面,问了自己算法的知识,主要是问了排序算法的复杂度问题,还问了关于CSDN密码泄露的事情,这两个问题由于自己本身都比较熟悉,就回答的还不错。接下来就是问我是不是愿意搞JAVA以及搞了之后多久能上手的问题,自己又给出了一个比较2B的答案,自己居然说了2个月,真是毫无经验啊。接下来就问了那个关于电商的知识,自己回答的不怎么好,大概面了30分钟吧,感觉还行。

一面之后没多久就接到了二面的通知,这次不是电面而是真的面试了,地点在武汉大学弘毅大酒店,自己被安排的很晚,大概下午6点了,去的还是比较早,这次的面试官是我目前为止见过的最好的面试官吧。上来就问我的性格的优点和缺点,自己又犯2了,说了自己一大堆的缺点,还说自己以前搞学生工作,本科没有怎么好好搞学习等等,技术不怎么好,自己太实在,真是2B青年欢乐多啊。接下来,又问了自己在大学期间做的最得意的一件事,就天马行空的说了一番。

关于技术方面倒是没怎么问,就问了2个,一是:怎么利用栈实现一个min函数,由于之前自己有准备就回答的还不错。二是:怎么去设计一个订餐系统,使用户的体验最好。题目大意是:设计一个订餐系统,该订餐系统是这样的,用户打电话给这个系统,系统录下用户的声音内容,系统直接将该声音发给商家,重点是不能是用于等太久,这就是所谓的用户体验,怎么样设计使用户体验最好。自己回答的不怎么好,不管面试官也没怎么问。

笔试的教训是:碰到很多人一起做一道在线测试的时候,一定要留个心眼,自己别着急,淡定,这样也可能做得更好一点。公司录取员工的时候都是笔试面试的综合评分,这一点上自己以后一定要注意。

面试教训:不要太实在,一点要自信,完全自信。

附录:大众点评笔试最后两题答案:

 



 代码如下:

#include<iostream>
#include<string>
using namespace std;
int a[10]={2,3,5,7,11,13,17,19,23,29};
int b[10];
string s;

int main()
{
	int t=1;
	int len,i,sum,j;
	for(i=0;i<10;i++)
	{
		b[i]=t;
		t*=a[i];
	}
	
	while(1)
	{
		j=0;
		sum=0;
		cin>>s;
		len=s.size();
		for(i=len-1;i>=0;i--)
		{
			if(s[i]==',')
				continue;
			if(s[i]=='1')
				sum+=b[j];
			j++;
		}
		cout<<sum<<endl;
		
	}
	return 0;
}

 

 


大众点评_第1张图片
 

 

这个题目的思路就是最长上升子序列的问题:

代码如下:

 

 

#include<iostream>
using namespace std;

int main()
{
	int n,i,j;
	while(cin>>n)
	{
		int* sq=new int[n];
		int* dp1=new int[n];  //dp[i]表示以第i个位置为终点的最长不下降序列的长度
		int* dp2=new int[n];
		for(i=0;i<n;i++)
			cin>>sq[i];
		memset(dp1,0,sizeof(dp1));
		memset(dp2,0,sizeof(dp2));
		int max_length1=0;
		int max_length2=0;
		int max_length=0;
		//双层for循环,算法复杂度为O(n*n)
		dp1[0]=1 ;//从头开始计算最长的递增序列   
        for (i=1;i<n;i++)   
        {   
            dp1[i]=1;   
            for (j=0;j<i;j++)   
            {   
                if (sq[j]<sq[i]&&dp1[i]<dp1[j]+1 )   
					dp1[i] = dp1[j]+1 ;   
				if(max_length1<dp1[i])
					max_length1=dp1[i];
            }   
        }
		dp2[n-1]=1 ;//从尾部计算最长的递增序列   
		for (i=n-2;i>=0;i--)   
		{   
			dp2[i]=1 ;   
			for(j=i+1;j<n;j++)   
			{   
				if (sq[j]<sq[i]&&dp2[i]<dp2[j]+1 )   
					dp2[i]=dp1[j]+1;
				if(max_length2<dp2[i])
					max_length2=dp2[i];
			}   
		}   	
		if(max_length1>=max_length2)
			max_length=max_length1;
		else
			max_length=max_length2;
		cout<<n-max_length<<endl;
		delete sq,dp1,dp2;
	}
	return 0;
}

 

你可能感兴趣的:(大众点评)