经典PHP笔试题
1.考虑如下脚本。标记处应该添加什么代码才能让脚本输出字符串php?
$alpha = 'abcdefghijklmnopqrstuvwxyz';
$letters = array(15, 7, 15);
foreach($letters as $val)
{/* 这里应该加入什么 */
}?>
A.echo chr($val);
B.echo asc($val);
C.echo substr($alpha, $val, 2);
D.echo $alpha{$val};
E.echo $alpha{$val+1}
答案解析:substr 函数能够胜任,但考虑到输出三个字母就需要三次调用该函数,所以排除此方法。那么$alpha{$val}和$alpha{$val+1}是仅有的两个可能输出题目要求的字符串的选项。因为 0 是数 组的第一个索引,所以答案是 D。
2. 以下哪一项不能把字符串$s1 和$s2 组成一个字符串?
A.$s1 + $s2
B.”{$s1}{$s2}”
C.$s1.$s2
D.implode(”, array($s1,$s2))
E.以上都可以
答案解析:除 A 以外的选项都能输出题目要求的字符串。PHP中,加号+不能把两个字符串合并成一个。
3. 变 量 $email 的 值 是 字 符 串 user@example.com , 以 下 哪 项 能 把 字 符 串 转 化 成example.com?
A.substr($email, strpos($email, “@”));
B.strstr($email, “@”);
C.strchr($email, “@”);
D.substr($email, strpos($email, “@”)+1);
E.strrpos($email, “@”);
答案解析:substr 函数返回字符串的一部分,而 strpos 函数擅长从一个字符串中找出某个指定的子串。同时使用这两个函数将满足题目要求。注意,前一个函数从 0 开始索引,而后者不是,因此需 要+1。答案是 D。
4. 给定一个用逗号分隔一组值的字符串,以下哪个函数能在仅调用一次的情况下就把每个独立的值放入一个新创建的数组?
A.strstr()
B.不可能只调用一次就完成
C.extract()
D.explode()
E.strtok()
答案解析:答案是 D。explode 函数使用一个字符串分隔另一个字符串,并把结果放入一个新建的数组。strtok 函数也可以做同样的事,但需要多次调用。
5. 要比较两个字符串,以下那种方法最万能?
A.用 strpos 函数
B.用==操作符
C.用 strcasecmp()
D.用 strcmp()
答案解析:答案是 D。strcmp()提供了安全的字符串比较机制。注意,选项 C 是错的,strcasecmp()不是一个“万能”函数,因为它不区分大小写。
6. 以下哪个 PCRE 正则表达式能匹配字符串 php|architect?
A..*
B.…|………
C.\d{3}\|\d{8}
D.[az]{3}\|[az]{9}
E.[a-z][a-z][a-z]\|\w{9}
答案解析:选项中没有一个正则表达式能真正代表题目所给字符串的匹配方式,但是选项 A 和 E仍然能勉强匹配。选项 A 太普通了,它能够匹配任何字符串,因此答案是 E。
7. 以下哪些函数能用来验证字符串的完整性?(三选)
A.md5()
B.sha1()
C.str_rot13()
D.crypt()
E.crc32()
答案解析:正确答案是 A,B 和 E。用 crypt()和 str_rot13()来验证一个字符串是否被改变,效率很低。crc32()比前面两个函数好些,如果能容忍一些小错误的话,它是个不错的选择。
8. 哪个 PHP 函数与以下脚本在 UNIX 系统下执行的效果近似?
function my_funct ($filename) {
$f = file_get_contents ($filename);
return explode ("\n", $f); } ?>
A.fopen()
B.fread()
C.flock()
D.split_string()
E.file()
答案解析:正确答案是 A,B 和 E。用 crypt()和 str_rot13()来验证一个字符串是否被改变,效率很低。crc32()比前面两个函数好些,如果能容忍一些小错误的话,它是个不错的选择。
9. 基于指定的式样(pattern)把一个字符串分隔开并放入数组,以下哪些函数能做到?(双 选)
A.preg_split()
B.ereg()
C.str_split()
D.explode()
E.chop()
答案解析:尽管条件不同,但 preg_split 和 explode 函数都能满足题目要求。ereg()拿一个正则表达式匹配一个字符串;str_split()按固定长度分隔字符串;而 chop()则是 rtrim()别名,用来移除 字符串末尾处的空格。
10.以下脚本输出什么?<? echo 'Testing ' . 1 + 2 . '45'; ?>
A.Testing 1245
B.Testing 345
C.Testing 1+245
D.245
E.什么都没有
答案解析:本题考察你对字符串操作及操作符优先级的认识。连接运算符(.)的优先级比加号(+)高。因此 PHP 解释器实际执行的运算可以表示为(‘Testing’ . 1) + (2 . ‘45’)。由于字符串 test 1 不是数字,所以加号前面的运算等于 0。加号后面的运算等于 245,PHP 输出的结果是 0+245,等于 245,所以答案是 D。
11.以下脚本输出什么?<? $s = '12345'; $s[$s[1]] = '2'; echo $s; ?>
A.12345
B.12245
C.22345
D.11345
E.Array
答案解析:可以用访问数组元素的方式访问字符串中的字符,因此脚本只是把字符串中的第二个字符($s[1])替换成了字符 2,最终将输出 12245。答案是 B。
12.方框中的正则表达式能与以下哪些选项匹配?(双选) /.*\*123\d/
A.******123
B.*****_1234
C.******1234
D._*1234
E._*123
答案解析:本题的要点是理解这个正则表达式的含义——从左往右,首先是零个或多个任意字符(.*),跟着是一个星号(\*),然后是 123,最后是一个数字。因此答案是 C 和 D。
13.以下哪个比较将返回 true?(双选)
A.‘1top’ == ‘1’
B.‘top’ == 0
C.‘top’ === 0
D.‘a’ == a
E.123 == ‘123’
答案解析:B 和 E 正确。选项 B 中,在比较时,字符串 top 等同于数字 0。==操作符不比对数据类型,所以将返回 true。答案 E 中,字符串 123 等同于数字 123,比较将返回 true。
14.如果用+操作符把一个字符串和一个整型数字相加,结果将怎样?
A.解释器输出一个类型错误
B.字符串将被转换成数字,再与整型数字相加
C.字符串将被丢弃,只保留整型数字
D.字符串和整型数字将连接成一个新字符串
E.整形数字将被丢弃,而保留字符串
答案解析:字符串将被转换成数字(如果无法发生转换就是 0),然后与整型数字相加。答案是 B。
15.考虑如下脚本。假设 http://www.php.net 能被访问,脚本将输出什么?
<? $s = file_get_contents ("http://www.php.net"); strip_tags ($s, array ('p')); echo count ($s); ?>
A.www.php.net 的主页的字符数
B.剔除标签后的 www.php.net 主页的字符数
C.1
D.0
E.剔除以外的标签后的 www.php.net 主页的字符数
答案解析:代码的本意是剔除 www.php.net 主页上除了 p 以外的的所有 HTML 标签。可实际上,在代码的最后一行使用了 count 函数,它统计变量中的元素数量,而不是字符串中的字符数。由于字符 串是标量,对字符串使用 count 函数将永远返回 1。答案是 C。
16.哪个函数能不区分大小写得对两个字符串进行二进制比对?
A.strcmp()
B.stricmp()
C.strcasecmp()
D.stristr()
E.以上都不能
答案解析:题目其实就是在描述 strcasecmp 函数的作用,因此答案是 C。
17.以下哪些函数能把字符串里存储的二进制数据转化成十六进制?(双选)
A.encode_hex()
B.pack()
C.hex2bin()
D.bin2hex()
E.printf()
答案解析:正确答案是 B 和 D。pack 函数能对二进制数据进行复杂的格式化,包括将字符串中的字符转化成十六进制表示。bin2hex 函数也有同样的转化功能。注意,printf()能将整数转化成十六进 制数,但无法转化字符串。
18.哪个函数能用来确保一个字符串的字符数总是大于一个指定值?
答案解析:这是在说 str_pad 函数,它可以把字符串填充到指定长度。
19.以下脚本输出什么? <? $a = 'able osts indy'; echo wordwrap ($a, 1, "c", false); ?>
答案解析:脚本将输出 ablecostscindy。wordwrap 函数通常用来把字符串切割成指定长度。然而在本题中,长度被设置为 1,因此函数将从空格处切割(第四个参数被设置为 false,因此函数不会从 单词的中间进行切割)。填充字符串是 c,等于把每个空格都换成了 c。
20.以下脚本输出什么? <?$x = 'apple'; echo substr_replace ($x, 'x', 1, 2); ?>
A.x
B.axle
C.axxle
D.applex
E.xapple
答案解析:脚本将输出 ablecostscindy。wordwrap 函数通常用来把字符串切割成指定长度。然而在本题中,长度被设置为 1,因此函数将从空格处切割(第四个参数被设置为 false,因此函数不会从 单词的中间进行切割)。填充字符串是 c,等于把每个空格都换成了 c。
经典PHP笔试题的更多相关文章
- [OS] 操作系统-进程线程-经典面试笔试题
题目转自:http://blog.csdn.net/morewindows/article/details/7392749 ·线程的基本概念.线程的基本状态及状态之间的关系? 线程,有时称为轻量级进程 ...
- java经典30笔试题
1. 下面哪些是Thread类的方法() A start() B run() C exit() D getPriority() 答案:ABD 解析:看Java AP ...
- 这十道经典Python笔试题,全做对算我输
经常有小伙伴学了Python不知道是否能去找工作,可以来看下这十道题检验你的成果: 1.常用的字符串格式化方法有哪些?并说明他们的区别 a. 使用%,语法糖 print("我叫%s,今年%d ...
- Java经典面试笔试题及答案
1.什么是对象序列化,为什么要使用? 所谓对象序列化就是把一个对象以二进制流的方式保存到硬盘上.好处:方便远程调用. 2.值传递与引用传递的区别? 所谓值传递就是把一个对象的值传给一个新的变量,但是系 ...
- 经典笔试题:用C写一个函数测试当前机器大小端模式
“用C语言写一个函数测试当前机器的大小端模式”是一个经典的笔试题,如下使用两种方式进行解答: 1. 用union来测试机器的大小端 #include <stdio.h> union tes ...
- 数据库笔试题(经典select语句的用法)【转载】
原文地址:数据库笔试题(经典select语句的用法)作者:lily 问题描述: 为管理岗位业务培训信息,建立3个表: S (S#,SN,SD,SA) S#,SN,SD,SA 分别代表学号.学员姓名.所 ...
- 【转载】经典10道c/c++语言经典笔试题(含全部所有参考答案)
经典10道c/c++语言经典笔试题(含全部所有参考答案) 1. 下面这段代码的输出是多少(在32位机上). char *p; char *q[20]; char *m[20][20]; int (*n ...
- C#经典笔试题-获取字符串中相同的字符以及其个数
public Dictionary<char,int> GetStrSameAs(string str){ //将字符串转换成一个字符数组. char[] charArray=str.To ...
- jcmd jmap应用:一个String经典笔试题的验证
笔试题: String strA = new String("123123");这一行中创建了几个String对象?? public class StringHeapCountTe ...
随机推荐
- 修改initrd.img里ko文件的一个小tips
在经历以下步骤解开initrd.img文件之后: 若file initrd.img 指示initrd.img为gzip文件,则2: mv initrd.img initrd.gz gunzip -d ...
- vue 给嵌套的iframe子页面传数据 postMessage
Vue组件下嵌套了一个不同域下的子页面,iframe子页面不能直接获取到父页面的数据,即使数据存在localStorage中,子页面一样是获取不到的,所以只好使用postMessage传数据: < ...
- linux->windows主动推送文件同步目录数据 linux-windows数据目录同步
1 .windows下安装openssh for windows工具,下载地址 https://www.mls-software.com/opensshd.html 2.修改openssh安装目录下e ...
- tomcat jsp 数字串传值异常问题
1.在下面的jsp内嵌java代码去除num之前,有某Controller已经有了操作: request.getSession().setAttribute("num", ...
- Dialog 自定义使用3(回调点击事件)
1 , Dialog布局 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns ...
- 关于Synchronized关键字锁住对象的嵌套问题
如果在子关键字代码块中调用了sleep,是否会保留有所的锁?
- 关于SCANF 与 GETS(C语言)
SCANF遇到空格会自动停止录入字符串,而GETS不会,GETS可以用于输入带空格的字符串
- 并发设计模式和锁优化以及jdk8并发新特性
1 设计模式 (1) 单例模式 保证一个类只能一个对象实现.正常的单例模式分为懒汉式和饿汉式,饿汉式就是把单例声明称static a=new A(),系统第一次调用的时候生成(包括调用该类的其他静态资 ...
- 3. 从零开始学CSRF
为什么要拿CSRF来当“攻击手法系列”的开头篇呢?因为CSRF/XSRF我个人喜爱他的程度已经超过XSS了.如果说XSS是一个老虎,那么CSRF就是隐藏在暗处的蛇. 相信现在很多人不明 ...
- UVaLive 11525 Permutation (线段树)
题意:有一个由1到k组成的序列,最小是1 2 … k,最大是 k k-1 … 1,给出n的计算方式,n = s0 * (k - 1)! + s1 * (k - 2)! +… + sk-1 * 0!, ...