有没有去过北京php面试问题快帮云面试php的?有没有笔试题?求快帮云笔试题。

php面试题及答案,经典php笔试题与答案(三)
1. 如何访问会话变量(session)?
A.通过$_GET
B.通过$_POST
C.通过$_REQUEST
D.通过全局变量
E.以上都不对
2. 哪个函数能让服务器输出如下 header?
set-Cookie: foo=
答案:_______________
3. 在忽略浏览器 bug
的正常情况下,如何用一个与先前设置的域名(domain)不同的新
域名来访问某个 cookie?
A.通过 HTTP_REMOTE_COOKIE 访问
C.在调用 setcookie()时设置一个不同的域名
D.向浏览器发送额外的请求
E.使用 Javascript,把 cookie 包含在 URL
4. index.php 脚本如何访问表单元素 email
的值?(双选)
A.$_GET[‘email’]
B.$_POST[‘email’]
C.$_SESSION[‘text’]
D.$_REQUEST[‘email’]
E.$_POST[‘text’]
5. 以下脚本将如何影响$s 字符串?(双选)
$ss = htmlentities ($s);
A.尖括号&&会被转换成 HTML
标记,因此字符串将变长
B.没有变化
C.在浏览器上打印该字符串时,尖括号是可见的
D.在浏览器上打印该字符串时,尖括号及其内容将被识别为 HTML
标签,因此不可
E.由于调用了
htmlentities(),字符串会被销毁
6. 如果不给 cookie 设置过期时间会怎么样?
A.立刻过期
B.永不过期
C.cookie 无法设置
D.在浏览器会话结束时过期
E.只在脚本没有产生服务器端 session
的情况下过期
思考如下代码:如果用户在两个文本域中分别输入“php”和“great”,脚本输出什么?
echo $_GET['element'];
A.什么都没有
C.一个提示
D.phpgreat
E.greatphp
8. 在 HTTPS 下,URL 和查询字串(query
string)是如何从浏览器传到 Web 服务器上的?
A.这两个是明文传输,之后的信息加密传输
B.加密传输
C.URL 明文传输,查询字串加密传输
D.URL 加密传输,查询字串明文传输
E.为确保加密,查询字串将转换为 header,夹在 POST
信息中传输
9. 当把一个有两个同名元素的表单提交给 PHP
脚本时会发生什么?
A.它们组成一个数组,存储在超级全局变量数组中
B.第二个元素的值加上第一个元素的值后,存储在超级全局变量数组中
C.第二个元素将覆盖第一个元素
D.第二个元素将自动被重命名
E.PHP 输出一个警告
10.如何把数组存储在 cookie 里?
A.给 cookie 名添加一对方括号[]
B.使用 implode 函数
C.不可能,因为有容量限制
D.使用 serialize 函数
E.给 cookie 名添加 ARRAY 关键词
11.以下脚本输出什么?
ob_start();
for ($i = 0; $i & 10; $i++)
ob_get_contents();
ob_end_clean();
D.什么都没有
E.一个提示
12.默认情况下,PHP
把会话(session)数据存储在______里。
A.文件系统
C.虚拟内容
D.共享内存
E.以上都不是
13.你在向某台特定的电脑中写入带有效期的 cookie
时总是会失败,而这在其他电脑上都
正常。在检查了客户端操作系统传回的时间后,你发现这台电脑上的时间和 web
器上的时间基本相同。而且这台电脑在访问大部分其他网站时都没有问题。请问这会
是什么原因导致的?(双选)
A.浏览器的程序出问题了
B.客户端的时区设置不正确
C.用户的杀毒软件阻止了所有安全的 cookie
D.浏览器被设置为阻止任何 cookie
E.cookie 里使用了非法的字符
14.假设浏览器没有重启,那么在最后一次访问后的多久,会话(session)才会过期并被
A.1440 秒后
B.在 session.gc_maxlifetime
设置的时间过了后
C.除非手动删除,否则永不过期
D.除非浏览器重启,否则永不过期
E.以上都不对
15.哪个函数能把换行转换成 HTML 标签
答案:____________
1. 尽管在 register_globals 被设置为 on
时,可以通过全局变量来访问 session,但在较新版
本的 PHP 中,为了避免造成安全隐患,php.ini 文件已经把
register_globals 设置为 off
了。因此答案是 E。
2. 虽然 header 函数在这里也能用,但这题显然是在说
setcookie 或 setrawcookie 函数。
3. 答案是 B。浏览器不允许来自某个域名的 HTTP
事务更改另一个域名下的 cookie,否
则这将造成严重的的安全问题。
4. 既然表单采用 post 方式传输,那么脚本将只可能从$_POST
和$_REQUEST 两个超级全
局变量数组中取到值。元素名称(email)是键名,因此答案是 B 和
D。注意,由于可
能导致潜在的安全问题,这里不鼓励使用$_REQUEST。
5. 本题考验你对 HTML 编码的认识以及代码查错能力。变量$s 在被函数
htmlentities()处
理过后,结果返回给了变量$ss,而$s 自己并没有被改变。因此答案是 B 和
觉得自己被戏弄了,但是记住,发现这样的小错误是捉虫能力中很重要的一部分。
6. 如果没有设置过期时间,cookie
将在用户会话结束时自动过期。cookie 不需要服务器
端会话的支持,因此答案是 D。
7. 表单使用 post
方式传输,所以无论在文本框中输入什么,其值都会传给$_POST 超级
全局变量,这里的$_GET 数组没有值。答案是 A。
传输发生时,浏览器与服务端立刻完成加密机制的握手,之后的数据都是加密
传输而不是明文传输——包括 URL,查询字串。而在 HTTP
传输中,它们都是明文传
输的,因此答案是 B。
9. 对于收到的查询字串和 POST 信息,PHP
只是简单的把元素添加进对应的超级变量数
组中。结果就是如果有两个元素同名,前一个会被后一个覆盖。答案是
10.只有 B 永远正确。虽然你可以用 implode
函数把数组转化成字符串,然后存在数组里,
但却无法保证日后一定能用
serialize()把这个字符串还原成数组。浏览器对单个 cookie
有容量限制,因此在 cookie
里存储数组不是个好主意。但事情也并非永远是这样,你
仍然可以存储一些比较小的数组。
11.这又是一个考验 debug
能力的题。注意到了吗,在脚本的末尾,echo 语句中的$output
变量拼错了!脚本不会输出任何东西,答案是 E。
12.答案是文件系统(A)。默认情况下,PHP 把所有会话信息存储在/tmp
文件夹中;在没
有这个文件夹的操作系统中(比如 Windows),必须在 php.ini
中给 session.save_path 设
置一个合适的位置(如 c:\Temp)。
13.B 和 D
是最有可能出问题并应该深入调查的地方。由于浏览器访问其他网站都正常,
所以不可能是浏览器程序出了问题。杀毒软件通常不会选择性的只阻止安全的
(不过有可能会阻止所有的
cookie)。你首先应当检查浏览器是否被设置为阻止所有
cookie,这是最有可能导致该问题的原因。同时,错误的时区设置也可能是根源——给
cookie 设置有效期时用得是 GMT 时间。可能会出现 cookie
在写入时就立刻过期,从
而无法被脚本接收的情况。
14.session.gc_maxlifetime
设置的是用户最后一次请求到 session 被回收之间的时间间隔。
尽管数据文件并没有被真正删除,不过一旦 session 被回收,你将无法对此
session 进行
访问。巧合的是,session.gc_maxlifetime
的默认设置正好是 1440 秒,但这个数字是可
以被系统管理员调整的。所以答案应该是 B。
15.函数 nl2br 能实现这个功能。
PHP 最强大的功能大概就是处理数组了。PHP
允许开发者创建由各种不同数据类型的
键和值组成的数组,并允许你对它进行排序、分割和组合等多种操作。
力量越大,责任越大。找到最佳的办法来处理如此复杂的数组并不是一件轻松的事。
本章一方面考察你对数组工作机制的认识——不光是理论上的,还要求实践。另一方面考
察你“人工处理”简单脚本——指出哪里出错或者脚本将输出什么的能力。
索引数组的键是______,关联数组的键是______。
A.浮点,字符串
B.正数,负数
C.偶数,字符串
D.字符串,布尔值
E.整型,字符串
2. 考虑如下数组,怎样才能从数组$multi_array 中找出值
$multi_array = array("red",
42 =& “blue”,
“yellow” =& array(“apple”,9 =&
“pear”,”banana”,
“orange” =&
array(“dog”,”cat”,”iguana”)));
A.$multi_array['yellow']['apple'][0]
B.$multi_array['blue'][0]['orange'][1]
C.$multi_array[3][3][2]
D.$multi_array['yellow']['orange']['cat']
E.$multi_array['yellow']['orange'][1]
3. 运行以下脚本后,数组$array 的内容是什么?
$array = array ('1', '1');
foreach ($array as $k =& $v)
A.array (’2&, ’2&)
B.array (’1&, ’1&)
C.array (2, 2)
D.array (Null, Null)
E.array (1, 1)
4.对数组进行升序排序并保留索引关系,应该用哪个函数?
A.ksort()
B.asort()
C.krsort()
E.usort()
5.哪个函数能把数组转化能字符串?
答案:____________
6. 以下脚本将按什么顺序输出数组$array
内的元素?
$array = array ('a1', 'a3', 'a5',
'a10', 'a20');
natsort ($array);
var_dump ($array);
A.a1, a3, a5, a10, a20
B.a1, a20, a3, a5, a10
C.a10, a1, a20, a3, a5
D.a1, a10, a5, a20, a3
E.a1, a10, a20, a3, a5
7. 哪个函数能把下方数组的内容倒序排列(即排列为:array(‘d’,
‘c’, ‘b’, ‘a’))?(双选)
$array = array ('a', 'b', 'c',
A.array_flip()
B.array_reverse()
D.rsort()
E.以上都不对
8. 以下脚本输出什么?
$array = array ('3' =& ‘a’, ’1b’
=& ‘b’, ‘c’, ‘d’);
echo ($array[1]);
D.一个警告
9.哪种方法用来计算数组所有元素的总和最简便?
A.用 for 循环遍历数组
B.用 foreach 循环遍历数组
C.用 array_intersect 函数
D.用 array_sum 函数
E.用 array_count_values()
10.以下脚本输出什么?
$array = array (0.1 =& ‘a’, 0.2
=& ‘b’);
echo count ($array);
D.什么都没有
11. 以下脚本输出什么?
$array = array (true =& ‘a’, 1
=& ‘b’);
var_dump ($aray);
A.1 =& ‘b’
B.True =& ‘a’, 1 =&
C.0 =& ‘a’, 1 =& ‘b’
D.什么都没有
E.输出 NULL
12.在不考虑实际用途的前提下,把数组直接传给一个只读函数比通过引用传递的复杂度
A.是的,因为在把它传递给函数时,解释器需要复制这个数组
B.是的,如果函数修改数组的内容的话
C.是的,如果这个数组很大的话
D.是的,因为 PHP
需要监视函数的输出,已确定数组是否被改变
12. 以下脚本输出什么?
function sort_my_array
return sort ($array);
$a1 = array (3, 2, 1);
var_dump (sort_my_array
B.0 =& 1, 1 =& 2, 2 =&
C.一个引用错误
D.2 =& 1, 1 =& 2, 0 =&
E.bool(true)
13. 以下脚本输出什么?
$result = '';
function glue ($val)
$result .= $
$array = array ('a', 'b', 'c',
array_walk ($array,
答案:____________
15.以下脚本输出什么?
$array = array (1, 2, 3, 5, 8, 13, 21,
for ($i = 0; $i & 5; $i++)
$sum += $array[$array[$i]];
键名是整型数字(integer)的数组叫索引数组,键名是字符串的数组叫关联数组。正
确答案是 E。
2. cat 被包含在另外两个数组中。顺藤摸瓜,首先,键 yellow
必须要用到,它跟在 orange
后面。最内部的数组是个索引数组,字符串 cat 是第二个值,它的索引是
3. 答案是 B。foreach 操作的是$array
的副本,因此对原来的值没有影响。
4. 只有 asort 函数能在保留原有索引关系的前提下进行排序。答案是
5. serialize 函数能把复杂的数据结构转换成字符串,并可以用
unserialize 函数再转换回原
先的结构。还有 implode
函数,它可以把数组中的所有元素组成一个字符串。
natsort()使用“自然排序”法对数组进行排序。在本题中,数组元素已经“自然”
排列了,因此函数根本没有改变数组。答案是 A。
array_flip()只能把数组中每个元素的键和值进行交换。rsort()和
array_reverse()则能把题
目中的数组逆向排序为需要的形式(’d’,’c’,’b’,’a’)。答案是 B
8. 给数组中的元素设置数字键时,PHP
从可用的最小的数字开始,递增设置。如果没有
指定从哪个数字开始,PHP 将从 0 开始。本题中,3
是第一个元素的键,因此,第三
个元素的键将被设置为 4,最后一个元素是 5。注意,1b
不是数字。因此,键是 1 的
值不存在,答案是 D。
9. array_sum 函数计算数组中所有元素的总和。答案是
10. 脚本输出 1(答案是
A)。因为只有整型数字和字符串可以被用来做数组的键——浮点
数字会被转换成整型数字。所以 0.1 和 0.2 会被转换成
0,$array 中只有 0=&’b’这个元
11. 这题试图把你的注意力从真正的问题上转移开。true 等同于数字
1,因此$array 数组
将只包含一个元素。然而在
var_dump()函数里出现了一个错误——$array 被错拼成了
$aray,少了一个“r”。因此 var_dump 将输出
NULL(也可能是一个提示 ,这取决于
你的设置)。答案是 E。
这题有些绕人。首先,注意两点:第一,你并非一定要使用这两种方式来传递数组。
如果需要用一个函数来修改数组的内容,通过引用传递将是唯一的方法——但题中不
是这种情况;第二,题目强调把数组传递个一个只读函数。如果不是这样,由于对数
组进行改变将产生一个该数组的副本,答案会是 B。然而常规情况下,PHP
一套结构来维持一个引用,另一方面,由于 PHP
采用懒拷贝(lazy-copy)——又叫写
时拷贝(copy-on-write)——机制,变量在被改变之前不会产生副本,所以通过引用
将数组传递给一个不修改数组内容的函数比通过值传递要慢,而通过值传递是一种快
速、安全的在函数间共用数组的方式。答案是 E。
13. 答案是 E。sort
函数不产生或返回数组副本,而是直接对传递给它的数组本体进行操
作。该函数只返回布尔值 true,代表排序成功(或者
false,代表出错)。注意,这里
将数组$a1 引用传递给了
sort_my_array(),我们不赞成这样做,应该在函数中重新声
14. array_walk
函数将一个指定函数应用在数组中的每个元素上。因此脚本 glue 函数将把
数组中的所有元素连在一起,输出 abcd。
本题主要考验你分析脚本的能力。你也许觉得这题很费解——但我们在调试别人写的
代码时却不得不经常面对此类令人不悦的问题。相对于我们所见过的一些代码,这已
经算相当简单了。脚本中的 for 循环了 5
次,每次都把键是数组$array 中键为$i 的值
的值加进$sum。这听起来有点像绕口令,但如果你一步一步想,你将发现,
于零时,$array[$array[$i]]等同于$array[$array[0]],也就是$array[1],也就是
这个思路,最终的答案是 78。
正则表达式
字符串是 PHP 的“瑞士军刀”——作为一种 Web 开发语言,PHP
最常打交道的就是
字符串。因此对于开发者来说,处理字符串是一项非常基础的技能。
幸运的是,由于 PHP 开发团队的努力,PHP
对字符串的处理相当易学。你只需迈过第
一个难关,接下来就一马平川了。
的这一部分功能并非完美。本章考验你对字符串的了理解及对处理字符串
的函数的认识。此外,你还必须面对正则表达式——一个非常有用,却总是被开发者忽试
的工具——的编写艺术。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。最全最详细的PHP面试题(带有答案)_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
最全最详细的PHP面试题(带有答案)
上传于|0|0|暂无简介
阅读已结束,如果下载本文需要使用2下载券
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩26页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢蝼蚁虽小,也有梦想
Clicks: 3863 Date:
15:00:15 Power By 李轩Lane
echo -10%3;
答案:-1。
考查:优先级。
因为-的优先级比%求余的优先级低,也就是-(10%3)。
print (int)pow(2,32);
//file1.php
$a = '123';
//file2.php
echo include('file1.php');
考查:返回值。
因include()也是一个函数,有返回值。在成功时返回1,失败时返回错误信息。如果被包含的文件有return,则inculde()成功时返回该文件的返回值。
$count = 5;
function get_count() {
static $count = 0;
return $count++;
get_count();
echo get_count();
考查:static和++。
因static $count,所以只在第一次调用get_count的时候对$count赋值为0,第二次再进来这个函数,则不会第二次赋值。其次就是return $count++和return ++$count了,前者先返回,后者先++再返回。
$arr = array(0 =&1,'aa' =& 2,3,4);
foreach($arr as $key =& $val){
print($key == 'aa' ? 5 : $val);
答案:5534.
考查:类型转换。
因遍历数组第一次的时候,$key和aa的比较实际就是0和aa的比较,一个是int一个是string,这个时候会转换类型,将字符串转换为数字再与数字比较。所以0=='aa'就是0==0,所以为true,也就是输出5。虽然PHP是若类型语言,但是人家也有类型的好吗。
echo count (false);
$a = count (&567&)
+ count(null) + count(false);
考查:count的用法。
因count()的官方解释“If the parameter is not an array or not an object with implemented Countable interface, 1 will be returned.”.意思是说,如果不是数组或者对象的其他类型,返回1.那么这个值应该就是1+0+1了(boolen人家也是一个类型,虽然是讨厌的false)。NULL的意思是没有值,难道在计数函数中还能有1?
$arr = array(1,2,3);
foreach($arr as &$val) {
$val += $val % 2 ? $val++ : $val--;
print(join('',$arr));
答案:330。
考查:++和&。
因foreach结束后的数组应该是array(3,3,7);最后给第三个元素赋值为0,所以就是330了。其中注意的是&,如果有&则是对原变量操作,如果没有,则是先生成一个新变量,然后给这个变量复制,最后操作的是这个新变量。
echo intval((0.1+0.7)*10);
考查:浮点数的概念。
因0.1+0.7=0.8
所以转换成整数后还是8?错!因为0.1+0.7=0.8是浮点数,0.8*10在数学计算中是正整数8,可是在计算机中它仍然是浮点数8,什么叫浮点数8?每一个看起来像整数的浮点数,其实都不是整数,比如这个8,它其实只是7.9999循环,无限接近于8,转换成整数会舍弃小数部分,就是7喽。
ini_set('display_errors',0);
$arr = array(1=&1,3=&3);
$a = 'test' . isset($arr[$i]) ? $arr[$i] : $i;
请问$a的值是什么?
A、test B、NULL C、2 D、test2
考查:优先级。
因“.&的优先级高于三元运算符&?:&。所以程序其实报错了。会说$arr的索引2不存在。
if($a = 5 || $b = 7) {
echo $a . & & . $b;
考查:优先级,基础概念,++。
因“=&的优先级低于“||”,所以先逻辑判断再赋值。也就是($a = (5 || $b = 7))。所以,最后其实给a赋值了,$a等于1.
题目十一:
echo $x == 2 ? '我' : $x == 1 ? '你' : '它';
输出的结果是()
D、syntax error
考查:优先级。
因“==&的优先级高于“?:”。我已经不想说为什么了,整理一下这种东西,我感觉要疯了,除了笔试题外估计也不会遇到了吧。
分类热门的文章
, All rights reserved. Power By .&&

我要回帖

更多关于 北京php面试问题 的文章

 

随机推荐