黑马程序员技术交流社区

标题: 【100家名企面试题PHP系列】最常见的 php 面试题 [打印本页]

作者: 播妞    时间: 2017-9-21 10:31
标题: 【100家名企面试题PHP系列】最常见的 php 面试题
最常见的 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 面试题(附答案)回帖可见


//答案(填空):回帖可见


作者: 100387510    时间: 2017-9-22 16:25
我来占一层了啊
作者: 滑稽哥    时间: 2017-9-22 16:26
php最厉害
作者: 乌龟    时间: 2017-9-22 20:45
66666666666666666666666666666666
作者: 521hehe    时间: 2017-9-22 22:17
bucuoyo 很给力,赞
作者: li953903317    时间: 2017-9-23 12:37
赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞
作者: 327083434    时间: 2017-9-23 23:33
学习学习
作者: yulinzhihou    时间: 2017-9-24 01:02
进来看看
作者: 空城灬    时间: 2017-9-24 16:14
好好好  好资源  求资源
作者: p91919    时间: 2017-9-24 16:28
这个可以看看
作者: elves766@qq.com    时间: 2017-9-25 01:00
下载看看
作者: zjc2333    时间: 2017-9-25 10:38
提示: 作者被禁止或删除 内容自动屏蔽
作者: zangalong    时间: 2017-9-25 17:48
急求一份,感觉非常有用处,谢谢!
作者: fengyuzi    时间: 2017-9-26 09:41
PHP是最美的语言
作者: liub    时间: 2017-9-26 11:12
kankan~~~~
作者: 哼哈二将    时间: 2017-9-26 16:07
去去去去去去群群
作者: xuanzuanmu    时间: 2017-9-28 20:52
回帖学习更多
作者: wyhuaheima    时间: 2017-9-30 18:32
好资源共分享
作者: za2883632    时间: 2017-10-1 12:43
继续研究
作者: 遗忘的记忆    时间: 2017-10-3 21:47
6666666666666666666666666666666666
作者: 枝间    时间: 2017-10-5 22:53
谢谢求下载
作者: lonely1314    时间: 2017-10-6 15:30
给力给力给力给力给力给力给力
作者: hpu145    时间: 2017-10-6 17:51
666666666666666666
作者: gl521    时间: 2017-10-8 22:27
大阿萨德阿萨德阿萨德阿萨德
作者: Ruin    时间: 2017-10-8 23:52
最常见的 php 面试题
作者: bug太上皇    时间: 2017-10-10 13:34

作者: 冰雪小王子    时间: 2017-10-11 11:00
优化 MYSQL 数据库的方法哈
作者: 大鼓    时间: 2017-10-11 14:17
可以啊咳嗽厉害空间里亏不亏
作者: 的说    时间: 2017-10-11 17:26
顶楼主啦..希望楼主多发精品好帖啦.....
作者: 雷攀博    时间: 2017-10-14 08:39
wo们是最棒的!~
作者: 雷攀博    时间: 2017-10-14 08:58
可爱的播妞,下载,下载,马上回来!~
作者: sunny@    时间: 2017-10-14 22:33
6666666666
作者: 半路码农    时间: 2017-10-17 00:38
非常有用
作者: HAHAA    时间: 2017-10-17 11:17
谢谢分享。。。
作者: 天道轮回    时间: 2017-10-17 11:58
来看看看那
作者: chenxuyu    时间: 2017-10-20 08:47
感谢楼主分享。。。
作者: lunelee    时间: 2017-10-20 09:32
谢谢分享
作者: 2476871847    时间: 2017-10-20 11:02
必须要求回复内容超过10个字,但我只有谢谢
作者: black_he    时间: 2017-10-20 21:24
楼主幸苦了
作者: AD老猫    时间: 2017-10-22 16:06
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
作者: a88440102    时间: 2017-10-22 22:31
666666666666
作者: zsjx    时间: 2017-10-27 08:22
支持黑马
作者: 噬魂勇者    时间: 2017-10-27 19:22
谢谢分享
作者: 普通的宅男    时间: 2017-10-28 10:09

求资源   很好的资源
作者: Ayer    时间: 2017-10-28 12:33
资源不错
作者: di2238460    时间: 2017-10-29 03:31
学习学习
作者: jinxiaochen521    时间: 2017-10-30 13:23
好资源共分享
作者: 3154183196    时间: 2017-10-30 23:36
该好好发挥发挥更
作者: taozi96    时间: 2017-10-31 11:29
谢谢分享
作者: yangtangxia    时间: 2017-11-3 09:35
^_^哈哈哈哈哈或
作者: 返工好累    时间: 2017-11-9 13:16
马上就要  面试了  先进来充充电
作者: 小鸟要变大    时间: 2017-11-9 16:41
这个很厉害的黑马
作者: cgqqq    时间: 2017-11-9 22:28
11111111111
作者: xie~    时间: 2017-11-25 21:06
我来学习学习···········
作者: SSAXXN    时间: 2017-11-27 20:38
谢谢分享,正好在找面试题
作者: enque    时间: 2017-12-12 00:53
新人学习,666666
作者: 超级流川枫    时间: 2017-12-14 21:53
谢谢分享
作者: 顾安    时间: 2017-12-15 21:08
马上就能使用了  来看看  感谢黑马
作者: 金海环境    时间: 2017-12-16 16:02
0000000000000000000000
作者: IF_EVER    时间: 2017-12-19 11:42
学习学习。。。
作者: tianxiawu    时间: 2017-12-20 11:41
谢谢分享!
作者: 城南丶    时间: 2017-12-21 12:13
准备看看
作者: XGZ    时间: 2017-12-22 14:42
aaaaaaaaaaaaaaaaaaaaaa
作者: 707914799    时间: 2017-12-23 14:18
dsfghjklkjhgfdsasdfghjk
作者: 名豪    时间: 2017-12-24 01:42
非常不错
作者: 恍惚小猪    时间: 2017-12-25 14:26
好好学习 天天学习
作者: 不会说话    时间: 2017-12-25 17:09
感谢,正需要,对我的帮助很大
作者: chen315    时间: 2017-12-26 14:19
帖子不错 ,很容很好很强大 666666
作者: phpMyadmin    时间: 2017-12-27 09:14
phpMyadmin
作者: 哦哈哈哈    时间: 2017-12-28 10:47
有答案吗
作者: 1418948431    时间: 2017-12-28 16:18

作者: shiguang154    时间: 2017-12-31 16:16
最常见的 php 面试题
作者: 广东黑雀神龟    时间: 2018-1-2 09:26
好贴,赞赞
作者: 稚于最初    时间: 2018-1-9 17:22
学习学习

作者: 来自未来的人    时间: 2018-1-9 19:47
厉害了 ~~~加油啊
作者: PHP纸老虎    时间: 2018-1-10 16:30
不考虑中英文混合,不是最优算法,不用 php 库函数翻转字符串:
作者: 活不好不要昆    时间: 2018-1-11 18:35
我只想说,真是太有才了,哈哈!~~~
作者: xyt1519    时间: 2018-1-13 09:38
放松放松法国队哥哥哥哥哥哥哥哥哥哥哥哥哥哥哥哥哥哥哥哥哥哥哥哥哥哥
作者: why`    时间: 2018-1-16 19:10
666666666666666666666666666666666666666
作者: 执念一生xsq    时间: 2018-1-16 21:04
啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦
作者: 936416190    时间: 2018-1-18 00:25

作者: 可爱的亮仔    时间: 2018-1-20 12:45
666bbdhhjshwbzbbz
作者: cai6666    时间: 2018-1-23 16:43
66666666666666666666666666666666666
作者: x1a0miracle    时间: 2018-1-24 14:38
给黑马来点个赞!
作者: qauwang    时间: 2018-1-24 15:57
谢谢分享
作者: jca123321    时间: 2018-1-24 20:51
赞赞赞赞赞赞赞赞赞赞
作者: yangmingwei    时间: 2018-1-25 09:55
爱仕达大撒所大所大所大所多
作者: 陈乔雄    时间: 2018-1-25 20:39

作者: mvpicy    时间: 2018-1-26 09:00
刚好需要,非常感谢
作者: IT程序Yin    时间: 2018-1-30 19:32
看看看看看啊看看想看看
作者: 路上星火    时间: 2018-1-31 11:17
阿发山东法大使馆
作者: jhxspy    时间: 2018-1-31 22:49
fsddfdssssfsf
作者: mini_coder    时间: 2018-2-2 13:43
学习 学习0.0

作者: zjn    时间: 2018-2-3 18:15
haohaohaohaohaoahoahoa
作者: Sunshine丶星空    时间: 2018-2-5 20:37
哇还有隐藏内容?????????
作者: wdx435744921    时间: 2018-2-11 11:32
kankankankan
作者: 中大ohyes    时间: 2018-2-11 13:36
9999999毕业吧看看
作者: yechu07    时间: 2018-2-24 00:24
有用!!
作者: 囧囧爱学习    时间: 2018-2-24 08:04
每天进步一点点一年下来会很多
作者: 疯的飞翔    时间: 2018-2-24 16:14
真的不错




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2