荟聚奇文、博采众长、见贤思齐
当前位置:公文素材库 > 公文素材 > 范文素材 > PHP程序员招聘试卷

PHP程序员招聘试卷

网站:公文素材库 | 时间:2019-05-29 11:43:10 | 移动端:PHP程序员招聘试卷

PHP程序员招聘试卷

选择

1、下列命令中不是PHP的输出命令的是(B)A.echoB.printf()C.printD.write2、PHP定义活动变量的方法是(B)

A.VARB.$C.$$D.&

3、PHP表达式$foo=1+”bob3”,则$foo的值是(B)

A.1B.1bob3C.1bD.924、下关于PHP变量的说法正确的是(D)A.PHP是一种强类型语言

B.PHP变量声明时需要指定其变量的类型

C.PHP变量声明时在变量名前面使用的字符是”&”

D.PHP变量使用时,上下文会自动确定其变量的类型5、在PHP嵌入HTML文档使用的定界符号是(C)A.“”结束

B.以””结束C.以””结束D.以””结束

6、PHP语法中,假设已知$a=”hello”,$b=”china”,则要得到”hellochina”的字符串,应该如何操作(C)

A.$a+$bB.$a-$bC.$a.$bD.$a+=$b7、要配置PHP环境,只需修改(A)

A.php.iniB.http.confC.php.sysD.php.exe8、有下列PHP语句段(D)

若要输出”false”,$a应该是

A.10B.3C.“true”D.“0”9、下面程序运行的结果为(A)。$a=array("a","b","c","d");

$index=array_search("a",$a);if($index==false)

echo"在数组a中未发现字符"a"";

elseecho"index=".$index;

A.在数组a中未发现字符’a’B.0C.1D.210、选择下面程序的运行结果(D)。

Echosubstr_replace(“ABC”,”DEF”,3,1)

A.ABCB.DEFC.ABCDEFD.以上都不对11选择下面程序运行的结果()。echo“\\$a=$a\\$b=$b\\$c=$c”;?>

A.$a=3B.$a=3C.$a=2D.$a=2$b=2$b=2$b=2$b=2$c=3$c=2$c=3$c=2

12getdate()函数返回的值的数据类型是____________。(B)A.整形B.浮点型C.数组D.字符串E.布尔型13.下列哪些数据库管理系统是PHP不支持的?(B)

A.MySQLB.IBMDB2

C.PostgreSQLD.MicrosoftSQLServerE.以上没有一个PHP不支持

14.请看下面的SQL查询语句,如何才能减少从数据库返回的数据量?(B)SELECT*FROMMY_TABLE

A.转为存储过程B.用具体的字段名来代替”*”C.加一个”where”语句D.转变查询为视图E.使用预语句

15.下面哪个语句用来往数据表里面增加一条记录?(D)A.SELECTB.UPDATEC.DELETED.INSERT

16.下面哪个不是一个合法的SQL的归类函数?(E)A.AVGB.SUMC.MIND.MAXE.CURRENT_DATE()

17.下面哪个网络协议是PHP不支持的?(E)

A.tcpB.udpC.udgD.pdcE.unix

18.做文件上传的时候,你可以让浏览器来限制上传的文件大小吗?(B)A.可以B.不可以

19.你可以通过一个PHP函数把所有的错误信息汇报都屏蔽掉吗?(A)A.可以B.不可以

20假设$a=5,有$a+=2,则$a的值为(C)A.5B.6C.7D.8二、填空题

1.Php配置文件为__php.ini______。2.检查一个变量是否为空的函数_____。

3、已知ltrim()函数是去除字符串左边的空格或其他字符,去除字符串右边的空格或其他字符使用函数________。4、在php页面中要运行php代码,可以用以下语句声明脚本

5、如果在php中动态的设置“我是一个学生”,并且以蓝色隶书字体显示,大小为12,用php代码如何输出,_______________________________。6、HTML标记,可单独使用或嵌入在各个php脚本单元中,以"_________"为定界符;php代码可单独使用或包含在和〈/html〉内,以"_________"为定界符7、一段与mysql数据库建立连接的代码

8、PHP指的是___PHP语言___________________。9、

此段程序执行后,浏览器上显示的结果是__5_______。

10、使用"get"方法提交的表单中获取数据是_____________。三、问答题

1、简述break和continue的区别

2、简述public、protected、private修饰类中的函数时的意义?3、mysql_fetch_row()和mysql_fetch_array之间有什么区别?4、简述修饰符this->、parent::、self::的作用?5、PHP如何创建一个COOKIE?

6、简述__get()、__set()函数的作用?7、php的包含语句有那些以及区别?

四、编程题:

1、用PHP实现一用户登陆程序。数据库test中user(用户)表结构如下:Username(useridchar(8),passwordchar(6))

2、在MYSQL中,数据库”study”中student表内容如下:idnamesex1001张山男1002李四男1003王武女

连接数据库服务器参数为:(”localhost”,”root”,”root”)请使用PHP语言编写删除一条id为1002的数据记录的程序

3、使用第2题的数据库和表,用php写一段简单查询,查出所有性别为“男”的内容并打印出来。

4、编程输出99乘法表

5、编程求10的阶乘并输出

扩展阅读:PHP程序员招聘中的常见面试题

《PHP程序员招聘中的常见面试题!》

表单中POST方法与GET方法有什么区别?答:

1.get是从服务器上获取数据,post是向服务器传送数据。

2.get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到;

而post是通过HTTPpost机制,将表单内各个字段与其内容放置在HTMLHEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。

3.对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据。

4.get传送的数据量较小,不能大于2KB。post传送的数据量较大,但受配置文件限制。

5.get安全性非常低,post安全性较高。

优化mysql数据库的方法?答:

1、选取最适用的字段属性

MySQL可以很好的支持大数据量的存取,但是一般说来,数据库中的表越小,在它上面执行的查询也就会越快。因此,在创建表的时候,为了获得更好的性能,我们可以将表中字段的宽度设得尽可能小。例如,在定义邮政编码这个字段时,如果将其设置为CHAR(255),显然给数据库增加了不必要的空间,甚至使用VARCHAR这种类型也是多余的,因为CHAR(6)就可以很好的完成任务了。同样的,如果可以的话,我们应该使用MEDIUMINT而不是BIGIN来定义整型字段。

另外一个提高效率的方法是在可能的情况下,应该尽量把字段设置为NOTNULL,这样在将来执行查询的时候,数据库不用去比较NULL值。对于某些文本字段,例如“省份”或者“性别”,我们可以将它们定义为ENUM类型。因为在MySQL中,ENUM类型被当作数值型数据来处理,而数值型数据被处理起来的速度要比文本类型快得多。这样,我们又可以提高数据库的性能。2、使用连接(JOIN)来代替子查询(Sub-Queries)MySQL从4.1开始支持SQL的子查询。这个技术可以使用SELECT语句来创建一个单列的查询结果,然后把这个结果作为过滤条件用在另一个查询中。例如,我们要将客户基本信息表中没有任何订单的客户删除掉,就可以利用子查询先从销售信息表中将所有发出订单的客户ID取出来,然后将结果传递给主查询,如下所示:DELETEFROMcustomerinfo

WHERECustomerIDNOTin(SELECTCustomerIDFROMsalesinfo)使用子查询可以一次性的完成很多逻辑上需要多个步骤才能完成的SQL操作,同时也可以避免事务或者表锁死,并且写起来也很容易。但是,有些情况下,子查询可以被更有效率的连接(JOIN)..替代。例如,假设我们要将所有没有订单记录的用户取出来,可以用下面这个查询完成:

SELECT*FROMcustomerinfo

WHERECustomerIDNOTin(SELECTCustomerIDFROMsalesinfo)

如果使用连接(JOIN)..来完成这个查询工作,速度将会快很多。尤其是当salesinfo表中对CustomerID建有索引的话,性能将会更好,查询如下:SELECT*FROMcustomerinfo

LEFTJOINsalesinfoONcustomerinfo.CustomerID=salesinfo.CustomerID

WHEREsalesinfo.CustomerIDISNULL

连接(JOIN)..之所以更有效率一些,是因为MySQL不需要在内存中创建临时表来完成这个逻辑上的需要两个步骤的查询工作。

3、使用联合(UNION)来代替手动创建的临时表

MySQL从4.0的版本开始支持UNION查询,它可以把需要使用临时表的两条或更多的SELECT查询合并的一个查询中。在客户端的查询会话结束的时候,临时表会被自动删除,从而保证数据库整齐、高效。使用UNION来创建查询的时候,我们只需要用UNION作为关键字把多个SELECT语句连接起来就可以了,要注意的是所有SELECT语句中的字段数目要想同。下面的例子就演示了一个使用UNION的查询。SELECTName,PhoneFROMclientUNION

SELECTName,BirthDateFROMauthorUNION

SELECTName,SupplierFROMproduct

4、事务

尽管我们可以使用子查询(Sub-Queries)、连接(JOIN)和联合(UNION)来创建各种各样的查询,但不是所有的数据库操作都可以只用一条或少数几条SQL语句就可以完成的。更多的时候是需要用到一系列的语句来完成某种工作。但是在这种情况下,当这个语句块中的某一条语句运行出错的时候,整个语句块的操作就会变得不确定起来。设想一下,要把某个数据同时插入两个相关联的表中,可能会出现这样的情况:第一个表中成功更新后,数据库突然出现意外状况,造成第二个表中的操作没有完成,这样,就会造成数据的不完整,甚至会破坏数据库中的数据。要避免这种情况,就应该使用事务,它的作用是:要么语句块中每条语句都操作成功,要么都失败。换句话说,就是可以保持数据库中数据的一致性和完整性。事物以BEGIN关键字开始,COMMIT关键字结束。在这之间的一条SQL操作失败,那么,ROLLBACK命令就可以把数据库恢复到BEGIN开始之前的状态。

BEGIN;

INSERTINTOsalesinfoSETCustomerID=14;

UPDATEinventorySETQuantity=11

WHEREitem="book";

COMMIT;

事务的另一个重要作用是当多个用户同时使用相同的数据源时,它可以利用锁定数据库的方法来为用户提供一种安全的访问方式,这样可以保证用户的操作不被其它的用户所干扰。

5、锁定表

尽管事务是维护数据库完整性的一个非常好的方法,但却因为它的独占性,有时会影响数据库的性能,尤其是在很大的应用系统中。由于在事务执行的过程中,数据库将会被锁定,因此其它的用户请求只能暂时等待直到该事务结束。如果一个数据库系统只有少数几个用户来使用,事务造成的影响不会成为一个太大的问题;但假设有成千上万的用户同时访问一个数据库系统,例如访问一个电子商务网站,就会产生比较严重的响应延迟。其实,有些情况下我们可以通过锁定表的方法来获得更好的性能。下面的例子就用锁定表的方法来完成前面一个例子中事务的功能。LOCKTABLEinventoryWRITESELECTQuantityFROMinventoryWHEREItem="book";...

UPDATEinventorySETQuantity=11WHEREItem="book";UNLOCKTABLES

这里,我们用一个SELECT语句取出初始数据,通过一些计算,用UPDATE语句将新值更新到表中。包含有WRITE关键字的LOCKTABLE语句可以保证在UNLOCKTABLES命令被执行之前,不会有其它的访问来对inventory进行插入、更新或者删除的操作。

6、使用外键

锁定表的方法可以维护数据的完整性,但是它却不能保证数据的关联性。这个时候我们就可以使用外键。例如,外键可以保证每一条销售记录都指向某一个存在的客户。在这里,外键可以把customerinfo表中的CustomerID映射到salesinfo表中CustomerID,任何一条没有合法CustomerID的记录都不会被更新或插入到salesinfo中。CREATETABLEcustomerinfo(

CustomerIDINTNOTNULL,PRIMARYKEY(CustomerID))TYPE=INNODB;

CREATETABLEsalesinfo(

SalesIDINTNOTNULL,CustomerIDINTNOTNULL,PRIMARYKEY(CustomerID,SalesID),

FOREIGNKEY(CustomerID)REFERENCEScustomerinfo(CustomerID)ONDELETECASCADE)TYPE=INNODB;

注意例子中的参数“ONDELETECASCADE”。该参数保证当customerinfo表中的一条客户记录被删除的时候,salesinfo表中所有与该客户相关的记录也会被自动删除。如果要在MySQL中使用外键,一定要记住在创建表的时候将表的类型定义为事务安全表InnoDB类型。该类型不是MySQL表的默认类型。定义的方法是在CREATETABLE语句中加上TYPE=INNODB。如例中所示。

7、使用索引

索引是提高数据库性能的常用方法,它可以令数据库服务器以比没有索引快得多的速度检索特定的行,尤其是在查询语句当中包含有MAX(),MIN()和ORDERBY这些命令的时候,性能提高更为明显。那该对哪些字段建立索引呢?一般说来,索引应建立在那些将用于JOIN,WHERE判断和ORDERBY排序的字段上。尽量不要对数据库中某个含有大量重复的值的字段建立索引。对于一个ENUM类型的字段来说,出现大量重复值是很有可能的情况,例如customerinfo中的“province”..字段,在这样的字段上建立索引将不会有什么帮助;相反,还有可能降低数据库的性能。我们在创建表的时候可以同时创建合适的索引,也可以使用ALTERTABLE或CREATEINDEX在以后创建索引。此外,MySQL从版本3.23.23开始支持全文索引和搜索。全文索引在MySQL中是一个FULLTEXT类型索引,但仅能用于MyISAM类型的表。对于一个大的数据库,将数据装载到一个没有FULLTEXT索引的表中,然后再使用ALTERTABLE或CREATEINDEX创建索引,将是非常快的。但如果将数据装载到一个已经有FULLTEXT索引的表中,执行过程将会非常慢。

8、优化的查询语句

绝大多数情况下,使用索引可以提高查询的速度,但如果SQL语句使用不恰当的话,索引将无法发挥它应有的作用。下面是应该注意的几个方面。首先,最好是在相同类型的字段间进行比较的操作。在MySQL3.23版之前,这甚至是一个必须的条件。例如不能将一个建有索引的INT字段和BIGINT字段进行比较;但是作为特殊的情况,在CHAR类型的字段和VARCHAR类型字段的字段大小相同的时候,可以将它们进行比较。其次,在建有索引的字段上尽量不要使用函数进行操作。

例如,在一个DATE类型的字段上使用YEAE()函数时,将会使索引不能发挥应有的作用。所以,下面的两个查询虽然返回的结果一样,但后者要比前者快得多。SELECT*FROMorderWHEREYEAR(OrderDate)<201*;SELECT*FROMorderWHEREOrderDate<"201*-01-01";同样的情形也会发生在对数值型字段进行计算的时候:SELECT*FROMinventoryWHEREAmount/7<24;SELECT*FROMinventoryWHEREAmount<24*7;

上面的两个查询也是返回相同的结果,但后面的查询将比前面的一个快很多。第三,在搜索字符型字段时,我们有时会使用LIKE关键字和通配符,这种做法虽然简单,但却也是以牺牲系统性能为代价的。例如下面的查询将会比较表中的每一条记录。SELECT*FROMbooks

WHEREnamelike"MySQL%"但是如果换用下面的查询,返回的结果一样,但速度就要快上很多:SELECT*FROMbooks

WHEREname>="MySQL"andname<"MySQM"

最后,应该注意避免在查询中让MySQL进行自动类型转换,因为转换过程也会使索引变得不起作用。

关于通过查询缓冲提高查询速度

一般我们使用SQL语句进行查询时,数据库服务器每次在收到客户端发来SQL后,都会执行这条SQL语句。但当在一定间隔内(如1分钟内),接到完全一样的SQL语句,也同样执行它。虽然这样可以保证数据的实时性,但在大多数时候,数据并不要求完全的实时,也就是说可以有一定的延时。如果是这样的话,在短时间内执行完全一样的SQL就有些得不偿失。

幸好MySQL为我们提供了查询缓冲的功能(只能在MySQL4.0.1及以上版本使用查询缓冲)。我们可以通过查询缓冲在一定程度上提高查询性能。

我们可以通过在MySQL安装目录中的my.ini文件设置查询缓冲。设置也非常简单,只需要将query_cache_type设为1即可。在设置了这个属性后,MySQL在执行任何SELECT语句之前,都会在它的缓冲区中查询是否在相同的SELECT语句被执行过,如果有,并且执行结果没有过期,那么就直接取查询结果返回给客户端。但在写SQL语句时注意,MySQL的查询缓冲是区分大小写的。如下列的两条SELECT语句:

代码:

SELECT*fromTABLE1

SELECT*FROMTABLE1

上面的两条SQL语句对于查询缓冲是完全不同的SELECT。而且查询缓冲并不自动处理空格,因此,在写SQL语句时,应尽量减少空格的使用,尤其是在SQL首和尾的空格(因为,查询缓冲并不自动截取首尾空格)。

虽然不设置查询缓冲,有时可能带来性能上的损失,但有一些SQL语句需要实时地查询数据,或者并不经常使用(可能一天就执行一两次)。这样就需要把缓冲关了。当然,这可以通过设置query_cache_type的值来关闭查询缓冲,但这就将查询缓冲永久地关闭了。在MySQL5.0中提供了一种可以临时关闭查询缓冲的方法:

代码:

SELECTSQL_NO_CACHEfield1,field2FROMTABLE1

以上的SQL语句由于使用了SQL_NO_CACHE,因此,不管这条SQL语句是否被执行过,服务器都不会在缓冲区中查找,每次都会执行它。

我们还可以将my.ini中的query_cache_type设成2,这样只有在使用了SQL_CACHE后,才使用查询缓冲。

代码:

SELECTSQL_CALHE*FROMTABLE1

实现中文字串截取无乱码的方法?

mb_substr()

session与cookie的区别?

1、session保存在服务器,客户端不知道其中的信息;cookie保存在客户端,服务器能够知道其中的信息。

2、session不能区分路径,同一个用户在访问一个网站期间,所有的session在任何一个地方都可以访问到。而cookie中如果设置了路径参数,那么同一个网站中不同路径下的cookie互相是访问不到的。

3、session默认需要借助cookie才能正常工作。如果客户端完全禁止cookie,session,这种方法将失效。

4、session在用户会话结束后就会关闭了,但cookie因为保存在客户端,可以长期保存。

5、从应用角度上说:session是一个动作状态的持续,是一个会话,它在服务器中持续存在直到不用为止。cookie在后继的请求中,客户端将把该信息返回给服务器,从而确定自己的身份,对于浏览器在反复访问是保持信息是很有用的。

不用新变量直接交换现有两个变理的值?

php的面试题目1.$array["anykey"]和$array[anykey]的区别?

答:单引号和没有单引号区别,就是字符串和常量。而单引号和双引号的区别,就是字符串和变量吧。

不加单引号的话,php会首先认为他是常量,然后去搜寻是否存在这个常量,若不存在,则理解为字符串,所以在效率上就慢了。

2.echo输出语句时候的连接符号:"."和","。点号和逗号的区别?

答:echo用点号时先把语句连接再输出,而用逗号就等于给它传多个参数,不需要进行字符串拼接这一步,效率高!

3.echo,print,print_r的区别?

答:echo,直接输出单个或者多个字符串,是PHP语句!

print,打印输出简单类型,是PHP函数!有整型返回值。我试验了下,都返回1。print_r,格式化打印输出,常用于比较复杂的类型,如数组,对象之类的,可以输出完整结构,是PHP函数,返回值类型为布尔型!

4.获取前天的日期,格式如:201*-01-1217:15:20

答:echodate("Y-m-dh:i:s",time()-2*24*60*60);

echodate("Y-m-dh:i:s",strtotime("2daysago"));未来几天的话把ago去掉就行了

5.如何将字符串翻转过来?

答:$str="7654321";

echostrrev($str);//1234567另一种方法:

$strlen=strlen($str);

for($i=1;$i上面8条优化的详细说明请点击该链接查看完全优化MySQL数据库性能的八大巧方法

7.PHP的意思?(送一分)

答:Hypertextpreprocessor超文本预处理语言。

8.MYSQL取得当前时间的函数是?格式化日期的函数是?

答:当前日期函数为NOW();格式化日期函数是:

SELECTDATE_FORMAT("201*-01-1117:25:36","%H:%i:%s%m/%d/%Y");->17:25:3601/11/201*

其它时间函数:详细请查看该页面MySql格式化时间函数SELECTDAYOFWEEK("1998-02-03");->3

SELECTWEEKDAY("1997-10-0422:23:00");->5

SELECTWEEKDAY("1997-11-05");->2

SELECTDAYOFMONTH("1998-02-03");->3

SELECTDAYOFYEAR("1998-02-03");->34

SELECTMONTH("1998-02-03");->2

SELECTDAYNAME("1998-02-05");->"February"

SELECTQUARTER("1998-04-01");->2

SELECTWEEK("1998-02-20");->7

SELECTWEEK("1998-02-20",0);->7

SELECTWEEK("1998-02-20",1);->

SELECTYEAR("98-02-03");->1998

SELECTHOUR("10:05:03");->10

SELECTMINUTE("98-02-0310:05:03");->5

SELECTSECOND("10:05:03");->3

SELECTPERIOD_ADD(9801,2);->199803

SELECTPERIOD_DIFF(9802,199703);->11

SELECTTO_DAYS("1997-10-07");->729669

SELECTTO_DAYS(950501);->728779

SELECTFROM_DAYS(729669);->"1997-10-07"

SELECTUNIX_TIMESTAMP("1997-10-0422:23:00");->875996580

SELECTFROM_UNIXTIME(875996580);->"1997-10-0422:23:00"

SELECTSEC_TO_TIME(2378);->00:39:38

SELECTTIME_TO_SEC("00:39:38");->2378

9.怎样截取中文且不出现乱码?

答:如果安装了mb扩展可使用mb_substr();可以使用以下函数:

functioncutstr($sourcestr,$startlength,$cutlength){

$returnstr="";$i=0;$n=0;

$str_length=strlen($sourcestr);//字符串的字节数while(($n=192){//如果ASCII位高与192,

$returnstr=$returnstr.substr($sourcestr,$i,2);//根据UTF-8编码规范,将2个连续的字符计为单个字符

$i=$i+2;//实际Byte计为2$n++;//字串长度计1

}elseif($ascnum>=65&&$ascnum

10.对于大流量的网站,您采用什么样的方法来解决访问量问题?

答:①最根本的是服务器硬件条件。服务器硬件设备如果太差,那不管怎么优化都是徒劳!②对数据库进行优化。主要是减少对数据库的访问量。访问过多会造成服务器CPU过度消耗,导致服务器受访能力严重下降,解决方法是是前台使用静态或者动态缓存!

③防盗链。对于Apache服务器,主要是是用model_rewrite模块通过对URL的正则,进行限制和重定向!

④控制大文件下载。不提供超过2MB的文件下载,或使用专门的下载服务器,或者上传到web2.0共享网站上。

⑤多主机分流。将不同文件放置在不同的主机,提供镜像之类的文件下载方式。⑥是用专业的流量分析软件。如google流量分析。对网站进行精细的流量控制!

11.用PHP写出显示客户端IP与服务器IP的代码?

答:客户端IP获取$_SERVER["REMOTE_ADDR"];服务端IP获取$_SERVER["SERVER_NAME"];

12.如何修改SESSION的生存时间?

答:$lifeTime=24*3600;

session_set_cookie_params($lifeTime);session_start();

详细的设置请查看这篇文章:PHP对session生存时间的设置详细介绍。

13.有一个网页地址,比如PHP研究室主页:如何得到它的内容?

答:$src="";$file="D:\\index.html";

①$content=file_get_contents($src);$hfile=fopen($file,w);

$result=fwrite($hfile,$content);

②$opsrc=fopen($src,r);$wfile=fopen($file,w);

$result=stream_copy_to_stream($opsrc,$wfile);

14.在HTTP1.0中,状态码401的含义是?;如果返回“找不到文件”的提示,则可用header函数,其语句为?

答:①HTTP/1.0401代表:未授权。②可用header("HTTP/1.0404NotFound");15.在PHP中,heredoc是一种特殊的字符串,它的结束标志必须?

答:

将这段代码转换为opcodes后.结果如下:

1:}

print_r($arr);

将看到遍历数组后,数组中每一元素的值都被修改.

在函数(或方法)传参中,将一变量作为参数时,是以引用的方式传处,还是值的方式传入,主要表现形式是在sample_call_function($varname)还是sample_call_function(&$varname)上.

从概念上分析,值传递是对内容进行"拷贝",引用传递是用内容进行"建立快捷方式",所以很多答题答案都讲值传递要复制一次内存数据,引用传递则省去了这个消耗,所以更划算.

但从PHP底层处理方式来看,这种结论回答略显草率了.PHP底层对于变量内存管理是基于常见的copyonwrite(写时复制)和changeonwrite(改变时复制).所以对于

$val="test";

debug_zval_dump($val);

在函数debug_zval_dump中使用到的$val,并不会多开辟一块内存空间来存放"test"的内容.但对于

$val="test";$a=&$val;

debug_zval_dump($val);

则又有不同,这时传参的$val则会新开辟一块内存空间来存放"test".这在PHP源码包,zend_execute.c中有完整的处理流程.

题目三:include和require的区别是什么?

官方手册中对此的描述是:这两种结构除了在如何处理失败之外完全一样。include()产生一个警告而require()则导致一个致命错误。

这个解释其实已经相当详细了.当引用一个外部文件时,如果这个文件打开出错,require将直接中止程序,并抛出一个FatalError,而include只会抛出一个warning,并继续执行include下面的语句.

另外.我在一些网站上看到过对include和require区别做出的如下解释:

require()函数工作方式与XSSI相类似;不管在程序的哪个部分使用了这个函数,只有程序一开始运行,头文件的内容就被作为程序本身的一部分来处理。因此,如果您在一个条件判定语句中使用了require()函数,那么即使这个条件即使不为真,头文件也会被包含进来。

而include()函数只是在执行到这一条语句时才会把头文件内容包含进来。如果程序没运行到这里,那PHP是不会管它的。这就意味着,您在条件判定部分使用include时,它会完全按照您希望的那样工作。

那么这条解释的正确性究竟如何,我们可以做2个小实验:

文件名:1.php

假设我们只有1.php,没有2.php按照上述说法,当条件不为真时,文件也被包含进来,那么因为2.php根本不存在,所以必然程序会报错.但是上述程序的执行结果显然否定了按上述说法进行的推理.

第二个实验,使用工具,查看上述代码最终生成的opcode:

1:将这两者比较而言,COOKIE数据由于存放在客户端,减轻了服务器端存储方面的压力.但数据的安全性相对来说就要差一些.所以如果依靠COOKIE存放用户登录信息等敏感数据时,一定要对其做加密处理.而SESSION数据存放在服务器端,客户端本身访问不到直接数据,安全性相对COOKIE来说稍稍好一些.但对服务器的IO操作及存储方面会带来一些压力.尤其是PHP默认的SESSION处理机制,实际上就是将SESSION数据串行化,然后存放到一个以SESSION_ID为名字的文本文件中,用户量多的情况下带来的开销不容忽视.好在PHP的SESSION机制是非常灵活的,提供了相应方法改变SESSION处理机制.比如放到memcached里或其它地方:-)这得另开文章单独讲了.

题目一:mysql_pconnect与mysql_connect的区别在哪里?哪一个更好这道题涉及到了数据库长连接的概念.我们知道,PHP脚本的运行机制,每次使用数据库之前,都必须使用connect去连接数据库.而web应用又是并发性非常高的应用场景,如果同时有10个用户访问,便会有10个进程在运行脚本,相应的,就会产生10次数据库连接.如果有100个用户同时访问.那么就自然会产生100次数据库连接.这样便会有两个问题产生:1是频繁建立和撤消数据库连接.本身的开销就非常大,2是数据库的同时连接数是有限的.如果有1000个用户请求同时要访问数据库.而数据库只开放了最高100个连接允许的话,那么就有900个会进入等待或失败的队列.这就好比是,一群搬运工往屋里搬东西,每一次都需要开门-->搬东西-->关门的操作,如果有很多搬运工同时搬,每个人都要执行开门/关门这两步操作的话,显然是会产生很大的不必要开销.而且如果这道门能同时通过的人数有限,很多搬运工不得不在外等待.

pcconnect的长连接方式是怎么解决这个问题的呢?

官方手册中对此的描述是:在脚本结束运行时不关闭的连接。当收到一个永久连接的请求时。PHP将检查是否已经存在一个(前面已经开启的)相同的永久连接。如果存在,将直接使用这个连接;如果不存在,则建立一个新的连接。所谓“相同”的连接是指用相同的用户名和密码到相同主机的连接。

其机制无非是:初次连接数据库时,便将连接句柄交至父进程,子进程要使用数据库连接时,直接将父进程手中早已连接好的句柄交给子进程,这样子进程的连接就成了一种"虚连接"---它并不用真正去与数据库通讯,只需要从父进程手中拿到已经打开的连接句柄,这样就大大节省了连接/关闭的开销.另外,多个子进程,共享父进程的连接句柄,这样实际上数据库对外的连接数,只是跟父进程之间的个数,1000个用户请求,会产生1000个子进程,可能只会产生10个父进程,有10个数据库连接.这样就解决了连接数的问题.

这样看来.长连接的确是很不错的方式.从机理上讲好于connect.所以长连接更好一些.但事实是并不能这样简单论定的:-),继续深入下去.

首先,长连接的机制是基于父-子进程模式,也就是说,只能跑于模块(apache-phpmodule或iis的isapi)方式,不适用于CGI和CLI模式,因为CGI和CLI模式都是单独进程,执行完就关闭,没有父进程控制.也就谈不上长链接.

另外,由于多个子进程共用父进程的连接句柄,有时会出现一些意外,比如某个子进程由于一些原因,造成一个连接句柄死锁,便会搞得共享这个句柄的所有其它子进程都无法使用数据库.这时候只有重启web服务才能恢复.

优缺点都摆明了出来.至于用哪一个,大家自己根据情况选择吧.

题目二:CGI模式,模块模式与CLI模式运行PHP的区别以CGI方式运行时,webserver将用户请求以消息的方式转交给PHP独立进程,PHP与web服务之间无从属关系.

纯粹调用--返回结果的形式通讯.而模块方式,则是将PHP做为web-server的子进程控制,两者之间有从属关系.最明显的例子就是在CGI模式下,如果修改了PHP.INI的配置文件,不用重启web服务便可生效,而模块模式下则需要重启web服务.

CLI则是命令行接口,用于在操作系统命令行模式下执行PHP,比如可以直接在win的cmd或linux的shell模式下直接输入phpa.php来得到结果.它与CGI模式最大的不同的地方在于既不会输出HTTP头信息(CGI模式除了输出用户能看到的结果外,还会输出用户不能直接看到的HTTP头信息),抛出的信息也直接以文本方式而不以HTML方式给出,比如新建一个test.php,

写入内容,在浏览器中可以看到以HTML表格描述的信息,而在命令行输入phptest.php则会直接看到纯文本的输出.

题目三:用PHP实现一个双向队列?(腾讯公司面试题)上次有人问过我这道题,我个人认为用数组函数处理这道题绰足有余了.

以上四个函数已实现双向队列的四个基本操作.可以写一个class将其封装起来即可.

题目四:遍历一个目录及其子目录(新浪公司面试题)与网上普遍给的代码不同,这道解答,我用了PHP5更安全的scandir函数,以及迭代(foreach)和递归.

各位自己研究吧.未负责的测试/经验感觉应该比网上普遍的要快一些些.

foreach(scandir($rDir)as$v){

if($v=="."||$v=="..")continue;

is_dir($rDir."/".$v)?$r[$v]=showDir($rDir."/".$v):1;}

return$r;}

print_r(showDir("."));?>

一PHP/MYSQL知识

1、用PHP打印出前一天的时间格式是201*-1-188:30:30答案:date("Y-m-dH:i:s",strtotime("-1days"));

2、echo(),print(),print_r()的区别

答案:echo是PHP语句,print和print_r是函数,语句没有返回值,函数可以有返回值print()只能打印出简单类型变量的值(如int,string)print_r()可以打印出复杂类型变量的值(如数组,对象)echo输出一个或者多个字符串

3、能够使HTML和PHP分离开使用的模板,你使用过什么模板?答案:Smartydiscuz等等他们的原理都是变量替换。

4、你使用过框架模式吗?写出你接触过的框架。答案:thinkphpfleaphpqeephpzend等等

5、使用哪些工具进行版本控制?答案:最常见的是SVN

6、如何实现字符串翻转?答案:使用函数strrev()

7、优化MYSQL数据库的方法。

答案:要点:1.数据库中的表越小,在它上面执行的查询也就会越快

2.尽量把字段设置为NOTNULL,这样在执行查询的时候,数据库不用去比较NULL值

3.使用连接(JOIN)来代替子查询

4.使用联合(UNION)来代替手动创建的临时表5.使用外键索引

6.对查询语句进行优化8、实现中文字串截取无乱码的方法。

答案:直接使用PHP函数substr截取中文字符可能会出现乱码,解决办法:1、使用mbstring扩展库的mb_substr截取就不会出现乱码了。2、自己书写截取函数,但效率不如用mbstring扩展库来得高。

3、如果仅是为了输出截取的串,可用如下方式实现:substr($str,0,30).chr(0)。

二PHP/MYSQL编程

1某内容管理系统中,表message有如下字段id文章idtitle文章标题content文章内容

category_id文章分类idhits点击量

创建上表,写出MySQL语句答案:

CREATETABLE`wt_ceshi2`(

`id`INTNOTNULLAUTO_INCREMENTPRIMARYKEY,`title`VARCHAR(127)NOTNULL,`content`VARCHAR(127)NOTNULL,`category_id`INTNOTNULL,`hits`INTNOTNULL)

2同样上述内容管理系统:表comment记录用户回复内容,字段如下comment_id回复id

id文章id,关联message表中的idcomment_content回复内容

现通过查询数据库需要得到以下格式的文章标题列表,并按照回复数量排序,回复最高的排在最前面

文章id文章标题点击量回复数量

用一个SQL语句完成上述查询,如果文章没有回复则回复数量显示为0答案:

$sql=mysql_query(“SELECTid,title,hits,count(comment_id)asnumFROMmessageaLEFTJOINcommentbONa.id=b.comment_idORDERBYnumDESC”);While($result=mysql_fetch_array($sql)){

$num=0;

If($result[num])

$num=$result[num];

$dispMemo.=”$result[id].””.$result[title].””.$result[hits].””.$num.””;}

三、PHP程序

1.写出以下程序的输出结果$a=$b>$c?4:5;echo$a;?>

答案:4

2.写出以下程序的输出结果

答案:Hotdogok

四简答题

1.在PHP中,当前脚本的URL怎么取?上一个页面的URL怎么写?答案:当前URL:"http://".$_SERVER["HTTP_HOST"].$_SERVER["PHP_SELF"]."?".$_SERVER["QUERY_STRING"];上一个页面URL:$_SERVER["HTTP_REFERER"]

2.在HTTP1.0中,状态码401的含义是?如果返回“找不到文件”的提示,则可用header函数,其语句怎么写?

答案:401表示未授权;header(“HTTP/1.0404NotFound“);

3.数组函数arsort的作用是?语句error_reporting()的作用是?

答案:arsort:对数组进行逆向排序并保持索引关系error_reporting()的作用是:打印错误等级4.写出一个正则表达式,过虑网页上的所有JS/VBS脚本。答案:$script=“以下内容不显示:〈scriptlanguage=’javascript’〉alert(’cc’);〈/script〉“;echopreg_replace(“/〈script[^〉].*?〉.*?〈/script〉/si“,“替换内容“,$script);

5.语句include和require都能把另外一个文件包含到当前文件中,它们的区别是什么?;为了避免多次包含同一文件,可以什么语句来代替它们?

答案:在如何处理失败时,include()产生一个警告而require()则导致一个致命错误;require_once()/include_once()

6.类的属性可以序列化后保存到session中,从而以后可以恢复整个类,这要用到的函数是?

答案:serialize()/unserialize()

7.SQL中LEFTJOIN的含义是什么?如果tbl_user记录了学生的姓名(name)和学号(ID),tbl_score记录了学生(有的学生考试以后被开除了,没有其记录)的学号(ID)和考试成绩(score)以及考试科目(subject),要想打印出各个学生姓名及对应的的各科总成绩,则可以用SQL语句?答案:

自然左外连接

createdatabasephpinterview;usephpinterviewcreatetabletbl_user(

IDintnotnull,namevarchar(50)notnull,primarykey(ID));

createtabletbl_score(

IDintnotnull,scoredec(6,2)notnull,subjectvarchar(20));

insertintotbl_user(ID,name)values(1,beimu);insertintotbl_user(ID,name)values(2,aihui);

insertintotbl_score(ID,score,subject)values(1,90,’语文’);insertintotbl_score(ID,score,subject)values(1,80,’数学’);insertintotbl_score(ID,score,subject)values(2,86,’数学’);insertintotbl_score(ID,score,subject)values(2,96,’语文’);selectA.id,sum(B.score)assumscorefromtbl_userAleftjointbl_scoreBonA.ID=B.IDgroupbyA.id

8.写一个函数,能够遍历一个文件夹下的所有文件和子文件夹。答案:〈?php

functionmy_scandir($dir){

$files=array();if(is_dir($dir)){

if($handle=opendir($dir)){

while(($file=readdir($handle))!==false){

if($file!=“.“&&$file!=“..“){

if(is_dir($dir.“/“.$file)){

$files[$file]=my_scandir($dir.“/“.$file);}else{

$files[]=$dir.“/“.$file;}}

notnull}

closedir($handle);return$files;}}}

print_r(my_scandir(“D:ProgramFilesInternetExplorerMUI“));?〉

9.简述论坛中无限分类的实现原理。

答案:表中建一个对应父类的ID,然后进行关联。

PHP面试题汇总

面试题1

1、用PHP打印出前一天的时间格式是201*-5-1022:21:21printdate("Y-m-d",time()-86400);

2、echo(),print(),print_r()的区别

echo语言结构,print/print_r是函数.print是一般性输出,print_r输出包含底层类型.

3、能够使HTML和PHP分离开使用的模板

4、如何实现PHP、JSP交互?

5、使用哪些工具进行版本控制?cvs,subversion

6、如何实现字符串翻转?printstrrev("abc");

7、优化MYSQL数据库的方法。

针对经常用到的关键列多做索引,explain

8、谈谈事务处理

事务处理是指连续性的动作不可被打断的过程,事务处理失败会撤销相应的影响

9、apachemysqlphp实现最大负载的方法

主要是配置文件的优化了,另外用linux跑要比用windows跑效果好一点。条件允许的话,将mysql和apache分离开不用同一台机器跑也好一点。...软件角度的提升,不如硬件角度的提升来得快

10、实现中文字串截取无乱码的方法。mb_substr(’这样一来我的字符串就不会有乱码了’,0,7,‘utf-8′);中文是gb2312还是utf8?

gb2312和utf8特点判断下就可以了.

面试题2

var$empty="";var$null=NULL;var$bool=FALSE;var$notSet;

var$array=array();1.

$a=\\"hello\\";$b=&$a;unset($b);$b=\\"world\\";whatis$a?

"hello"2.

$a=1;$x=&$a;$b=$a;whatis$b?13.

$x=empty($array);whatis$x?trueorfalsetrue

4.您是否用过版本控制软件?如果有您用的版本控制软件的名字是?是.cvs,subversion.

5.您是否用过模板引擎?如果有您用的模板引擎的名字是?是.smarty

6.请简单阐述您最得意的开发之作.

7.对于大流量的网站,您采用什么样的方法来解决访问量问题?

针对动态性不强的ye,可以生成静态的;交互性强的,没多少办法,我仍然相信性能角度投资软件不如投资硬件.

8.用PHP写出显示客户端IP与服务器IP的代码:

print$_SERVER["remote_addr"].$_SERVER["server_addr"];

面试题3

一、PHP/MySQL编程

1)某内容管理系统中,表message有如下字段id文章idtitle文章标题content文章内容

category_id文章分类idhits点击量

创建上表,写出MySQL语句DROPTABLEIFEXISTSmessage;

CREATETABLEIFNOTEXISTSmessage(

idINTNOTNULLAUTO_INCREMENT,

titleVARCHAR(200)NOTNULLDEFAULT"",contentTEXT,

category_idINT,#这里估计还要改,暂时放下hitsINT,

PRIMARYKEY(id));

CREATEINDEXmessage_title_indexONmessage(title);

2)同样上述内容管理系统:表comment记录用户回复内容,字段如下comment_id回复id

id文章id,关联message表中的idcomment_content回复内容

现通过查询数据库需要得到以下格式的文章标题列表,并按照回复数量排序,回复最高的排在最前面

文章id文章标题点击量回复数量

用一个SQL语句完成上述查询,如果文章没有回复则回复数量显示为0

SELECTm.id,m.title,m.hits,count(comment_id)astotalFROMmessagemLEFTJOINcommentON(m.id=comment.id)GROUPBY(m.id)ORDERBYtotalDESC;

3)上述内容管理系统,表category保存分类信息,字段如下

category_idint(4)notnullauto_increment;categroy_namevarchar(40)notnull;

用户输入文章时,通过选择下拉菜单选定文章分类

写出如何实现这个下拉菜单

纯javascript(php取出所有分类),javascript/post/php,javascript/ajax/php...

二、PHP文件操作1)

上述内容管理系统:用户提交内容后,系统生成静态HTML页面;写出实现的基本思路if(!file_exists($html_file)){

ob_start();

$html=ob_get_contents();file_put_contents($file,$html);ob_end_clean;}

header("Location:".$html_file);exit;

2)简单描述用户修改以发布内容的实现流程和基本思路

三、PHP程序

1)写出以下程序的输出结果

$b=201;

$c=40;

$a=$b>$c?4:5;

echo$a;?>4

2)写出以下程序的输出结果$str=\\"cd\\";

$$str=\\"hotdog\\";

$$str.=\\"ok\\";

echo$cd;?>

hotdogok

面试题4一.简答题

1.请说明php中传值与传引用的区别。什么时候传值什么时候传引用?...拷贝消耗比较大时用引用...

2.在PHP中error_reporting这个函数有什么作用?控制错误输出级

3.请写一个函数验证电子邮件的格式是否正确strpos("@",$str)

4.简述如何得到当前执行脚本路径,包括所得到参数。

说明:例如有一个脚本,传给他的参数有参数1,参数2,参数3.传递参数的方法有可能是GET有可能是POST,那么现在请写出类似参数1=值1&参数2=值2.....的结果

http://$_SERVER["HTTP_HOST"]$_SERVER["SCRIPT_NAME"]?$_SERVER["QUERY_STRING"]

5.如何修改SESSION的生存时间.php-i|grepsession

6..有一个网页地址,如何得到它的内容?printfile_get_contents("");

7.有一个一维数组,里面存储整形数据,请写一个函数,将他们按从大到小的顺序排列。要求执行效率高。并说明如何改善执行效率。(该函数必须自己实现,不能使用php函数)算法问题不考虑.要效率写c去.

8.请举例说明在你的开发过程中用什么方法来加快页面的加载速度。

二.数据库设计题:

面试题5

1.在PHP中,当前脚本的名称(不包括路径和查询字符串)记录在预定义变量(1)中;而链接到当前页面的URL记录在预定义变量(2)中。$_SERVER["PHP_SELF"]$_SERVER["HTTP_REFERER"];

2.执行程序段将输出__0__.

3.在HTTP1.0中,状态码401的含义是(4);如果返回“找不到文件”的提示,则可用header函数,其语句为(5)。

查查RFC就知道了.header("Status:...");

4.数组函数arsort的作用是(6);语句error_reporting(2047)的作用是(7)。数组排序后反转并保持key相关.开启全部出错输出,E_ALL

5.PEAR中的数据库连接字符串格式是(8)。类似:mysql://user:pass@host/database

6.写出一个正则表达式,过虑网页上的所有JS/VBS脚本(即把script标记及其内容都去掉):(9)。

$re="|]*>(.*)|i";

$content=preg_replace($re,"$1",$content);

7.以Apache模块的方式安装PHP,在文件http.conf中首先要用语句(10)动态装载PHP模块,然后再用语句(11)使得Apache把所有扩展名为php的文件都作为PHP脚本处理。LoadModulemodule_php5modules/libphp5.soAddTypeapplication/x-httpd-php.php

8.语句include和require都能把另外一个文件包含到当前文件中,它们的区别是(12);为了避免多次包含同一文件,可以用语句(13)来代替它们。

当文件不存在时,一个warning,一个error..............._once

9.类的属性可以序列化后保存到session中,从而以后可以恢复整个类,这要用到的函数是(14)。unserialize

10.一个函数的参数不能是对变量的引用,除非在php.ini中把(15)设为on.

11.SQL中LEFTJOIN的含义是(16)。如果tbl_user记录了学生的姓名(name)和学号(ID),tbl_score记录了学生(有的学生考试以后被开除了,没有其记录)的学号(ID)和考试成绩(score)以及考试科目(subject),要想打印出各个学生姓名及对应的的各科总成绩,则可以用SQL语句(17)。

SELECTu.name,SUM(s.score)AStotal_scoreFROMtbl_useruLEFTJOINtbl_scoresON(u.ID=s.ID)GROUPBYu.ID;

12.在PHP中,heredoc是一种特殊的字符串,它的结束标志必须(18)。print(4,‘哈哈’),

(5,‘66333666′);*/

//指定分类id变量$category_id,然后返回该分类的所有子类//$default_category为默认的选中的分类

functionGet_Category($category_id=0,$level=0,$default_category=0){

global$DB;

$sql=“SELECT*FROMcategoryORDERBYcategoryIDDESC”;$result=$DB->query($sql);

while($rows=$DB->fetch_array($result)){

$category_array[$rows[categoryParentID]][$rows[categoryID]]=$rows[categoryID],parent=>$rows[categoryParentID],name=>$rows

[categoryName]);}

if(!isset($category_array[$category_id])){

return“”;}

foreach($category_array[$category_id]AS$key=>$category){

if($category["id"]==$default_category){

echo“0){

echo“>”.str_repeat(”“,$level).””.$category["name"].“\\n”;}else{

echo“>”.$category["name"].“\\n”;}

Get_Category($key,$level+1,$default_category);}

unset($category_array[$category_id]);

array(id=>}/*

函数返回的数组格式如下所示:Array(

[1]=>Array([id]=>1[name]=>一级类别[level]=>0[ParentID]=>0)[4]=>Array([id]=>4[name]=>二级类别[level]=>1[ParentID]=>1)[9]=>Array([id]=>9[name]=>哈哈[level]=>2[ParentID]=>4)[3]=>Array([id]=>3[name]=>二级类别[level]=>1[ParentID]=>1)[8]=>Array([id]=>8[name]=>aqqqqqd[level]=>2[ParentID]=>3)[2]=>Array([id]=>2[name]=>二级类别[level]=>1[ParentID]=>1)[7]=>Array([id]=>7[name]=>234234[level]=>2[ParentID]=>2)[6]=>Array([id]=>6[name]=>333332[level]=>2[ParentID]=>2)[5]=>Array([id]=>5[name]=>三级类别[level]=>2[ParentID]=>2)[10]=>Array([id]=>10[name]=>66333666[level]=>3[ParentID]=>5))*/

//指定分类id,然后返回数组

functionCategory_array($category_id=0,$level=0){

global$DB;

$sql=“SELECT*FROMcategoryORDERBYcategoryIDDESC”;$result=$DB->query($sql);

while($rows=$DB->fetch_array($result)){

$category_array[$rows["categoryParentID"]][$rows["categoryID"]]=$rows;}

foreach($category_arrayAS$key=>$val){

if($key==$category_id){

foreach($valAS$k=>$v){

$options[$k]=array(

‘id=>$v["categoryID"],name=>$v["categoryName"],levelParentID=>$v["categoryParentID"]);

$children=Category_array($k,$level+1);

if(count($children)>0)

=>$level,{

$options=$options+$children;}}}}

unset($category_array[$category_id]);return$options;}?>

}

foreach($arr[$category_id]AS$key=>$cate){

if($cate["id"]==$default_category){

$txt=“0){

$txt1=“>”.str_repeat(“-”,$level).””.$cate["name"].“\\n”;}else{

$txt1=“>”.$cate["name"].“\\n”;}

$val=$txt.$txt1;echo$val;

self::Get_Category($key,$level+1,$default_category);}}

functiongetFlush($category_id=0,$level=0,$default_category=0){

ob_start();

self::Get_Category($category_id,$level,$default_category);

$out=ob_get_contents();

ob_end_clean();return$out;}}

$id=$_GET["id"];echo“”;$c=newcate();

//$c->Get_Category();

$ttt=$c->getFlush($id,’0′,’3′);echo$ttt;

echo“”;?>

15.设计一个网页,使得打开它时弹出一个全屏的窗口,该窗口中有一个文本框和一个按钮。用户在文本框中输入信息后点击按钮就可以把窗口关闭,而输入的信息却在主网页中显示。window.open,

onClick=opener.close()

面试题6

有一表menu(mainmenu,submenu,url),请用递归法写出一树形菜单,将所有的menu列出来。showMenu($menu="mainmenu"){

print$menu;

$sql=\\"SELECTsubmenuFROMmenuWHEREmainmenu=$menu\\";//getsubmenuintoarray$menusforeach($menusas$menu){

showMenu($menu);}}

可以加个$level,也可以把输出放到数组里

面试题7

1-给你三个数,写程序求出其最大值。

print$a>$b?($a>$c?$a:$c):($b>$c?$b:$c);

2-谈谈asp,php,jsp的优缺点

3-谈谈对mvc的认识

4-写出发贴数最多的十个人名字的SQL,利用下表:members(id,username,posts,pass,email)

SELECTusername,COUNT(posts)AStotal_postFROMmembersGROUPBYidORDERBYtotal_postDESCLIMIT10;

面试题8

1-如何通过javascript判断一个窗口是否已经被屏蔽。

要判断open方法所打开的窗口时,就按open()的值来进行判断。

如果要判断原窗口被屏蔽,用opener属性来判断,opener.closed如果为true,就是主窗口关闭了。

2-写出session的运行机制

放个cookie保存session_id,在sessen.save_path里放个SESS_(session_id)的文件保存serialize过的数据

3-有一数组$a=array(4,3,8,9,2);请将其重新排序,按从小到大的顺序列出。sort($a);

printimplode(\\"\\n\\",$a);

4-防止SQL注射漏洞一般用_____函数。settypeaddslashes

5-查询在线人数,并能处理异常掉线的SQL?....WHERE________

友情提示:本文中关于《PHP程序员招聘试卷》给出的范例仅供您参考拓展思维使用,PHP程序员招聘试卷:该篇文章建议您自主创作。

来源:网络整理 免责声明:本文仅限学习分享,如产生版权问题,请联系我们及时删除。


PHP程序员招聘试卷》由互联网用户整理提供,转载分享请保留原作者信息,谢谢!
链接地址:http://www.bsmz.net/gongwen/695419.html
相关文章