PHP面试题之个人收藏.doc_第1页
PHP面试题之个人收藏.doc_第2页
PHP面试题之个人收藏.doc_第3页
PHP面试题之个人收藏.doc_第4页
PHP面试题之个人收藏.doc_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

收集一些实用php面试题及答案给大家做为程序员,到IT企业面试的时候肯定会有笔试这关,那就要考考你的PHP知识了,所以本站收集一些实用的php面试题及答案给大家。 ,BDE:r 基础题: qit*Kv 1.表单中 get与post提交方法的区别? R?/I=Y:F 答:get是发送请求HTTP协议通过url参数传递进行接收,而post是实体数据,可以通过表单提交大量信息. +d:0/# 2.session与cookie的区别? IOU;9 答:session:储存用户访问的全局唯一变量,存储在服务器上的php指定的目录中的(session_dir)的位置进行的存放 m(;4f cookie:用来存储连续訪問一个頁面时所使用,是存储在客户端,对于Cookie来说是存储在用户WIN的Temp目录中的。 Ub.)-0x 两者都可通过时间来设置时间长短 h#PKqI 3.数据库中的事务是什么? SP9xIo 答:事务(transaction)是作为一个单元的一组有序的数据库操作。如果组中的所有操作都成功,则认为事务成功,即使只有一个操作失败,事务也不成功。如果所有操作完成, ydEJRa 事务则提交,其修改将作用于所有其他数据库进程。如果一个操作失败,则事务将回滚,该事务所有操作的影响都将取消。 gtf|rv 简述题: gPR U 1、用PHP打印出前一天的时间格式是2006-5-10 22:21:21(2分) tZnNAr7 答:echo date(Y-m-d H:i:s, strtotime(-1 days); ynfMr(: 2、echo(),print(),print_r()的区别(3分) x?XmmG 答:echo是PHP语句, print和print_r是函数,语句没有返回值,函数可以有返回值(即便没有用) , a_Tc ,G print() 只能打印出简单类型变量的值(如int,string) _&tO?g print_r() 可以打印出复杂类型变量的值(如数组,对象) K6( vT1R echo 输出一个或者多个字符串 f_u?BoN 3、能够使HTML和PHP分离开使用的模板(1分) fIpjxHK% 答:Smarty,Dwoo,TinyButStrong,Template Lite,Savant,phemplate,XTemplate f+ wnR 5、使用哪些工具进行版本控制?(1分) 0kmK7 Id 答:cvs,svn,vss; aYm 0u 6、如何实现字符串翻转?(3分) TXK.ry V a.删除没有任何订单客户:DELETE FROM customerinfo WHERE customerid NOT in(SELECT customerid FROM orderinfo) M!0 Jfgt! b.提取所有没有订单客户:SELECT FROM customerinfo WHERE customerid NOT in(SELECT customerid FROM orderinfo) C!nzLDy c.提高b的速度优化:SELECT FROM customerinfo LEFT JOIN orderid customerinfo.customerid=orderinfo.customerid =5 Uh& WHERE orderinfo.customerid IS NULL $/$UNN 3、使用联合(UNION)来代替手动创建的临时表 5aBFb+r a.创建临时表:SELECT name FROM nametest UNION SELECT username FROM nametest2 -wTt|4rO1 4、事务处理: IEGZ58 a.保证数据完整性,例如添加和修改同时,两者成立则都执行,一者失败都失败 q,xGc mysql_query(BEGIN); 6kS:Ppc mysql_query(INSERT INTO customerinfo (name) VALUES ($name1); II(,S+* mysql_query(SELECT * FROM orderinfo where customerid=.$id); UwP)lwdE mysql_query(COMMIT); xmPYyB 5、锁定表,优化事务处理: 05&FefXu a.我们用一个 SELECT 语句取出初始数据,通过一些计算,用 UPDATE 语句将新值更新到表中。 r)HfL#? 包含有 WRITE 关键字的 LOCK TABLE 语句可以保证在 UNLOCK TABLES 命令被执行之前, uPX?*=u 不会有其它的访问来对 inventory 进行插入、更新或者删除的操作 k+QYwc mysql_query(LOCK TABLE customerinfo READ, orderinfo WRITE); :#Jz|RK mysql_query(SELECT customerid FROM customerinfo where id=.$id); 5+q, mysql_query(UPDATE orderinfo SET ordertitle=$title where customerid=.$id); yV mysql_query(UNLOCK TABLES); z?$I?NC 6、使用外键,优化锁定表 L|LiH)4Jx a.把customerinfo里的customerid映射到orderinfo里的customerid, f6zcoUp 任何一条没有合法的customerid的记录不会写到orderinfo里 Jv=9ffj CREATE TABLE customerinfo aN7oiQd ( wu m 5) customerid INT NOT NULL, YC jqCc? PRIMARY KEY(customerid) Y556K )TYPE = INNODB; _lg;/&A4E; CREATE TABLE orderinfo b, 2,T ( C?;n VZ7a orderid INT NOT NULL, JDj!EF# customerid INT NOT NULL, E 2PFnue PRIMARY KEY(customerid,orderid), *nLh FOREIGN KEY (customerid) REFERENCES customerinfo )|9,R_8/ (customerid) ON DELETE CASCADE 8kPS827 )TYPE = INNODB; Mb2*(NH 注意:ON DELETE CASCADE,该参数保证当customerinfo表中的一条记录删除的话同时也会删除order z*N;eGl 表中的该用户的所有记录,注意使用外键要定义事务安全类型为INNODB; K*9-y9 创建:CREATE INDEX ON tablename (索引字段) o!Dr.= 修改:ALTER TABLE tablename ADD INDEX 索引名 (索引字段) n A 1F%Oi 创建:CREATE UNIQUE ON tablename (索引字段) ;_YK 修改:ALTER TABLE tablename ADD UNIQUE 索引名 (索引字段) =r &i,bz 创表指定索引:CREATE TABLE tablename(.,UNIQUE索引名(索引字段) l!1653m (主键)- /GLhaY 它是唯一索引,一般在创建表是建立,格式为: _Q_F6c CREATA TABLE tablename (.,PRIMARY KEY索引字段) SuL 8、优化查询语句 L6(lWG a.最好在相同字段进行比较操作,在建立好的索引字段上尽量减少函数操作 U4(P R 例子1: E7iy |N SELECT * FROM order WHERE YEAR(orderDate)2008;(慢) B0!4t/8N SELECT * FROM order WHERE orderDate2008-01-01;(快) 8 $bmXS 例子2: g0bKP2 SELECT * FROM order WHERE addtime/724;(慢) D1g?ygS| SELECT * FROM order WHERE addtime (d 例子3: &g;/= SELECT * FROM order WHERE title like %good%; Qz#)a&te, SELECT * FROM order WHERE title=good and namegood; 1g4PEG.Q7 8、PHP的意思(送1分) q+ijUK 答:PHP是一个基于服务端来创建动态网站的脚本语言,您可以用PHP和HTML生成网站主页 1N:env 9、MYSQL取得当前时间的函数是?,格式化日期的函数是(2分) O-nok 答:now(),date() 2f;XnI$length) :irXS74 $str=null; m(t+-0 $len=$start+$length; N7oMT3ol for($i=$start;$i0xa0) UeZm Z $str.=substr($string,$i,2); z=zB4 $i+; g*R0 i5u else x*B8e/6 $str.=substr($string,$i,1); Sb=Al6H iNaUJj fw8L*bn return $str.; 7:FAkWaI else 58M_YFU return $string; require是无条件包含也就是如果一个流程里加入require,无论条件成立与否都会先执行require j;m?,L include-include有返回值,而require没有(可能因为如此require的速度比include快) Ro0qES&.! 注意:包含文件不存在或者语法错误的时候require是致命的,include不是 (sUC(pgX 17、如何修改SESSION的生存时间(1分). hBwAvZp!H 答:方法1:将php.ini中的session.gc_maxlifetime设置为9999重启apache PUX/)Z 方法2:$savePath = ./session_save_dir/; YfUW XJ+ $lifeTime = 小时 * 秒; =DdHQ.A session_save_path($savePath); XMPEaAj session_set_cookie_params($lifeTime); i%12+pbG session_start(); G9TTZWH 方法3:setcookie() and session_set_cookie_params($lifeTime); rABbmY linfeng2010-05-20 14:4418、有一个网页地址, 比如PHP开发资源网主页: /index.html,如何得到它的内容?($1分) |1UCugO/ 答:方法1(对于PHP5及更高版本): RcGXZbA, $readcontents = fopen(/index.html, rb); /P$yv $contents = stream_get_contents($readcontents); TIOkX$4 fclose($readcontents); +Z) echo $contents; jhw8?fA 方法2: FX,O2 |T echo file_get_contents(/index.html); P: Sm:K 0C b/ 19、在HTTP 1.0中,状态码401的含义是(?);如果返回“找不到文件”的提示,则可用 header 函数,其语句为(?);(2分) g=5+Q6 答:状态401代表未被授权,header(Location:www.xxx.php); Yzz# 12、在PHP中,heredoc是一种特殊的字符串,它的结束标志必须?(1分) nhZLAr 答:heredoc的语法是用加上自己定义成对的标签,在标签范围內的文字视为一个字符串 I)DtEv 例子: BgI1$4 $str = SHOW mu JQ my name is Jiang Qihui! p(9E1nj SHOW; +6V- Cc|G 13、谈谈asp,php,jsp的优缺点(1分) RVRH 答:ASP全名Active Server Pages,是一个WEB服务器端的开发环境, 利用它可以产生和运 wp JSP 是Sun公司推出的新一代站点开发语言,他完全解决了目前ASP,PHP的一个通病 E,We;U/ 脚本级执行(据说PHP4 也已经在Zend 的支持下,实现编译运行).Sun 公司借助自己在Jav Ojw0y a 上的不凡造诣,将Java 从Java 应用程序 和 Java Applet 之外,又有新的硕果,就是Js $7YS 9 * pJava Server Page。Jsp 可以在Serverlet和JavaBean的支持下,完成功能强大的站点 C-%Hv=YL 程序。 T%rDBDF 三者都提供在 HTML 代码中混合某种程序代码、由语言引擎解释执行程序代码的能力。 1vlk#!it 答:按值传递:函数范围内对值的任何改变在函数外部都会被忽略 b;d?LKF9,d 按引用传递:函数范围内对值的任何改变在函数外部也能反映出这些修改 ksfw_kvU 优缺点:按值传递时,php必须复制值。特别是对于大型的字符串和对象来说,这将会是一个代价很大的操作。 yc80|v 按引用传递则不需要复制值,对于性能提高很有好处。 5,N3 17. 在PHP中error_reporting这个函数有什么作用? (1分) + 5yPwK 答:设置错误级别与错误信息回报 Bp=A#%u 18. 请写一个函数验证电子邮件的格式是否正确 (2分) AXcHVt 答:function checkEmail($email) qd85wOj ,rVsER $pregEmail = /(a-z0-9*-_.?a-z0-9+)*(a-z0-9*-_?a-z0-9+)+.a-z2,3(.a-z2)?/i; (T C6_Ef return preg_match($pregEmail,$email); dXFj4XA )iReJ*T 19. 简述如何得到当前执行脚本路径,包括所得到参数。(2分) :-wK8zA 答:$script_name = basename(_file_); print_r($script_name); VaGo 4xR 21、JS表单弹出对话框函数是?获得输入焦点函数是? (2分) BN_7 G; 答:弹出对话框: alert(),prompt(),confirm() n% f I 获得输入焦点 focus() d3f2 22、JS的转向函数是?怎么引入一个外部JS文件?(2分) _x:e27 答:window.location.href, KX)oSH 23、foo()和foo()之间有什么区别?(1分) TXj: 答:foo()控制错误输出 JY|ouQ 24、如何声明一个名为”myclass”的没有方法和属性的类? (1分) 2f,5MTc 答:class myclass RojozOk 25、如何实例化一个名为”myclass”的对象?(1分) :hpMA 答:new myclass() QJ0g g 26、你如何访问和设置一个类的属性? (2分) Pz$f9V.( 答:$object = new myclass(); V%uN) $newstr = $object-test; wi3kLy2 $object-test = info; eVTgBypW 27、mysql_fetch_row() 和mysql_fetch_array之间有什么区别? (1分) nUB*/y 答:mysql_fetch_row是从结果集取出1行数组,作为枚举 -; N*L mysql_fetch_array是从结果集取出一行数组作为关联数组,或数字数组,两者兼得 #6 x N1 28、GD库是做什么用的? (1分) vgFQIBl 答:gd库提供了一系列用来处理图片的API,使用GD库可以处理图片,或者生成图片。 1UJhGI 在网站上GD库通常用来生成缩略图或者用来对图片加水印或者对网站数据生成报表。 RO1;jZX 29、指出一些在PHP输入一段HTML代码的办法。(1分) P0g-)!n 答:echo aaa; xATQZ-f 30、下面哪个函数可以打开一个文件,以对文件进行读和写操作?(1分) +2bxEcU (a) fget() (b) file_open() (c) fopen() (d) open_file() c 7q,lD(p 31、下面哪个选项没有将 john 添加到users 数组中? (1分) Mno! ,c (a) $users = john; 2m9rGqM (b) array_add($users,john); TKmeka (c) array_push($users,john); +:KJ !2 (d) $users |= john; a , c 0uF_= ,r $num = 10; s#H_;Ru?I function multiply() bMVvS*& $num = $num * 10; q7 t2-f- h# cQg multiply(); -&TZ%+G echo $num; *TYQ)$2 ? v#h:tf3( 输出:10 pg I&V# 33、使用php写一段简单查询,查出所有姓名为“张三”的内容并打印出来 (2分) Ae: 表名User gsWPtb6 Name Tel Content Date -J7+k, 张三大专毕业 2006-10-11 1egM_ t7 张三本科毕业 2006-10-15 v-S +h_ 张四中专毕业 2006-10-15 25 e 6F 3 请根据上面的题目完成代码: O7VduFX) $mysql_db=mysql_connect(local,root,pass); K(,1nTW( mysql_select_db(DB,$mysql_db); nOuvOOt $result = mysql_query(SELECT * FROM user WHERE name=张三); h _.s4 while($rs = mysql_fetch_array($result) 7zLxQ$QlX echo $rstel.$rscontent.$rsdate; GS5Dt6 I,W0Geq 34、如何使用下面的类,并解释下面什么意思?(3) Af%Y?YY class test -B!QVu=cm $num=md5(md5($num).En); 8iB! CAF return $num; %88U) 57t%U1 PGet_test($testnum); BZI p?Qn echo $encrypt; jl u_VlJ 类test里面包含Get_test方法,实例化类调用方法多字符串加密 E)dF7 35、写出 SQL语句的格式 : 插入 ,更新 ,删除 (4分) dt!sG8u+/, Ta 张三本科毕业 2006-10-15 e68br_K5I 张四中专毕业 2006-10-15 bsecp5xl (a) 有一新记录(小王高中毕业 2007-05-06)请用SQL语句新增至表中 8?EP0KWg mysql_query(INSERT INTO user (name,tel,content,date) VALUES L3XCSu (小王高中毕业,2007-05-06) a F73iU+J (b) 请用sql语句把张三的时间更新成为当前系统时间 S&I|B* $nowDate = date(Ymd); 7)AS2rJ. mysql_query(UPDATE user SET date=.$nowDate. WHERE name=张山); jH-Yk#N (c) 请写出删除名为张四的全部记录 TS)hW% mysql_query(DELETE FROM user WHERE name=张四); so|vJN8 36、请写出数据类型(int char varchar datetime text)的意思; 请问varchar和char有什么区别(2分) oBXHpQX 答:int是数字类型,char固定长度字符串,varchar实际长度字符串,datetime日期时间型,text文本字符串 erL6v char的场地固定为创建表设置的长度,varchar为可变长度的字符 kopAdX 38、写出以下程序的输出结果 (1分) 9:,e $b=201; J8FDDzxNQ $c=40; 3 yZG$c?4:5; -cABw echo $a; /Xg4&/_ ? Bzvv!l|Qs 答:4 W0g,(ls 39、检测一个变量是否有设置的函数是否?是否为空的函数是?(2分) zYqk 答:isset($str),empty($str); z/) 40、取得查询结果集总数的函数是?(1分) dyfQS FG 答:mysql_num_rows($result); po;n/A 41、$arr = array(james, tom, symfony); 请打印出第一个元素的值 (1分) ($z,u 答:echo $array0; bNC%8 42、请将41题的数组的值用,号分隔并合并成字串输出(1分) T_NJ 答:for($i=0;$icount($array);$i+) echo $array$i.,; $VrltY 43、$a = abcdef; 请取出$a的值并打印出第一个字母(1分) ijeB#X5 答:echo $a0 或 echo substr($a,0,1) 7L9, ?T 44、PHP可以和sql server/oracle等数据库连接吗?(1分) )eK*|=;z 答:当然可以 vv#?: 45、请写出PHP5权限控制修饰符(3分) O cTACdK 答:public(公共),private(私用),protected(继承) F_9F3 46、请写出php5的构造函数和析构函数(2分) cuY 答:_construct , _destruct uZ4iL| 47、完成以下: QZ5_VE (一)创建新闻发布系统,表名为message有如下字段 (3分) Gfvw id 文章id fMp :Tz title 文章标题 _=/Crz# content 文章内容 o!O.y (e category_id 文章分类id n/ylGJR hits 点击量 pB (cJp 答:CREATE TABLE message( b& qcH! id int(10) NOT NULL auto_increment, VDn title varchar(200) default NULL, hGvnREC content text, vr;shl category_id int(10) NOT NULL, -wGF|fKZ hits int(20), 7;zy;(xD% PRIMARY KEY(id); J (二)同样上述新闻发布系统:表comment记录用户回复内容,字段如下 (4分) $_; ,8MjQ comment_id 回复id J5?lLy$ id 文章id,关联message表中的id =SyTJ comment_content 回复内容 Lk)?5=/ 现通过查询数据库需要得到以下格式的文章标题列表,并按照回复数量排序,回复最高的排在最前面 v#Gz&;# 文章id 文章标题 点击量 回复数量 l2& comment ON message.id=comment.id GROUP BY message.id; ?yJW26! (三)上述内容管理系统,表category保存分类信息,字段如下 (3分) d_0&: category_id int(4) not null auto_increment; +o Q6ZC=L categroy_name varchar(40) not null; +,XjLid 用户输入文章时,通过选择下拉菜单选定文章分类 xi*d6L 写出如何实现这个下拉菜单 V* KmjAn 答:function categoryList() KmZO 9+qj DJj+ ghR $result=mysql_query(select category_id,categroy_name from category) 4Gkc& or die(Invalid query: . mysql_error(); 0X%Sc* print(n); H|v/0g$ while($rowArray=mysql_fetch_array($result) AHBk&1D(+ Hp) print(.$rowArraycategroy_name.n); 8xH- sCK .x&H8fW print(); GzWRe6Y D8ob4C linfeng2010-05-20 14:45编程题: -A$DlD* 1. 写一个函数,尽可能高效的,从一个标准 url 里取出文件的扩展名 !nC+:&6= 例如: /abc/de/fg.php?id=1 需要取出 php 或 .php $#2Ja 答案1: y*/Mq function getExt($url) 5G9K;J $arr = parse_url($url); ,?.WV&I -:(&lq&f $file = basename($arrpath); ?0jOat8g $ext = explode(.,$file); ob6V| .Y return $ext1; C0EuZq7N 19W function getExt($url) ke26 $url = basename($url); Q(4y%(&w $pos1 = strpos($url,.); RT 3t $pos2 = strpos($url,?); 7XNPI if(strstr($url,?) ?O?q,|)M return substr($url,$pos1 + 1,$pos2 - $pos1 - 1); ?q1JI:cP else cIt7/r 请使用 PHP 语言写一个函数,把一个标准 HTML 页面中的类似 meta 标记中的 charset 部分值改为 big5 g* dK% 请注意: 0isjI/s 1. 需要处理完整的 html 页面,即不光此 meta 语句 *K8#d 2. 忽略大小写 _fuDSnC( 3. 和 在此处是可以互换的 ,kz=Wqq 4. Content-Type 两侧的引号是可以忽略的,但 text/html; charset=gbk 两侧的不行 6r ti 5. 注意处理多余空格 IEc!4 3. 写一个函数,算出两个文件的相对路径 dEp,J|kN 如 $a = /a/b/c/d/e.php; PQ 2 F . $b = /a/b/12/34/

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论