㈠ php练习题
1、PHP语言标记是(B )。
A、<……>
B、<?php……?>
C、?…………?
D、/*………*/
2、PHP代码要想以“<?”为开头,以“?>”为结束,需要启用配置文件中的(A )选项。
A、short_open_tag
B、asp_tags
C、allow_call_time_pass_reference
D、safe_mode_gid
4、PHP语句以什么符号结束( C )
A、 .
B、 :
C、 ;
D、无需任何符号,换行就行
5、PHP中那些字符被认为是间隔字符(空白符)( A )。
A、空格
B、下划线字符
C、制表符
D、回车符
㈡ 关于PHP的判断题
正确。
错误。
错误。
正确。
错误。
正确。
错误。
错误。
正确。
错误。
错误。
错误。
错误。
错误。
?
㈢ 经典PHP笔试题
经典PHP笔试题
PHP(外文名:PHP: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言。语法吸收了C语言、java和Perl的特点,利于学习,使用广泛,主要适用于Web开发领域。下面是整理的关于经典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 的 值 是 字 符 串 [email protected] , 以 下 哪 项 能 把 字 符 串 转 化 成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 (" ", $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.方框中的正则表达式能与以下哪些选项匹配?(双选)
/.**123d/
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.以下脚本输出什么?
echo wordwrap ($a, 1, "c", false);
?>
答案解析:脚本将输出 ablecostscindy。wordwrap 函数通常用来把字符串切割成指定长度。然而在本题中,长度被设置为 1,因此函数将从空格处切割(第四个参数被设置为 false,因此函数不会从
单词的中间进行切割)。填充字符串是 c,等于把每个空格都换成了 c。
20.以下脚本输出什么?
echo substr_replace ($x, 'x', 1, 2);
?>
A.x
B.axle
C.axxle
D.applex
E.xapple
答案解析:脚本将输出 ablecostscindy。wordwrap 函数通常用来把字符串切割成指定长度。然而在本题中,长度被设置为 1,因此函数将从空格处切割(第四个参数被设置为 false,因此函数不会从
单词的中间进行切割)。填充字符串是 c,等于把每个空格都换成了 c。
;㈣ PHP程序员上机面试题(并附答案,回答好的加分)
题集网上有一套php的面试题:http://www.tijee.com/tags/46-php-face-questions/posts
㈤ 一道简单PHP题!
当echo中遇到+号(其他数学运算符号也一样),它会试图把+号两边的表达式(可以是字符串也可以是数值)转换为数值后再进行加法运算,这样
echo "a" . 1 + 3 . "5";
就相当于
echo "a1" + "35";
而"a1"无法转换为数值,php就自动按0处理,这样就相当于
echo 0 + 35;
所以最终的输出结果为35
㈥ PHP一道选择题
答案: C
解释:
在php语言里,对于数字式字符与数字如何参与运算,在具体情况下会视情来确定,请比较以下代码:
echo "3+4+5";结果:3+4+5
为什么会1+2+"3+4+5"结果会是6呢?
echo这个函数(或说是指令),其后跟的参数可以是字符串,也可以是需要运算的表达式,当出现:
echo "3+4+5";echo会认为这是个字符串
而echo 1+2+"3+4+5";echo会认为这是个表达式,所以会对这个表达式进行运算。
在这个运算过程中,1+2等于3,那么为什么"3+4+5"为什么会等于3呢?因为,在php中,对于运算式中,不同数据类型的数据在参与数据时,php会进行数据转换,以尽量确保使表达式成功运行,在"3+4+5"前面的运算符是 + ,那么,php会将"3+4+5"当作数值类型,此时会隐式地进行数据类型的转换,将这个字符串转换成数值,而"3+4+5"转换成数值的结果就是3,所以,整个表达式的结果是:1+2+3 = 6。
为更好的理解,作为对比,你可以参考以下代码:
echo 1+2 . "3+4+5";
结果:
33+4+5
㈦ PHP中高级面试题 – 第一天
一、写一个函数,获取一篇文章内容中的全部图片,并下载
二、什么是 CSRF 攻击?XSS 攻击?如何防范?
CSRF:跨站请求伪造,可以通过通过判断来源和加 Token 的方式来防范。
XSS:跨站脚本攻击,可以通过对内容转义和过滤来防范,还有 CSP
三、应用中我们经常会遇到在 user 表随机调取 10 条数据来展示的情况,简述你如何实现该功能。
四、MYSQL 中主键与唯一索引的区别
主键:绝对不能有空值。唯一索引:可以有空值
五、http 与 https 的主要区别
关键是 S 上。简而言之,https 建立连接后要先把 SSL 的证书发下去,有了公钥和私钥,就可以解密了。
六、两台 mysql 服务器,其中一台挂了,怎么让业务端无感切换,并保证正常情况下讲台服务器的数据是一致的
不是核心业务的话,先停写,把备机拉起来,查看两台机器的日志,进行数据补偿,开写。
如果是核心业务的话,现在所有的操作都在正常的状态机器上。把好的这台机器的备机拉起来,当主机。
以上全是应急操作。实际上数据库的容灾设计要复杂得多。
面试官要是问你,备机的数据不一致怎么办,你要勇敢怼回去,你们每秒多少写入操作。按照百万级表,每秒 1000 的写入效率,正常的设计是,分布在 2 台机器上每台 500。这个级别的数据同步,出现差异的概率 可以忽略不计的。有一台出现问题,另一台也可以抗住。
(正常的操作,还是先停写,等数据一致,切换,开写。我们公司搞这些切换都是在凌晨 4.00 左右,核心业务的每秒写操作,只有十几个。前后耽搁不到 20 秒)。
七、10 瓶水,其中一瓶有毒,小白鼠喝完有毒的水之后,会在 24 小时后死亡,问:最少用几只小白鼠可以在 24 小时后找到具体是哪一瓶水有毒。
答案:四只
二进制问题。薛定谔的老鼠。
一只老鼠有两个状态,死活,对应 01。假设老鼠的个数为 A,则有 2^A>=10; A=4;
思路很简单,十瓶药编号:0,1,10,11….1001;
0 不喝。第一只老鼠喝所有个位是 1 的:13579,第二只喝十位是 1 的,第三只和百位是 1 的,第四只喝千位是 1 的。
24 小时后,看下死了的是 1,活着的是 0。按老鼠的顺序乖乖站好…… 假如第一只和第三只死了,那就是 0101,就是 5 有问题。
㈧ 腾讯php面试题
腾讯php面试题
php程序员一般会遇到的面试题:
1. 基本知识点
HTTP协议中几个状态码的含义:503 500 401 200 301 302
Include require include_once require_once 的区别.
PHP/Mysql中几个版本的进化史,比如mysql4.0到4.1,PHP 4.x到5.1的重大改进等。
HEREDOC介绍
写出一些php魔幻方法;
一些编译php时的configure 参数
向php传入参数的两种方法。
(mysql)请写出数据类型(int char varchar datetime text)的意思; 请问varchar和char有什么区别;
error_reporting 等调试函数使用
您是否用过版本控制软件? 如果有您用的版本控制软件的名字是?
posix和perl标准的正则表达式区别;
Safe_mode 打开后哪些地方受限.
写代码来解决多进程/线程同时读写一个文件的问题。
写一段上传文件的代码。
Mysql 的存储引擎,myisam和innodb的区别。
2. web 架构,安全,项目经验
介绍xdebug,apc,eAccelerator,Xcache,Zend opt的使用经验。
使用mod_rewrite,在服务器上没有/archivers/567.html这个物理文件时,重定向到index.php?id=567 ,请先打开mod_rewrite.
MySQL数据库作发布系统的存储,一天五万条以上的增量,预计运维三年,怎么优化?
写出一种排序算法(原理),并说出优化它的方法。
请简单阐述您最得意的开发之作
对于大流量的网站,您采用什么样的方法来解决各页面访问量统计问题
您是否用过模板引擎? 如果有您用的模板引擎的名字是?
请介绍Session的原理,大型网站中Session方面应注意什么?
测试php性能和mysql数据库性能的工具,和找出瓶颈的方法。
正则提出一个网页中的'所有链接.
介绍一下常见的SSO(单点登陆)方案(比如dedecms整合discuz的passport)的原理。
您写过的PHP框架的特点,主要解决什么问题,与其他框架的不同点。
大型的论坛/新闻文章系统/SNS网站在性能优化上有什么区别?
相册类应用:要求在浏览器中能同时选中并上传多个文件,图片要求能剪裁,压缩包在服务器端解压。能上传单个达50M的文件。上传过程中有进度条显示。每个图片能生成四种大小缩略图,视频文件要转成flv供flash播放。叙述要涉及的各类开源软件和简单用途。
一群猴子排成一圈,按1,2,…,n依次编号。然后从第1只开始数,数到第m只,把它踢出圈,从它后面再开始数,再数到第m只,在把它踢出去…,如此不停的进行下去,直到最后只剩下一只猴子为止,那只猴子就叫做大王。要求编程模拟此过程,输入m、n, 输出最后那个大王的编号。用程序模拟该过程。
3. unix/linux 基本使用
linux下查看当前系统负载信息的一些方法。
vim的基本快捷键。
ssh 安全增强方法;密码方式和rsa key 方式的配置。
rpm/apt/yum/ports 装包,查询,删除的基本命令。
Makefile的基本格式,gcc 编译,连接的命令,-O0 和-O3区别。
gdb,strace,valgrind的基本使用.
4. 前端,HTML,JS
css盒模型。
javascript中的prototype。
javascript中this对象的作用域。
IE和firefox事件冒泡的不同。
什么是怪异模式,标准模式,近标准模式。
DTD的定义
IE/firefox常用hack.
firefox,IE下的前端js/css调试工具。
;㈨ php 在线测试题目点击下一题如何实现,每一题数据如何保存,
方法1:使用session
每次点下一题的时候,将当前题目的分数存入session的一个数组,
假设当前题目的分数为$score, 则$_SESSION['scores'][] = $score,
最后将$_SESSION['scores']中的所有分数加起来就行
方法2:使用页面get传参
每次点下一题的时候,将当前总分传到下一个页面,与下一个页面的得分相加
如 第一题是3分,页面为 test.php?q=1, 则第二题页面为 test.php?q=2&score=3,
第二题得分为4分,总分就是 4+$_GET['score']=7,则第二题页面为 test.php?q=3&score=7,
以此类推