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

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

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

面试了,复习下~~~~~~
5r&kn}U9aJ/D0---------------------
+l;?j$R}-b^{l-pO0一、基础题:

9g S h{T Z(w \01.表单中get与post提交方法的区别?51Testing软件测试网qa t+m0Ka
答:参考GET、POST比较.

[.|T6yA@7wal)|0

2.session与cookie的区别?51Testing软件测试网G)}lYy
1、cookie数据存放在客户的浏览器上,session数据放在服务器上。51Testing软件测试网rm)O w~,x$]i)x

2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗
S6g [O'cL&v-R-@2JZ%U8|0   考虑到安全应当使用session

:I+^u;y*z+x&y3M!f;H0

3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能51Testing软件测试网(m4YT w}#R
   考虑到减轻服务器性能方面,应当使用COOKIE
51Testing软件测试网cDn7J-Nc ubZcV

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

^#fGN&z0

5、建议:将登陆信息等重要信息存放为SESSION;其他信息如果需要保留,可以放在COOKIE中51Testing软件测试网{-B9J|#`*aW)?l9Mg

51Testing软件测试网C:j;d^ p a

51Testing软件测试网:d#Lqy.z)M`P

%DeS"Z#W.f {&u:S03.数据库中的事务是什么?51Testing软件测试网mS}2UU/a8v] U
事务(transaction)是作为一个单元的一组有序的数据库操作。如果所有操作完成,事务则提交,其修改将作用于所有其他数据库进程。如果一个操作失败,则事务将回滚,该事务所有操作的影响都将取消。51Testing软件测试网 [1@}Sp*Z `/[v


B abZd}"kMkf jN0二、简述题:51Testing软件测试网5b)SGZ1?}7K
1、用PHP打印出前一天的时间格式是2006-5-10 22:21:21(2分)51Testing软件测试网j#nMob yL \*t
答:echo date('Y-m-d H:i:s', strtotime('-1 days'));

7yl;~"ZW UHF(MS0

2、echo(),print(),print_r()的区别(3分)
h#cP8i?W AQ,N0答:echo是PHP语句,print和print_r是函数;语句没有返回值,函数可以有返回值(即便没有用)。  
0{XX3\4C`0   print()    只能打印出简单类型变量的值(如int,string)  
3tZ(w9Q!y#{qLl0   print_r() 可以打印出复杂类型变量的值(如数组,对象)  51Testing软件测试网)O&ia;eaT DtT
   echo     输出一个或者多个字符串51Testing软件测试网!E Ae:Si]"B

3、能够使HTML和PHP分离开使用的模板(1分)51Testing软件测试网#H"C8~E&n ? I0b
答:Smarty、FastTemplate、SimpleTemplate51Testing软件测试网8W&A1[2d:e-~E

5、使用哪些工具进行版本控制?(1分)
F `'m$w;vel0答:cvs,svn,vss。

_D&w*Vnx(Yz|N0

6、如何实现字符串翻转?(3分)
,{"@$G[G3Y0答:echo strrev($a);

jlU,]T051Testing软件测试网,[/`7sQ {+B|T)l

7、优化MYSQL数据库的方法。(4分,多写多得)
@(R;O(tCk01)选取最适用的字段属性,尽可能减少定义字段长度,尽量把字段设置为NOT NULL,
6_#Pm|&A*^[02)使用连接(JOIN)来代替子查询:51Testing软件测试网$QwR$Jk
   a.删除没有任何订单客户:DELETE FROM customerinfo WHERE customerid NOT in(SELECT customerid FROM orderinfo)
:~/gD*tA%}z8]P0   b.提取所有没有订单客户:SELECT FROM customerinfo WHERE customerid NOT in(SELECT customerid FROM orderinfo)
?l:ZA x7~1G0   c.提高b的速度优化:SELECT FROM customerinfo LEFT JOIN orderid customerinfo.customerid=orderinfo.customerid51Testing软件测试网-`rX|8{g@)X?#P
   WHERE orderinfo.customerid IS NULL51Testing软件测试网.r'nKiI8\+~p
3)使用联合(UNION)来代替手动创建的临时表51Testing软件测试网1eh%xp ~.T?([
   a.创建临时表:SELECT name FROM `nametest` UNION SELECT username FROM `nametest2`51Testing软件测试网0S&V:POMvy o:D
4)事务处理51Testing软件测试网,H{ jRCv
   a.保证数据完整性,例如添加和修改同时,两者成立则都执行,一者失败都失败51Testing软件测试网@yO'do&m/Ap
   mysql_query("BEGIN");
5XQ;DW6|s;c&Qx m0   mysql_query("INSERT INTO customerinfo (name) VALUES ('$name1')";
)AQ/\"A"Ri+[)T?K!DJ0   mysql_query("SELECT * FROM `orderinfo` where customerid=".$id");51Testing软件测试网$@6p4|:HIS r_
   mysql_query("COMMIT");51Testing软件测试网-cl-U!SDr;M Z
5)锁定表,优化事务处理
$We%knj{0   a.我们用一个 SELECT 语句取出初始数据,通过一些计算,用 UPDATE 语句将新值更新到表中。包含有 WRITE 关键字的 LOCK TABLE 语句可以保证在 UNLOCK TABLES 命令被执行之前,不会有其它的访问来对 inventory 进行插入、更新或者删除的操作。
x qx4Fe:[A/N0   mysql_query("LOCK TABLE customerinfo READ, orderinfo WRITE");
$TN:a5_H;\0   mysql_query("SELECT customerid FROM `customerinfo` where id=".$id);
rM:AT!_aw/W0   mysql_query("UPDATE `orderinfo` SET rdertitle='$title' where customerid=".$id);
^?J[,C w7]g&V0   mysql_query("UNLOCK TABLES");51Testing软件测试网/|_(]Xt:mFon
6)使用外键,优化锁定表51Testing软件测试网s-| M]VgaH
   a.把customerinfo里的customerid映射到orderinfo里的customerid,51Testing软件测试网5N&\[3SiB5f$e,U
     任何一条没有合法的customerid的记录不会写到orderinfo里51Testing软件测试网4ud IEE2jV
   CREATE TABLE customerinfo51Testing软件测试网 [8\7y4nd6^jkq$f
   (
Da+Js7j9^W{0     customerid INT NOT NULL,
1@ p P@T0     PRIMARY KEY(customerid)  51Testing软件测试网!J+H!K H ET
   )TYPE = INNODB;51Testing软件测试网Fv+\x4f"s~
   CREATE TABLE orderinfo51Testing软件测试网.Qh$T'SiW0_
   (
&B{rSg0     orderid INT NOT NULL,
${}5vg!~ ]0     customerid INT NOT NULL,51Testing软件测试网_&L(\X;x!Y9[
     PRIMARY KEY(customerid,orderid),
i,i;BhM2j;U4|"^0    FOREIGN KEY (customerid) REFERENCES customerinfo51Testing软件测试网HAL{&N
     (customerid) ON DELETE CASCADE   
:sL| _Ej Zf [0   )TYPE = INNODB;
8X RURC F"B0   注意:'ON DELETE CASCADE',该参数保证当customerinfo表中的一条记录删除的话同时也会删除order;表中的该用户的所有记录,注意使用外键要定义事务安全类型为INNODB。
*dfh_,y$@-Lq%l07)建立索引
c/b9w-a"U U_0   a.格式:51Testing软件测试网B nsN y
   (普通索引)->
/lBMUf0   创建:CREATE INDEX <索引名> ON tablename (索引字段)51Testing软件测试网#U*o\!w|1{B
   修改:ALTER TABLE tablename ADD INDEX [索引名] (索引字段)
c}*_`H-]["L0   创表指定索引:CREATE TABLE tablename([...],INDEX[索引名](索引字段)) 51Testing软件测试网fqFPM
   (唯一索引)->51Testing软件测试网@4I8f6H+T k&I
   创建:CREATE UNIQUE <索引名> ON tablename (索引字段)
,F&M6]e]&\ S(z Z0   修改:ALTER TABLE tablename ADD UNIQUE [索引名] (索引字段)51Testing软件测试网Y,n J1j:arJvY
   创表指定索引:CREATE TABLE tablename([...],UNIQUE[索引名](索引字段)) 51Testing软件测试网NTq-a-K
   (主键)->51Testing软件测试网-Wi'OS~z+~
   它是唯一索引,一般在创建表是建立,格式为:51Testing软件测试网"~s }e%b Z
   CREATA TABLE tablename ([...],PRIMARY KEY[索引字段])51Testing软件测试网0\2jJ^8B,zj~
8)优化查询语句
5OB-y(|E I0   a.最好在相同字段进行比较操作,在建立好的索引字段上尽量减少函数操作51Testing软件测试网 gXZDtw S
   例子1:51Testing软件测试网.u9s8|"C2S2~"E
   SELECT * FROM order WHERE YEAR(orderDate)<2008;(慢)51Testing软件测试网0UhJ,QN,w&s
   SELECT * FROM order WHERE orderDate<"2008-01-01";(快)51Testing软件测试网6a(Q6y/i8rU|
   例子2:51Testing软件测试网li{^ope8y
   SELECT * FROM order WHERE addtime/7<24;(慢)51Testing软件测试网M*gg']d+Q_{M?
   SELECT * FROM order WHERE addtime<24*7;(快)51Testing软件测试网6SI:Ph r}!`s
   例子3:51Testing软件测试网aASd| D&jG2^`'o/Uu
   SELECT * FROM order WHERE title like "%good%";(慢)51Testing软件测试网 ^!OW8[ z!UTj~
   SELECT * FROM order WHERE title>="good" and name<"good";(快)51Testing软件测试网klc DIJ;KV

8、PHP的意思(送1分)
'{J9B3XS2V0Hypertext Preprocessor,超文本预处理语言,是一种在服务器端执行的嵌入HTML文档的脚本语言。51Testing软件测试网1q }} J'e4p0C

9、MYSQL取得当前时间的函数是?格式化日期的函数是(2分)51Testing软件测试网Dd$_B's
答:now(),date()

\&xTdLe051Testing软件测试网/X}K!`c*I

10、实现中文字串截取无乱码的方法。(3分)
*Nz1kJh0答:function GBsubstr($string, $start, $length) {51Testing软件测试网J:s$E6tx?"Z.k5D M
    if(strlen($string)>$length){
S[A/xTPw0     $str=null;51Testing软件测试网$?*z5MSn8q
     $len=$start+$length;51Testing软件测试网3U't(?$v Q
     for($i=$start;$i<$len;$i++){
s O'vq3GI?1L0    if(ord(substr($string,$i,1))>0xa0){
l#GtsU0     $str.=substr($string,$i,2);51Testing软件测试网w#`4F+? n){
     $i++;
v:J6z4PF,OvR0    }else{
7G.P5C W,g3Y @0     $str.=substr($string,$i,1);
gIffib ~K9H0     }51Testing软件测试网r&RAPX2b:Qc/Ewjb
    }51Testing软件测试网uQ RE;R8h.F+w9qp
   return $str.'...';
q!~Xg6F&q \4T}4?0    }else{51Testing软件测试网[,EBE:e"fn }
   return $string;
fm,uI ^"h _/e[g9OI0   }
t#^^1C4T/o0}

0k ^1c(LZ,],eX5tK0

13、请简单阐述您最得意的开发之作(4分)
]]&U n)L_N0答:B2C电子商务网站51Testing软件测试网 ogm H s R5PmI%J

14、对于大流量的网站,您采用什么样的方法来解决访问量问题?(4分)
.F2bk8nJ,R:g)x0答:a.确认服务器硬件是否足够支持当前的流量,51Testing软件测试网z9J-W.q'H
     b.数据库读写分离,优化数据表,51Testing软件测试网h'G1g3eZ2[
     c.禁止外部的盗链,51Testing软件测试网9@w.a|v&K$f
     d.控制大文件的下载,
&~:`~1QM]0     e.用不同主机分流主要流量51Testing软件测试网"P1D)TVs@3G y1M

15、用PHP写出显示客户端IP与服务器IP的代码(1分)
5_y)E]j-kQ(s;_E0
//显示客户端IP
o#S)h8x5Up0function get_client_ip() {#51Testing软件测试网7}0` }R*I)p3d
if(getenv('HTTP_CLIENT_IP')) {
0k1tS`x)EN5I0$client_ip = getenv('HTTP_CLIENT_IP');
np ~9gB4vK!m0} elseif(getenv('HTTP_X_FORWARDED_FOR')) {
h`:C2tJ0V0$client_ip = getenv('HTTP_X_FORWARDED_FOR');
Rj.x4MJ'a ?$x{0} elseif(getenv('REMOTE_ADDR')) {
)H;K;o"k!h9v'r#n HD0$client_ip = getenv('REMOTE_ADDR');
g)|pqkE$r {9r0} else {51Testing软件测试网BWK TExyf
$client_ip = $HTTP_SERVER_VAR['REMOTE_ADDR'];51Testing软件测试网6Y'd%vw T&\
}
4X&l^1X*kI(A$A0return $client_ip;
)H9p%V ??0}51Testing软件测试网)]5E9y:sS
//服务器IP51Testing软件测试网`%?OK4r^AI
function get_server_ip(){51Testing软件测试网`A@`%`dwC
if (isset($_SERVER))51Testing软件测试网e#vIP7y4g#T&V
{
bp"n.{l(H0if($_SERVER['SERVER_ADDR']) $server_ip=$_SERVER['SERVER_ADDR'];51Testing软件测试网"Hz v_7n0b
else $server_ip=$_SERVER['LOCAL_ADDR'];
r8[!WGK/w6ZQ!n0}51Testing软件测试网}T-Y,MT"u*] E|
else 
)@%Z$F1n-w)KM0{51Testing软件测试网WWq T`oB'x2^
$server_ip=getenv('SERVER_ADDR');
:C2b.k,CPMi3OcJ0}
$B"Q:E'u@ DE0return $server_ip;51Testing软件测试网`^({CcOl
}
51Testing软件测试网p0NnA5g${#N

16、语句include和require的区别是什么?为避免多次包含同一文件,可用(?)语句代替它们? (2分)
)jQ2B'}7q#~ R ^.{0答:区别1:
require, "绝对包含",可理解为替代,即在php执行前,将文件中的内容替换掉require这个语句,所以不管require出现在条件还是在循环,或是函数中,文件中的内容都已经包含进来,成为网页的一部分,当require语句所在的条件不成功时,这个文件的内容不会被执行(但已经包含进来了);include,"条件包含",是在php执行时,读到时,只有条件成立,才包含进来。
3W K`gj6`0
区别2:require不到文件时,程序就会报错Fatal error,并停止运行下边的代码;但include不到文件时,会给出提示,并继续运行下边的代码。51Testing软件测试网/w)_ Fc~d$e
include_once
4BFb%Vt PyAR(qi0require_once

fgR"xz$j0

-y~-N0EB^017、如何修改SESSION的生存时间(1分).
X1~-D:@+l0答:方法1:将php.ini中的session.gc_maxlifetime设置为9999重启apache51Testing软件测试网G?`(ui.l7p6`
   方法2:$savePath = "./session_save_dir/";
._&}3i8i9v4?M,GWx p z0         $lifeTime =24*3600;         // 小时 * 秒;51Testing软件测试网3b-Z(ud'n2O
         session_save_path($savePath);
7K&yl5Ec#h&~n1r0         session_set_cookie_params($lifeTime);51Testing软件测试网.X'H P;R!N"_\*@
         session_start();
:ou p\-X0   方法3:setcookie() and session_set_cookie_params($lifeTime);51Testing软件测试网Y4M/c6@2H)rN-R
 
Z Za] z8JX:eg018、有一个网页地址, 比如PHP开发资源网主页: http://www.phpres.com/index.html,如何得到它的内容?($1分)51Testing软件测试网M1Wf(`t pC,V
答:方法1(对于PHP5及更高版本):51Testing软件测试网4\!VJubzm2y.K
   $readcontents = fopen("http://www.phpres.com/index.html", "rb");
?r N/r_t!`:X0   $contents = stream_get_contents($readcontents);
L-P+V7nHemTh0   fclose($readcontents);51Testing软件测试网%VB$DSv1[-w9]r
   echo $contents;51Testing软件测试网 |"u7Y-am:xI7J!\;xn
   方法2:
8s LTK]6l|)R0   echo file_get_contents("http://www.phpres.com/index.html");51Testing软件测试网 j'XN S.}+b.k}

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

12、在PHP中,heredoc是一种特殊的字符串,它的结束标志必须?(1分)
*z7B bY$r9t"k @c0<?php 
g+h:K8vL0$str = <<<EOD
2P!})Dc:MT#Xofm1B0Hello, this is an example for HEREDOC Syntax.51Testing软件测试网 a ~F%wPZ@!u
Please attention to it.51Testing软件测试网-|e;G)b }6s#f
EOD;
.LbK d b#p3T0echo $str; 51Testing软件测试网C,{n(\rc3fi;^
?>注意,这里的提供的标志符是EOD,中间的是字符串。
F^,D\+XYu/J:{0<<<EOD这个开头并没有分号
b%G,PBa!}{O0结束标志必须顶格写,并且要有分号结束
51Testing软件测试网1ZCR$k1V B

13、谈谈asp,php,jsp的优缺点(1分)51Testing软件测试网+F*j!f)Tj9Si?%?k
答:详见浅谈web开发基础

vY OC%{ R4b p&q0

14、谈谈对mvc的认识(1分)51Testing软件测试网2m!sGo'q4I
答:MVC(Model/View/Controller)模式包括三类对象。Model是应用对象,View是它在屏幕上的表示,Controller定义用户界面对用户输入的响应方式。 模型-视图-控制器(MVC)是80年代Smalltalk-80出现的一种软件设计模式,现在已经被广泛的使用。 
5xx,Evb'}$wm:P!`0
1)模型(Model) 51Testing软件测试网O6@j2JI)Z$w
模型是应用程序的主体部分。模型表示业务数据,或者业务逻辑. 
X+xbD(@~g0
2)视图(View) 
xg)Fl n9l(L7E0
视图是应用程序中用户界面相关的部分,是用户看到并与之交互的界面。 3)控制器(controller) 
)J%n)S9J cb'EbEef0
控制器工作就是根据用户的输入,控制用户界面数据显示和更新model对象状态。

%`2X} ? D0

15、写出发贴数最多的十个人名字的SQL,利用下表:members(id,username,posts,pass,email)(2分)51Testing软件测试网wVF:m t-DV#v
答:SELECT * FROM `members` ORDER BY posts DESC limit 0,10;51Testing软件测试网!QbN@Z+i

16. 请说明php中传值与传引用的区别。什么时候传值什么时候传引用?(2分)51Testing软件测试网 z-a-grnRn(J$s
答:按值传递:函数范围内对值的任何改变在函数外部都会被忽略51Testing软件测试网6Q-s)g2I-d
   按引用传递:函数范围内对值的任何改变在函数外部也能反映出这些修改51Testing软件测试网9vj&GV\w(N1a|
   优缺点:按值传递时,php必须复制值。特别是对于大型的字符串和对象来说,这将会是一个代价很大的操作。51Testing软件测试网J9G)|v*M0Tk5w&Xh n
   按引用传递则不需要复制值,对于性能提高很有好处。51Testing软件测试网zQV,Ar%ZEA;]

17. 在PHP中error_reporting这个函数有什么作用? (1分)51Testing软件测试网1k#Q2WK?f
答:用来设置错误信息回报的等级51Testing软件测试网|N@Q!i} t

18. 请写一个函数验证电子邮件的格式是否正确 (2分)51Testing软件测试网C us1@e~4l(}
//if the email address is valid, return true,else return false
8T YltB[i hX3mE's0function validateEmail($email)
9[^(W$Z |!N[)w0{51Testing软件测试网 F*j\nQ7@M
if(eregi('^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*$',$email) ){51Testing软件测试网0h6d}t5Rw7M \
return true;51Testing软件测试网}M`!f8P S4H
}else{51Testing软件测试网!W~&u'M2bvS
return false;
/BR$?lo1\9X@|f)F0}51Testing软件测试网9v)AG d9c3t;B
}
51Testing软件测试网+hknG7s NYSQ

19. 简述如何得到当前执行脚本路径,包括所得到参数。(2分)51Testing软件测试网to!ITT}uf9?mgb
echo $_SERVER['SCRIPT_FILENAME']."?".$_SERVER['QUERY_STRING'];51Testing软件测试网 M6YB/S2`V5B1B
51Testing软件测试网1b@ qZ1A!J8k
20.如何修改SESSION的生存时间. (1分)51Testing软件测试网z|LX Gcg/uFJ
setcookie()51Testing软件测试网rqP$NI'Q&^'WS2Dx

Q,V-sv(v%bl w0session_set_cookie_params($lifeTime)

q!_yHiXG0

21、JS表单弹出对话框函数是?获得输入焦点函数是? (2分)51Testing软件测试网6B#C[+_,KM
答:弹出对话框: alert(),prompt(),confirm()51Testing软件测试网h7U4R i!mA?
   获得输入焦点 focus()

.T2S)VK-F0

22、JS的转向函数是?怎么引入一个外部JS文件?(2分)51Testing软件测试网'W F(F9]+ZuO-\
答:window.location.href51Testing软件测试网1\mAF!q
<script. type="text/javascript" src="js/js_function.js"></script>

l[5md+h![[W t0

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

cNKh|9e2Q0

24、如何声明一个名为”myclass”的没有方法和属性的类? (1分)
k|'oK3].Vm? _O0答:class myclass{ }

;x0n$ISE0

25、如何实例化一个名为”myclass”的对象?(1分)
Ug L3H8t kMk u0答:$newmyclass = new myclass();

/v"f"{'I zv7tE}0

26、你如何访问和设置一个类的属性? (2分)
d|#](r2r Sc V0答:$newmyclass = new myclass();51Testing软件测试网 K,[:O(_p1I
     $temp=$newmyclass->testvalue;51Testing软件测试网J;tfUU7x j~N+UA
     $newmyclass->testvalue="a";51Testing软件测试网PE!m;\3icI4tS)]pO

27、mysql_fetch_row() 和mysql_fetch_array之间有什么区别? (1分)51Testing软件测试网!t#d*_C7c0v
答:mysql_fetch_row是从结果集取出1行数组,作为枚举数组51Testing软件测试网)a#?}@F,z
   mysql_fetch_array是从结果集取出1行数组作为关联数组,或数字数组,两者兼得51Testing软件测试网GO{z EZ

28、GD库是做什么用的? (1分)
q5fs(T0I.w4U0答:gd库提供了一系列用来处理图片的API,使用GD库可以处理图片,或者生成图片。 在网站上GD库通常用来生成缩略图或者用来对图片加水印或者对网站数据生成报表。51Testing软件测试网;rw.d_aR@%^

29、指出一些在PHP输入一段HTML代码的办法。(1分)
K|i9Qd0答: print("<br/>"); echo "<br/>"; 

l*{5zg]_P9Sd4]0

30、下面哪个函数可以打开一个文件,以对文件进行读和写操作?(1分)51Testing软件测试网A:B2b_.p
    (a) fget() (b) file_open() (c) fopen() (d) open_file()  [  c  ]51Testing软件测试网I~i:r ~t] cUMY

31、下面哪个选项没有将 john 添加到users 数组中? (1分)51Testing软件测试网1shH5x,AI
  (a) $users[] = ‘john’;
(?A0tGOmD0  (b) array_add($users,’john’);
}0q8bZ\#L0  (c) array_push($users,‘john’);51Testing软件测试网(gwzK;|9LT
  (d) $users ||= ‘john’; 
[  b 、d  ]51Testing软件测试网8~Q&tBUI4`B

32、下面的程序会输入是否?(1分)51Testing软件测试网7Xx:r/]0FCS
  $num = 10;
WE7xx@&vj}0  function multiply(){51Testing软件测试网 @ Z,],z8`
  $num = $num * 10;51Testing软件测试网 M-K:jJ~9H1YTC
  }
W2v1Bu!Uq:DK!E0  multiply();51Testing软件测试网)te wW6|3r#V+Z
  echo $num;
,v-B1~(^f0  ?>51Testing软件测试网$H_-p3l B+cEWo
    输出:10 51Testing软件测试网1J)qib9GC

33、使用php写一段简单查询,查出所有姓名为“张三”的内容并打印出来 (2分)51Testing软件测试网;r+xNb8x}7|
  表名User
#h(h+EWFw a0  Name Tel Content Date51Testing软件测试网A0U(EjU;x?j
  张三 13333663366 大专毕业 2006-10-1151Testing软件测试网c4mO5|*z1B
  张三 13612312331 本科毕业 2006-10-15
5]RL*Z\]NJ0  张四 021-55665566 中专毕业 2006-10-15
&u4ZuN0Ys`$B0  请根据上面的题目完成代码:
:v$f&`ds0 $mysql_db=mysql_connect("local","root","pass");51Testing软件测试网:J4W&gI"}(O"} g
   @mysql_select_db("DB",$mysql_db);
e,TK1P!w1n$@X0
    $result=mysql_query("select * from User where Name='张三'");51Testing软件测试网? b~O,P-GoUT?
    while($row=mysql_fetch_array($result))
:zV.O;xU bR!~O0
    {51Testing软件测试网!U Eqx.b3h
echo $row['Name'].$row['Tel'].$row['Content'].$row['Date'];51Testing软件测试网'DP x!Q^
echo "<br>";
9n+d t4TJ)Q0
     }

Z+h-C8}1f6s+q0

34、如何使用下面的类,并解释下面什么意思?(3)
y0p^N*z;G!S0  class test{51Testing软件测试网 E"Uq:C XEK3I
          function Get_test($num){51Testing软件测试网WmHo}$j
      $num=md5(md5($num)."En");
X.\vX5w/g fAIN/KN0      return $num;51Testing软件测试网Df~m? V
   }
B,e7}@s0  }51Testing软件测试网Pi@:f Lb5x~Y
答:双重md5加密
*_ rrt}/y;~|1WG9x'h)D0
$testObject = new test();
qL*nA0G L:s0
$encryption = $testObject->Get_test("xiaotian_ls");51Testing软件测试网B(Pd%w's7}

35、写出 SQL语句的格式 : 插入 ,更新 ,删除 (4分)
Jc \i1qT9ln$e,I0  表名User
I6s.lN b z$X[VH8c\#f0  Name Tel Content Date
w.w p2pq)HeN0  张三 13333663366 大专毕业 2006-10-1151Testing软件测试网"zT6]&Ly*Y c3YX
  张三 13612312331 本科毕业 2006-10-15
:pNa/c0L3L,D%Q0  张四 021-55665566 中专毕业 2006-10-1551Testing软件测试网 {&f\0J/mV)S8eNQ
(a) 有一新记录(小王 13254748547 高中毕业 2007-05-06)请用SQL语句新增至表中51Testing软件测试网9tp[}'G!P vyv
INSERT INTO User('Name','Tel','Content','Date') VALUES('小王','13254748547','高中毕业','2007-05-06')
3[+HI:h$Ziz0(b) 请用sql语句把张三的时间更新成为当前系统时间51Testing软件测试网Q:C#sU"i B+o
UPDATE User SET Date=DATE_FORMAT(NOW(),'%Y-%m-%d') WHERE Name='张三'51Testing软件测试网B@~*Ucu
(c) 请写出删除名为张四的全部记录51Testing软件测试网Q_? {k0q Xu
DELETE FROM User WHERE Name='张四'

k+k+? yNZ0

36、请写出数据类型(int char varchar datetime text)的意思; 请问varchar和char有什么区别(2分)
^'E2k,?I-HLp0答:int是数字类型,char固定长度字符串,varchar实际长度字符串,datetime日期时间型,text文本字符串51Testing软件测试网9Sj\e[-[TR
   char长度固定,varchar可变长度,可节约存储空间,但查询效率要低于char51Testing软件测试网Y)I/d.|mKP*^

38、写出以下程序的输出结果 (1分)
(`6Ch.?u,I B,A+Xb0  $b=201;51Testing软件测试网+Ys5A f U#o,U
  $c=40;51Testing软件测试网a/YcJb
    $a=$b>$c?4:5;
uv)l#n/D!s0  echo $a;
{Ya6U1X j|0  ?>
!Gs7S8S.A2G.zK0答:451Testing软件测试网xC"fh5["kHV

39、检测一个变量是否有设置的函数是否?是否为空的函数是?(2分)51Testing软件测试网1_xC)lV
答:isset($str),empty($str);51Testing软件测试网2Omx&E+q(ywW

40、取得查询结果集总数的函数是?(1分)51Testing软件测试网6Jb/lr.JxXt
答:mysql_num_rows($result);51Testing软件测试网'^@Qp(@C

41、$arr = array('james', 'tom', 'symfony'); 请打印出第一个元素的值 (1分)51Testing软件测试网,g` L~'A1i.]
答:echo $array[0];51Testing软件测试网{)?'S&S9W3C`$m2L|`

42、请将41题的数组的值用','号分隔并合并成字串输出(1分)
e l5mO4a6j0aD2a0答:for($i=0;$i<count($array);$i++){ echo $array[$i].",";}

+|1ib9G$gB `['l0

43、$a = 'abcdef'; 请取出$a的值并打印出第一个字母(1分)
6Jl&n0e/K!i5p%Snv X0答:echo substr($a,0,1)

mw0sx|J-Nc!h0

44、PHP可以和sql server/oracle等数据库连接吗?(1分)51Testing软件测试网'C9T9R1?6Z]#T
答:当然可以

7Imp&I-tA7[0

45、请写出PHP5权限控制修饰符(3分)
,RN2_/?5vF c0答:public(公共),private(私用),protected(继承)
1Z6Kw)v9j4~%sZX0  1、默认的是public(公共),即当你没有为属性和方法指定访问修饰时就默认为public的。而这些public的项目在类内类外都可以访问。
W'V%\"nBh1zb0  2、private(私有)访问修饰,意味着被修饰的项只能在类中被访问。如果你没使用__get()和__set(),就最好给每个属性都加上private修饰。也可以给方法加private修饰,例如一些只在类中才用到的函数。private修饰的项不能被继承(更多详细内容会在本章后续部分提到)。
e1Oi!zGtsh-g0  3、protected(保护)修饰的项能在类及其子类中访问

5t;o2yq+ZT*^ t0

46、请写出php5的构造函数和析构函数(2分)
"w6X(zIb(dC0答:__construct , __destruct

"}m{5[u#M?9d0

47、完成以下:51Testing软件测试网"i(H&G9hD k+NC
   (一)创建新闻发布系统,表名为message有如下字段 (3分)
2\8g6t[};g0  id 文章id
#^~t\%Z'f/Z^B"]0  title 文章标题51Testing软件测试网+Gc$z Q gN0R.d
  content 文章内容51Testing软件测试网1TBgOu$gp|y!N
  category_id 文章分类id51Testing软件测试网?$vg/o#Kz
       hits 点击量51Testing软件测试网*r*C9ruo y\
答:CREATE TABLE 'message'(51Testing软件测试网 KV{Je"HS;c/f"O"Q
   'id' int(10) NOT NULL auto_increment,51Testing软件测试网g6b,}E*M}0v0P@8i
   'title' varchar(200) default NULL,51Testing软件测试网*B(S&]| Y%M$R6Z
   'content' text,
}!b\6q7p[ |6k0   'category_id' int(10) NOT NULL,51Testing软件测试网 ^4N$j&c@WR1l
   'hits' int(20),
B prkve'EJ$i+OG)mP.t0   PRIMARY KEY('id');51Testing软件测试网hQJL+VV O8\
   )ENGINE=InnoDB DEFAULT CHARSET=utf8;51Testing软件测试网U2~ e4w8Q.q_bE

   (二)同样上述新闻发布系统:表comment记录用户回复内容,字段如下 (4分)
@2h? y s${0b0  comment_id 回复id51Testing软件测试网6d#o5\\3wKU!s3q4B
  id 文章id,关联message表中的id51Testing软件测试网)k t8Pz.vU4K R
  comment_content 回复内容
$d;Q$?x3i7HS0aNR)N9A0  现通过查询数据库需要得到以下格式的文章标题列表,并按照回复数量排序,回复最高的排在最前面
)z.F'Qk.\%z1yGJ0  文章id 文章标题 点击量 回复数量
%x^Vf"l#Cj;| H0  用一个SQL语句完成上述查询,如果文章没有回复则回复数量显示为0
6la M%}u1M)i Y8sz(H0答:SELECT message.id id,message.title title,IF(message.`hits` IS NULL,0,message.`hits`) hits,51Testing软件测试网e(iY_-e T#g
   IF(comment.`id` is NULL,0,count(*)) number FROM message LEFT JOIN 51Testing软件测试网_ ]C[P:{Wl'`s
   comment ON message.id=comment.id GROUP BY message.`id`;51Testing软件测试网KfFQAW

  (三)上述内容管理系统,表category保存分类信息,字段如下 (3分)
*u0{p1b+l0hK[)L~[/f0  category_id int(4) not null auto_increment;
.b)y_V3^'c0  categroy_name varchar(40) not null;
9b"KQD!qU&x0  用户输入文章时,通过选择下拉菜单选定文章分类
2_6ClL2z1F(yG0  写出如何实现这个下拉菜单
%[u2M+x`!H#V0答:function categoryList()51Testing软件测试网1Y#Um(K%XoK%l(d6V
{51Testing软件测试网%{tpO'N g(H
    $result=mysql_query("select category_id,categroy_name from category")51Testing软件测试网E$V,e|9z%f.u6v ]
            or die("Invalid query: " . mysql_error());51Testing软件测试网9oFn"w5T x
    print("<select name='category' value=''>/n");
}#uB9S3b eL0    while($rowArray=mysql_fetch_array($result))51Testing软件测试网5gB6~t(o
    {
Ae6q"|Q-b)n`0       print("<option value='".$rowArray['category_id']."'>".$rowArray['categroy_name']."</option>/n");51Testing软件测试网)b6I j S,bW
    }
'c;k#g B~dv_w0    print("</select>");
,^,OB6\zZ&w(UJ*N0}51Testing软件测试网Y;| k \5e9N


TAG: 面试 PHP php 基础

 

评分:0

我来说两句

Open Toolbar