程序员面试必备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 explode函数用法详解

今天新来的刚毕业的同事问,在php开发中经常遇到需要分割字符串的功能,php有没有这样的函数,我回答,当然有啊。接下来就介绍信php的explode函数。

PHP 中的 explode() 函数用于将一个字符串按照指定的分隔符分割成数组。

  • $delimiter:必需,定义了如何分割字符串的边界。
  • $string:必需,要分割的字符串。
  • $limit:可选,如果设置了 limit 参数并且是正数,则返回的数组最多包含 limit 个元素,最后一个元素将包含 string 的剩余部分。如果 limit 参数是负数,则返回除了最后的 -limit 个元素外的所有元素。如果 limit 是 0 或被省略,则返回所有元素。

返回由字符串组成的数组。

  1. 基本用法:

输出:

  1. 使用 limit 参数:

输出:

  1. 使用负数 limit 参数:

输出:

  • 如果 delimiter 为空字符串(\”\”),则会返回 false。
  • 如果 delimiter 所包含的值在 string 中找不到,那么 explode() 将返回包含 string 单个元素的数组。
  • 如果 limit 参数是 0,则会返回空数组。

通过以上示例和解释,可以更好地理解和使用 PHP 中的 explode() 函数来处理字符串数据。

PHP面试题+完整答案

【公司面试题之: PHP笔试题】1. 禁用COOKIE 后 SEESION 还能用吗?2. 抓取远程图片到本地,你会用什么函数?3. 已知姓名A,姓名B,给一个求他们缘份的算法4. 你觉得在PV10W的时候, 同等配置下,LUNIX 比WIN快多少?5. 简述POST 和GET传输的最大容量分别是多少?6. 用最少的代码写一个求3值最大值的函数.

答:1、cookie是保存在本地的,而seesion是保存在服务器上的。所以两者没有直接的关系,禁用cookie后seesion依然可以用。

2、用file_get_contents函数,ex:

<?php$img = file_get_contents(\’http://www.baidu.com/img/baidu_logo.gif\’);file_put_contents(\’1.gif\’,$img);echo \'<img src=\”1.gif\”>\’;?>

3、<?phpfunction is_gfriend($na,$nb){$random1=rand(1,5);//计算他们有1/5的缘分$random2=rand(1,5);if ($random1==$random2)return $na.\”+\”.$nb.\”你们有缘分\”;elsereturn $na.\”+\”.$nb.\”可惜无缘份\”;

}echo is_gfriend(a,b);

?>

4、

公司面试题之:百度Web开发工程师笔试题】2007-11-07百度笔试题(web开发和新产品搜索方向)第一部分:1.解释下面语句的意思:document.form[\”formName\”].submit;2.有下面语句:<input id=\”txt\” type=\”text\” value=\”baidu\” />编写代码,当鼠标划过文本框,自动选中文本框中的内容。3.将字符09转换成十进制数字。4.将1234567890转换成1,234,567,890 每3位用逗号隔开的形式。5.关于HTML和CSS的,忘记了。6.在文本框中输入一个年份,判断其生肖,并输出在文本框旁边。对html和javaServlet都要求写出。7.Ajax从服务器取数据 {id:123, name:\”baidu\”, username:\”mm\”,checked:true};分析name对应的值(\”baidu\”).(题目较长,不记得了)8.谈关于客户体验的问题。

答案:1、获取formName表单submit按钮元素。

2、 <input id=\”txt\” type=\”text\” value=\”baidu\” οnmοuseοver=\”javacript:document.getElementById(\’txt\’).select()\” />

3、<?php$a=\”09\”;echo ( int ) $a;echo \”<br>\”;echo intval(\”09\”);?>

4、<?php $num = \”1234567890.11\”; $num = preg_replace(\’/(?<=[0-9])(?=(?:[0-9]{3})+(?![0-9]))/\’, \’,\’, $num);echo $num; ?>

6、$t= 1986;switch ($t){case 1986:echo \”牛\”;break;case \”\”:break;case \”\”:break;……}

8、从满意度、忍受度、回馈度分析。

第二部分:1.Ajax,数据库触发器,GUI,中断机制的共同思想。谈一谈该种思想(机制)。2.把一篇英文文档中所有单词的首字母转为大写,文档存在doc.txt中。可以在多种编程语言中选择(C\\C++,JAVA,PHP…)写出你的思路,尽量优化你的程序。3.关于树的数据结构.4.数据库优化:有一个表 PRODUCT(ID,NAME,PRICE,COUNT);在执行一下查询的时候速度总是很慢:SELECT * FROM PRODUCT WHERE PRICE=100;在price字段上加上一个非聚簇索引,查询速度还是很慢。(1)分析查询慢的原因。(2)如何进行优化。5.CREATE TABLE topid{topicId int not null primary key auto_increment,title text,author varchar(30),content blob,isDeleted int…… //好像在author上定义了一个索引}CREATE TABLE reply{topicId int foreign key,replyId int primary key auto_increment,replyAuthor varchar(30),replyTime datetime,context blob……. //定义了一个索引和key}一个为主题表,一个为回复表。1.问从性能上考虑,这样做有什么不足。2.查询回复时间不超过一个特定的时间段,回复的作者名字以MIKE开头的主题的title,以如下的查询:select * from topic where replyid in (select replyid from reply wherereplyAuthor like \’mike%\’ and (currentTime()-replyTime<specialTime))从性能上考虑上述的查询语句有什么不足?如何进行优化?

答案:1、数据库触发器和中断机制是数据库自动完成的,而ajax触发器是用户激发的。ajax把GUI和数据库异步优化。

2、<?php$fp=fopen(\”aa.txt\”,\’r\’); //英文文档aa.txtwhile(!feof($fp)){$char=fgets($fp);}$e= explode(\”,\”,$char);$write=fopen(\”doc.txt\”,\’w\’);//没有doc.txt则创建foreach ($e as $w){if($w==$e[count($e)-1])//最后一个单词没有逗号输入if($w==end($e))$w=ucwords($w);//第一个字母转大写else$w=ucwords($w).\”,\”;echo $w;fwrite($write,$w);//写入doc.txt 文档中}

fclose($write);fclose($fp);?>

本文作者及来源:Renderbus瑞云渲染农场https://www.renderbus.com

点赞 0
收藏 0

文章为作者独立观点不代本网立场,未经允许不得转载。