20个PHP面试题及答案
php学了那么久了,先来小试牛刀,看下这些PHP程序员面试题都会不会?
初级题目
1.问题:请用最简单的语言描述PHP是什么?
答:PHP全称:Hypertext Preprocessor,是一种用来开发动态网站的服务器脚本语言。
2.问题:echo,print()和print_r()有什么区别?
答:echo是一个语言结构,没有返回值。
print是一个函数,返回int类型的值[只能打印int string]。
print_r()是一个函数,返回bool类型值,按结构输出变量的值,打印关于变量的易于理解的信息[数组、对象等]
3.问题:什么是MVC?
答:MVC由Model(模型), View(视图)和Controller(控制器)组成,PHP MVC可以更高效地管理好3个不同层的PHP代码。
Model:数据信息存取层。
View:view层负责将应用的数据以特定的方式展现在界面上。
Controller:通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。
4.问题:在页面中引用CSS有几种方式?
答:在页面中使用CSS有3中方式:
引用外部CSS文件
内部定义Style样式
内联样式
5.问题:PHP支持多继承吗?
答:不支持。PHP类只能继承一个父类,并用关键字“extends”标识。
6.问题:请问PHP中echo和print有什么区别?
这两个看起来很相似,因为它们都是将一些值打印在屏幕上。但是echo和print的本质区别在于:echo用来输出字符串,显示多个值的时候可以用逗号隔开。只支持基本类型,print不仅可以打印字符串值,而且可以打印函数的返回值。
7.问题:PHP中的PEAR是什么?
答:PEAR也就是为PHP扩展与应用库(PHP Extension and Application Repository),它是一个PHP扩展及应用的一个代码仓库。
8.问题:PHP中的错误类型有哪些?
答:PHP中遇到的错误类型大致有3类。
提示:这都是一些非常正常的信息,而非重大的错误,有些甚至不会展示给用户。比如访问不存在的变量。
警告:这是有点严重的错误,将会把警告信息展示给用户,但不会影响代码的输出,比如包含一些不存在的文件。
错误:这是真正的严重错误,比如访问不存在的PHP类。
9.问题:如何在PHP中定义常量?
答:PHP中使用Define () 来定义常量。
define (“Newconstant”, 30);
10.问题:如何不使用submit按钮来提交表单?
答:如果我们不想用submit按钮来提交表单,我们也可以用超链接来提交,我们可以这样写代码:<a href=”javascript: document.myform.submit();”>Submit Me</a>
11.问题:error_reporting(2047)什么作用?
答:PHP 显示所有错误 E_ALL
中级题目
1.问题:请使用正则写一个函数验证电子邮件的格式是否正确?
答:preg_match(‘/^[\w\-\.]+@[\w\-]+(\.\w+)+$/’,$email);
2.问题:如何用PHP和MySQL上传视频?
答:我们可以在数据库中存放视频的地址,而不需要将真正的视频数据存在数据库中。可以将视频数据存放在服务器的指定文件夹下,上传的默认大小是2MB,但是我们也可以在php.ini文件中修改max_file size选项来改变。
3.问题:请问GET和POST方法有什么区别?
答:我们再网页上填写的表单信息都可以通过这两个方法将数据传递到服务器上,当我们使用GET方法是,所有的信息都会出现在URL地址中,并且使用GET方法最多只能传递1024个字符,所以如果在传输量小或者安全性不那么重要的情况下可以使用GET方法。说到POST方法,最多可以传输2MB字节的数据,而且可以根据需要调节。
4.问题:打开php.ini中的Safe_mode,会影响哪些函数?列举6个!
答:1用户输入输出函数(fopen() file() require(),只能用于调用这些函数有相同脚本的拥有者)
2:创建新文件(限制用户只在该用户拥有目录下创建文件)
3:用户调用popen() systen() exec()等脚本,只有脚本处在safe_mode_exec_dir配置指令指定的目录中才可能
4:加强HTTP认证,认证脚本拥有者的UID的划入认证领域范围内,此外启用安全模式下,不会设置PHP_AUTH
5:mysql服务器所用的用户名必须与调用mysql_connect()的文件的拥有者用户名相同
6:受影响的函数变量以及配置命令达到40个
5.问题: 请使用PHP写出冒泡排序算法的代码。
答://冒泡排序
function maopao($arr) {
$count = count($arr);
for($i=0; $i<$count-1; ++$i) {
for($j=0; $j<$count-$i-1; ++$j) {
if($arr[$j] > $arr[$j+1]) {
$temp = $arr[$j];
$arr[$j] = $arr[$j+1];
$arr[$j+1] = $temp;
}
}
}
return $arr;
}
6.问题: 请使用PHP写出顺序排序算法的代码。
答://顺序排序
function shunxu($arr) {
$count = count($arr);
for($i=0; $i<$count-1; ++$i) {
$p = $i;
for($j=$i+1; $j<$count; ++$j) {
$p = $arr[$p] > $arr[$j] ? $j : $p;
}
if($p != $i) {
$tvalue = $arr[$i];
$arr[$i] = $arr[$p];
$arr[$p] = $tvalue;
}
}
return $arr;
}
7.问题:写个函数用来对二维数组排序。
答:
function array_sort_by_any_row($array_name, $row_id, $order_type){
$array_temp=array();
foreach($array_name as $key=>$value){
$array_temp[$key]=$value[$row_id];
}
if($order_type===”ASC”){ //顺序
asort($array_temp);
} else {
arsort($array_temp);
}
$result_array=array();
foreach($array_temp as $key=>$value){
$result_array[$key]=$array_name[$key];
}
return $result_array;
}
$arr = array(
array(‘num’=>5, ‘value’=>6),
array(‘num’=>2, ‘value’=>39),
array(‘num’=>36, ‘value’=>29)
);
$sortarr = array_sort_by_any_row($arr, ‘num’, ‘DESC’);
print_r($sortarr);
8.问题: 写5个不同的函数,来截取一个全路径的文件的扩展名,允许封装php库中已有的函数。
答:$path = str_replace(‘\\’, ‘/’,__FILE__);
echo $path.’<br />’;
function extname1($path) {
return strrchr($path, ‘.’);
}
function extname2($path) {
$position = strrpos($path, ‘.’);
return substr($path, $position);
}
function extname3($path) {
$arr = explode(‘.’, $path);
return $arr[count($arr) – 1];
}
function extname4($path) {
preg_match_all(‘/[\w\/\:\-]+\.([\w]+)$/’, $path, $out);
return $out[1][0];
}
function extname5($path) {
return preg_replace(‘/^[^\.]+\.([\w]+)$/’, ‘${1}’, basename($path));
}
print_r(extname5($path));
9.问题:一群猴子排成一圈,按1,2,…,n依次编号。然后从第1只开始数,数到第m只,把它踢出圈,从它后面再开始数,再数到第m只,在把它踢出去…,如此不停的进行下去,直到最后只剩下一只猴子为止,那只猴子就叫做大王。要求编程模拟此过程,输入m、n, 输出最后那个大王的编号。
答:yuesefu环问题,PPC有很多针对这个问题的处理,我的就不上啦
function yuesefu($n,$m) {
$r=0;
for($i=2; $i<=$n; $i++) {
$r=($r+$m)%$i;
}
return $r+1;
}
print_r(yuesefu(3,3));值。
print是一个函数,返回int类型的值[只能打印int string]。
print_r()是一个函数,返回bool类型值,按结构输出变量的值,打印关于变量的易于理解的信息[数组、对象等]
3.问题:什么是MVC?
答:MVC由Model(模型), View(视图)和Controller(控制器)组成,PHP MVC可以更高效地管理好3个不同层的PHP代码。
Model:数据信息存取层。
View:view层负责将应用的数据以特定的方式展现在界面上。
Controller:通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。
4.问题:在页面中引用CSS有几种方式?
答:在页面中使用CSS有3中方式:
引用外部CSS文件
内部定义Style样式
内联样式
5.问题:PHP支持多继承吗?
答:不支持。PHP类只能继承一个父类,并用关键字“extends”标识。
6.问题:请问PHP中echo和print有什么区别?
这两个看起来很相似,因为它们都是将一些值打印在屏幕上。但是echo和print的本质区别在于:echo用来输出字符串,显示多个值的时候可以用逗号隔开。只支持基本类型,print不仅可以打印字符串值,而且可以打印函数的返回值。
7.问题:PHP中的PEAR是什么?
答:PEAR也就是为PHP扩展与应用库(PHP Extension and Application Repository),它是一个PHP扩展及应用的一个代码仓库。
8.问题:PHP中的错误类型有哪些?
答:PHP中遇到的错误类型大致有3类。
提示:这都是一些非常正常的信息,而非重大的错误,有些甚至不会展示给用户。比如访问不存在的变量。
警告:这是有点严重的错误,将会把警告信息展示给用户,但不会影响代码的输出,比如包含一些不存在的文件。
错误:这是真正的严重错误,比如访问不存在的PHP类。
9.问题:如何在PHP中定义常量?
答:PHP中使用Define () 来定义常量。
define (“Newconstant”, 30);
10.问题:如何不使用submit按钮来提交表单?
答:如果我们不想用submit按钮来提交表单,我们也可以用超链接来提交,我们可以这样写代码:<a href=”javascript: document.myform.submit();”>Submit Me</a>
11.问题:error_reporting(2047)什么作用?
答:PHP 显示所有错误 E_ALL
高级题目
1.问题:请使用正则写一个函数验证电子邮件的格式是否正确?
答:preg_match(‘/^[\w\-\.]+@[\w\-]+(\.\w+)+$/’,$email);
2.问题:如何用PHP和MySQL上传视频?
答:我们可以在数据库中存放视频的地址,而不需要将真正的视频数据存在数据库中。可以将视频数据存放在服务器的指定文件夹下,上传的默认大小是2MB,但是我们也可以在php.ini文件中修改max_file size选项来改变。
3.问题:请问GET和POST方法有什么区别?
答:我们再网页上填写的表单信息都可以通过这两个方法将数据传递到服务器上,当我们使用GET方法是,所有的信息都会出现在URL地址中,并且使用GET方法最多只能传递1024个字符,所以如果在传输量小或者安全性不那么重要的情况下可以使用GET方法。说到POST方法,最多可以传输2MB字节的数据,而且可以根据需要调节。
4.问题:打开php.ini中的Safe_mode,会影响哪些函数?列举6个!
答:1用户输入输出函数(fopen() file() require(),只能用于调用这些函数有相同脚本的拥有者)
2:创建新文件(限制用户只在该用户拥有目录下创建文件)
3:用户调用popen() systen() exec()等脚本,只有脚本处在safe_mode_exec_dir配置指令指定的目录中才可能
4:加强HTTP认证,认证脚本拥有者的UID的划入认证领域范围内,此外启用安全模式下,不会设置PHP_AUTH
5:mysql服务器所用的用户名必须与调用mysql_connect()的文件的拥有者用户名相同
6:受影响的函数变量以及配置命令达到40个
5.问题: 请使用PHP写出冒泡排序算法的代码。
答://冒泡排序
function maopao($arr) {
$count = count($arr);
for($i=0; $i<$count-1; ++$i) {
for($j=0; $j<$count-$i-1; ++$j) {
if($arr[$j] > $arr[$j+1]) {
$temp = $arr[$j];
$arr[$j] = $arr[$j+1];
$arr[$j+1] = $temp;
}
}
}
return $arr;
}
6.问题: 请使用PHP写出顺序排序算法的代码。
答://顺序排序
function shunxu($arr) {
$count = count($arr);
for($i=0; $i<$count-1; ++$i) {
$p = $i;
for($j=$i+1; $j<$count; ++$j) {
$p = $arr[$p] > $arr[$j] ? $j : $p;
}
if($p != $i) {
$tvalue = $arr[$i];
$arr[$i] = $arr[$p];
$arr[$p] = $tvalue;
}
}
return $arr;
}
7.问题:写个函数用来对二维数组排序。
答:
function array_sort_by_any_row($array_name, $row_id, $order_type){
$array_temp=array();
foreach($array_name as $key=>$value){
$array_temp[$key]=$value[$row_id];
}
if($order_type===”ASC”){ //顺序
asort($array_temp);
} else {
arsort($array_temp);
}
$result_array=array();
foreach($array_temp as $key=>$value){
$result_array[$key]=$array_name[$key];
}
return $result_array;
}
$arr = array(
array(‘num’=>5, ‘value’=>6),
array(‘num’=>2, ‘value’=>39),
array(‘num’=>36, ‘value’=>29)
);
$sortarr = array_sort_by_any_row($arr, ‘num’, ‘DESC’);
print_r($sortarr);
8.问题: 写5个不同的函数,来截取一个全路径的文件的扩展名,允许封装php库中已有的函数。
答:$path = str_replace(‘\\’, ‘/’,__FILE__);
echo $path.’<br />’;
function extname1($path) {
return strrchr($path, ‘.’);
}
function extname2($path) {
$position = strrpos($path, ‘.’);
return substr($path, $position);
}
function extname3($path) {
$arr = explode(‘.’, $path);
return $arr[count($arr) – 1];
}
function extname4($path) {
preg_match_all(‘/[\w\/\:\-]+\.([\w]+)$/’, $path, $out);
return $out[1][0];
}
function extname5($path) {
return preg_replace(‘/^[^\.]+\.([\w]+)$/’, ‘${1}’, basename($path));
}
print_r(extname5($path));
9.问题:一群猴子排成一圈,按1,2,…,n依次编号。然后从第1只开始数,数到第m只,把它踢出圈,从它后面再开始数,再数到第m只,在把它踢出去…,如此不停的进行下去,直到最后只剩下一只猴子为止,那只猴子就叫做大王。要求编程模拟此过程,输入m、n, 输出最后那个大王的编号。
答:yuesefu环问题,PPC有很多针对这个问题的处理,我的就不上啦
function yuesefu($n,$m) {
$r=0;
for($i=2; $i<=$n; $i++) {
$r=($r+$m)%$i;
}
return $r+1;
}
print_r(yuesefu(3,3));
20个PHP面试题及答案的更多相关文章
- Android 面试题及答案(2)
1.Activity相关.launchmode,OnSaveInstnceState,生命周期等. 4种默认的launchmode,以及OnNewIntent的回调. OnNewIntent-> ...
- php面试题及答案收藏(转)
php面试题及答案收藏(这套试题是在网上看到的,不知作者是谁) 基础题 1.表单中 get与post提交方法的区别? 答:get是发送请求HTTP协议通过url参数传递进行接收,而post是实体数据, ...
- Linux面试题汇总答案
转自:小女生的Linux技术~~~Linux面试题汇总答案~~ 一.填空题:1. 在Linux系统中,以 文件 方式访问设备 .2. Linux内核引导时,从文件 /etc/fstab 中读取要加载的 ...
- 最全的iOS面试题及答案-转载
1. Object-c的类可以多重继承么?可以实现多个接口么?Category是什么?重写一个类的方式用继承好还是分类好?为什么? 答: Object-c的类不可以多重继承:可以实现多个接口,通过实现 ...
- 经典71道Android试题及答案
本文为开发者奉献了70道经典Android面试题加答案--重要知识点几乎都涉及到了,你还等啥,赶紧收藏吧!! 1. 下列哪些语句关于内存回收的说明是正确的? (b) A. 程序员必须创建一个线程来释放 ...
- iOS面试题及答案2015.6.7
iOS面试题及答案 1. Object-c的类可以多重继承么?可以实现多个接口么?Category是什么?重写一个类的方式用继承好还是分类好?为什么? 答: Object-c的类不可以多重继承 ...
- 来自投资银行的20个Java面试题
问题一:在多线程环境中使用HashMap会有什么问题?在什么情况下使用get()方法会产生无限循环? HashMap本身没有什么问题,有没有问题取决于你是如何使用它的.比如,你在一个线程里初始化了一个 ...
- 《招聘一个靠谱的iOS》面试题参考答案(下)
相关文章: <招聘一个靠谱的iOS>面试题参考答案(上) 说明:面试题来源是微博@我就叫Sunny怎么了的这篇博文:<招聘一个靠谱的 iOS>,其中共55题,除第一题为纠错题外 ...
- 面试(4)-spring-Spring面试题和答案
1:69道Spring面试题和答案 转自:http://ifeve.com/spring-interview-questions-and-answers/ 目录 Spring 概述 依赖注入 Spri ...
随机推荐
- Java你不知道的那些事儿—Java隐藏特性
转载自:http://www.cnblogs.com/lanxuezaipiao/p/3460373.html 每 种语言都很强大,不管你是像我一样的初学者还是有过N年项目经验的大神,总会有你不知道的 ...
- 检查arg是方法还是函数?
from types import MethodType,FunctionType def check(arg): """ 检查arg是方法还是函数? :param ar ...
- centos添加定时任务
安装crontab: yum install crontabs 查看crontab服务状态:service crond status 手动启动crontab服务:service crond start ...
- 004-mysql explain详解
一.使用 使用explain + 查询语句 二.解释说明 1)id列[执行顺序] id列数字越大越先执行,如果说数字一样大,那么就从上往下依次执行,id列为null的就表是这是一个结果集,不需要使用它 ...
- Tips for Unix/Linux
@1: 在单个命令中创建目录树:不要逐层创建目录,尽量使用mkdir的-p选项: ~$ mkdir -p one/two/three # 假设目录one不存在 创建复杂的目录树: ~$ mkdir - ...
- windows下客户端开发hdf--环境搭建
1.引入依赖 <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop- ...
- Loadrunder之脚本篇——参数化在场景中的运用
Action() { lr_eval_string("{NewParam}"); lr_eval_string("{NewParam}"); return 0; ...
- Linux软件包管理 RMP包管理
概述 RPM 包的命名一般都会遵守统一的命名规则,例如: httpd-2.2.15-15.el6.centos.1.i686.rpm 其中的各项代表的含义如下: httpd:软件包名. 2.2.15: ...
- 【FAQ系列】Relay log 导致复制启动失败
今天在使用冷备份文件重做从库时遇到一个报错,值得研究一下. 版本:MySQL5.6.27 一.报错现象 dba:(none)> start slave; ERROR (HY000): Slave ...
- 快乐学习 Ionic Framework+PhoneGap 手册1-1{创建APP项目}
快乐学习 Ionic Framework+PhoneGap 手册1-1 * 前提必须安装 Node.js,安装PhoneGap,搭建Android开发环境,建议使用真机调试 {1.1}= 创建APP项 ...