A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

最常见的 php 面试题

面试题一

1、表单提交 get 和 post 有何区别?

答:get 的方式是把数据在地址栏中发送,get 传送的数据量较小,不能大于 2KB。post传送的数据量较大,一般被默认为不受限制。但理论上,IIS4 中最大量为 80KB,IIS5 中为100KB。

2、用 PHP 打印出前一天的时间格式是 2006-5-10 22:21:21

echo date("Y-m-d H:i:s",time()-(3600*24)); 或 echo date("Y-m-d H:i:s",strtotime("-1 day"));

3、php 中 include 和 require 的区别?

这两种结构除了在如何处理失败之外完全一样。include() 产生一个警告而 require() 则导

致一个致命错误。换句话说,如果你想在遇到丢失文件时停止处理页面就用 require()。

include() 就不是这样,脚本会继续运行。

4、echo(),print(),print_r()的区别

echo 可以接多个参数,print 只能接一个参数,它们都是 PHP 的语言结构,print_r 是递规打印,用来打印数组或对象

5、能够使 HTML 和 PHP 分离开使用的模板

smarty,phplib,SmartTemplate

6 你如何理解 MVC 模式?

首先说一下框架,框架:就是别人把一些底层,常用操作.比如数据操作(增,删,改,查)写好.你来直接用.其它的功能要自己来做。

MVC:设计模式,M 模型,V 显示,C 控制.现在许多框架都是基于 MVC 来做的把逻辑和显示分开.比如你要换页面,只需要改 V 里面的东西并不需要再去变动程序(!详细的东西可以上网上查一下)

7、如何实现 PHP、JSP 交互?

PHP 提供了支持 JAVA 的类库文件,或者通过 HTTP 协议来交互数据

8、使用哪些工具进行版本控制?

VSS,CVS,SVN

9、如何实现字符串翻转?

不考虑中英文混合,不是最优算法,不用 php 库函数翻转字符串:
游客,如果您要查看本帖隐藏内容请回复


10、优化 MYSQL 数据库的方法。
游客,如果您要查看本帖隐藏内容请回复


11.用 PHP 写出显示客户端 IP 与服务器 IP 的代码:
echo $_SERVER['REMOTE_ADDR'] //客户端 ip echo $_SERVER['SERVER_ADDR'] //服务器端 ip

12、apache+mysql+php 实现最大负载的方法
游客,如果您要查看本帖隐藏内容请回复


面试题二

1、PHP/MySQL 编程
1)某内容管理系统中,表 message 有如下字段 id 文章 id
title 文章标题
content 文章内容
category_id 文章分类 id
hits 点击量
创建上表,写出 MySQL 语句
2)同样上述内容管理系统:表 comment 记录用户回复内容,字段如下 comment_id 回复 id
id 文章 id,关联 message 表中的 id
comment_content 回复内容
现通过查询数据库需要得到以下格式的文章标题列表,并按照回复数量排序,回复最高的排在最前面
文章 id 文章标题 点击量 回复数量
用一个 SQL 语句完成上述查询,如果文章没有回复则回复数量显示为 0
3) 上述内容管理系统,表 category 保存分类信息,字段如下
category_id int(4) not null auto_increment;
categroy_name varchar(40) not null;
用户输入文章时,通过选择下拉菜单选定文章分类
写出如何实现这个下拉菜单

2、PHP 文件操作
1)
上述内容管理系统:用户提交内容后,系统生成静态 HTML 页面;写出实现的基本思路 ob_start();
3、实现中文字串截取无乱码的方法。
这个首先要考虑字符集的问题,UTF-8 下一个汉字占 3 字节,GBK 下一个汉字占 2 字节.可以自己写个函数来处理,别人也写了很多,当然也可以开启 mbstring 扩展库,使用里面的mb_substr()等函数来截取。当截取字符出现乱码时,是因为汉字被截断了,可以再字符串
尾部连上一个 chr(0)
var $empty        = '';
var $null        = NULL;
var $bool        = FALSE;
var $notSet;        
var $array        = array();

面试题三

1.
$a = "hello";
$b = &$a;
unset($b);
$b = "world";
what is $a?

hello,unset($b)只是释放了$b 自己和$a 的别名关系,并不会释放$a

2.
$a = 1;
$x = &$a;
$b = $a++;
what is $b?
1,先执行$b = $a,$a++再进行,所以$b 还是 1

3.
$x = empty($array);
what is $x?        true        or        false
true,$array 是空数组

4.您是否用过版本控制软件? 如果有您用的版本控制软件的名字是? CVS:winCVS,是一个 CVS 的客户端VSS,微软的产品,比较适合中小型项目,只支持单人 checkout

5.您是否用过模板引擎? 如果有您用的模板引擎的名字是?

SMARTY,php 官方推荐的模板引擎,它是编译型模板,与 phplib 不太相同,功能强大,30 多种标签,支持 cache

6.请简单阐述您最得意的开发之作.

hdwiki,开源项目,mediawiki 的使用性国人很不适应,代码修改起来也比较困难.hdwiki 比较适合目前的国人使用.

7.对于大流量的网站,您采用什么样的方法来解决访问量问题?

1 squid 反向代理

8、谈谈事务处理

可以控制并发操作所产生的数据同步提交、更新所带来的冲突问题 . 可以进行 comit,rollback 操作,数据的安全性得到了提高。

2) 简单描述用户修改以发布内容的实现流程和基本思路

9、PHP 程序

1)写出以下程序的输出结果

<?

$b=201;
$c=40;
$a=$b>$c?4:5;
echo $a;
?>
2)写出以下程序的输出结果
<?
$str="cd";
$$str="hotdog";
$$str.="ok";
echo $cd;
?>

面试题四

一. 简答题

1.请说明 php 中传值与传引用的区别。什么时候传值什么时候传引用?

2.在 PHP 中 error_reporting 这个函数有什么作用?

3.请写一个函数验证电子邮件的格式是否正确

4.简述如何得到当前执行脚本路径,包括所得到参数。

说明:例如有一个脚本 www.domain.com,传给他的参数有参数 1,参数 2,参数 3….

传递参数的方法有可能是 GET 有可能是 POST,那么现在请写出类似 http://www.domain.com/script.php? 参数 1=值 1&参数 2=值 2..... 的结果5.如何修改 SESSION 的生存时间.

6..有一个网页地址 http://www.domain.com/xxx.php,如何得到它的内容?

7.有一个一维数组,里面存储整形数据,请写一个函数,将他们按从大到小的顺序排列。要求执行效率高。并说明如何改善执行效率。(该函数必须自己实现,不能使用 php 函数)

8.请举例说明在你的开发过程中用什么方法来加快页面的加载速度。

二. 数据库设计题:

请设计一套图书馆借书管理系统的数据库表结构;可以记录基本的用户信息、图书信息、借还书信息;数据表的个数不超过 6 个;请画表格描述表结构(需要说明每个字段的字段名、字段类型、字段含义描述);

在数据库设计中应:

1. 保证每个用户的唯一性;

2. 保证每种图书的唯一性;每种图书对应不等本数的多本图书;保证每本图书的唯一性;

3. 借书信息表中,应同时考虑借书行为与还书行为,考虑借书期限;

4. 保证借书信息表与用户表、图书信息表之间的参照完整性;

5. 限制每个用户最大可借书的本数

6. 若有新用户注册或新书入库,保证自动生成其唯一性标识

7. 为以下的一系列报表需求提供支持:

(无特定说明,不需编写实现语句,而需在数据库设计中,保证这些报表可以用最多一条 SQL 语句实现)

a)日统计报表:当日借书本数、当日还书本数报表;

b)实时报表:

i.当前每种书的借出本数、可借本数;

ii.当前系统中所有超期图书、用户的列表及其超期天数

iii.当前系统中所有用户借书的本数,分用户列出(包括没有借书行为的用户);请编写实现此需求的 SQL 语句:

数据库应用:

请撰写一系列的 SQL 语句,分别描述完整的借书行为与还书行为;并保证这一系列的 SQL

语句的执行完整性

下题是测验能力之最重要测试,如不能完成我们将无法给出评判结果!所以请写出详细的回答,并保证答案是可以执行的程序。在两日内将结果通过电子邮件寄到 hr@88keke.com 邮箱

结合第二题中你的设计,用一种数据库实现,要求使用三层结构或者多层结构,要求采用面向对象的思想进行编程,有可能的话,设计一套模板机制来实现之。

功能:列出当前借出图书的情况 ,按日期排列

编号 用户姓名 书名 书的编号 借出日期

1.张进 大染坊 12576587 2004-9-1

2.刘兴 西游记 32131098 2004-9-2

……

面试题五

1.在 PHP 中,当前脚本的名称(不包括路径和查询字符串)记录在预定义变量(1)中;而链接到当前页面的 URL 记录在预定义变量(2)中。
2.执行程序段<?php echo 8%(-3) ?>将输出(3)。

3.在 HTTP 1.0 中,状态码 401 的含义是(4);如果返回“找不到文件”的提示,则可用 header 函数,其语句为(5)。

4.数组函数 arsort 的作用是(6);语句 error_reporting(2047)的作用是(7)。

5.PEAR 中的数据库连接字符串格式是(8)。

6.写出一个正则表达式,过虑网页上的所有 JS/VBS 脚本(即把 script 标记及其内容都去掉):

(9)。

7.以 Apache 模块的方式安装 PHP,在文件 http.conf 中首先要用语句(10)动态装载 PHP 模块,然后再用语句(11)使得 Apache 把所有扩展名为 php 的文件都作为 PHP 脚本处理。

8.语句 include 和 require 都能把另外一个文件包含到当前文件中,它们的区别是(12);为了避免多次包含同一文件,可以用语句(13)来代替它们。

9.类的属性可以序列化后保存到 session 中,从而以后可以恢复整个类,这要用到的函数是(14)。

10.一个函数的参数不能是对变量的引用,除非在 php.ini 中把(15)设为 on.

11.SQL 中 LEFT JOIN 的含义是(16)。如果 tbl_user 记录了学生的姓名(name)和学号(ID), tbl_score 记录了学生(有的学生考试以后被开除了,没有其记录)的学号(ID)和考试成绩(score)以及考试科目(subject),要想打印出各个学生姓名及对应的的各科总成绩,则可以用 SQL 语句(17)。

12.在 PHP 中,heredoc 是一种特殊的字符串,它的结束标志必须(18)。

13.写一个函数,能够遍历一个文件夹下的所有文件和子文件夹。

14.简述论坛中无限分类的实现原理。

15.设计一个网页,使得打开它时弹出一个全屏的窗口,该窗口中有一个文本框和一个按钮。

用户在文本框中输入信息后点击按钮就可以把窗口关闭,而输入的信息却在主网页中显示。

16.有一表 menu(mainmenu,submenu,url),请用递归法写出一树形菜单,将所有的 menu 列出来。

面试题六

1- 给你三个数,写程序求出其最大值。

2- 谈谈 asp,php,jsp 的优缺点

3- 谈谈对 mvc 的认识

4- 写出发贴数最多的十个人名字的 SQL,利用下表:

members(id,username,posts,pass,email) 5-如何通过 javascript 判断一个窗口是否已经被屏蔽。

6-写出 session 的运行机制

7-有一数组        $a=array(4,3,8,9,2);请将其重新排序,按从小到大的顺序列出。

8-防止 SQL 注射漏洞一般用_____函数。

9-查询在线人数,并能处理异常掉线的 SQL

....WHERE ________<now()


面试题七(文章底部附有答案,回帖可见)


一、基础题
1. 写出如下程序的输出结果

<?

$str1 = null;

$str2 = false;

echo $str1==$str2 ? ‘相等’ : ‘不相等’;

$str3 = ”;

$str4 = 0;

echo $str3==$str4 ? ‘相等’ : ‘不相等’;

$str5 = 0;

$str6 = ‘0′;

echo $str5===$str6 ? ‘相等’ : ‘不相等’;

?>

2.写出如下程序的输出结果

<?

$a1 = null;

$a2 = false;

$a3 = 0;

$a4 = ”;

$a5 = ‘0′;

$a6 = ‘null’;

$a7 = array();

$a8 = array(array());

echo empty($a1) ? ‘true’ : ‘false’;

echo empty($a2) ? ‘true’ : ‘false’;

echo empty($a3) ? ‘true’ : ‘false’;

echo empty($a4) ? ‘true’ : ‘false’;

echo empty($a5) ? ‘true’ : ‘false’;

echo empty($a6) ? ‘true’ : ‘false’;

echo empty($a7) ? ‘true’ : ‘false’;

echo empty($a8) ? ‘true’ : ‘false’;

?>

3.写出如下程序的输出结果

<?

$test = ‘aaaaaa’;

$abc = & $test;

unset($test);

echo $abc;

?>


4.写出如下程序的输出结果

<?$count = 5;

function get_count(){

static $count = 0;

return $count++;

}


echo $count;

++$count;

echo get_count();

echo get_count();

?>


5.写出如下程序的输出结果

<?

$GLOBALS['var1'] = 5; $var2 = 1;

function get_value(){ global $var2; $var1 = 0;

return $var2++;

}

get_value();

echo $var1;

echo $var2;

?>


6.写出如下程序的输出结果

<?

function get_arr($arr){

unset($arr[0]);

}

$arr1 = array(1, 2);

$arr2 = array(1, 2);

get_arr(&$arr1);

get_arr($arr2);

echo count($arr1);

echo count($arr2);

?>

7. 使用五种以上方式获取一个文件的扩展名

要求:dir/upload.image.jpg,找出 .jpg 或者 jpg ,

必须使用 PHP 自带的处理函数进行处理,方法不能明显重复,可以封装成函数,比如 get_ext1($file_name), get_ext2($file_name)


二、算法题

1. 使用 PHP 描述冒泡排序和快速排序算法,对象可以是一个数组

2. 使用 PHP 描述顺序查找和二分查找(也叫做折半查找)算法,顺序查找必须考虑效率,

对象可以是一个有序数组


3.写一个二维数组排序算法函数,能够具有通用性,可以调用 php 内置函数【附答案】(以下答案不一定是最好的,只是一个简单的参考)



一、基础题

1.相等 相等 不相等

2.true true true true true false true false

3.aaaaaa

4.5 0 1

5.5 2

6.1 2

7.使用五种以上方式获取一个文件的扩展名(答案回帖可见)

游客,如果您要查看本帖隐藏内容请回复

二、算法题

1.使用 PHP 描述冒泡排序和快速排序算法,对象可以是一个数组

//冒泡排序(数组排序)代码回帖可见


游客,如果您要查看本帖隐藏内容请回复

//快速排序(数组排序)代码回帖可见

游客,如果您要查看本帖隐藏内容请回复

2.使用 PHP 描述顺序查找和二分查找(也叫做折半查找)算法,顺序查找必须考虑效率,对象可以是一个有序数组

//二分查找(数组里查找某个元素)
代码回帖可见
游客,如果您要查看本帖隐藏内容请回复


//顺序查找(数组里查找某个元素)

function seq_sch($array, $n, $k){

$array[$n] = $k;

for($i=0; $i<$n; $i++){

if($array[$i]==$k){

break;

}

}

if ($i<$n){

return $i;

}else{

return -1;

}

}

3. 写一个二维数组排序算法函数,能够具有通用性,可以调用 php 内置函数

//二维数组排序, $arr 是数据,$keys 是排序的健值,$order 是排序规则,1 是升序,0是降序
代码回帖可见
游客,如果您要查看本帖隐藏内容请回复

一份 php 面试题(附答案)回帖可见
游客,如果您要查看本帖隐藏内容请回复


//答案(填空):回帖可见
游客,如果您要查看本帖隐藏内容请回复

点评

黑马加油  发表于 2018-5-31 22:39

382 个回复

正序浏览
好好学习天天向上
回复 使用道具 举报
有兴趣,回复看看答案
回复 使用道具 举报
php是最好的语言。
回复 使用道具 举报
感到骄傲大撒的说法
回复 使用道具 举报
kabir 初级黑马 2021-10-14 14:13:54
377#
sdfsdf dfdfasdf
回复 使用道具 举报
回复 使用道具 举报
JoJ 初级黑马 2021-7-27 18:00:42
375#
strrev('abcd')
回复 使用道具 举报
好人wwwwwwwwwwwwww
回复 使用道具 举报
学习搬砖学习搬砖学习搬砖学习搬砖学习搬砖学习搬砖学习搬砖学习搬砖
回复 使用道具 举报
我爱学习,感谢黑马
回复 使用道具 举报
214 初级黑马 2020-12-28 10:52:25
371#
企面试题
回复 使用道具 举报
1111111
回复 使用道具 举报
66666666666666666
回复 使用道具 举报
学习了!
回复 使用道具 举报
111111111111111111111111111
回复 使用道具 举报
我看下答案我看下答案我看下答案
回复 使用道具 举报
阿斯顿百搭hi大会四段好激动啊
回复 使用道具 举报
啊哦诶感觉啊哦诶感觉哦啊大姐夫怕对方将阿婆东方卡击破房间爱看大佛配件啊
回复 使用道具 举报
非常棒
回复 使用道具 举报
来看资料了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马