笔试题(邮件)
1,百姓网需要在每个页面上显示查看的次数,对于这个问题,你的解决思路是什么,如何实现,用你熟悉
的语言code。
2,百姓网不允许同一个人在一天内发布重复或接近重复的信息,设计一个算法,检测重复信息。写出你的
解决思路,并code。
现场笔试
1,有用户反映不能访问我们的网站,你如何找出问题所在,写出你的步骤和思路。
2,有一个母羊,第2年和第4年可以生一头小母羊,在第5年死去,小母羊有可以在它出生的第2年和第4年生
小母羊,第5年死去,写一个程序计算第n年的母羊的数量,用熟悉的编程语言实现。
我的参考解答:
这里只给出大致的解体思路。
笔试题:
1,对于这个问题,只要设置一个计数器即可,在每次用户访问的时候,将计数器加1,当然初始的时候计数
器的值为0.
2,本问题可以演化为字符串的匹配问题,要比较两个字符串相同很容易,但要比较接近重复,就是说两个
字符串的大部分内容一样,只有一小部分不同,也要判断两个字符串相同。 我想到的方法是从一个字符串
中随机抽取10个字符子串,如果有8个或以上的子串能在另一个字符串中找到,则可以认为这两个字符串大
致相等。
现场笔试题
1,对于这个问题,没有明确的标准答案,目的就是考察应试者处理问题的方法。我的解答如下,用户不能
访问网站,主要有以下三个原因,用户自身机器问题,运营商问题,我们网站问题。因为用户访问网站,是
一个典型的c/s模型,这个模型由客户端,服务器和中间的网络(运营商)组成,其中的任何一个出现问题,
都会导致用户不能访问网站。接下来就是确定问题所在,可以做一些实验来测试每一个部分有没有坏,比如
用户如果可以访问其他网站,证明用户机器和网络本身没有问题,可能还是我们的服务器问题。排除一些可
能后,对剩余的可能进行验证,最终确定问题所在。
2.这是个典型的递归编程题,之前我接触过它的简化版本,就是母牛从第4年起每年生一头小母牛,并且母
牛不会死。简化版本用简单的递归就能实现,如下
int GetCow1(int n) //从第4年开始每年生一头小母牛。
{
if(n==1 || n==2 || n==3 )
return 1;
if(n>=4)
return GetCow1(n-1)+GetCow1(n-3);
}
而这个题目并不简单,我现场做到时候,想来半天,做错了。用了一个函数来递归,实际上要用多个函数递
归。我给出的解答如下:
母牛有4种,根据年龄分为1,2,3,4
设为n1,n2,n3,n4,n5
前一年的牛为 n1+n2+n3+n4
则后一年的牛为
n1′=n1+n3;
n2′=n1;
n3′=n2;
n4′=n3;
后一年的牛为 2*n1+n2+2*n3;
第1年 n1:1 n2:0 n3:0 n4:0 总数:1
第2年 n1:1 n2:1 n3:0 n4:0 总数:2
第3年 n1:1 n2:1 n3:1 n4:0 总数:3
第4年 n1:2 n2:1 n3:1 n4:1 总数:5
第5年 n1:3 n2:2 n3:1 n4:1 总数:7
第6年 n1:4 n2:3 n3:2 n4:1 总数 10
所以,可以根据这个公式,写出每一个年龄的母牛的递归函数。
int Get1Cow(int); //计算年龄为1的母牛的数量
int Get2Cow(int); //计算年龄为2的母牛的数量
int Get3Cow(int); //计算年龄为3的母牛的数量
int Get4Cow(int); // 计算年龄为4的母牛的数量
int Get1Cow(int n)
{
if(n<=1)
return 1;
else
return Get1Cow(n-1)+Get3Cow(n-1);
}
int Get2Cow(int n)
{
if(n==1)
return 0;
else
return Get1Cow(n-1);
}
int Get3Cow(int n)
{
if(n<=2)
return 0;
else
return Get2Cow(n-1);
}
int Get4Cow(int n)
{
if(n<=3)
return 0;
else
return Get3Cow(n-1);
}
int GetCow(int n) //母牛第2年和第4年生一头小牛,第5年死去。
{
return Get1Cow(n)+Get2Cow(n)+Get3Cow(n)+Get4Cow(n);
}
最后写一个主函数调用GetCow()即可。
笔试之后,是一个技术主管的面试。
先跟我聊了一下现场笔试的第一题,说说我的思路,我就把我的思路说了。但是他并没有提第2题,我就知
道我做错了,当时交的时候就感觉不对,还是自己的基本功不行,尽管回来的时候做出来了,但当时没想出
来就是个遗憾。
然后和我谈论一下对php的了解,我说我没有经验,但是由于有c++的基础,学php会很快(这是事实,可那
道编程题做错了),然后问了我关于网络了解多少,有多少使用网络的体会等。聊了大约五分钟,他说去见
其他人,看看他们有什么问题问我,我等了片刻,出来后告诉我回去等通知(这只是委婉的说法,真实的说
法是我不行,他们不考虑我,这么说只是为了给我个面子)。
这次应聘失败的总结:
1,笔试没发挥好,一道简单的递归编程居然做错,毕竟已经有快2个月没有在oj上做题了,没了感觉。
2,自己缺少php的相关开发经验,就算我编程题答对,他们录用我的机会也不大。不过我发现了我的软肋,
就是缺少实践经验,没有完整的做过一个项目。
对百姓网的印象:
1,公司位置不错,在徐汇交大内,交通方便。
2,公司貌似远超过了说宣称的20人,可能最近招的实习生过多吧,每个人的办公空间很小。
对有意应聘者的建议:
虽说我应聘失败了,全当一次面试经验了。
想要应聘成功至少要熟悉php,熟悉简单的编程技术。