篇一:PHP程序员面试中最常涉及的12个问题
PHP面试中最常涉及的12个问题
了解和学习了PHP很多的知识,比如《PHP代码优化的小技巧分享》《为
开发者准备的9个实用PHP代码片段》,你是否开始着手准备PHP开发工作的面试,希望知道那些最有可能在面试时被问到的问题。这篇文章我们整理了关于PHP相关工作的面试中最常涉及的问题和答案,供你参考,你也可以把它当做一份PHP的学习资料。当然,每一家公司都有他们自己的面试标准,面试问题也是依据工作职位和你的能力而设置的。
问题1:谈谈你对的PHP的基本认识。
回答:PHP是Hypertext Preprocessor(超文本预处理器)的简称,是一种用来开发动态网站的服务器端脚本语言。
问题2:什么是MVC?
回答:MVC,即Model(数据层),View(视图层),Controller(控制层)。PHP中的MVC模型是一种有效将代码分成三层的管理办法,其中Model表示着应用中的数据信息,View负责将应用中的数据信息展现出来,Controller控制着如何将数据信息读出。
问题3:你在一个页面上有几种方式添加CSS?
回答:三种办法可以使用:(1)引用外部CSS文件。(2)引用内部CSS文件。
(3)内联CSS样式。
问题4:PHP支持多继承吗?
回答:不支持。PHP中只允许单继承,父类可以被一个子类用关键字“extends”继承。
问题5:PHP中echo和print有什么区别?
回答:这两个函数看起来很相似,都是用来打印输出的。两者最大的区别是,echo不是函数,没有返回值,而print是一个函数有返回值,所以相对而言如果只是输出 echo会更快。
问题6:GET和POST方法有什么区别? 回答:我们在网页上填写的表单信息可以通过这两种方法将数据传递到服务器上,GET或POST方法。当我们使用GET时,所有的信息都会显示在URL地址中,并且使用GET方法最多只能传递1024个字符,所以GET方法适用于传输量小,且数据安全不是很重要的情况。而POST方法,没有信息会显示在URL地址上,相对安全,且最多可以传输2MB字节的数据,这个数字还可以根据需要增加。
问题7:PHP中获取图像大小,宽与高的函数是什么?
回答:getimagesize () 获取图像的尺寸,imagesx () 获取图像的宽度,imagesy
() 获取图像的高度。
问题8:PHP中的PEAR是什么?
回答:PEAR是PHP扩展与应用库(the PHP Extension and Application
Repository)的缩写,它是一个PHP扩展及应用的一个代码仓库,同时它也是一个标准,使用这个标准来书写PHP代码,会增强程序的可读性,复用性。
问题9:如何使用PHP和MySQL上传视频?
回答:我们只需要复制数据库中存储视频的路径,而不是存储视频文件本身。所有的视频会被存在另外一个文件夹中,当需要的时候可以从中调用视频。上传视频的默认大小是2MB,但是我们也可以在php.ini文件中修改max_file size,改变文件大小。
问题10:PHP中的错误类型都有哪些?
回答:PHP中主要有三种错误类型,(1)Notice:这些都是一些非常正常的信息,而非重大错误,甚至有一些都不会展示给用户。(2)Warning:这类是稍微严重一些的错误,错误会展示给用户,但不影响程序的输出。(3)Fatal errors:这些是非常严重的错误,比如要访问一个不存在的PHP类。
问题11:在PHP中如何定义常量?
回答:使用define () 来定义常量,比如define (“Newconstant”, 30);
问题12:如何不使用submit按钮来提交表单?
回答:如果我们不想用submit按钮提交表单,我们可以用超链接来提交,比如使用javascript代码如下:Submit Me
篇二:php程序员-初级面试题
PHP程序员初级面试题
一,解释一下语句作用,并标示出以下那一句不会把john新增到users阵列? $users[] = ‘john’;
答:成功把john新增到阵列 users。
Array_add($users,’john’);
答:函数array_add() 无定义
Array_push(user,’john’);
答:成功把john新增到阵列users。
$users ll=’john’;
答:语法是错误的。
二,sort()、assort()、和ksort()有什么分别?它们分别在什么情况下使用? Sort()
答:根据阵列中元素的值,以英文字母顺序排序,索引键会由0到n-1重新编号。主要是当阵列索引键的值无关联排序时用来把阵列排序。
Assort()
答:与sort()一样把阵列的元素按英文字母顺序排列,不同的是所有索引键都获得保留,特别适合替联想阵列排序。
Ksort()
答:根据阵列中索引键的值,以英文字母顺序排序,特别用于把索引键排序的联想阵列。
三,以下的代码会产生什么?为什么?
$num=10;
Function multiply(){
}
multiply();
echo $num;
答:由于函式multiply()没有指定$num为全域变量(例如 global $num 或者 $_GLOBALS[?num?]),所以$num 的值是10。
$num=$num*10;
四,reference 跟一个正规的变量有什么分别?如何pass by reference? 在什么情况下我们需要这样做?
答:Reference 传送的是变量的地址而非它的值,所以在函式中改变一个变量的值时,整个应用都见到这个变量的新值。
一个正规变量传送给函式的是它的值,当函式改变这个变量的值时,只有这个函式才见到新值,应用的其他部分仍然见到旧值。
$myVariable = ”its?value”;
Myfunction(&$myVariable);//以reference 传送参数以reference传送参数给函式,可以使函式改变了的变量,即使在函式结束后仍然保留新值。
五,哪些函式可以用来向正在执行的脚本中插入函式库?
答:对这些道题目不同的理解会有不同的答案,我的第一个想法是插入php函数库不外乎include()、include_once()、require()、require_once(),但细心再想,函数库也应该包括com物件和.net函数库,所以我们的答案也要分别包括com_load和dotnet_load,下次有人提起函数库的时候,别忘记这个两个函数。
六,foo() 与 @foo() 有什么分别?
七,你如何替php的应用程式侦错?
八,”===”是什么?式举一个”==”是真但”===”是假的例子 ?
九,你会如何定义一个没有成员函式或特性的类别myclass?
十一,以下哪一个函式可以把浏览器转向到另一个页面?
redir()
header()
location()
redirect()
十二,以下哪一个函式可以用来开启档案以便读/写?
fget()
file_open()
fopen()
open_file()
十三,mysql_fetch_row() 和 mysql_fetch_array() 有什么分别?
十四,下面的代码用来做什么?请解释:
$date=?08/26/2003?;print ereg_replace(“([0-9]+)/([0-9]+)/([0-9+])”,”[url=file://2///1///3%22,$date]\\2/\\1/\\3”,$date[/url]);
十五,试写出几个输出一段HTML代码的方法。
篇三:php程序员面试题大全附答案
1.在PHP中,当前脚本的名称(不包括路径和查询字符串)记录在预定义变量(1)中;而链接到当前页面的的前一页面URL记录在预定义变量(2)中 <?php
//本页地址,SCRIPT_NAME也可以:php/test.php
echo $_SERVER['PHP_SELF']."<br />";
//链接到当前页面的前一页面的 URL 地址:
echo $_SERVER['HTTP_REFERER']."<br />";
//其它的见参考手册:语言参考》变量》预定义变量
//前执行脚本的绝对路径名:D:Inetpubwwwrootphp est.php
echo $_SERVER["SCRIPT_FILENAME"]."<br />";
//正在浏览当前页面用户的 IP 地址:127.0.0.1
echo $_SERVER["REMOTE_ADDR"]."<br />";
//查询(query)的字符串(URL 中第一个问号 ? 之后的内容):id=1&bi=2
echo $_SERVER["QUERY_STRING"]."<br />";
//当前运行脚本所在的文档根目录:d:inetpubwwwroot
echo $_SERVER["DOCUMENT_ROOT"]."<br />";
?>
2.执行程序段<?php echo 8%(-2) ?>将输出__。
<?php
//参考手册》语言参考》运算符》算术运算符》%为取模运算,输出0
echo 8%(-2)."<br />";
//取模 $a % $b 在 $a 为负值时的结果也是负值。输出-2
echo ((-8)%3)."<br />";
//输出2
echo (8%(-3))."<br />";
?>
3.在HTTP 1.0中,状态码 401 的含义是____;如果返回“找不到文件”的提示,则(本文来自:wwW.xIaocAofanwEn.coM 小草 范文 网:php程序员面试技巧)可用 header 函数,其语句为____。
答:401表示未授权;header("HTTP/1.0 404 Not Found");[见参考手册》函数参考》HTTP函数》header]
4.数组函数 arsort 的作用是____;语句 error_reporting(2047)的作用是____。
答:arsort:对数组进行逆向排序并保持索引关系 error_reporting(2047)的作用是:report All errors and warnings
5.写出一个正则表达式,过虑网页上的所有JS/VBS脚本(即把script标记及其内容都去掉): <?php
$script="以下内容不显示:<script language='javascript'>alert('cc');</script>"; echo preg_replace("/<script[^>].*?>.*?</script>/si", "替换内容", $script); ?>
6.以Apache模块的方式安装PHP,在文件http.conf中首先要用语句____动态装载PHP模块,
然后再用语句____使得Apache把所有扩展名为php的文件都作为PHP脚本处理。 答:LoadModule php5_module "c:/php/php5apache2.dll";AddType
application/x-httpd-php .php
见参考手册》目录》II. 安装与配置》6. Windows 系统下的安装》Microsoft Windows 下的 Apache 2.0.x
7.语句 include 和 require 都能把另外一个文件包含到当前文件中,它们的区别是____;为了避免多次包含同一文件,可以用语句____来代替它们。
答:在如何处理失败时,include() 产生一个警告而 require() 则导致一个致命错误;require_once()/include_once()
8.一个函数的参数不能是对变量的引用,除非在php.ini中把____设为on.
答:allow_call_time_pass_reference boolean :是否启用在函数调用时强制参数被按照引用传递, 见参考手册》附录G
9.SQL 中LEFT JOIN的含义是__,如果 tbl_user记录了学生的姓名(name)和学号(ID), tbl_score记录了学生(有的学生考试以后被开除了,没有其记录)的学号(ID)和考试成绩(score)以及考试科目(subject),要想打印出各个学生姓名及对应的的各科总成绩,则可以用SQL语句____.
答:自然左外连接
create database phpinterview;
use phpinterview
create table tbl_user
(
ID int not null, namevarchar(50) not null, primary key (ID)
);
create table tbl_score
(
ID int not null, score dec(6,2) not null, subjectvarchar(20) not null );
insert into tbl_user (ID, name) values (1, 'beimu');
insert into tbl_user (ID, name) values (2, 'aihui');
insert into tbl_score (ID, score, subject) values (1, 90, '语文');
insert into tbl_score (ID, score, subject) values (1, 80, '数学');
insert into tbl_score (ID, score, subject) values (2, 86, '数学');
insert into tbl_score (ID, score, subject) values (2, 96, '语文');
select A.id,sum(B.score) as sumscore
from tbl_user A left join tbl_score B
on A.ID=B.ID
group by A.id
10. 在PHP中,heredoc是一种特殊的字符串,它的结束标志必须____
答:结束标识符所在的行不能包含任何其它字符除";"
11.写一个函数,能够遍历一个文件夹下的所有文件和子文件夹。
<?php
function my_scandir($dir)
{
$files=array();
if(is_dir($dir))
{
if($handle=opendir($dir))
{
while(($file=readdir($handle))!==false)
{
if($file!="." && $file!="..")
{
if(is_dir($dir."/".$file))
{
$files[$file]=my_scandir($dir."/".$file);
}
else
{
$files[]=$dir."/".$file;
}
}
}
closedir($handle);
return $files;
}
}
}
print_r(my_scandir("D:Program FilesInternet ExplorerMUI"));
?>
B页面
1.以下哪一句不会把 John 新增到 users 阵列?
$users[] = 'john';
成功把 John 新增到阵列 users。
array_add($users,?john?);
函式 array_add() 无定义。
array_push($users,?john?);
成功把 John 新增到阵列 users。
$users ||= 'john';
语法错误。
2.sort()、assort()、和 ksort() 有什么分别?它们分别在什么情况下使用?
sort()
根据阵列中元素的值,以英文字母顺序排序,索引键会由 0 到 n-1 重新编号。主要是当阵列索引键的值无关疼痒时用来把阵列排序。
assort()
PHP 没有 assort() 函式,所以可能是 asort() 的笔误。
asort()
与 sort() 一样把阵列的元素按英文字母顺序来排列,不同的是所有索引键都获得保留,特别适合替联想阵列排序。