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

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

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

面试了,复习下~~~~~~51Testing软件测试网"v/\+QT#cCF2B-FL
---------------------
Y6H6k&] q3m;K0一、基础题:
51Testing软件测试网 U2JD;K;Xkz%Zp
1.表单中get与post提交方法的区别?51Testing软件测试网'DN$O!P7@| Q$f
答:参考GET、POST比较.
51Testing软件测试网waEDj

2.session与cookie的区别?51Testing软件测试网9D;gmu F,y L?y
1、cookie数据存放在客户的浏览器上,session数据放在服务器上。51Testing软件测试网[8D$bb3^w"H

2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗
eNdw@ u'{8g0   考虑到安全应当使用session

`r~yLFcV0

3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能51Testing软件测试网(^A#A-M2s e a!X
   考虑到减轻服务器性能方面,应当使用COOKIE
51Testing软件测试网,F]$j6I*S qj^q5B

4、单个cookie在客户端的限制是3K,就是说一个站点在客户端存放的COOKIE不能3K。

g6f.|g%yq){V0

5、建议:将登陆信息等重要信息存放为SESSION;其他信息如果需要保留,可以放在COOKIE中51Testing软件测试网9ni!b#w5Ev8Y!mF \0qC

:UQ|+ub!j&Ra }0

6Tg-B1L!M6WaU/H051Testing软件测试网2F J{1mU9x.t,^r

3.数据库中的事务是什么?51Testing软件测试网,Xf2P5{6Y*Km6| ~
事务(transaction)是作为一个单元的一组有序的数据库操作。如果所有操作完成,事务则提交,其修改将作用于所有其他数据库进程。如果一个操作失败,则事务将回滚,该事务所有操作的影响都将取消。

0vP+~8}M A6V0

51Testing软件测试网C5f9`5O0r/l*AOn
二、简述题:51Testing软件测试网QlZ C;pp;b p
1、用PHP打印出前一天的时间格式是2006-5-10 22:21:21(2分)
%_3f9c1J8`r3w Fl0答:echo date('Y-m-d H:i:s', strtotime('-1 days'));51Testing软件测试网hE0Er2P"yNmk

2、echo(),print(),print_r()的区别(3分)
4z5FZOUk ]A#W#j0答:echo是PHP语句,print和print_r是函数;语句没有返回值,函数可以有返回值(即便没有用)。  51Testing软件测试网3L+{:?;?%i En2n6XJD
   print()    只能打印出简单类型变量的值(如int,string)  51Testing软件测试网?GEpz;~
   print_r() 可以打印出复杂类型变量的值(如数组,对象)  51Testing软件测试网$GFp]pG/n
   echo     输出一个或者多个字符串

!_ Y%Zh,C#g2gg0

3、能够使HTML和PHP分离开使用的模板(1分)
dPE$~'A0答:Smarty、FastTemplate、SimpleTemplate51Testing软件测试网2p:O"B7H8^Et {-v

5、使用哪些工具进行版本控制?(1分)
AI~)_)Q"^`ED0答:cvs,svn,vss。

;_a(n3_0C%R Zb0

6、如何实现字符串翻转?(3分)
LI9]-U(Qe0答:echo strrev($a);51Testing软件测试网YBx4VN)Vt2EYd t

0O z;\ |7s$yV07、优化MYSQL数据库的方法。(4分,多写多得)
T3P\#[8g5{j01)选取最适用的字段属性,尽可能减少定义字段长度,尽量把字段设置为NOT NULL,51Testing软件测试网 DdJ-U pZq8K7^!Vp
2)使用连接(JOIN)来代替子查询:51Testing软件测试网GEmk&]pn V
   a.删除没有任何订单客户:DELETE FROM customerinfo WHERE customerid NOT in(SELECT customerid FROM orderinfo)51Testing软件测试网9mys*V\7Q-Y
   b.提取所有没有订单客户:SELECT FROM customerinfo WHERE customerid NOT in(SELECT customerid FROM orderinfo)
M8m7h v'FXag0   c.提高b的速度优化:SELECT FROM customerinfo LEFT JOIN orderid customerinfo.customerid=orderinfo.customerid
,G6x S[*w Kf0   WHERE orderinfo.customerid IS NULL
!z'pk;eeC03)使用联合(UNION)来代替手动创建的临时表51Testing软件测试网/Y9w2zA b
   a.创建临时表:SELECT name FROM `nametest` UNION SELECT username FROM `nametest2`51Testing软件测试网W^!Y MR
4)事务处理
X'd] QM1m@5w$m0   a.保证数据完整性,例如添加和修改同时,两者成立则都执行,一者失败都失败
8b%VI*Ij hY0   mysql_query("BEGIN");
}7C l\"iu~+i0   mysql_query("INSERT INTO customerinfo (name) VALUES ('$name1')";51Testing软件测试网nv B m-E.?
   mysql_query("SELECT * FROM `orderinfo` where customerid=".$id");
]gC!U4b8{@-r fC0   mysql_query("COMMIT");51Testing软件测试网]1XR2osQ
5)锁定表,优化事务处理51Testing软件测试网 y3Tp/Ar
   a.我们用一个 SELECT 语句取出初始数据,通过一些计算,用 UPDATE 语句将新值更新到表中。包含有 WRITE 关键字的 LOCK TABLE 语句可以保证在 UNLOCK TABLES 命令被执行之前,不会有其它的访问来对 inventory 进行插入、更新或者删除的操作。51Testing软件测试网,S]t@D.Y0F_'m V V
   mysql_query("LOCK TABLE customerinfo READ, orderinfo WRITE");
6r8MN#J*v r4Ai;z0   mysql_query("SELECT customerid FROM `customerinfo` where id=".$id);
x-D!`h\g1Iv0   mysql_query("UPDATE `orderinfo` SET rdertitle='$title' where customerid=".$id);
QbnhW"GB0   mysql_query("UNLOCK TABLES");51Testing软件测试网ort VD8QW"sH
6)使用外键,优化锁定表51Testing软件测试网hU:~B%G^$Q_
   a.把customerinfo里的customerid映射到orderinfo里的customerid,
+}-iRTBrJ ~j0     任何一条没有合法的customerid的记录不会写到orderinfo里
`sm/],B7A|0   CREATE TABLE customerinfo
S8qV:t|6`-|q Hy0   (51Testing软件测试网&]"N9_"MFBS$T
     customerid INT NOT NULL,51Testing软件测试网"~0y cx V
     PRIMARY KEY(customerid)  51Testing软件测试网vd OK Xg+K `T
   )TYPE = INNODB;
#E | Z6r tb1vp#G0   CREATE TABLE orderinfo51Testing软件测试网@8zfd7g;M
   (51Testing软件测试网DA&ig0F!t K*z
     orderid INT NOT NULL,
)h]K|;E6|| k![0     customerid INT NOT NULL,
#SRn+~x'[sg3s1h0     PRIMARY KEY(customerid,orderid),
X%Bl{6On$@a^?c0    FOREIGN KEY (customerid) REFERENCES customerinfo
z u C l4m0     (customerid) ON DELETE CASCADE   
[%}'?,V"?2sT0   )TYPE = INNODB;51Testing软件测试网.g0V1M3hF3S#Dc
   注意:'ON DELETE CASCADE',该参数保证当customerinfo表中的一条记录删除的话同时也会删除order;表中的该用户的所有记录,注意使用外键要定义事务安全类型为INNODB。51Testing软件测试网+Q0j#`-zbn
7)建立索引
n+}2Z6w(_;_d0   a.格式:
[i:l0_6W~,ku0   (普通索引)->
+qR [+Ww"j)[d0   创建:CREATE INDEX <索引名> ON tablename (索引字段)51Testing软件测试网PQs$MIjwB
   修改:ALTER TABLE tablename ADD INDEX [索引名] (索引字段)
[+I]{&|"G7G QN0   创表指定索引:CREATE TABLE tablename([...],INDEX[索引名](索引字段)) 
G.Er7s?0k*v Z^0   (唯一索引)->
K[:SX;}&B0   创建:CREATE UNIQUE <索引名> ON tablename (索引字段)
,u6n#C.?&L K0@0   修改:ALTER TABLE tablename ADD UNIQUE [索引名] (索引字段)51Testing软件测试网b^*y;KTZ n|
   创表指定索引:CREATE TABLE tablename([...],UNIQUE[索引名](索引字段)) 51Testing软件测试网N&u$XOp9z%N1I
   (主键)->
(yXon vXsv0   它是唯一索引,一般在创建表是建立,格式为:
r!Ep$`!_W#Y+F?0   CREATA TABLE tablename ([...],PRIMARY KEY[索引字段])51Testing软件测试网6ACP#e G4A&e
8)优化查询语句51Testing软件测试网g&wa_8l1g;] q sW6L\
   a.最好在相同字段进行比较操作,在建立好的索引字段上尽量减少函数操作
tw\*\n$_MR5}E"q0   例子1:
h3? @j#AQqb L*Z0   SELECT * FROM order WHERE YEAR(orderDate)<2008;(慢)51Testing软件测试网V1[%t+}{ I
   SELECT * FROM order WHERE orderDate<"2008-01-01";(快)51Testing软件测试网%J ^)~,t$eD @Om9R
   例子2:
\?s9ZLDo0   SELECT * FROM order WHERE addtime/7<24;(慢)
7V)J%T6gf0   SELECT * FROM order WHERE addtime<24*7;(快)
_S:YV%P\GuW-l0   例子3:51Testing软件测试网8d)u.O[^c:d
   SELECT * FROM order WHERE title like "%good%";(慢)
#JxcjO5j;s;d_0   SELECT * FROM order WHERE title>="good" and name<"good";(快)51Testing软件测试网|W V^e-P

8、PHP的意思(送1分)
z.Ty$mug0Hypertext Preprocessor,超文本预处理语言,是一种在服务器端执行的嵌入HTML文档的脚本语言。51Testing软件测试网hC7[2Q5V/n

9、MYSQL取得当前时间的函数是?格式化日期的函数是(2分)51Testing软件测试网 w8jFOp0HE
答:now(),date()51Testing软件测试网xA\[H%I

51Testing软件测试网@Z&z6~"q-w

10、实现中文字串截取无乱码的方法。(3分)51Testing软件测试网"_#[F xm([8k};T
答:function GBsubstr($string, $start, $length) {
qL:L s(p"H+^0    if(strlen($string)>$length){51Testing软件测试网o)D$Qs]8?+tE
     $str=null;51Testing软件测试网yh9LRL\Q
     $len=$start+$length;51Testing软件测试网Yu] s!S ~ c9JKy
     for($i=$start;$i<$len;$i++){51Testing软件测试网)B$f!R6x?3y"ANa O
    if(ord(substr($string,$i,1))>0xa0){51Testing软件测试网&P;?/@lsVX9g
     $str.=substr($string,$i,2);
Y(B1ww i4D0eQ.X4d0     $i++;
3Xo_&[k d ]0    }else{
$CF3U;XF1D3Le0     $str.=substr($string,$i,1);
wW.WP2HI/|0     }
+C?j9nD'G;c7nT0    }
,u,H"c'B HC5^fn0   return $str.'...';51Testing软件测试网r2Js%kw-I:Y
    }else{51Testing软件测试网/{0VF9L+?7m `$L:Cu
   return $string;51Testing软件测试网.sv v+|*i A)g
   }51Testing软件测试网$U a {vK,UP3b
}

9r+I rdAi6t0

13、请简单阐述您最得意的开发之作(4分)51Testing软件测试网 q [5[|#]%UB$rK
答:B2C电子商务网站51Testing软件测试网y6Oq)S E0F3?m!U

14、对于大流量的网站,您采用什么样的方法来解决访问量问题?(4分)51Testing软件测试网tq-?(Rb X
答:a.确认服务器硬件是否足够支持当前的流量,
1Ux7Ih%tH5s0     b.数据库读写分离,优化数据表,51Testing软件测试网csl'ok.xYr
     c.禁止外部的盗链,51Testing软件测试网+iWE2_;P8X \.L5B
     d.控制大文件的下载,51Testing软件测试网w&YDL3A
     e.用不同主机分流主要流量

Roi3E/E0m-U{0
15、用PHP写出显示客户端IP与服务器IP的代码(1分)
E:BVA#j&x4bj/x0
//显示客户端IP
N^?4v5]8bQ-P f.e0function get_client_ip() {#51Testing软件测试网3R G'@]-k
if(getenv('HTTP_CLIENT_IP')) {
SA$Hs r!}0$client_ip = getenv('HTTP_CLIENT_IP');
%l;r8F!w$gr\0} elseif(getenv('HTTP_X_FORWARDED_FOR')) {
Gte}2m0$client_ip = getenv('HTTP_X_FORWARDED_FOR');
g)g N|S(e*jGLL0} elseif(getenv('REMOTE_ADDR')) {51Testing软件测试网A Ps zP-e*o9n
$client_ip = getenv('REMOTE_ADDR');51Testing软件测试网%N&Be'B.uBs*J/zo
} else {
9gdn3k2[ sw!hG @0$client_ip = $HTTP_SERVER_VAR['REMOTE_ADDR'];51Testing软件测试网XwL'xaQy n7|f!Q
}51Testing软件测试网~!kN ~)^C
return $client_ip;51Testing软件测试网)eZkp)p {:YH
}51Testing软件测试网A M:FAK
//服务器IP51Testing软件测试网Ed&a QO n5eu0f"{
function get_server_ip(){
,H9jH o^_0if (isset($_SERVER))51Testing软件测试网)I-@ s!d%O0ijt
{
W4TZ e8K MM0if($_SERVER['SERVER_ADDR']) $server_ip=$_SERVER['SERVER_ADDR'];51Testing软件测试网`&aD7WUNoZ \
else $server_ip=$_SERVER['LOCAL_ADDR'];
,|@ s0vyl0}51Testing软件测试网mL5_W*N0V;u;W
else 
a5A/I z:y2? r4g,r0{51Testing软件测试网RR.@Z;z*D`Z,WKj2p
$server_ip=getenv('SERVER_ADDR');
%iw7^7l-v/I8Pj m Z0W0}51Testing软件测试网&{Zcb#f?5b
return $server_ip;51Testing软件测试网R-Q]} yu
}

[+^ZD Bk016、语句include和require的区别是什么?为避免多次包含同一文件,可用(?)语句代替它们? (2分)
"],w w3\ {)z0答:区别1:
require, "绝对包含",可理解为替代,即在php执行前,将文件中的内容替换掉require这个语句,所以不管require出现在条件还是在循环,或是函数中,文件中的内容都已经包含进来,成为网页的一部分,当require语句所在的条件不成功时,这个文件的内容不会被执行(但已经包含进来了);include,"条件包含",是在php执行时,读到时,只有条件成立,才包含进来。
"D9P]Z*gx%F0
区别2:require不到文件时,程序就会报错Fatal error,并停止运行下边的代码;但include不到文件时,会给出提示,并继续运行下边的代码。51Testing软件测试网C4Xg0sX q'p9x
include_once
y]X5W#U8C0require_once
51Testing软件测试网HD%ZL&gA

51Testing软件测试网0sdK{ k

17、如何修改SESSION的生存时间(1分).
w UI:p Kak*^0答:方法1:将php.ini中的session.gc_maxlifetime设置为9999重启apache51Testing软件测试网\-Bd'tz4Vo d
   方法2:$savePath = "./session_save_dir/";
zlT4@R+P0         $lifeTime =24*3600;         // 小时 * 秒;
W4s-mE+h3V v+u5n0         session_save_path($savePath);
v_+QS-Q0         session_set_cookie_params($lifeTime);
#p6dl)g j6l2sKJ0         session_start();
&q-N6Q"DO"a!M*F0aOp0   方法3:setcookie() and session_set_cookie_params($lifeTime);
x-D(|%A.lc1j0 
.Y^%VC#^Z018、有一个网页地址, 比如PHP开发资源网主页: http://www.phpres.com/index.html,如何得到它的内容?($1分)51Testing软件测试网n^g uu5M$r Y
答:方法1(对于PHP5及更高版本):51Testing软件测试网"~F%k @)f,{2v
   $readcontents = fopen("http://www.phpres.com/index.html", "rb");51Testing软件测试网b:N {_;COT'Q(d!gj
   $contents = stream_get_contents($readcontents);
W d+aHV ~V#X:]0   fclose($readcontents);51Testing软件测试网)]8{BQo)u b
   echo $contents;51Testing软件测试网+D!KT&j!{-w6YW
   方法2:51Testing软件测试网 d Z | QApe
   echo file_get_contents("http://www.phpres.com/index.html");

wWV1^:G0

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

5PU MB*\-ZO5B0

12、在PHP中,heredoc是一种特殊的字符串,它的结束标志必须?(1分)
w5{ p1j ] K`YJ0<?php 51Testing软件测试网7n"sK/s j
$str = <<<EOD
R YJ&Q/i#c(h0Hello, this is an example for HEREDOC Syntax.51Testing软件测试网d,hQXM?A,h
Please attention to it.
#F!X1mj"~0EOD;
KL0v%m[0echo $str; 
a`$qL@cj6c0?>注意,这里的提供的标志符是EOD,中间的是字符串。
W!gW_"e s!S&k i0<<<EOD这个开头并没有分号
?t0\D0\7z[v0结束标志必须顶格写,并且要有分号结束

}K4XhO0

13、谈谈asp,php,jsp的优缺点(1分)
1lx BdsL,nJ0答:详见浅谈web开发基础

$r B3Z9J\.]/X1o7?5w0

14、谈谈对mvc的认识(1分)51Testing软件测试网%e~r*Y o
答:MVC(Model/View/Controller)模式包括三类对象。Model是应用对象,View是它在屏幕上的表示,Controller定义用户界面对用户输入的响应方式。 模型-视图-控制器(MVC)是80年代Smalltalk-80出现的一种软件设计模式,现在已经被广泛的使用。 51Testing软件测试网;G-@l:sZ6w^Md+w
1)模型(Model) 
OJ"T.b~1PPz(y0
模型是应用程序的主体部分。模型表示业务数据,或者业务逻辑. 
7GCfvr c0
2)视图(View) 
6E? p}V0
视图是应用程序中用户界面相关的部分,是用户看到并与之交互的界面。 3)控制器(controller) 
+R n9FYWA(AS6i7H0
控制器工作就是根据用户的输入,控制用户界面数据显示和更新model对象状态。

.T2X0h ~ ^r*aw0

15、写出发贴数最多的十个人名字的SQL,利用下表:members(id,username,posts,pass,email)(2分)51Testing软件测试网H%SU@Ka.ur.r
答:SELECT * FROM `members` ORDER BY posts DESC limit 0,10;

NC+k,U)q m0

16. 请说明php中传值与传引用的区别。什么时候传值什么时候传引用?(2分)
qs,e,\ Q#sA0答:按值传递:函数范围内对值的任何改变在函数外部都会被忽略51Testing软件测试网wo#^*z n
   按引用传递:函数范围内对值的任何改变在函数外部也能反映出这些修改
#tZBY5HN*t$m0{k0   优缺点:按值传递时,php必须复制值。特别是对于大型的字符串和对象来说,这将会是一个代价很大的操作。51Testing软件测试网rTC2o*^-Y5V
   按引用传递则不需要复制值,对于性能提高很有好处。

8YP9\!EO` r+E0

17. 在PHP中error_reporting这个函数有什么作用? (1分)
0x a+W\v0答:用来设置错误信息回报的等级51Testing软件测试网&[ i S*EuMz4eo;x

18. 请写一个函数验证电子邮件的格式是否正确 (2分)51Testing软件测试网0`XT;h5L x3t f
//if the email address is valid, return true,else return false
@j6e%C,Q'S,t0function validateEmail($email)
DHPc F3VIl0{51Testing软件测试网A5orc y3U;Q
if(eregi('^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*$',$email) ){
q"W ]gw0return true;51Testing软件测试网.m$l4fa2^]
}else{
'v+WZ$C5iW A0return false;
Im2A#J:b ]0}
|(d DZ ZW/[ia4s0}
51Testing软件测试网`YAr YAA s

19. 简述如何得到当前执行脚本路径,包括所得到参数。(2分)51Testing软件测试网'Wa ?5Vz
echo $_SERVER['SCRIPT_FILENAME']."?".$_SERVER['QUERY_STRING'];51Testing软件测试网J$LL RWR

q/U:wO(R S.e0
20.如何修改SESSION的生存时间. (1分)51Testing软件测试网0l+w m![1ryG2y
setcookie()
7qR2HZA0
-m)NN6G5B:T}3z0session_set_cookie_params($lifeTime)
51Testing软件测试网LS,}3g)|

21、JS表单弹出对话框函数是?获得输入焦点函数是? (2分)51Testing软件测试网wt O d8S$e@$J
答:弹出对话框: alert(),prompt(),confirm()51Testing软件测试网0e*m3@;} v6| GLq/X_6O
   获得输入焦点 focus()

:yA$[^6K#M/[0

22、JS的转向函数是?怎么引入一个外部JS文件?(2分)51Testing软件测试网u+Vw*j%y ~ R)|[
答:window.location.href51Testing软件测试网t#j`8uIKa%e|'Ex
<script. type="text/javascript" src="js/js_function.js"></script>51Testing软件测试网sW0b%k5acPJ

23、foo()和@foo()之间有什么区别?(1分)
`*x4d1|p.t/X0答:PHP 支持一个错误控制运算符:@。当将其放置在一个 PHP 表达式之前,该表达式可能产生的任何错误信息都被忽略掉。
Z V g$Ml t#t8A/C0
注意: @ 运算符只对表达式有效。对新手来说一个简单的规则就是:如果能从某处得到值,就能在它前面加上 @ 运算符。例如,可以把它放在变量,函数和include()调用,常量,等等之前。不能把它放在函数或类的定义之前,也不能用于条件结构例如 if 和 foreach 等。

.t"G.Q9_.bcKr0

24、如何声明一个名为”myclass”的没有方法和属性的类? (1分)
S%TFm~0答:class myclass{ }51Testing软件测试网@0]+j2EX'k gQ

25、如何实例化一个名为”myclass”的对象?(1分)
U#n'l*h6a E:q0答:$newmyclass = new myclass();51Testing软件测试网bEb.K ^M&~D\d9m

26、你如何访问和设置一个类的属性? (2分)51Testing软件测试网](J Y@ };~$zi
答:$newmyclass = new myclass();
jg\I N0
     $temp=$newmyclass->testvalue;
Z:}i"D(w0
     $newmyclass->testvalue="a";

d/S]A I@tA0

27、mysql_fetch_row() 和mysql_fetch_array之间有什么区别? (1分)
Qib7xe$\/T_;Y v8B0答:mysql_fetch_row是从结果集取出1行数组,作为枚举数组
7D:P fQ6Dm0   mysql_fetch_array是从结果集取出1行数组作为关联数组,或数字数组,两者兼得51Testing软件测试网H,st6P|;i CG5WL

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

&^!Q(_.C1^{x0

29、指出一些在PHP输入一段HTML代码的办法。(1分)
jqM#f.M*T0答: print("<br/>"); echo "<br/>"; 

0FdV O.p$w2}n0

30、下面哪个函数可以打开一个文件,以对文件进行读和写操作?(1分)
1z!j?(c,Z4DQ f^0    (a) fget() (b) file_open() (c) fopen() (d) open_file()  [  c  ]

+BIV'YB4e,@nN)~0

31、下面哪个选项没有将 john 添加到users 数组中? (1分)51Testing软件测试网Ww4qe A!zn
  (a) $users[] = ‘john’;51Testing软件测试网jl0GhT9j[ pV
  (b) array_add($users,’john’);
Av0Tm0c3uC D9S0  (c) array_push($users,‘john’);
ej b$zM'Ve"Z0  (d) $users ||= ‘john’; 
[  b 、d  ]

N8h? u{2Sr9Uq$]C2?0

32、下面的程序会输入是否?(1分)
Nx \4y@[1b.D ]0  $num = 10;
,F e pf#e~z?Mv0  function multiply(){51Testing软件测试网-s CsM0z-~!Eo4fH+e
  $num = $num * 10;51Testing软件测试网%^ [|:oN,Wj7g/P
  }
} w1[Eh{}0  multiply();
5k"qAx8LvO G0  echo $num;51Testing软件测试网&f0FcaKe
  ?>51Testing软件测试网wyxq4W)[3w|U
    输出:10 

/qFE k7WK+n0

33、使用php写一段简单查询,查出所有姓名为“张三”的内容并打印出来 (2分)51Testing软件测试网 W t#P p hB^.W^
  表名User
g{ q#I3y9spr0  Name Tel Content Date
8U U"@ t1s{}0  张三 13333663366 大专毕业 2006-10-11
(H7QQ*C*R9a0  张三 13612312331 本科毕业 2006-10-15
c4S5w|-|ED}0B0  张四 021-55665566 中专毕业 2006-10-15
(}2? p(}5R:f7h0  请根据上面的题目完成代码:
t HT@1i_2h0^!y/@*r0 $mysql_db=mysql_connect("local","root","pass");51Testing软件测试网*A6^|,O7M~*^
   @mysql_select_db("DB",$mysql_db);51Testing软件测试网i~&\ lf+h;^,R"A&p
    $result=mysql_query("select * from User where Name='张三'");
@2x9SsC0
    while($row=mysql_fetch_array($result))51Testing软件测试网9R7L$K.f~3h2y|)F$M
    {51Testing软件测试网ITwq%q%M
echo $row['Name'].$row['Tel'].$row['Content'].$row['Date'];51Testing软件测试网/XYsf8Ew
echo "<br>";
FR7q0r e5Fp)]9m0
     }51Testing软件测试网(VAX*r6D!B0J;|

34、如何使用下面的类,并解释下面什么意思?(3)
;K"L&C@t&}7R0  class test{51Testing软件测试网/KbN4Y;r G;rA u(L{
          function Get_test($num){51Testing软件测试网K3`GaWd$bae/Y*m
      $num=md5(md5($num)."En");51Testing软件测试网'nA5iI8\%x+]O
      return $num;
dc0b3b/[0   }
_o B qg0  }51Testing软件测试网Q$U5Q$lv,@
答:双重md5加密
.{3R.@ ow0
$testObject = new test();
0`)n+k#ma9v3P&r0
$encryption = $testObject->Get_test("xiaotian_ls");51Testing软件测试网~9c/Tv~2CV

35、写出 SQL语句的格式 : 插入 ,更新 ,删除 (4分)
3r)D9{6tz'U(f0  表名User
]-@(_GsLY0  Name Tel Content Date
,Ke8^k-xk0  张三 13333663366 大专毕业 2006-10-11
,Y6dX"Pu5JX8},n0  张三 13612312331 本科毕业 2006-10-15
l?2oNqg?&Q0  张四 021-55665566 中专毕业 2006-10-1551Testing软件测试网5ic:\Zu8Cc Qk
(a) 有一新记录(小王 13254748547 高中毕业 2007-05-06)请用SQL语句新增至表中51Testing软件测试网{0o[*C"?+xf2^L x
INSERT INTO User('Name','Tel','Content','Date') VALUES('小王','13254748547','高中毕业','2007-05-06')51Testing软件测试网^ug Q,eLF Y%^
(b) 请用sql语句把张三的时间更新成为当前系统时间
;ZTP-H5w,K0UPDATE User SET Date=DATE_FORMAT(NOW(),'%Y-%m-%d') WHERE Name='张三'
!mp"dQ}#qEO0(c) 请写出删除名为张四的全部记录
-WSJ7q9Y+K+[:RO _V)b0DELETE FROM User WHERE Name='张四'

:M1~KRWe`0

36、请写出数据类型(int char varchar datetime text)的意思; 请问varchar和char有什么区别(2分)51Testing软件测试网ap r({;?R
答:int是数字类型,char固定长度字符串,varchar实际长度字符串,datetime日期时间型,text文本字符串
/]ElkK~mlZ8nR)B0   char长度固定,varchar可变长度,可节约存储空间,但查询效率要低于char51Testing软件测试网;w sB*q&o1Vi

38、写出以下程序的输出结果 (1分)
E/@.g[yR!V1p0  $b=201;51Testing软件测试网7\2?'gPqH
  $c=40;51Testing软件测试网!v]q1?/w{ P1I|
    $a=$b>$c?4:5;51Testing软件测试网["a"EOU$kV
  echo $a;
r CQdwjab8o0  ?>
*A[ S0@ ^MG"S0答:4

`f"@}b$NVga,L0G0

39、检测一个变量是否有设置的函数是否?是否为空的函数是?(2分)51Testing软件测试网R"Zn o:Y
答:isset($str),empty($str);51Testing软件测试网 j)~] j:GX4O

40、取得查询结果集总数的函数是?(1分)
&L'RA{[b,f0答:mysql_num_rows($result);

tz$e_"}a0

41、$arr = array('james', 'tom', 'symfony'); 请打印出第一个元素的值 (1分)
zo#o8VU%UlG0答:echo $array[0];

a`Py6N4`0

42、请将41题的数组的值用','号分隔并合并成字串输出(1分)
t%{f6S*t l/x0答:for($i=0;$i<count($array);$i++){ echo $array[$i].",";}51Testing软件测试网8~)w&BBc ~O:s

43、$a = 'abcdef'; 请取出$a的值并打印出第一个字母(1分)51Testing软件测试网5s^^'p g(xn
答:echo substr($a,0,1)51Testing软件测试网z/ZeUX(fK

44、PHP可以和sql server/oracle等数据库连接吗?(1分)51Testing软件测试网&r3{ rQc3jq}
答:当然可以

i p(f-g5l r0

45、请写出PHP5权限控制修饰符(3分)51Testing软件测试网v h~*N8|r*y;[ D
答:public(公共),private(私用),protected(继承)51Testing软件测试网HL Z#e(rM6`(d'A,K
  1、默认的是public(公共),即当你没有为属性和方法指定访问修饰时就默认为public的。而这些public的项目在类内类外都可以访问。51Testing软件测试网|!i%V[a
  2、private(私有)访问修饰,意味着被修饰的项只能在类中被访问。如果你没使用__get()和__set(),就最好给每个属性都加上private修饰。也可以给方法加private修饰,例如一些只在类中才用到的函数。private修饰的项不能被继承(更多详细内容会在本章后续部分提到)。51Testing软件测试网 Jt+v{q#K
  3、protected(保护)修饰的项能在类及其子类中访问
51Testing软件测试网H+l&R*iB(J Ay [V

46、请写出php5的构造函数和析构函数(2分)51Testing软件测试网 Pg3_j@]
答:__construct , __destruct51Testing软件测试网8qPu!d*l%zT6{H:d%?

47、完成以下:51Testing软件测试网j8Th&^b0J/nQ
   (一)创建新闻发布系统,表名为message有如下字段 (3分)51Testing软件测试网t `)VUl s2R9U(cC/B
  id 文章id51Testing软件测试网Fg sO5D6INI1x~
  title 文章标题
[k7SmV Lc.yF0  content 文章内容51Testing软件测试网6m&R$H"T"H
  category_id 文章分类id
H/U4YB y2F9W&WCl9s0       hits 点击量51Testing软件测试网 T;Re.FI'g1t'fXd~
答:CREATE TABLE 'message'(
;CJ~k*z(at0   'id' int(10) NOT NULL auto_increment,51Testing软件测试网8o&yE#jL,v,m2n7F
   'title' varchar(200) default NULL,
J+[8V x!~/q g_"X0PH0   'content' text,
5}pY,Y,o7j0   'category_id' int(10) NOT NULL,51Testing软件测试网I3{p(i G
   'hits' int(20),
-\E:CX,I R}0   PRIMARY KEY('id');
g Q I/Y/x,f Ia(H0   )ENGINE=InnoDB DEFAULT CHARSET=utf8;

8Lw'{%j v%f0

   (二)同样上述新闻发布系统:表comment记录用户回复内容,字段如下 (4分)51Testing软件测试网(L"@6FJz{G?"`s
  comment_id 回复id51Testing软件测试网7qD O5P^3h+H}
  id 文章id,关联message表中的id
,I1zj#G%Z1a4x U5J:C0  comment_content 回复内容51Testing软件测试网NA8fD_ G k$D v4^&]
  现通过查询数据库需要得到以下格式的文章标题列表,并按照回复数量排序,回复最高的排在最前面51Testing软件测试网$NwoE7Y*f[ ?
  文章id 文章标题 点击量 回复数量
^V7hH-@0  用一个SQL语句完成上述查询,如果文章没有回复则回复数量显示为051Testing软件测试网j1N@\4X1h3x?
答:SELECT message.id id,message.title title,IF(message.`hits` IS NULL,0,message.`hits`) hits,51Testing软件测试网;Y+k7?pxvZ;\
   IF(comment.`id` is NULL,0,count(*)) number FROM message LEFT JOIN 
| v1wdLnf"bj0   comment ON message.id=comment.id GROUP BY message.`id`;51Testing软件测试网gI]oW'Wu#n

  (三)上述内容管理系统,表category保存分类信息,字段如下 (3分)51Testing软件测试网 W I!c},] UVq
  category_id int(4) not null auto_increment;51Testing软件测试网w"Mt+p#U-tO\3L+R"_#C
  categroy_name varchar(40) not null;
4D%V9Tj!m Y4d0  用户输入文章时,通过选择下拉菜单选定文章分类51Testing软件测试网R^Dm-o*o;`
  写出如何实现这个下拉菜单
%pk&F4l(`$n0答:function categoryList()
"k6IT Q,?*w.xP0{51Testing软件测试网x%AOC^
    $result=mysql_query("select category_id,categroy_name from category")51Testing软件测试网/u{[%^D*l[
            or die("Invalid query: " . mysql_error());
:\.O)~CVo5I wAJ0    print("<select name='category' value=''>/n");51Testing软件测试网z+bB*ogZZ
    while($rowArray=mysql_fetch_array($result))
^/g2bNW^0    {51Testing软件测试网T1CRTr:eg}vJ
       print("<option value='".$rowArray['category_id']."'>".$rowArray['categroy_name']."</option>/n");51Testing软件测试网5J^!S GI`
    }51Testing软件测试网-M&s i s+[.}$y
    print("</select>");
&D&G#[CUy%F%|H0}

4~;E;h7T} k$d0

TAG: 面试 PHP php 基础

 

评分:0

我来说两句

Open Toolbar