黑马程序员技术交流社区

标题: 【100家名企面试题PHP系列】Php 面试 100 题汇总含答案 [打印本页]

作者: 播妞    时间: 2017-9-21 11:09
标题: 【100家名企面试题PHP系列】Php 面试 100 题汇总含答案
Php 面试 100 题汇总
1,Http 和 Https 的区别

第一:http 是超文本传输协议,信息是明文传输,https 是具有安全性的 ssl 加密传输协议

第二:http 和 https 使用的是完全不同的连接方式,端口也不一样,前者 80 或者 443 第三:http 连接很简单,是无状态的。https 协议是由 ssl+http 协议构建的可进行加

密传输,身份认证的网络协议。

2.什么方法来加快页面的加载速度

1,用到服务器资源时在打开,不用时,立即关闭服务器资源。

2,数据库添加索引

3,页面可生成静态

4,图片等大文件单独放在一个服务器

5,能不查询数据库的尽量不去数据取数据,可以放在缓存中。

3.表单中 get 与 post 提交方法的区别?

答:get 是发送请求 HTTP 协议通过 url 参数传递进行接收,而 post 是实体数据,可以通过表单提交大量信息.

4.echo ,print,print_r 的区别:

echo 是 php 语句,无返回值。

print,print_r 是函数,有返回值。

print() 只能打印出简单类型变量的值(如 int,string) print_r() 可以打印出复杂类型变量的值(如数组,对象) echo 输出一个或者多个字符串

5.session 与 cookie 区别

session 与 cookie 相同:跨页面、不跨用户

session 与 cookie 不相同:

1、session 可以存储任意类型的数据,但 cookie 只能存储字符串

2、cookie 产生在服务器端、存储在客户端

session 产生在服务器端、存储在服务器端

6.魔术常量

答案:

__LINE__文件中的当前行号。

__FILE__文件的完整路径和文件名。

__FUNCTION__函数名称

__CLASS__类的名称

__METHOD__类的方法名

7.数据库中的事务是什么?

答:事务(transaction)是作为一个单元的一组有序的数据库操作。如果组中的所有操作都成功,则认为事务成功,即使只有一个操作失败,事务也不成功。如果所有操作完成,事务则提交,其修改将作用于所有其他数据库进程。如果一个操作失败,则事务将回滚,该事务所有操作的影响都将取消。

8.1 优化 MYSQL 数据库的方法。

1、选择合适的字段的数据类型

1)能用数字不用字符串

2)char、varchar、text        能用 varchar 不用 char

3)给字段加 not null 避免在表中出现 NULL 关键字(default 值)

2、选择合适的字段充当主键

1)建议每张表必须有主键

2)用数字类型的字段充当主键

3、拆分表

1)拆分字段,将文章的标题与内容分开

2)拆分记录,将今年的记录与往年的记录分开

4、给字段合理添加索引

a.格式:

(普通索引)->

创建:CREATE INDEX <索引名> ON tablename (索引字段)

修改:ALTER TABLE tablename ADD INDEX [索引名] (索引字段)

创表指定索引:CREATE TABLE tablename([...],INDEX[索引名](索引字段))

(唯一索引)->

创建:CREATE UNIQUE <索引名> ON tablename (索引字段)

修改:ALTER TABLE tablename ADD UNIQUE [索引名] (索引字段)

创表指定索引:CREATE TABLE tablename([...],UNIQUE[索引名](索引字段))

(主键)->

它是唯一索引,一般在创建表是建立,格式为:

CREATA TABLE tablename ([...],PRIMARY KEY[索引字段])

5、事务处理:

a.保证数据完整性,例如添加和修改同时,两者成立则都执行,一者失败都失败 mysql_query("BEGIN");

mysql_query("INSERT INTO customerinfo (name) VALUES ('$name1')"; mysql_query("SELECT * FROM `orderinfo` where customerid=".$id"); mysql_query("COMMIT");

6、锁定表,优化事务处理:

a.我们用一个 SELECT 语句取出初始数据,通过一些计算,用 UPDATE 语句将新值更新到表中。

包含有 WRITE 关键字的 LOCK TABLE 语句可以保证在 UNLOCK TABLES 命令被执行之前,

不会有其它的访问来对 inventory 进行插入、更新或者删除的操作 mysql_query("LOCK TABLE customerinfo READ, orderinfo WRITE"); mysql_query("SELECT customerid FROM `customerinfo` where id=".$id); mysql_query("UPDATE `orderinfo` SET ordertitle='$title' where

customerid=".$id);

mysql_query("UNLOCK TABLES");

7、使用外键,优化锁定表

a.把 customerinfo 里的 customerid 映射到 orderinfo 里的 customerid,

任何一条没有合法的 customerid 的记录不会写到 orderinfo 里 CREATE TABLE customerinfo(

customerid INT NOT NULL,

PRIMARY KEY(customerid)

)TYPE = INNODB;

CREATE TABLE orderinfo(

orderid INT NOT NULL,

customerid INT NOT NULL,

PRIMARY KEY(customerid,orderid),

FOREIGN KEY (customerid) REFERENCES customerinfo (customerid) ON DELETE CASCADE

)TYPE = INNODB;

注意:'ON DELETE CASCADE',该参数保证当 customerinfo 表中的一条记录删除的话同时也会删除 order

表中的该用户的所有记录,注意使用外键要定义事务安全类型为 INNODB; 8、优化查询语句

a 用内连接代替子查询代替子查询,用 sphinx 代替 like 模糊查询


b最好在相同字段进行比较操作,在建立好的索引字段上尽量减少函数操作例子 1:

SELECT * FROM order WHERE YEAR(orderDate)<2008;(慢) SELECT * FROM order WHERE orderDate<"2008-01-01";(快)例子 2:

SELECT * FROM order WHERE addtime/7<24;(慢) SELECT * FROM order WHERE addtime<24*7;(快)例子 3:

SELECT * FROM order WHERE title like "%good%";



SELECT * FROM order WHERE title>="good" and name<"good"; 9、缓存,静态化

10、选择合适存储引擎用 Innodb 增删改,用 myisam 查询

11、主从数据库

12、负载均衡

13、最好拿数字类型的字段充当 where 条件

14、最好拿相同类型的字段进行比对(避免发生数据类型的转换)

15、不要在具有索引的字段上添加数据库函数(索引失效)

8.2 请简述项目中优化 sql 语句执行效率的方法,从哪些方面,sql 语句性能如何分析?

答:(1)选择最有效率的表名顺序

(2)WHERE 子句中的连接顺序

(3)SELECT 子句中避免使用‘*’

(4)用 Where 子句替换 HAVING 子句

(5)通过内部函数提高 SQL 效率

(6)避免在索引列上使用计算。

(7)提高 GROUP BY 语句的效率, 可以通过将不需要的记录在 GROUP BY 之前过滤

掉。

9.对于大流量网站,采用什么方法解决访问量问题?

1,确认服务器的硬件是否足够支持当前的流量

2,优化数据库的访问

3,禁止外部的盗链

4,控制大文件的下载

5,使用不同主机分流主要流量

6,使用流量分析统计软件

10.一个函数,能够遍历一个文件夹下的所有文件和子文件夹(20 分)

[AppleScript] 纯文本查看 复制代码
function dir_recurse($dir) {

$i = 1;

if($handle = opendir($dir)) {

while(false !== ($file = readdir($handle))) {

if($file != "."&& $file != ".." ) {

if(is_dir($dir."/".$file) == true) {

$fullpath = $dir."/".$file;

dir_recurse($fullpath);

echo "$fullpath\n";

$i++;

}else {

$fullpath = $dir."/".$file;

echo "$fullpath\n";
$i++;

}

}

}

closedir($handle);

}

}


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

[AppleScript] 纯文本查看 复制代码
function my_scandir($dir){

$files = array();

if ( $handle = opendir($dir) ) {

while ( ($file = readdir($handle)) !== false ) {

if ( $file != ".."&& $file != "." ) {

if ( is_dir($dir . "/" . $file) ) {

$files[$file] = scandir($dir . "/" . $file);

}else {

$files[] = $file;

}

}

}

closedir($handle);

return $files;

}

}


11、能够使 HTML 和 PHP 分离开使用的模板(1 分)

答:Smarty,Dwoo,TinyButStrong,Template Lite,Savant,phemplate,XTemplate

12、使用哪些工具进行版本控制?(1 分)

答:cvs,svn,vss;

13、如何实现字符串翻转?(3 分)

英文:

strrev($a)

中文或其他文字:

中文:GB2312, 代码是使用 GB2312 编码



<?php

function reverse($str)

{

$ret = "";

len=mb s trwidth( len=mbstrwidth(len = mb_strwidth(str,"GB2312"); for(i=0; i=0;i=0; i< len; len;len; i++) {

arr[]=mb        s        ubstr(        arr[]=mbsubstr(arr[]        =        mb_substr(str,        $i,        1,

"GB2312");

}

return implode("", array_reverse($arr));

}

print_r(reverse("你好"));


14.PHP 的意思(送 1 分)

PHP 是一个基于服务端来创建动态网站的脚本语言,您可以用 PHP 和 HTML 生成网站主



15.MYSQL 取得当前时间的函数是?,格式化日期的函数是(2 分)


答:now(),date()

16.用 PHP 写出显示客户端 IP 与服务器 IP 的代码 1 分)

答: 打 印 客 户 端 IP:echo $_SERVER[ ‘ REMOTE_ADDR ’ ]; 或 者 : getenv('REMOTE_ADDR');

打印服务器 IP:echo gethostbyname("www.bolaiwu.com")

17、语句 include 和 require 的区别是什么?为避免多次包含同一文件,可用(?)语句代替它们?

答:require->require 是无条件包含也就是如果一个流程里加入 require,无论条件成立

与否        都会先执行 require

include->include 有返回值,而 require 没有(可能因为如此 require 的速度比 include 快)

注意:包含文件不存在或者语法错误的时候 require 是致命的,include 不是

18.http 请求返回状态码

400请求无效

401未授权

403请求被禁止

404请求资源不存在

405请求资源被禁止

406无法接受

407要求代理身份验证

500 Internal Server Error 服务端源代码错误

600源站没有返回响应头部,只返回实现内容

19,linux 授权码:

600属主有读写权限

644属主有读写权限,属性组有读权限

700属主有读写执行权限

755属主有读写执行权限,属性组有读,执行权限

711属主有读写执行权限,属性组有执行权限

666所有用户都有文件的读写权限

777所有用户都有文件的读写执行权限

20.有一个网页地址, 比如 PHP 开发资源网主页: http://www.phpres.com/index.html, 如何得到它的内容?($1 分)

答:方法 1(对于 PHP5 及更高版本):

$readcontents = fopen("http://www.phpres.com/index.html", "rb"); $contents = stream_get_contents($readcontents); fclose($readcontents);

echo $contents; 方法 2:

echo file_get_contents("http://www.phpres.com/index.html");

21.在 PHP 中 error_reporting 这个函数有什么作用? (1 分)

答:设置错误级别与错误信息回报

22.JS 表单弹出对话框函数是?获得输入焦点函数是? (2 分)答:弹出对话框: alert(),prompt(),confirm()

获得输入焦点 focus()

23.foo()和@foo()之间有什么区别?(1 分)


答:@foo()控制错误输出

24、mysql_fetch_row() 和 mysql_fetch_array 之间有什么区别? (1 分)答:mysql_fetch_row 是从结果集取出 1 行数组,作为枚举

mysql_fetch_array 是从结果集取出一行数组作为关联数组,或数字数组,两者兼得

25、GD 库是做什么用的? (1 分)

答:gd 库提供了一系列用来处理图片的 API,使用 GD 库可以处理图片,或者生成图片。在网站上 GD 库通常用来生成缩略图或者用来对图片加水印或者对网站数据生成报表。

26.面向对象编程

有两个重要的概念:类和对象

类是具备某项功能的抽象模型,实际应用中,还需要对类进行实例化后使用。这样就引入了对象的概念。

对象是类进行实例化后的一个产物,是一个实体。

封装 :把客观的事物封装成一个抽象的类。
继承:子类继承父类,可以使用父类的属性和方法。可以实现接口,同时实现接口中的所有方法

多态:覆盖和重载 子类可以覆盖父类中的方法;一个类中可以同时拥有同一个函数名的方法,但是方法的参数不同,实现的结果也不同。

27.php 框架

熟悉 YII ,Thinkphp 还有 laravel ,symfony2,cakephp

28.mysql 存储引擎

ISAM: 查询速度快、增删改慢,支持全文索引、不支持外键、不支持事务

MyISAM:        ISAM 升级版

Memory:        数据驻留在内存、速度快、数据管理不稳定、断电后数据全部丢失

InnoDB:        速度较慢、支持外键、支持事务、不支持全文索引

使用的存储引擎

MyISAM:内容管理系统(新闻、官网、电商、软件下载、房屋、招聘...)        可读不可改        大

部分是浏览信息

InnoDB:技术型网站(bbs、blog、webo、oa...)


29.数据库操作流程

[PHP] 纯文本查看 复制代码
$link = mysql_connect("localhost","root","root"); mysql_select_db("test",$link); $sql ="select * from table";

$result = mysql_query($sql);

while($row =mysql_fetch_****($result) ){

$arr[]=$row;

}

$row = mysql_fetch_array($result)        意思:$row['name'] 和$row[1] 都可以取到值

$row = mysql_fetch_row($result)) 意思:$row[1] 只有用索引取值,偏移量从 0 开始。

$row = mysql_fetch_assoc($result)) 意思: $row['name'] 字段名作为索引取值 抽取一条记录转为 关联数组,失败返回 false


30.php 加密函数

crypt($str[,$slat]) 可以完成单向加密功能

md5()

sha1() 返回一个 40 位的十六进制数,

加密扩展库

Mcrypt() 和 Mash
回帖可见剩余的70道面试题哦~

每一道题都是老师们精心整理的

欢迎大家回帖查看~






作者: 100387510    时间: 2017-9-22 16:24
我来占一层了啊
作者: Rakishly    时间: 2017-9-22 18:18
【100家名企面试题PHP系列】Php 面试 100 题汇总含
作者: 乌龟    时间: 2017-9-22 20:44
66666666666666666666666666
作者: 327083434    时间: 2017-9-23 23:39

作者: p91919    时间: 2017-9-24 16:26
这个也可以看看
作者: zangalong    时间: 2017-9-25 18:02
谢谢老师!看了能够受益多多
作者: 哼哈二将    时间: 2017-9-26 16:08
去去去去去去群
作者: whtxss    时间: 2017-9-26 17:00
ddhGdBjyhjj
作者: longskyer    时间: 2017-9-29 17:19
黑马100家it名企面试大合集下载
作者: wyhuaheima    时间: 2017-9-30 18:27
很不错的面试题
作者: hellodr    时间: 2017-10-1 12:28
不错不错不错不错不错不错不错
作者: 遗忘的记忆    时间: 2017-10-3 21:47
56468548566 二代的
作者: 神经哥    时间: 2017-10-4 12:54
我得提前了解啊,呵呵呵!
作者: 枝间    时间: 2017-10-5 22:53
谢谢求下载
作者: lonely1314    时间: 2017-10-6 15:29
给力给力给力给力给力给力给力
作者: Ruin    时间: 2017-10-8 23:43
Php 面试 100 题汇总含答案
作者: bug太上皇    时间: 2017-10-10 13:33




作者: bug太上皇    时间: 2017-10-10 13:35

作者: 雷攀博    时间: 2017-10-14 08:45
PHP······
作者: wangenbin    时间: 2017-10-16 11:59
66666666666666666666666
作者: a88440102    时间: 2017-10-16 16:28

作者: chenxuyu    时间: 2017-10-20 08:46
感谢楼主分享。。。
作者: AD老猫    时间: 2017-10-22 16:08
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
作者: 噬魂勇者    时间: 2017-10-27 19:20
谢谢分享
作者: Ayer    时间: 2017-10-28 12:33
资源不错!!!
作者: jinxiaochen521    时间: 2017-10-30 13:27
给力给力给力给力给力给力
作者: 3154183196    时间: 2017-10-31 00:04
回复vNB吹吹风
作者: taozi96    时间: 2017-10-31 11:23
谢谢指导
作者: yangtangxia    时间: 2017-11-3 10:56
哈哈哈哈哈或
作者: 返工好累    时间: 2017-11-9 13:38
说好的 下载链接  老师是不是忘记设置超连接 咋下载不了
作者: msj521    时间: 2017-11-20 20:49

这个也可以看看
作者: gz_xudada    时间: 2017-12-2 15:32
不错不错
作者: xxiaogongchang    时间: 2017-12-11 11:06
看看怎么样

作者: enque    时间: 2017-12-12 23:27
新人学习,666666
作者: 超级流川枫    时间: 2017-12-14 21:55
谢谢楼主分享
作者: 金海环境    时间: 2017-12-16 15:10
qqqqqqqqqqqqqqqqqqqqqq
作者: tianxiawu    时间: 2017-12-20 11:44
谢谢分享!
作者: +1大叔    时间: 2017-12-23 08:27
好腻害,老师辛苦了
作者: himmee    时间: 2017-12-26 14:20
给力给力给力给力给力给力给力给力
作者: phpMyadmin    时间: 2017-12-27 09:11
phpMyadmin

作者: 活不好不要昆    时间: 2018-1-11 18:25
面试正用得上呢,哈哈哈!!!~666666666
作者: 1096189368    时间: 2018-1-11 22:52
谢谢了,真的很需要这些东西
作者: gyfluck    时间: 2018-1-12 14:55
学知识、学知识、学知识、学知识
作者: Anmixiu    时间: 2018-1-13 06:53
66666666666666

作者: 米青子加温    时间: 2018-1-16 22:46
好的啦咯啦咯啦咯啦咯啦咯啦咯啦咯

作者: chinapoco    时间: 2018-1-17 08:27
1111111111
作者: x1a0miracle    时间: 2018-1-24 14:40
给黑马来点个赞
作者: qauwang    时间: 2018-1-24 16:11
十分感谢老师的分享!
作者: jca123321    时间: 2018-1-24 20:52
赞赞赞赞赞赞赞赞
作者: 807600577    时间: 2018-1-25 17:30
学习一下O(∩_∩)O谢谢
作者: 身穿大幅    时间: 2018-1-27 14:19
heimahenbang
作者: 路上星火    时间: 2018-1-31 11:25
爱的飒飒放散阀
作者: zjn    时间: 2018-2-3 18:21
haohaohoahohoahoaoahoaoahaoha
作者: Sunshine丶星空    时间: 2018-2-5 20:37
哇还有隐藏内容?????????????
作者: 1372239266    时间: 2018-2-7 23:57
66666666666666666666666666666666666
作者: _Error    时间: 2018-2-15 13:35

作者: Vienen    时间: 2018-2-23 14:10
【100家名企面试题PHP系列】
作者: 疯的飞翔    时间: 2018-2-24 16:01
henhao
作者: 1426503716    时间: 2018-2-28 21:55
测试测试测试测试测试测试测试测试测试测试测试测试测试
作者: Mr_XieZhiQ    时间: 2018-2-28 22:09
谢谢分享
作者: 创兴社团老二    时间: 2018-2-28 22:53
我要看剩余的70道面试题 谢谢老师

作者: wujiajin    时间: 2018-3-1 20:32
学习学习
作者: wdx435744921    时间: 2018-3-2 15:05
kankankankankan
作者: 曹大牛    时间: 2018-3-2 15:09
看看,学习。 ̄  ̄)σ
作者: 这,些·年。    时间: 2018-3-3 19:53
999999999999999999999
作者: itbaidu    时间: 2018-3-4 12:17
一看 就是精心整理的
作者: czh37759    时间: 2018-3-4 17:27
谢谢分享,学习了
作者: 大鼓    时间: 2018-3-5 11:08
666666666666666666666666
作者: 囧囧爱学习    时间: 2018-3-6 15:09
感谢楼主分享
作者: 行者常至    时间: 2018-3-7 13:09
我要好好学习
作者: WZLqingcheng    时间: 2018-3-10 20:15
小白求看  
作者: monco0421    时间: 2018-3-11 21:04
面试00家名企面试题PHP系列
作者: a19911126123    时间: 2018-3-12 11:25
感谢分享
作者: 我是一棵小草    时间: 2018-3-15 11:31
发生过发电设备更新电子版
作者: xyxy    时间: 2018-3-16 01:34
想要,太赞了
作者: 木公007    时间: 2018-3-16 09:52
11111111111
作者: 木公007    时间: 2018-3-16 09:53
1111111111111111111111
作者: 0uyangtian    时间: 2018-3-16 21:48
666666666666
作者: 人间失格    时间: 2018-3-17 15:48
学习一下面试题
作者: doujiang    时间: 2018-3-19 10:33
来看面试题
作者: 小冰凌    时间: 2018-3-19 12:37
学习PHP使我快乐
作者: 一抹残心    时间: 2018-3-20 15:27
Php 面试 100 题汇总含
作者: XSG_SH    时间: 2018-3-21 16:28
查看学习学习,哈哈哈哈
作者: sdlllllyko    时间: 2018-3-22 08:20
赞一个,赞一个,赞一个,赞一个
作者: running-fly    时间: 2018-3-22 13:49
看一下,连一下啊,复习一下原来的知识。
作者: 胡坤鹏    时间: 2018-3-23 22:52
黑马桃李满天下
作者: IYS    时间: 2018-3-24 20:37
666666666666666666666666
作者: PHP7期咸鱼一枚    时间: 2018-3-25 19:59

作者: 小贰狼    时间: 2018-3-26 18:54
66666666666666666666666666666
作者: niexiaohui    时间: 2018-3-29 08:18
100家名企面试题PHP系列
作者: k先生    时间: 2018-3-29 22:55
谢谢分享资源
作者: 黑色的三    时间: 2018-4-1 21:03
顶顶楼主,学习中
作者: 剑海情涛    时间: 2018-4-3 18:26
我就看看,学习学习!
作者: lapmood    时间: 2018-4-3 23:47
66666666666666
作者: 笨崽崽    时间: 2018-4-4 15:27
bangbangdabangbangdabangbangdabangbangdabangbangda
作者: lkw    时间: 2018-4-10 11:25
111111111111111111
作者: bareking    时间: 2018-4-12 17:14
谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢
作者: 热爱世界    时间: 2018-4-14 14:35
来看看罗 GET起来
作者: 咿呀咿呀哟    时间: 2018-4-16 11:43
感谢分享





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