您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 招聘面试 > 实用php面试题及答案
收集一些实用php面试题及答案给大家做为程序员,到IT企业面试的时候肯定会有笔试这关,那就要考考你的PHP知识了,所以本站收集一些实用的php面试题及答案给大家。基础题:1.表单中get与post提交方法的区别?答:get是发送请求HTTP协议通过url参数传递进行接收,而post是实体数据,可以通过表单提交大量信息.2.session与cookie的区别?答:session:储存用户访问的全局唯一变量,存储在服务器上的php指定的目录中的(session_dir)的位置进行的存放cookie:用来存储连续訪問一个頁面时所使用,是存储在客户端,对于Cookie来说是存储在用户WIN的Temp目录中的。两者都可通过时间来设置时间长短3.数据库中的事务是什么?答:事务(transaction)是作为一个单元的一组有序的数据库操作。如果组中的所有操作都成功,则认为事务成功,即使只有一个操作失败,事务也不成功。如果所有操作完成,事务则提交,其修改将作用于所有其他数据库进程。如果一个操作失败,则事务将回滚,该事务所有操作的影响都将取消。简述题:1、用PHP打印出前一天的时间格式是2006-5-1022:21:21(2分)答:echodate('Y-m-dH:i:s',strtotime('-1days'));2、echo(),print(),print_r()的区别(3分)答:echo是PHP语句,print和print_r是函数,语句没有返回值,函数可以有返回值(即便没有用)print()只能打印出简单类型变量的值(如int,string)print_r()可以打印出复杂类型变量的值(如数组,对象)echo输出一个或者多个字符串3、能够使HTML和PHP分离开使用的模板(1分)答:Smarty,Dwoo,TinyButStrong,TemplateLite,Savant,phemplate,XTemplate5、使用哪些工具进行版本控制?(1分)答:cvs,svn,vss;6、如何实现字符串翻转?(3分)答:echostrrev($a);7、优化MYSQL数据库的方法。(4分,多写多得)答:1、选取最适用的字段属性,尽可能减少定义字段长度,尽量把字段设置NOTNULL,例如'省份,性别',最好设置为ENUM2、使用连接(JOIN)来代替子查询:a.删除没有任何订单客户:DELETEFROMcustomerinfoWHEREcustomeridNOTin(SELECTcustomeridFROMorderinfo)b.提取所有没有订单客户:SELECTFROMcustomerinfoWHEREcustomeridNOTin(SELECTcustomeridFROMorderinfo)c.提高b的速度优化:SELECTFROMcustomerinfoLEFTJOINorderidcustomerinfo.customerid=orderinfo.customeridWHEREorderinfo.customeridISNULL3、使用联合(UNION)来代替手动创建的临时表a.创建临时表:SELECTnameFROM`nametest`UNIONSELECTusernameFROM`nametest2`4、事务处理:a.保证数据完整性,例如添加和修改同时,两者成立则都执行,一者失败都失败mysql_query(BEGIN);mysql_query(INSERTINTOcustomerinfo(name)VALUES('$name1');mysql_query(SELECT*FROM`orderinfo`wherecustomerid=.$id);mysql_query(COMMIT);5、锁定表,优化事务处理:a.我们用一个SELECT语句取出初始数据,通过一些计算,用UPDATE语句将新值更新到表中。包含有WRITE关键字的LOCKTABLE语句可以保证在UNLOCKTABLES命令被执行之前,不会有其它的访问来对inventory进行插入、更新或者删除的操作mysql_query(LOCKTABLEcustomerinfoREAD,orderinfoWRITE);mysql_query(SELECTcustomeridFROM`customerinfo`whereid=.$id);mysql_query(UPDATE`orderinfo`SETordertitle='$title'wherecustomerid=.$id);mysql_query(UNLOCKTABLES);6、使用外键,优化锁定表a.把customerinfo里的customerid映射到orderinfo里的customerid,任何一条没有合法的customerid的记录不会写到orderinfo里CREATETABLEcustomerinfo(customeridINTNOTNULL,PRIMARYKEY(customerid))TYPE=INNODB;CREATETABLEorderinfo(orderidINTNOTNULL,customeridINTNOTNULL,PRIMARYKEY(customerid,orderid),FOREIGNKEY(customerid)REFERENCEScustomerinfo(customerid)ONDELETECASCADE)TYPE=INNODB;注意:'ONDELETECASCADE',该参数保证当customerinfo表中的一条记录删除的话同时也会删除order表中的该用户的所有记录,注意使用外键要定义事务安全类型为INNODB;7、建立索引:a.格式:(普通索引)-创建:CREATEINDEX索引名ONtablename(索引字段)修改:ALTERTABLEtablenameADDINDEX[索引名](索引字段)创表指定索引:CREATETABLEtablename([...],INDEX[索引名](索引字段))(唯一索引)-创建:CREATEUNIQUE索引名ONtablename(索引字段)修改:ALTERTABLEtablenameADDUNIQUE[索引名](索引字段)创表指定索引:CREATETABLEtablename([...],UNIQUE[索引名](索引字段))(主键)-它是唯一索引,一般在创建表是建立,格式为:CREATATABLEtablename([...],PRIMARYKEY[索引字段])8、优化查询语句a.最好在相同字段进行比较操作,在建立好的索引字段上尽量减少函数操作例子1:SELECT*FROMorderWHEREYEAR(orderDate)2008;(慢)SELECT*FROMorderWHEREorderDate2008-01-01;(快)例子2:SELECT*FROMorderWHEREaddtime/724;(慢)SELECT*FROMorderWHEREaddtime24*7;(快)例子3:SELECT*FROMorderWHEREtitlelike%good%;SELECT*FROMorderWHEREtitle=goodandnamegood;8、PHP的意思(送1分)答:PHP是一个基于服务端来创建动态网站的脚本语言,您可以用PHP和HTML生成网站主页9、MYSQL取得当前时间的函数是?,格式化日期的函数是(2分)答:now(),date()10、实现中文字串截取无乱码的方法。(3分)答:functionGBsubstr($string,$start,$length){if(strlen($string)$length){$str=null;$len=$start+$length;for($i=$start;$i$len;$i++){if(ord(substr($string,$i,1))0xa0){$str.=substr($string,$i,2);$i++;}else{$str.=substr($string,$i,1);}}return$str.'...';}else{return$string;}}11、您是否用过版本控制软件?如果有您用的版本控制软件的名字是?(1分)12、您是否用过模板引擎?如果有您用的模板引擎的名字是?(1分)答:用过,smarty13、请简单阐述您最得意的开发之作(4分)答:信息分类14、对于大流量的网站,您采用什么样的方法来解决访问量问题?(4分)答:确认服务器硬件是否足够支持当前的流量,数据库读写分离,优化数据表,程序功能规则,禁止外部的盗链,控制大文件的下载,使用不同主机分流主要流量15、用PHP写出显示客户端IP与服务器IP的代码1分)答:打印客户端IP:echo$_SERVER[‘REMOTE_ADDR’];或者:getenv('REMOTE_ADDR');打印服务器IP:echogethostbyname()16、语句include和require的区别是什么?为避免多次包含同一文件,可用(?)语句代替它们?(2分)答:require-require是无条件包含也就是如果一个流程里加入require,无论条件成立与否都会先执行requireinclude-include有返回值,而require没有(可能因为如此require的速度比include快)注意:包含文件不存在或者语法错误的时候require是致命的,include不是17、如何修改SESSION的生存时间(1分).答:方法1:将php.ini中的session.gc_maxlifetime设置为9999重启apache方法2:$savePath=./session_save_dir/;$lifeTime=小时*秒;session_save_path($savePath);session_set_cookie_params($lifeTime);session_start();方法3:setcookie()andsession_set_cookie_params($lifeTime);linfeng2010-05-2014:4418、有一个网页地址,比如PHP开发资源网主页:如何得到它的内容?($1分)答:方法1(对于PHP5及更高版本):$readcontents=fopen();$contents=stream_get_contents($readcontents);fclose($readcontents);echo$contents;方法2:echofile_get_contents();19、在HTTP1.0中,状态码401的含义是(?);如果返回“找不到文件”的提示,则可用header函数,其语句为(?);(2分)答:状态401代表未被授权,header(Location:);12、在PHP中,heredoc是一种特殊的字符串,它的结束标志必须?(1分)答:heredoc的语法是用加上自己定义成对的标签,在标签范围內的文字视为一个字符串例子:$str=SHOWmynameisJiangQihui!SHOW;13、谈谈asp,php,jsp的优缺点(1分)答:ASP全名ActiveServerPages,是一个WEB服务器端的开发环境,利用它可以产生和运行动态的、交互的、高性能的WEB服务应用程序。ASP采用脚本语言VBScript(Javascript)作为自己的开发语言。PHP是一种跨平台的服务器端的嵌入式脚本语言.它大量地借用C,Java和Perl语言的语法,并耦合PHP自己的特性,使WEB开发者能够快速地写出动态生
本文标题:实用php面试题及答案
链接地址:https://www.777doc.com/doc-4553029 .html