php面试题及复习资料.docx
面试题及答案,经典笔试题及答案问题1 考虑如下脚本。标记处应该添加什么代码才能让脚本输出字符串 ?$ = (15, 7, 15);($ $) /* 这里应该加入什么 */A ($);B ($);C ($, $, 2);D $;E $12 以下哪一项不能把字符串$s1 和$s2 组成一个字符串?A$s1 + $s2B”$s1$s2”C$s1.$s2D(”, ($s1,$s2)E以上都可以3 变 量 $ 的 值 是 字 符 串 , 以 下 哪 项 能 把 字 符 串 转 化 成A($, ($, “”);B($, “”);C($, “”);D($, ($, “”)+1);E($, “”);4 给定一个用逗号分隔一组值的字符串,以下哪个函数能在仅调用一次的情况下就把每个独立的值放入一个新创建的数组?A()B不可能只调用一次就完成C()D()E()5 要比较两个字符串,以下那种方法最万能?A用 函数B用操作符C用 ()D用 ()6 以下哪个 正则表达式能匹配字符串 ?A.*B|Cd3|d8D3|9E|w97 以下哪些函数能用来验证字符串的完整性?(三选)A5()B1()C13()D()E32()8 哪个 函数及以下脚本在 系统下执行的效果近似?$f = ($); ("n", $f);A()B()C()D()E()9 基于指定的式样()把一个字符串分隔开并放入数组,以下哪些函数能做到?(双选)A()B()C()D()E()10以下脚本输出什么? ' ' . 1 + 2 . '45'A 1245B 345C 1+245D245E什么都没有11以下脚本输出什么?$s = '12345'$s$s1 = '2' $s;A12345B12245C22345D11345E12方框中的正则表达式能及以下哪些选项匹配?(双选)/.*123A*123B*_1234C*1234D_*1234E_*12313以下哪个比较将返回 ?(双选)A1 1B 0C 0Da aE123 12314如果用+操作符把一个字符串和一个整型数字相加,结果将怎样?A解释器输出一个类型错误B字符串将被转换成数字,再及整型数字相加C字符串将被丢弃,只保留整型数字D字符串和整型数字将连接成一个新字符串E整形数字将被丢弃,而保留字符串15考虑如下脚本。假设 能被访问,脚本将输出什么?$s = (""); ($s, ('p'); ($s);A 的主页的字符数B剔除标签后的 主页的字符数C1D0E剔除以外的标签后的 主页的字符数16哪个函数能不区分大小写得对两个字符串进行二进制比对?A()B()C()D()E以上都不能17以下哪些函数能把字符串里存储的二进制数据转化成十六进制?(双选)A()B()C2()D2()E()18哪个函数能用来确保一个字符串的字符数总是大于一个指定值?答案:19以下脚本输出什么?$a = ' ' ($a, 1, "c", );答案:20以下脚本输出什么?$x = '' ($x, 'x', 1, 2);AxBCDE答案1 函数能够胜任,但考虑到输出三个字母就需要三次调用该函数,所以排除此方法。那么$和$1是仅有的两个可能输出题目要求的字符串的选项。因为 0 是数组的第一个索引,所以答案是 D。2 除了 A 以外的选项都能输出题目要求的字符串。 中,加号(+)不能把两个字符串合并成一个。3 函数返回字符串的一部分,而 函数擅长从一个字符串中找出某个指定的子串。同时使用这两个函数将满足题目要求。注意,前一个函数从 0 开始索引,而后者不是,因此需要+1。答案是 D。4 答案是 D。 函数使用一个字符串分隔另一个字符串,并把结果放入一个新建的数组。 函数也可以做同样的事,但需要多次调用。5 答案是 D。()提供了安全的字符串比较机制。注意,选项 C 是错的,()不是一个“万能”函数,因为它不区分大小写。6 选项中没有一个正则表达式能真正代表题目所给字符串的匹配方式,但是选项 A 和 E仍然能勉强匹配。选项 A 太普通了,它能够匹配任何字符串,因此答案是 E。7 正确答案是 A,B 和 E。用 ()和 13()来验证一个字符串是否被改变,效率很低。32()比前面两个函数好些,如果能容忍一些小错误的话,它是个不错的选择。8 函数将文件的文本内容读入一个数组,每个元素是一行。因此答案 E 正确。也许你想知道为什么要把这样一个题目放在讲字符串的章节中,那是为了提醒你每一章的题目所包含的知识点并不是绝对严格区分开的,正如写 脚本时, 函数不能脱离字符串函数单独存在一样。9 尽管条件不同,但 和 函数都能满足题目要求。()拿一个正则表达式匹配一个字符串;()按固定长度分隔字符串;而 ()则是 ()别名,用来移除字符串末尾处的空格。10本题考察你对字符串操作及操作符优先级的认识。连接运算符(.)的优先级比加号(+)高。因此 解释器实际执行的运算可以表示为( . 1) + (2 . 45)。由于字符串 1 不是数字,所以加号前面的运算等于 0。加号后面的运算等于 245, 输出的结果是 0+245,等于 245,所以答案是 D。11可以用访问数组元素的方式访问字符串中的字符,因此脚本只是把字符串中的第二个字符($s1)替换成了字符 2,最终将输出 12245。答案是 B。12本题的要点是理解这个正则表达式的含义从左往右,首先是零个或多个任意字符(.*),跟着是一个星号(*),然后是 123,最后是一个数字。因此答案是 C 和 D。13B 和 E 正确。选项 B 中,在比较时,字符串 等同于数字 0。操作符不比对数据类型,所以将返回 。答案 E 中,字符串 123 等同于数字 123,比较将返回 。14字符串将被转换成数字(如果无法发生转换就是 0),然后及整型数字相加。答案是 B。15代码的本意是剔除 主页上除了 p 以外的的所有 标签。可实际上,在代码的最后一行使用了 函数,它统计变量中的元素数量,而不是字符串中的字符数。由于字符串是标量,对字符串使用 函数将永远返回 1。答案是 C。16题目其实就是在描述 函数的作用,因此答案是 C。17正确答案是 B 和 D。 函数能对二进制数据进行复杂的格式化,包括将字符串中的字符转化成十六进制表示。2 函数也有同样的转化功能。注意,()能将整数转化成十六进制数,但无法转化字符串。18这是在说 函数,它可以把字符串填充到指定长度。19脚本将输出 。 函数通常用来把字符串切割成指定长度。然而在本题中,长度被设置为 1,因此函数将从空格处切割(第四个参数被设置为 ,因此函数不会从单词的中间进行切割)。填充字符串是 c,等于把每个空格都换成了 c。20 函数是用一个指定字符串替换原字符串中的某个部分,因此脚本输出,答案是 B。文件操作你可能觉得的文件操作功能并不怎样,但实际上它对开发者来说非常有用。即使你是做网站开发的,学会相关技能也能让你如虎添翼。多亏了流包装器( ,将在第十章详细介绍),才能够打开并读取远程文件,让在本地使用第三方网站的内容变得可能。站在更底层的角度,文件输入/输出能完成多种任务。可以用他读取预制文件的内容,比如第三方提供的内容;或者通过脚本让浏览器打开一个二进制文件,使得你能更切实的控制它。无论如何,本章不仅考验你打开、关闭和读取文件的能力,还考查多进程下进行文件操作的基础知识例如文件锁。面试题及答案,经典笔试题及答案1 函数能读取文本文件中的一行。读取二进制文件或者其他文件时,应当使用函数。A(), ()B(), ()C(), ()D(), ()E(), ()2 文件指针能在脚本结束时自动关闭,但你也可以用函数来关闭。答案:3 考虑如下脚本,它一行一行的读取并显示某文本文件的内容。在问号处填入什么才能使脚本正常运作?$ = ("", "r");A($)B($)C($)D($)E($)4 以下哪种方法能保证锁在任何竞争情况下都安全?A用()锁住指定文件B用()在系统的临时文件夹里打开文件C用()创建一个临时文件D用()创建一个文件夹来当E用()创建一个临时文件5以下哪个函数能够获得文件的全部内容,并能够用在表达式中?(双选)A()B()C()D()E()6 在不把文件内容预加载到变量中的前提下,如何解析一个以特殊格式格式化过的多行文件?A用()函数把它分割放入数组B用()C用()D用()E用()7考虑如下脚本,最后文件的内容是什么?$ = '0123456789'$f = ("", "r"); ($i = 0; $i < 50; $) ($f, $(0, ($) - 1);A什么都没有,因为$实际上是一个字符串,而不是数组B49个随机字符C50个随机字符D41个随机字符E什么都没有,或者文件不存在,脚本输出一个错误8函数是做什么的?A删除文件B删除文件夹C释放变量D移除数据库记录E没有这个函数!9考虑如下脚本,哪个函数和它的功能最接近?$f = ($, 'w'); ($f, $); ($f);A()B()C没有这样的函数D()E()10如果你的脚本无法正确识别一个存储于另一个平台上的文件的行结尾,你该怎么办?A改变的设置B用正则表达式侦测行的最后一个字母C用()D用()E每次读取一个字符11如果想要可读可写得打开一个文件,该给()传什么参数?(双选)AwBrCaD+12能够读写常规文件中的二进制数据的函数是,该函数返回的资源能被()使用。答案:13以下哪些函数能读取文件的全部内容?(三选)A()B()C()D()E()14哪个函数能够往文本文件中写入一个字符串?答案:15考虑如下脚本。运行时,尽管文件已经被用()函数删除,脚本仍然输出1,1。在脚本的最后添加什么函数才能解决这个问题?$f = ("", "w"); ($f, ""); ($f); ("c:");A()B()C()D()E以上都不对16函数能判断一个文件是否可写。答案:17以下哪个选项能将文件指针移到开头?A()B(-1)C(0, )D(0, )E(0, )18()和()有什么区别?A()基于文件指针工作,()基于路径工作B()基于文件指针工作,()基于路径工作C()不能处理文件D()不能处理文件E()是()的别名19以下哪个选项准确的描述出了方框中的脚本的作用? ( ('c:') /('c:') * 100, 2) . '%'A计算系统C盘的剩余磁盘空间大小B输出一个表示C盘剩余空间所占比例的两位小数C输出C盘剩余容量的数D计算C盘总容量及剩余空间的比率E以上都不对20假设存在并能够被读取,调用以下脚本时,浏览器上显示什么?A一张图片B一个二进制文件C下载一个二进制文件D下载一张图片E一张残破的图片答案1 函数主要用来从文本文件中读取一行,当然你也可以指定每次读取的最大长度。函数主要用来读取二进制数据。答案是D。2 函数能关闭文件指针。3 函数能从文件中读取单独一行。因此答案是D。4 正确答案是D。这题很难,而且在实践中不大可能会碰到这样的问题但这不正是你读这本书的原因吗?!你必须记住,()使用一种“协议”锁定机制,即所有其他访问此文件的进程也必须要使用()。如果某个进程没有这么做,竞争就会产生,锁就不安全。用创建一个文件夹能保证任何时刻只有一个进程处理能处理某文件,即保证操作的原子性。因此,你可以创建一个临时文件夹并“护”住它,直到操作完成。5 只有和函数返回文件的全部内容,因此答案是A和D。函数也能读取文件的全部内容,但它直接把内容送入了输出缓存,因此不能用在表达式中。6 函数能根据指定格式解析文件内容,因此答案是C。函数只能用来操作字符串。7 答案是E。注意,文件被以r模式打开,即只读模式。因此,如果文件不存在,将输出一个错误来指出没有找到文件。如果文件存在,()将被成功调用,但由于是以只读方式打开,()会失败。如果我们用w代替r,脚本就能正常运行,并且内将有50个随机字符(记住,可以像访问数组那样使用索引来访问字符串)。8 答案是E。里没有叫()的函数。删除文件用(),删除文件夹用(),数据库记录用语句删除,释放变量用()。9 脚本实现的功能及()最接近,但这个函数直到5才被引入,因此答案是C。104.3.0开始,引入了设置,系统在保存文本文件时能够自动侦测行结束符号的类型,因此答案是A。11要可读可写的打开文件,你必须使用模式,因此答案是B和D。12这是在说()函数。13正确答案是B,D和E。,和都能读取文件的全部内容。14()和()两个函数在这里都可以,而后者其实是前者的别名。在中,写入二进制数据和写入字符串没有区别。15会缓存某些文件系统函数的返回值包括(),这样能提高脚本处理重复操作时的效率。当脚本里有大量删除文件的操作时,缓存很容易就会过时,因此需要清理缓存。答案是A。16这是在说函数,它返回一个表示文件是否可写的布尔值。17正确答案是D。()用来移动文件指针。指出偏移量从文件开头开始计算。如果没有特别指出,就是()的默认模式。注意,函数等效于(0)。18答案是B。函数通过已打开的文件指针取得文件信息,()获取指定路径的文件信息。19正确答案是B。函数能确定指定设备上(本题中即下的C盘)的剩余磁盘空间(单位是),而()能确定设备的总容量。两者相除,再乘以百分率,最后用()保留两位小数,脚本输出的就是剩余磁盘空间所占的比例。最后在加上百分号以防混淆。20答案是E。你注意到两个代码块之间的空行了吗?它将被输出到浏览器上,使得整个图片的二进制数据出错。因此浏览器将显示一个破碎的图片(或者是一条信息,指出图片出错)。 译者注:原文中两个代码块之间并没有空行,而在我添加了空行之后,也没有调试出答案中描述的情况。)管理日期及时间从某一点上来看,几乎所有的网站都需要处理日期及时间。假如你需要收集用户的生日,或者记录某个特定事件的发生时间, 的日期函数将很好的帮助你完成任务。但是 的日期/时间管理功能并不完美。它基于 时间戳运行,容易受到攻击,作为开发者,你必须谨慎处理可能遇到的恶意数据。同时,在 上进行日期管理是一件国际性的事务。你必须能依据时区、地区的不同来显示对应的日期信息。本章测试题将考察以上所述的全部内容。第 16 页