程序员面试必备PHP基础面试题 – 第十六天

一、使用PHP语言自定义一个函数,此函数作用是将一个句子按单词反序。例如”One World One Dream”,反序后变为 “Dream One World One”。

function get_rev($str){
$arr=explode(‘ ’,$str);
for($i=count($arr)-1;$i>=0;$i--){
$res.=$arr[$i].’ ’;
}
return $res;
}

二、两条查询语句,一条是Select * from table1 where id>10 and id<100,一条是Select * from table2 where id>200 and id<500
请尝试只写一条SQL语句,完成相应的查询任务。

Select * from table1 as t1,table2 as t2 where t1.id>10 and t1.id<100 and t2.id>200 and t2.id<500;

三:有两个文件,一大一小,其中之一有8,000,000个电话号码,另一个文件有500个电话号码,请说明一种方法找出重复的电话号码。

1、读取文件里的内容,以某字符作为分割标志(使用explode()函数),分隔800000的字符串,然后用500个电话号码作为值,作为判断条件(使用in_array()函数)判断,是否存在于其中,存在则拿出
2、要是效率的话,使用hash算法
3、array_intersect()效果更佳

四、有一伙海盗,俘虏了三个渔民A、B、C。海盗船长决定杀他们之前给他们一次机会。他当渔民的面拿出三顶黑帽子,两顶白帽子,然后给这三个可怜人各戴一顶,分别问他们头上帽子的颜色。
每个渔民只能看到另外两个渔民帽子的颜色,看不到自己的,而且他们不能通讯,不能讨论,如果猜对了,放一条生路,否则立即处死。
船长先问渔民A,结果渔民A猜错了,被杀死了。船长又问渔民B,结果还是猜错了,同样被杀死了。海盗船长再问渔民C时,结果渔民C猜对被释放了。
考虑到船长及A、B、C都很聪明,问为什么渔民C一定能猜中?

答案:偶不会,会的留言说一下答案吧!

五、请用正则表达式写一个函数,验证电子邮件的格式是否正确。

function get_url($email){
if(preg_match('/^([0-9a-zA-Z_]+)*\w+@(\w)+\.com|\.cn$/ims',$email)){
echo 2;
}
}

六、列举流行的Ajax框架?(每个1分)说明Ajax实现原理是什么及Json在Ajax中起什么作用?

jQuery extjs

原理:通过XMLHttpRequest创建对象,根据客户端的请求,传递到服务器端进行数据处理,然后接收服务器端返回来的数据

以json格式组装从服务器端返回来的数据

七、我们常可以看到,一些商场买200元的商品可以返100元优惠券(可在本商场代替现金)。请问实际上商品的折扣是多少?

如果买完200元的商品 不用优惠券 折扣没有,多了1张100元优惠券
如果买完200员的商品 使用优惠券(将这个100员优惠券又去买完了商品) 相当于200元的现金 买来了 300员的商品 200/300=66%

八、我们希望开发一款扑克游戏,请给出一套洗牌算法,公平的洗牌并将洗好的牌存储在一个整形数组里。

$a=54;
for($i=1;$i<=$a;$i++){
$str[$i]=$i;
}
for($i=1;$i<=$a;$i++){
$t=rand(0,$a-$i);
$s[$i]=$str[$t];
unset($str[$t]);
$str=array_values($str);
}
echo '<pre>';
print_r($s);

九、我们希望开发一个门户系统,数据存储采用MySQL,用户数量为1000万,预计文章总数为10亿,日更新量至少为10万,日访问量为5000万,对数据库的读写操作比例超过10:1,你如何设计该系统,以确保其高效,稳定的运行?
(提示:可以从数据库设计,系统框架及网络架构方面进行描述,自由发挥)

网络
DNS轮循
Nginx主 从服务器(2台以上 用于负载均衡)
集群服务器->PHP分发器(根据随机数对应ip连接数据库)
数据库集群(多台以上)
数据库(2台以上)互为主从

作者:PHP学习网,本文 程序员面试必备PHP基础面试题 – 第十六天 版权归作者,免费文章欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

发表评论