稀里糊涂的就投了一个大众点评网,没过多久就收到了笔试通知,居然是在线测试,感觉这种方式很新颖。
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;
}
这个题目的思路就是最长上升子序列的问题:
代码如下:
#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;
}