PHP工程师面试笔试分类模拟5_第1页
PHP工程师面试笔试分类模拟5_第2页
PHP工程师面试笔试分类模拟5_第3页
PHP工程师面试笔试分类模拟5_第4页
PHP工程师面试笔试分类模拟5_第5页
已阅读5页,还剩5页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

PHP工程师面试笔试分类模拟5一、选择题1.

在不把文件内容预加载到变量中的前提下,解析一个以特殊格式格式化过的多行文件的方法是______A.用file()函数把它分割放入数组B.用sscanf()(江南博哥)C.用fscanf()D.用fgets()E.用fnmatch()正确答案:C[解析]fscanf()函数可以用指定格式来解析文件的内容。而sscanf()函数只能用来操作字符串。fgets()函数只能用于读取单行文本,file()函数可以读取整个文件,fnmatch()函数是根据指定的模式来匹配文件名或字符串,它们都不能解析格式化过的多行文件。选项C正确。

所以,本题的答案为C。

2.

/tmp是上传文件的默认存储目录,如果更改这个目录,那么需要编辑哪个文件的哪个属性值?______A.php.ini文件的upload_tmp_dir属性B.php.ini文件的upload_dir属性C.php.conf文件的upload_tmp_dir属性D.php.conf文件的upload_dir属性正确答案:A[解析]如果需要更改这个目录文件,那么可以在php.ini配置文件里面进行修改upload_tmp_dr属性。本题中,首先,php.ini不存在upload_dir属性,其次也不存在php.conf文件。选项A正确。

所以,本题的答案为A。

3.

下面关于PHP抽象类的描述中,错误的是______A.PHP中抽象类使用abstract关键字定义B.没有方法体的方法叫抽象方法,包含抽象方法的类必须是抽象类C.抽象类中必须有抽象方法,否则不叫抽象类D.抽象类不能实例化,也就是不可以new成对象正确答案:C[解析]抽象类可以是个空类,也就是不一定需要有抽象方法。但抽象方法只能存在抽象类中。选项C错误。

所以,本题的答案为C。

4.

下面对于echo、print的描述中,正确的是______A.echo、print都可以打印多个参数B.print可以打印多个参数,echo不可以C.echo可以打印多个参数,print不可以D.echo、print都不可以打印多个参数正确答案:C[解析]echo和print都可以直接把变量输出来,但echo输出的效率比print高,因为echo输出没有返回值,而print输出后会自带返回值。echo和print的区别在于,echo可以输出一个或多个字符串,而print只允许输出一个字符串,返回值总为1。

所以,本题的答案为C。

5.

以下无法在PHP4中实现的面向对象的概念是______

①抽象类

②Final类

③public、private、protected(PPP)方法

④接口A.抽象类B.PPP方法C.PPP方法和接口D.以上所有都不可用E.以上所有都可用正确答案:D[解析]在PHP4.0的概念中,抽象类、final类、public、private、protected(PPP)方法都没有实现。选项D正确。

所以,本题的答案为D。

6.

PHP定义变量的方法是______A.varB.$C.$$D.&正确答案:B[解析]对于选项A,var主要用于JavaScript声明变量。选项A错误。

对于选项B,$是PHP声明变量的唯一符号。选项B正确。

对于选项C,PHP声明变量只有一个$,而不是两个$。选项C错误。

对于选项D,&是与运算符,在变量前也可以作为引用符,而不是变量定义符。选项D错误。

所以,本题的答案为B。

7.

以下代码中,不符合PHP语法的是______A.$_10B.${"MyVar"}C.&$somethingD.$10_somethingsE.$aVaR正确答案:D[解析]对于选项A,变量可以以下划线“_”开头作为变量名。选项A错误。

对于选项B,PHP是支持花括号包括的,里面可以包含单双引号作为变量名。选项B错误。

对于选项C,该变量中,“&”在变量前代表引用该变量的意思,此语法是对的。选项C错误。

对于选项D,变量中是不允许数字开头作为变量名的,但是可以允许变量名中包含数字。该变量定义不符合PHP语法。选项D正确。

对于选项E,变量名中的字母大小写均可,所以,该变量定义是符合PHP语法的。但要注意PHP变量是区分大小写的,所以当引用该变量时,名称要一致。选项E错误。

所以,本题的答案为D。

8.

以下是一个类的声明,对成员属性正确的赋值方式是______

<?php

classTest{

private$a;

static$b;

functionsetA($a){

$this->a=$a;

}

}

$test=newtest();

?>A.$test->a="abc";B.Test::$b="abc";C.Test::setA("abc");D.$test->b="abc";正确答案:B[解析]对于选项A,因为$a是私有方法,所以不能在外部执行赋值操作。选项A错误。

对于选项B,要对类中的静态常量赋值可以使用“类名::变量”的形式赋值,可以对成员属性$b赋值。选项B正确。

对于选项C,因为setA()函数不是一个静态函数,所以不能使用Test::setA()的格式在类外调用函数,可以使$test->setA("abc")的方式调用函数。选项C错误。

对于选项D,因为$b是静态变量,所以不能使用$this->b方式赋值,赋值方式应该为Test::$b="abc"。选项D错误。

所以,本题的答案为B。

9.

可以用来表现以下条件判断最合适的语法结构是______

if($a=='a'){

somefunction();

}elseif($a=='b'){

anotherfunction();

}elseif($a=='c'){

dosomething();

}else{

donothing();

}A.没有default的switch语句B.一个递归函数C.while语句D.有default的switch语句正确答案:D[解析]对于if...elseif...else结构的分支结构程序可以使用switch语句进行优化,从而可以避免冗长的代码块。本题中,else相当于switch里面的default部分,即条件没有符合的都可以执行到default里面的语句。选项A错误,选项D正确。

逻辑判断语句是不可能被改成循环语句或递归函数完成对应功能的,选项B选项C错误。

所以,本题的答案为D。

10.

某城市发生了一起汽车撞人逃跑事件,该城市只有两种颜色的车,其中,白色车占15%,黑色车占85%,事发时有一个人在现场看见似乎是一辆白色的车,但是根据专家在现场分析,在当时那种条件能看正确的可能性是80%。那么,肇事车是白车的概率是______A.12%B.29%C.41%D.80%正确答案:C[解析]本题中,肇事车的情况一共存在着以下4种可能性:

1)如果肇事车是白色车,被正确识别的概率P1=15%*80%=12%。

2)如果肇事车是白色车,被看成是黑车的概率P2=15%*20%=3%。

3)如果肇事车是黑色车,被正确识别的概率P3=85%*80%=68%。

4)如果肇事车是黑色车,被看成是白车的概率P4=85%*20%=17%。

肇事车是白色车的概率P=P1/(P1+P4)=12%/(12%+17%)=41.3%,选项C正确。

所以,本题的答案为C。

二、填空题1.

PHP中的错误控制操作符是______。正确答案:@[解析]PHP支持一个错误控制运算符@。当将其放置在一个php表达式之前,该表达式可能产生的任何错误信息都被忽略掉。

2.

以Apache模块的方式安装PHP,在文件http.conf中首先要用语句______动态装载PHP模块,然后用语句______使得Apache把所有扩展名为PHP的文件都作为PHP脚本处理。正确答案:LoadModule;AddTypeapplication/x-httpd-php.php[解析]在用Apache模块的方式安装PHP时,需要先在http.conf配置文件中加入LoadModule说明加载PHP模块的功能。保存好配置文件后,还需要使用AddTypeapplication/x-httpd-php.php指明Apache对PHP文件的支持。

3.

打开php.ini中的safe_mode,会影响的函数有______、______、______、______、______、______。正确答案:fopen()、mkdir()、rmdir()、set_time_limit()、mysql_connect()、mail()[解析]PHP的safa_mode提供了一个基本安全的共享环境,在一个有多个用户账户存在的PHP开发的Web服务器上。当安全模式打开的时候,部分函数将被完全地禁止,而还有部分函数的功能将会受到限制。下面重点给出其中的一部分:

1)fopen()、mkdir()、rmdir()检查被操作的目录是否与正在执行的脚本有相同的UID。

2)创建新文件(只能在属于当前用户的目录下创建文件)。

3)dl()函数在安全模式下被禁用。

4)set_time_limit()在安全模式下不起作用。

5)mysql服务器所用的用户名必须与调用mysql_connect()的文件的拥有者用户名相同。

6)mail()在安全模式下,第5个参数被屏蔽。

4.

代码return?=='a';在“?”中加入______函数后返回true。正确答案:chr(65)[解析]ord()函数可以返回字符串的首个字符的ASCII值。chr()函数可以返回指定ASCII值的字符串,可以通过chr(65)转换成字符串A(备注:字符'A'的ASCII值为65),和A比较为真返回TRUE。而65+"和"+65都不能强制转换成字符串A,无法和A比较为真。

5.

获得当前会话ID的方法是______。正确答案:session_id()[解析]可以通过session_id()函数获取和设置当前会话的ID。使用session_id()时,如果当前存在会话ID,那么返回当前会话ID,如果没有会话,那么返回空字符串("")。

三、简答题1.

请谈谈数据库中的事务。正确答案:事务是作为一个单元的一组有序的数据库操作。如果组中的所有操作都成功,则认为事务成功,即使只有一个操作失败,事务也不成功。如果所有操作完成,事务则提交,那么其修改将作用于所有其他数据库进程。如果一个操作失败,则事务将回滚,该事务所有操作的影响都将取消。

2.

Session的原理是什么?大型网站中,使用Session应注意什么?正确答案:Session用来标识服务器与浏览器的一次会话过程,服务器会给每个Session分配一个唯一的会话ID(SID)。SID可以看作与任意数量的数据有关联,在HTTP无状态行为下,可以通过两种方式实现:

1)通过Cookie存储SID并在必要时获取SID,在页面中使用和SID相关的各项数据,即使会话结束了,Cookie也可以在客户端保存,并在后续会话中读取使用。

2)URL重写,在每个请求页面的本地URL上增加SID。无论客户什么时候点击这些链接,都会通过SID自动传播,这样即使客户端禁用Cookie,也不影响会话处理功能,可以正常使用;但是这种方法也存在一些问题,例如,URL重写在会话之间不能保持持久性,也无法阻止用户将URL分享给别人。

在大型网站中,因为访问量比较大,所以应用服务器一般都会做集群部署,Session是存储在每个服务器中的,这时需要注意实现各个服务器之间的Session共享。

3.

使用Memcache需要注意哪些问题?正确答案:1)将程序、Memcache、mysql分开存放。在实际的开发过程中,因为Memcache使用过程中把数据缓存在内存中,因此会消耗很大的内存。所以建议把代码、mysql数据库和Memcache分开存放。

2)不要使用Memcache保存重要数据。因为Memcache是把数据存放在内存中,所以服务器突然断电或挂掉,重启后数据就会消失,没有办法找回。所以建议不要使用Memcache保存重要的数据。

3)定期查看缓存的分布状况和击中情况。只有定期查看缓存的分布状况和击中情况才能更好地分析缓存的工作效率和对缓存进行优化,发现缓存中可能存在的问题并及时解决。

4.

请简述PHP变量名的命名规则。正确答案:PHP变量的命名遵守以下几点规则:

1)变量名必须以$开头,后面跟变量名。

2)变量名须以字母或下划线开头。

3)变量名不能以数字开头,但可以包含字母(A~z,a~z)、数字(0~9)或下划线(_)。

4)变量名不允许包含空格。

5)变量名区分大小写,即$a与$A是两个不同的变量。

5.

什么是数据库索引?主键索引与唯一索引有什么区别?索引的优缺点是什么?正确答案:索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的存储结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。它主要提供指向存储在表的指定列中的数据值的指针,然后根据指定的排序顺序对这些指针排序。数据库使用索引以找到特定值,然后顺指针找到包含该值的行。这样可以使对应于表的SQL语句执行得更快,可快速访问数据库表中的特定信息。

主键索引与唯一索引的区别是主键是一种唯一性索引,必须指定为主键,并且每个表只能有一个主键。而唯一索引的索引列的每个值都只能出现一次,即数据必须唯一。

索引的优点如下:

1)通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。

2)可以大大加快数据的检索速度。

3)加速表与表之间的连接。

4)使用索引后,在数据检索时使用分组和排序子句可以显著减少查询中分组和排序的时间。

5)通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。

索引的缺点如下:

1)索引的创建和维护都会耗费时间,并且耗费的时间随着数据量的增加而增加。

2)除了数据表需要占据空间外,索引也需要占据一定的物理空间,并且建立聚簇索引,需要的空间更大。

3)当对表中的数据进行增删改时,索引需要动态的维护,降低了数据的维护速度。

四、编程题1.

给一行文字$String,如何编写一个正规表达式,把$String内的div标签除去?正确答案:根据题意,可使用正则匹配去掉HTML标签,实现代码如下:

<?php

$String='<div>Thisisatest</div>';

$pattern='/<(.*?)>(.*?)<∨(.*?)>/';

echopreg_replace($pattern,'\\2',$String);

?>

2.

用PHP脚本解析出:/srfi-28/mail-archive/maillist.html这个页面中出现的所有email,并保存到数组。正确答案:根据题意实现代码如下:(最后获得email地址$matches数组)

<?php

$mails=file_get_contents('/srfi-28/mail-archive/maillist.html');

$pattern="/^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/";

if(preg_match_all($pattern,$mails,$matches)){

print_r($matches);

?>

3.

给定一个数d和n,如何计算d的n次方?例如,d=2,n=3,d的n次方为23=8。正确答案:可以把n的取值分为如下几种情况:

1)当n=0时,计算结果肯定为1。

2)当n=1时,计算结果肯定为d。

3)当n>0时,计算方法为初始化计算结果result=1,然后对result执行n次乘以d的操作,得到的结果就是d的n次方。

4)当n<0时,计算方法为初始化计算结果result=1,然后对result执行|n|次除以d的操作,得到的结果就是d的n次方。

以2的三次方为例,首先初始化result=1,接着对result执行3次乘以2的操作:result=result*2=1*2=2,result=result*2=2*2=4,result=result*2=4*2=8,因此,2的三次方等于8。根据这个思路给出实现代码如下:

<?php

/*函数功能:计算一个数d的n

温馨提示

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

评论

0/150

提交评论