已转开发,博客新地址:http://welcomezhang.iteye.com/

PHP面试题及答案[转][精]

上一篇 / 下一篇  2011-08-15 16:38:39 / 精华(3) / 个人分类:web基础

面试了,复习下~~~~~~51Testing软件测试网q9{cS+Aer P
---------------------51Testing软件测试网3W0BW9m+\
一、基础题:
51Testing软件测试网Y5jZ]SBH%^b3m
1.表单中get与post提交方法的区别?
!Hv!n\x.r6X0答:参考GET、POST比较.

_TK c3Sm!k:if0

2.session与cookie的区别?
!mu4ZeE8P8Y%|01、cookie数据存放在客户的浏览器上,session数据放在服务器上。51Testing软件测试网 aPD7XIj'OU

2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗
J8K;|p.s p;}0   考虑到安全应当使用session

0v4BN b? K x1~{0

3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能
*^*w/^m.r-|+F r2Gf0   考虑到减轻服务器性能方面,应当使用COOKIE

LwC-C7a G"z+d/L0

4、单个cookie在客户端的限制是3K,就是说一个站点在客户端存放的COOKIE不能3K。51Testing软件测试网g.| qRUQX

5、建议:将登陆信息等重要信息存放为SESSION;其他信息如果需要保留,可以放在COOKIE中

p4HMX|'DFc+A+_0

B#j{gi{Nv!T:W051Testing软件测试网&r_,D BQ9@"l

vA&T&\2h/K03.数据库中的事务是什么?
*J8{x h9~~y E8j0事务(transaction)是作为一个单元的一组有序的数据库操作。如果所有操作完成,事务则提交,其修改将作用于所有其他数据库进程。如果一个操作失败,则事务将回滚,该事务所有操作的影响都将取消。51Testing软件测试网#o5eCYX"c rNk

51Testing软件测试网5^:`3k;cn I1DZ1Q#m
二、简述题:51Testing软件测试网9k8e(Yu~M
1、用PHP打印出前一天的时间格式是2006-5-10 22:21:21(2分)51Testing软件测试网]8N3M;}/c)KL?!nE"xN
答:echo date('Y-m-d H:i:s', strtotime('-1 days'));

aC ML&u.I:Vl0

2、echo(),print(),print_r()的区别(3分)
kt'gy6YJ0答:echo是PHP语句,print和print_r是函数;语句没有返回值,函数可以有返回值(即便没有用)。  
;i{j'm$Z+U9G0   print()    只能打印出简单类型变量的值(如int,string)  51Testing软件测试网+T!g_5COR
   print_r() 可以打印出复杂类型变量的值(如数组,对象)  
(GB+u2v2U3H0   echo     输出一个或者多个字符串

PN?M$U,hC0

3、能够使HTML和PHP分离开使用的模板(1分)
'L2pO"WB0答:Smarty、FastTemplate、SimpleTemplate

$i1gd/K@,Ws%?0

5、使用哪些工具进行版本控制?(1分)
T_8]3dZ @5x2V0答:cvs,svn,vss。51Testing软件测试网sE)`M7[{Z

6、如何实现字符串翻转?(3分)51Testing软件测试网n]_,a$W9H
答:echo strrev($a);

,~!B;M!a8ae5Z"lo051Testing软件测试网PW\Q9a1bQ)_#u

7、优化MYSQL数据库的方法。(4分,多写多得)51Testing软件测试网+A;w&\'UV-B9h
1)选取最适用的字段属性,尽可能减少定义字段长度,尽量把字段设置为NOT NULL,51Testing软件测试网0g2G&{(l/B`Qx
2)使用连接(JOIN)来代替子查询:
a0v(hHX0z"OM$cU0   a.删除没有任何订单客户:DELETE FROM customerinfo WHERE customerid NOT in(SELECT customerid FROM orderinfo)
M,x x i0u"X.v Mf0   b.提取所有没有订单客户:SELECT FROM customerinfo WHERE customerid NOT in(SELECT customerid FROM orderinfo)51Testing软件测试网7qy4Bl9^^
   c.提高b的速度优化:SELECT FROM customerinfo LEFT JOIN orderid customerinfo.customerid=orderinfo.customerid51Testing软件测试网I A&|raPg"D-t
   WHERE orderinfo.customerid IS NULL51Testing软件测试网@k:|El
3)使用联合(UNION)来代替手动创建的临时表
"U2e&n2y;K0   a.创建临时表:SELECT name FROM `nametest` UNION SELECT username FROM `nametest2`51Testing软件测试网-i%Y a)}+z$Vr
4)事务处理51Testing软件测试网 \P3{ R4J
   a.保证数据完整性,例如添加和修改同时,两者成立则都执行,一者失败都失败
&HWA} e0Iaqw0   mysql_query("BEGIN");51Testing软件测试网^tK }b+]~g j
   mysql_query("INSERT INTO customerinfo (name) VALUES ('$name1')";51Testing软件测试网D9M)XbZ4F7KC['[
   mysql_query("SELECT * FROM `orderinfo` where customerid=".$id");51Testing软件测试网p+~ARNm(iC
   mysql_query("COMMIT");
i qvZ;N5u v"H F05)锁定表,优化事务处理51Testing软件测试网2B/|4Hr%k'@
   a.我们用一个 SELECT 语句取出初始数据,通过一些计算,用 UPDATE 语句将新值更新到表中。包含有 WRITE 关键字的 LOCK TABLE 语句可以保证在 UNLOCK TABLES 命令被执行之前,不会有其它的访问来对 inventory 进行插入、更新或者删除的操作。
;p7[ `q uJ qXTc0   mysql_query("LOCK TABLE customerinfo READ, orderinfo WRITE");
g#RQJ^Q0   mysql_query("SELECT customerid FROM `customerinfo` where id=".$id);
/KT@K(w5s/[0   mysql_query("UPDATE `orderinfo` SET rdertitle='$title' where customerid=".$id);51Testing软件测试网"Z#l[3M[Ae#k8F
   mysql_query("UNLOCK TABLES");51Testing软件测试网 Q'HZ d;Bk(_
6)使用外键,优化锁定表
5h9RQ In$X"wh:Y a0   a.把customerinfo里的customerid映射到orderinfo里的customerid,51Testing软件测试网"h W Y Lt jt
     任何一条没有合法的customerid的记录不会写到orderinfo里51Testing软件测试网 i|\+Xn0B
   CREATE TABLE customerinfo
oz,t&f7d0A6S0   (
oR1S*Z2j?*}mh0     customerid INT NOT NULL,51Testing软件测试网[ R(cuD7k,D%Ba u
     PRIMARY KEY(customerid)  51Testing软件测试网8D5o7tR:Fy^Mz{8R
   )TYPE = INNODB;51Testing软件测试网g[+|$E7Yw4n-TA.P7V
   CREATE TABLE orderinfo
d H}:][1x)R2u)U |n9q0   (51Testing软件测试网8s?7@%SB$X0z9w
     orderid INT NOT NULL,
'] r%Z#TzB0     customerid INT NOT NULL,
R"xSw^IeZ%ML0     PRIMARY KEY(customerid,orderid),
7DK Q-Fp0    FOREIGN KEY (customerid) REFERENCES customerinfo51Testing软件测试网&hETK]St
     (customerid) ON DELETE CASCADE   
Aj-J1P]O ?0   )TYPE = INNODB;
&No.T O{.Z0   注意:'ON DELETE CASCADE',该参数保证当customerinfo表中的一条记录删除的话同时也会删除order;表中的该用户的所有记录,注意使用外键要定义事务安全类型为INNODB。
O,g(Y2j8N'Y:Yeg0}M!Q8E07)建立索引
VV#S&Fk/^0G:j'H0   a.格式:
5O(m(qZQ7T?@0   (普通索引)->
)H2E$xY)[V?0   创建:CREATE INDEX <索引名> ON tablename (索引字段)
8B z~ j!j(iq@6~0   修改:ALTER TABLE tablename ADD INDEX [索引名] (索引字段)51Testing软件测试网g5y9i!b1bd?[n
   创表指定索引:CREATE TABLE tablename([...],INDEX[索引名](索引字段)) 51Testing软件测试网F8QK9D.Lg"L5Q|5o
   (唯一索引)->51Testing软件测试网2tPq:g:[`GXl/Q.ae
   创建:CREATE UNIQUE <索引名> ON tablename (索引字段)
VLTf4Q0   修改:ALTER TABLE tablename ADD UNIQUE [索引名] (索引字段)
N&H d^-D k0   创表指定索引:CREATE TABLE tablename([...],UNIQUE[索引名](索引字段)) 
Y0f1PV/S0   (主键)->
9ks's,fY0   它是唯一索引,一般在创建表是建立,格式为:51Testing软件测试网~(q4]Y^"eC
   CREATA TABLE tablename ([...],PRIMARY KEY[索引字段])51Testing软件测试网2NON1qz:p K*nZ0y Se~
8)优化查询语句51Testing软件测试网_^Ki,^'OR R u
   a.最好在相同字段进行比较操作,在建立好的索引字段上尽量减少函数操作51Testing软件测试网6Q,q-o$_4U8txC,b(jv
   例子1:51Testing软件测试网{eM|hI1A `%`f.x Uv
   SELECT * FROM order WHERE YEAR(orderDate)<2008;(慢)51Testing软件测试网e/^kS%Dq-n_O
   SELECT * FROM order WHERE orderDate<"2008-01-01";(快)
4kC6C@7~M0   例子2:51Testing软件测试网%b5[W)Kb
   SELECT * FROM order WHERE addtime/7<24;(慢)51Testing软件测试网;~`6NV5r"g+]$s
   SELECT * FROM order WHERE addtime<24*7;(快)
Yd+dE%A3a0   例子3:51Testing软件测试网u#C3gz6RB/MT!B Q
   SELECT * FROM order WHERE title like "%good%";(慢)51Testing软件测试网n x7b$Gw{@2?
   SELECT * FROM order WHERE title>="good" and name<"good";(快)

4c!}1rHA0

8、PHP的意思(送1分)51Testing软件测试网:?@iksKz_
Hypertext Preprocessor,超文本预处理语言,是一种在服务器端执行的嵌入HTML文档的脚本语言。

6d:Rg6D,B.L6Z1M ?;T0w0

9、MYSQL取得当前时间的函数是?格式化日期的函数是(2分)
]a e7?toamsl0答:now(),date()51Testing软件测试网R NUu7{2QCY5d&r

B'~FYG$~4z9KK010、实现中文字串截取无乱码的方法。(3分)
h y;{WzcKqA4n0答:function GBsubstr($string, $start, $length) {51Testing软件测试网)X!g Kc0E"j
    if(strlen($string)>$length){51Testing软件测试网@K\9My:\K V
     $str=null;
K+opr)i {x0     $len=$start+$length;51Testing软件测试网.i[i&V c,k
     for($i=$start;$i<$len;$i++){
1rg|.t`/p0    if(ord(substr($string,$i,1))>0xa0){
)`4f]!r3Lf5]*F UQ q0     $str.=substr($string,$i,2);
$h!d^3i T7z0     $i++;51Testing软件测试网'|Sv;U,z l
    }else{51Testing软件测试网*?k3D&Zb.}a
     $str.=substr($string,$i,1);51Testing软件测试网$y~EZTbI L I
     }
{BZ1B2JaU-c'P0    }
x[r1HFw[uU0   return $str.'...';
+WV)y/c[ L;H4]0    }else{
!\+aC B| tMKX8G0   return $string;51Testing软件测试网y~5aoBp
   }
5y7A)c;w3CDD0}51Testing软件测试网Y[8z:Tvz5F

13、请简单阐述您最得意的开发之作(4分)51Testing软件测试网i[9{j"Y J
答:B2C电子商务网站51Testing软件测试网 lDVoq,H(EYb ?Q

14、对于大流量的网站,您采用什么样的方法来解决访问量问题?(4分)51Testing软件测试网1Gece:D0SR/yV
答:a.确认服务器硬件是否足够支持当前的流量,51Testing软件测试网ce]%jJ+hl q4a
     b.数据库读写分离,优化数据表,
{:f)r5@,|e*pv0     c.禁止外部的盗链,
FW5f+c Gd7T0     d.控制大文件的下载,
1^5J(r(v-UeW~0     e.用不同主机分流主要流量51Testing软件测试网;BLgnJ7Q#Dm MR,r

15、用PHP写出显示客户端IP与服务器IP的代码(1分)
9dpk_;W#sj d0
//显示客户端IP
"aE"S5P1b|0M,Z0function get_client_ip() {#51Testing软件测试网R Zb&Jx _/y
if(getenv('HTTP_CLIENT_IP')) {51Testing软件测试网A7sp9dz-zO1f V)Q!f~
$client_ip = getenv('HTTP_CLIENT_IP');
w)i a4C | ^ z B/N \0} elseif(getenv('HTTP_X_FORWARDED_FOR')) {51Testing软件测试网k b#|fX)hhyy
$client_ip = getenv('HTTP_X_FORWARDED_FOR');51Testing软件测试网k Ns0V@
} elseif(getenv('REMOTE_ADDR')) {51Testing软件测试网-[xo)D{J
$client_ip = getenv('REMOTE_ADDR');51Testing软件测试网9VB%b$B#\;F4j)I? @
} else {
q'f%c&^ nDV-J9[0$client_ip = $HTTP_SERVER_VAR['REMOTE_ADDR'];51Testing软件测试网+d*Ot:r U:C`4L
}51Testing软件测试网~$n-g`+\@3VI%b
return $client_ip;51Testing软件测试网8J5bC&`} Ah
}
,a;t{1@(?!v%c(\'b#?6l0//服务器IP51Testing软件测试网8n1R*E@Y X!H3Q:x
function get_server_ip(){
'h.\;I0WBA,_0if (isset($_SERVER))
{;P cNC!C} L0{
9X!r2c5X:xT0if($_SERVER['SERVER_ADDR']) $server_ip=$_SERVER['SERVER_ADDR'];51Testing软件测试网9c#fj-gbC t
else $server_ip=$_SERVER['LOCAL_ADDR'];
E)v @xca&i4j0}51Testing软件测试网1q(@r6| E^-n^
else 
}I.q6Y];T TZ;[O`0{
3~Y1K"Tg0$server_ip=getenv('SERVER_ADDR');
"snQF&z8Q-_ y0}51Testing软件测试网 n"l}-o1L6VS
return $server_ip;
6|:l g)ks {"@ N%u{9l0}
51Testing软件测试网SeB8f7p$D

16、语句include和require的区别是什么?为避免多次包含同一文件,可用(?)语句代替它们? (2分)
M*_4`nB~a^mb%?0答:区别1:
require, "绝对包含",可理解为替代,即在php执行前,将文件中的内容替换掉require这个语句,所以不管require出现在条件还是在循环,或是函数中,文件中的内容都已经包含进来,成为网页的一部分,当require语句所在的条件不成功时,这个文件的内容不会被执行(但已经包含进来了);include,"条件包含",是在php执行时,读到时,只有条件成立,才包含进来。
:Gnvn2o-Y"Q L0
区别2:require不到文件时,程序就会报错Fatal error,并停止运行下边的代码;但include不到文件时,会给出提示,并继续运行下边的代码。51Testing软件测试网Q*d5VV7jr5Bh
include_once
3x!@8?"K[|0require_once
51Testing软件测试网'nPMw"h

9qvT0Wc017、如何修改SESSION的生存时间(1分).51Testing软件测试网7NI9d~[.J I-c+g
答:方法1:将php.ini中的session.gc_maxlifetime设置为9999重启apache
A2h$mUV0   方法2:$savePath = "./session_save_dir/";51Testing软件测试网u ry)Dg#c j y-h,u
         $lifeTime =24*3600;         // 小时 * 秒;51Testing软件测试网`&Y#D+F#| yU
         session_save_path($savePath);
gZ+] RC[AU0         session_set_cookie_params($lifeTime);
7o+yv(P(zS vn0         session_start();
U)R&vK5@U bN2AR6K0   方法3:setcookie() and session_set_cookie_params($lifeTime);51Testing软件测试网0u9{.ma!t1k#[4O#Xw&r
 51Testing软件测试网0@m3W/W}g/n
18、有一个网页地址, 比如PHP开发资源网主页: http://www.phpres.com/index.html,如何得到它的内容?($1分)
T%T*yn{n9r*GZRF0答:方法1(对于PHP5及更高版本):51Testing软件测试网)PhY)mK
   $readcontents = fopen("http://www.phpres.com/index.html", "rb");51Testing软件测试网2d*~$Q N1i,S,`*Z
   $contents = stream_get_contents($readcontents);
B(Ok eg)g\h0   fclose($readcontents);51Testing软件测试网:S4rvelBs
   echo $contents;51Testing软件测试网1e+fxK"?!n&W@7^
   方法2:51Testing软件测试网^i.srk:t1`4T
   echo file_get_contents("http://www.phpres.com/index.html");51Testing软件测试网OapCCO H#Y2? H

19、在HTTP 1.0中,状态码401的含义是(?);如果返回“找不到文件”的提示,则可用 header 函数,其语句为(?);(2分)51Testing软件测试网V^#};`4A@U
答:状态401代表未被授权,header("Location:www.xxx.php");

f2F-WX2G|?0

12、在PHP中,heredoc是一种特殊的字符串,它的结束标志必须?(1分)51Testing软件测试网!iJq5FYPG#[rT
<?php 
+Qng;`2lH)a @*i0$str = <<<EOD51Testing软件测试网h"po wZU&y9gU
Hello, this is an example for HEREDOC Syntax.51Testing软件测试网8W3mL4o4a
Please attention to it.
}M3]2s y @!Wd'E2Y5O7q4}0EOD;
#DeE8WzA?^0echo $str; 
UkXjA/O?:G6~0?>注意,这里的提供的标志符是EOD,中间的是字符串。51Testing软件测试网*E}?#n$Z,u IdF
<<<EOD这个开头并没有分号
_|O8}k7y2lU:f0结束标志必须顶格写,并且要有分号结束

{*`5Qa)_"hY0

13、谈谈asp,php,jsp的优缺点(1分)51Testing软件测试网 r+lZs&n|!Q Q
答:详见浅谈web开发基础51Testing软件测试网E9Y@M*d0mY@

14、谈谈对mvc的认识(1分)
~$l^ H+PCQ/J*y4E8F0答:MVC(Model/View/Controller)模式包括三类对象。Model是应用对象,View是它在屏幕上的表示,Controller定义用户界面对用户输入的响应方式。 模型-视图-控制器(MVC)是80年代Smalltalk-80出现的一种软件设计模式,现在已经被广泛的使用。 
P*s(BNo*C%y;r0
1)模型(Model) 
#if w|~c3w oT0
模型是应用程序的主体部分。模型表示业务数据,或者业务逻辑. 
M8k {*G$p1c0
2)视图(View) 
5d-DS_i-n'{ p0
视图是应用程序中用户界面相关的部分,是用户看到并与之交互的界面。 3)控制器(controller) 
-\!f'Lo(g)OFod0
控制器工作就是根据用户的输入,控制用户界面数据显示和更新model对象状态。

,^BN\ Y1thd0

15、写出发贴数最多的十个人名字的SQL,利用下表:members(id,username,posts,pass,email)(2分)51Testing软件测试网 g/l?/H Yh3g&ojE)f
答:SELECT * FROM `members` ORDER BY posts DESC limit 0,10;

"U,j @3Zc3G0

16. 请说明php中传值与传引用的区别。什么时候传值什么时候传引用?(2分)
quG;Is}2~6{0D%z3Q0答:按值传递:函数范围内对值的任何改变在函数外部都会被忽略51Testing软件测试网0?1Nxc:`;C
   按引用传递:函数范围内对值的任何改变在函数外部也能反映出这些修改
j {5iO&Z~3F0   优缺点:按值传递时,php必须复制值。特别是对于大型的字符串和对象来说,这将会是一个代价很大的操作。
-l#p1WSVLrb$B)W0   按引用传递则不需要复制值,对于性能提高很有好处。51Testing软件测试网*c8]t[ ` s P6E C

17. 在PHP中error_reporting这个函数有什么作用? (1分)51Testing软件测试网 U H-k~9te
答:用来设置错误信息回报的等级

;Yn \*~/r0

18. 请写一个函数验证电子邮件的格式是否正确 (2分)51Testing软件测试网 iU.s PR[m"H}4w
//if the email address is valid, return true,else return false51Testing软件测试网0A*Ll!OJs,Pt4re
function validateEmail($email)51Testing软件测试网 B!g`L9qE
{
R,P po]\L CJ0if(eregi('^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*$',$email) ){
MrG:o#~_"[1H#c0return true;
c1O7H.w9?3O2K0}else{51Testing软件测试网Qm[V*cZ] sa?
return false;51Testing软件测试网)?.l3o/SpC
}
gM5i|)wmT m0}

Mrm SV0

19. 简述如何得到当前执行脚本路径,包括所得到参数。(2分)
r MTCid!?Z0echo $_SERVER['SCRIPT_FILENAME']."?".$_SERVER['QUERY_STRING'];
HsGW0Uzk0

sc7w{%rG"eID0
20.如何修改SESSION的生存时间. (1分)
KjT+my,GMG*y4b0setcookie()
vR+j9X-J0
`Z c^5e-k#H0session_set_cookie_params($lifeTime)
51Testing软件测试网? U^-u){ x N[+]0d#j

21、JS表单弹出对话框函数是?获得输入焦点函数是? (2分)
&H*aPM4~c0答:弹出对话框: alert(),prompt(),confirm()51Testing软件测试网mPxke/hI
   获得输入焦点 focus()51Testing软件测试网&^b WHK~

22、JS的转向函数是?怎么引入一个外部JS文件?(2分)51Testing软件测试网7v9Sx9X_!e'GM
答:window.location.href
(LqA'B2Jv*_R2{@0<script. type="text/javascript" src="js/js_function.js"></script>51Testing软件测试网.cP.?|7Zt

23、foo()和@foo()之间有什么区别?(1分)
F2Q5b6f-Po+A0答:PHP 支持一个错误控制运算符:@。当将其放置在一个 PHP 表达式之前,该表达式可能产生的任何错误信息都被忽略掉。51Testing软件测试网D7~(k3CfDNY
注意: @ 运算符只对表达式有效。对新手来说一个简单的规则就是:如果能从某处得到值,就能在它前面加上 @ 运算符。例如,可以把它放在变量,函数和include()调用,常量,等等之前。不能把它放在函数或类的定义之前,也不能用于条件结构例如 if 和 foreach 等。51Testing软件测试网ED M*{R5nO XE js0vS

24、如何声明一个名为”myclass”的没有方法和属性的类? (1分)
'Sazs A&al2I$A }0e0答:class myclass{ }51Testing软件测试网Qp NJ{ c)td1Fts

25、如何实例化一个名为”myclass”的对象?(1分)
{ wY0X!vNB0答:$newmyclass = new myclass();51Testing软件测试网/}0O\h8r3B&nTo

26、你如何访问和设置一个类的属性? (2分)51Testing软件测试网Ic;h xavH
答:$newmyclass = new myclass();
:{3{|_o t1z~ ] }0
     $temp=$newmyclass->testvalue;
S bS0suEs0
     $newmyclass->testvalue="a";

Ze-wv#T YV9c0

27、mysql_fetch_row() 和mysql_fetch_array之间有什么区别? (1分)51Testing软件测试网 Q0D0W3Y$x
答:mysql_fetch_row是从结果集取出1行数组,作为枚举数组51Testing软件测试网 mYoUq&p;e4\rt
   mysql_fetch_array是从结果集取出1行数组作为关联数组,或数字数组,两者兼得

;IEX:h*|0

28、GD库是做什么用的? (1分)
*x(_EJ"o IW0答:gd库提供了一系列用来处理图片的API,使用GD库可以处理图片,或者生成图片。 在网站上GD库通常用来生成缩略图或者用来对图片加水印或者对网站数据生成报表。

~"c!U^:gN9V l;Hg0

29、指出一些在PHP输入一段HTML代码的办法。(1分)51Testing软件测试网t6y*\b4}j
答: print("<br/>"); echo "<br/>"; 51Testing软件测试网cCB3Lw,N8i7d]

30、下面哪个函数可以打开一个文件,以对文件进行读和写操作?(1分)51Testing软件测试网%Tq0N Ju^#Js4M~
    (a) fget() (b) file_open() (c) fopen() (d) open_file()  [  c  ]

~;hg:G!fz0

31、下面哪个选项没有将 john 添加到users 数组中? (1分)
*X't)lN!Qx W0  (a) $users[] = ‘john’;
)G _:wv9A-O p]%l0  (b) array_add($users,’john’);51Testing软件测试网+zs%tl)G E?
  (c) array_push($users,‘john’);51Testing软件测试网Lf3pm8Ur5O0Z
  (d) $users ||= ‘john’; 
[  b 、d  ]51Testing软件测试网1i2`(V.Ax;C

32、下面的程序会输入是否?(1分)
u7cCn)A K0  $num = 10;51Testing软件测试网S`'\?H4phz&w7}
  function multiply(){51Testing软件测试网(Vs+^W KB
  $num = $num * 10;
+V(MO9J9m$B)c0  }
Dd,Sq4l%q w1T0  multiply();51Testing软件测试网$[ kI~t
  echo $num;
"W_1t]6a7Y3J^0  ?>
9^^'s(|`\(x0    输出:10 

"bo7q'kq0

33、使用php写一段简单查询,查出所有姓名为“张三”的内容并打印出来 (2分)
Lbe`H6a?0  表名User51Testing软件测试网$kL0e2D^%B:e&U
  Name Tel Content Date
Tx(zodRs$k!e0  张三 13333663366 大专毕业 2006-10-1151Testing软件测试网O@J`b1J&s+@'N|p
  张三 13612312331 本科毕业 2006-10-15
4A,v/S9`n0AG0  张四 021-55665566 中专毕业 2006-10-15
K+[ YC K0  请根据上面的题目完成代码:51Testing软件测试网r1nWb.@!l*h?
 $mysql_db=mysql_connect("local","root","pass");51Testing软件测试网!o3@l}5b P0d/w
   @mysql_select_db("DB",$mysql_db);51Testing软件测试网+d,k6W\*o lB6`xe
    $result=mysql_query("select * from User where Name='张三'");51Testing软件测试网|XyHGO!\
    while($row=mysql_fetch_array($result))51Testing软件测试网#| Z1oEV4U
    {51Testing软件测试网)T SHJF5z6b
echo $row['Name'].$row['Tel'].$row['Content'].$row['Date'];51Testing软件测试网,Ah-E ha0a
echo "<br>";51Testing软件测试网b6Df#HK"~1C i\
     }51Testing软件测试网w{~[q

34、如何使用下面的类,并解释下面什么意思?(3)
%Jtw#p v+o.Y0  class test{51Testing软件测试网/Bi4b?4`-O+M@
          function Get_test($num){
:Q[BbAh)BXG0      $num=md5(md5($num)."En");51Testing软件测试网w8D{Q9f
      return $num;51Testing软件测试网&N,bj!A6Se/XPA{
   }51Testing软件测试网~ hHpJp1CD.q
  }
z2U,g6D6u0答:双重md5加密51Testing软件测试网!x)L(P9^ [O(P
$testObject = new test();51Testing软件测试网Q#Q/Ph tnw6w'q
$encryption = $testObject->Get_test("xiaotian_ls");

tqT| wv7E|+so0

35、写出 SQL语句的格式 : 插入 ,更新 ,删除 (4分)
9CO/v3w } l0  表名User
#@t%n~L {.pC7E2w0  Name Tel Content Date51Testing软件测试网c QY4pR
  张三 13333663366 大专毕业 2006-10-11
x$R `3\1p0[1jV0  张三 13612312331 本科毕业 2006-10-15
v~ IL#S0  张四 021-55665566 中专毕业 2006-10-15
"qhEH[A fU8D/F(kt0(a) 有一新记录(小王 13254748547 高中毕业 2007-05-06)请用SQL语句新增至表中
/IEF,{y(R@8J0INSERT INTO User('Name','Tel','Content','Date') VALUES('小王','13254748547','高中毕业','2007-05-06')51Testing软件测试网4ew(ECK?X'@3m^q.OI
(b) 请用sql语句把张三的时间更新成为当前系统时间51Testing软件测试网 J A'Ei4[{
UPDATE User SET Date=DATE_FORMAT(NOW(),'%Y-%m-%d') WHERE Name='张三'
l`\j O}%J4uo0(c) 请写出删除名为张四的全部记录51Testing软件测试网)OCvOD(r
DELETE FROM User WHERE Name='张四'
51Testing软件测试网 i d e%[.vE9C

36、请写出数据类型(int char varchar datetime text)的意思; 请问varchar和char有什么区别(2分)
A-s/?L&\o*H0答:int是数字类型,char固定长度字符串,varchar实际长度字符串,datetime日期时间型,text文本字符串51Testing软件测试网6y3x oaWp)B
   char长度固定,varchar可变长度,可节约存储空间,但查询效率要低于char51Testing软件测试网![+[#q9l#Jg

38、写出以下程序的输出结果 (1分)
wz}$v/u#i.f+`u0  $b=201;51Testing软件测试网I%} `3`yf
  $c=40;
Q5T$yu5s0{0    $a=$b>$c?4:5;51Testing软件测试网@0cEt zRId$D
  echo $a;
-eT9ZS(\l:pV:xu _0  ?>
-B'Q+o-H"j wV0答:4

(qR5f%H&~&F0

39、检测一个变量是否有设置的函数是否?是否为空的函数是?(2分)
-Mja1J_Xkb0答:isset($str),empty($str);51Testing软件测试网~:?|h `tMd+kg

40、取得查询结果集总数的函数是?(1分)51Testing软件测试网!Xz$[G%e |.v:u Ef
答:mysql_num_rows($result);51Testing软件测试网+C}(t6D3gt

41、$arr = array('james', 'tom', 'symfony'); 请打印出第一个元素的值 (1分)51Testing软件测试网\3d(c%{8JC d+]
答:echo $array[0];51Testing软件测试网T1?Bs2F]

42、请将41题的数组的值用','号分隔并合并成字串输出(1分)51Testing软件测试网 FSv9kU%MU.w2Ns]
答:for($i=0;$i<count($array);$i++){ echo $array[$i].",";}

zj;H4e0uH0

43、$a = 'abcdef'; 请取出$a的值并打印出第一个字母(1分)51Testing软件测试网6~ Jt-c\c
答:echo substr($a,0,1)

3L}v-XpG0

44、PHP可以和sql server/oracle等数据库连接吗?(1分)51Testing软件测试网 S{PB:I8n,B!iE
答:当然可以

'gYy:i(V,q%Pi0

45、请写出PHP5权限控制修饰符(3分)51Testing软件测试网#r BA3L-~bd
答:public(公共),private(私用),protected(继承)51Testing软件测试网2S^]3l2w.z9sB }0m
  1、默认的是public(公共),即当你没有为属性和方法指定访问修饰时就默认为public的。而这些public的项目在类内类外都可以访问。
}G#j A9G ]6}3\0  2、private(私有)访问修饰,意味着被修饰的项只能在类中被访问。如果你没使用__get()和__set(),就最好给每个属性都加上private修饰。也可以给方法加private修饰,例如一些只在类中才用到的函数。private修饰的项不能被继承(更多详细内容会在本章后续部分提到)。51Testing软件测试网P1^e2ob$m-];NC
  3、protected(保护)修饰的项能在类及其子类中访问
51Testing软件测试网c.UQt o ~ygb

46、请写出php5的构造函数和析构函数(2分)51Testing软件测试网RjOGD\
答:__construct , __destruct

@:];v1auK0

47、完成以下:51Testing软件测试网Rz6s/y}!\{A z
   (一)创建新闻发布系统,表名为message有如下字段 (3分)51Testing软件测试网xB'PO"`*pncJ
  id 文章id
U"dZ2]/};t n$D6r0  title 文章标题
wpG c2Z`/Pp0  content 文章内容
c1h8~\7D G0  category_id 文章分类id51Testing软件测试网TW~ Y"RxP
       hits 点击量51Testing软件测试网2k2sho:H
答:CREATE TABLE 'message'(
? VV4b(zJ,xYbk.D z0   'id' int(10) NOT NULL auto_increment,
1uu@6f)Rc.AM5n0   'title' varchar(200) default NULL,51Testing软件测试网,m_]0[+WN\9Ty g
   'content' text,
zp^!Kb+Q;o L z9i \i0   'category_id' int(10) NOT NULL,51Testing软件测试网F R6kUU:uV
   'hits' int(20),
h.}ar{CL2b1\0   PRIMARY KEY('id');51Testing软件测试网d q|"OrH*F_,J
   )ENGINE=InnoDB DEFAULT CHARSET=utf8;51Testing软件测试网j\@ v2e#d

   (二)同样上述新闻发布系统:表comment记录用户回复内容,字段如下 (4分)
eb,X]^"N$C\0  comment_id 回复id51Testing软件测试网7|m6U'K:C^!r#Ei
  id 文章id,关联message表中的id
f#x1`5UTO[5C-Wo0  comment_content 回复内容
L R@ ?'F8v0  现通过查询数据库需要得到以下格式的文章标题列表,并按照回复数量排序,回复最高的排在最前面51Testing软件测试网|i |KK%H5CM5[R
  文章id 文章标题 点击量 回复数量
sj2\ o,v6@0  用一个SQL语句完成上述查询,如果文章没有回复则回复数量显示为051Testing软件测试网*X |*py7kc9g
答:SELECT message.id id,message.title title,IF(message.`hits` IS NULL,0,message.`hits`) hits,
^j#O0``^ J3mj0   IF(comment.`id` is NULL,0,count(*)) number FROM message LEFT JOIN 51Testing软件测试网HY~p0t\F5i
   comment ON message.id=comment.id GROUP BY message.`id`;51Testing软件测试网H+HdP ~A%a

  (三)上述内容管理系统,表category保存分类信息,字段如下 (3分)51Testing软件测试网"ej0b2aYk
  category_id int(4) not null auto_increment;51Testing软件测试网3|{H;g _
  categroy_name varchar(40) not null;
|'aV z(E'a3Y5[0  用户输入文章时,通过选择下拉菜单选定文章分类51Testing软件测试网Xo8}'n5b6PP1u
  写出如何实现这个下拉菜单51Testing软件测试网Nx F l#Q(q
答:function categoryList()
j$_b"g3} S0{51Testing软件测试网;S9mg&|e8V
    $result=mysql_query("select category_id,categroy_name from category")
H$e/F*u.S*b0            or die("Invalid query: " . mysql_error());51Testing软件测试网0V `-p\q"CSf2r&G1o
    print("<select name='category' value=''>/n");51Testing软件测试网H6ht$A`9W]}
    while($rowArray=mysql_fetch_array($result))51Testing软件测试网 FSof9|g
    {51Testing软件测试网3]:{#F'lQ4Qe5l
       print("<option value='".$rowArray['category_id']."'>".$rowArray['categroy_name']."</option>/n");51Testing软件测试网_#I:w@h5L.?;RuN
    }51Testing软件测试网:OS H(]i
    print("</select>");
8YQf,s.z g$A0}51Testing软件测试网 \_3ZfrsP


TAG: 面试 PHP php 基础

 

评分:0

我来说两句

Open Toolbar