没有合适的资源?快使用搜索试试~ 我知道了~
首页PHP面试题总汇__整理完整版
资源详情
资源评论
资源推荐

-- LAMP 40 --
PHP
的意思
是一个基于服务端来创建动态网站的脚本语
言,您可以用 和 生成网站主页
什么 是 面向对象?主要特征是什么?
面向对象是程序的一种设计方式,它利于提高程
序的重用性,使程序结构更加清晰。主要特征:封装、
继承、多态。
SESSION 与 COOKIE
的区别是什么,请从协议,产
生的原因与作用说明 ?
、 无状态协议,不能区分用户是否是从同
一个网站上来的,同一个用户请求不同的页面不能看做
是同一个用户。
、 存储在服务器端, 保存在
客户端。 比较安全, 用某些手段可以
修改,不安全。 依赖于 进行传递。
禁用 后, 不能正常使用。Session
的缺点:保存在服务器端,每次读取都从服务器进行读
取,对服务器有资源消耗。 保存在服务器端的
文件或数据库中,默认保存在文件中,文件路径由
配置文件的 指定。
文件是公有的。
不使用
cookie
向客户端发送一个
cookie.
理解:()开启时,生成一个常量
,当 开启时,这个常量为空,当
关闭时,这个常量中存储了 的值。通过在
后加一个 参数来传递 的值,从
而使客户端页面可以使用 里面的值。 当客
户端开启 和服务器端开启 时。 浏
览器第一次请求,服务器会向浏览器端发送一个
里面存储 !当浏览器第二次请求
时,会把已存在的 一起提交到服务器端。
简述
Cookie
的设置及获取过程
设置 的值:
"名称,值,保存时间,有效域#$
获取值:%&'名称'($
HTTP 状态中
302 、 403 、
500 、 200 、 404 、 502
代码含义?
一二三四五原则)!一!消息系列 二!成功系列 三!重
定向系列 四!请求错误系列 五!服务器端错误系列
*+)临时转移成功,请求的内容已转移到新位置 ,+*)
禁止访问 -++)服务器内部错误 ,+ 代表未授权。
++ 是请求成功,,+, 是文件未找到,-+ 是服务器
内部错误。
请写出数据类型 (int char varchar datetime
text) 的意思;请问 varchar 和 char
有什么区别?
.、!整数 !定长字符 /!变长字符
0!日期时间型 1!文本型 Varchar 与
char 的区别 是固定长度的字符类型,分配多少
空间,就占用多长空间。 / 是可变长度的字符
类型,内容有多大就占用多大的空间,能有效节省空间。
/ 是变长,节省存储空间, 是固定长度。
查找效率要 型快,因为 是非定长,必须
先查找长度,然后进行数据的提取,比 定长类型
多了一个步骤,所以效率低一些
MyISAM 和 InnoDB 的基本区别?索引结构如何实
现?
23 类型不支持事务处理等高级处理,而
4 类型支持。23 类型的表强调的是性能,
其执行速度比 4 类型更快,但是不提供事务支
持,而 4 提供事务支持以及外部键等高级数据
库功能。
创建索引:5!65!650!77!71!
"8字段名8#
isset() 和 empty() 区别
! 判断变量是否存在,如果存在则返回真,
02 判断变量是否为空为假,如果为空为假则返回
真。
include
与
require
的区别 ?
597"#在执行文件时每次都要进行读取和评估
!!:9"#文件只处理一次"实际上文件内容替换
了 :9"#语句#
:9"#通常放在 脚本程序的最前面
!!597"#的使用和 :9"#一样;一般放在流
程控制的处理区段中; 脚本文件读到 597"#语
句时;才将它包含的文件读进来;这种方式;可以把程序执
行时的流程简单化
*;:9"#和 597"#语句是语言结构;不是真正的
函数;可以像 的其他语言结构一样
,;597"#和 :9"#语句也是
在脚本执行期间包括并运行指定文件;与
597"#:9"#唯一的区别是如果文件中的代码已
经被包括了;则不会再次包括
1

-- LAMP 40 --
-;:9"#包含文件失败;停止执行;给出错误"致
命的#
597"#常用于动态包含
通常是自动加载的文件;即使加载出错;整个程序还
是继续执行
一个页面声明;另一个页面调用
包函文件失败;继续向下执行;返回一条警告
PHP
字符串中单引号与双引号的区别 ?
单引号不能解释变量,而双引号可以解释变量。
单引号不能转义字符,在双引号中可以转义字符。
请说明 PHP 中传值与传引用的区别。什么时候传值什
么时候传引用?
按值传递:函数范围内对值的任何改变在函数外
部都会被忽略
!!! 按引用传递:函数范围内对值的任何改变在函数
外部也能反映出这些修改
!!! 优缺点:按值传递时, 必须复制值。特别是
对于大型的字符串和对象来说,这将会是一个代价很大
的操作。按引用传递则不需要复制值,对于性能提高很
有好处。
<9!"=%#
>
%?%@++$
A
%6?$
!%6$BB输出1
"%6#$!!!BB这里%6 传递给函数的其实是%6 的变量内
容所处的内存地址,通过在函数里改变% 的值 就可
以改变%6 的值了
!CD6EC$
!%6$BB输出 +
in, not in , exist, not exist
的作用和区别?
在什么中
!!不在什么中
1!存在
!1!不存在
面向对象中接口和抽象类的区别及应用场景 ?
、有抽象方法的类叫做抽象类,抽象类中不一定有抽
象方法,抽象方法必须使用 6 关键字定义。
、接口中全部是抽象方法;方法不用使用 6 定
义。
*、当多个同类的类要设计一个上层,通常设计为抽象
类,当多个异构的类要设计一个上层,通常设计为接口。
echo(),print(),print_r() 的区别?
是 语句;! 和 是函数;语句
没有返回值;函数可以有返回值"即便没有用#!!
!!!"#只能打印出简单类型变量的值"如 ;F#!
!!!"#可以打印出复杂类型变量的值"如数组;对
象#!!
!!!!!输出一个或者多个字符串
mysql_fetch_row() 和
mysql_fetch_array
之
间有什么区别 ?
2:5<G"#以索引数组的方式取查询的结果
集,02:5<2"#以索引数组和关联数组两种
方式取查询的结果集。
请描述出两点以上
XHTML
和
HTML
最显著的区别
"#H 必须强制指定文档类型 2,
不需要
"#H 所有标签必须闭合, 比较随意
33. HTTP
协议中
GET 、 POST
和
HEAD
的区别?
3: 只请求页面的首部。
I: 请求指定的页面信息,并返回实体主体。
: 请求服务器接受所指定的文档作为对所标识的
的新的从属实体。
()!定义了与服务器交互的不同方法,最基本
的方法是 I!和 。事实上 I!适用于多数请
求,而保留 !仅用于更新站点。
()在 J 提交的时候,如果不指定 7,则
默认为 I 请 求,J0 中提交的数据将会附加在 95
之后,以K分开与 95 分开。字母数字字符原样发送,
但空格转换为“@L号,其它符号转换为MHH;其中 HH
为 该符号以 N 进制表示的 3(或 !O)
值。I 请求请提交的数据放置在 请求协议头
中,而 提交的数据则放在实体数据中;
I 方式提交的数据最多只能有 +, 字节,而
则没有此限制。
(*)I!这个是浏览器用语向服务器请求最常用的方
法。 这个方法也是用来传送数据的,但是与
I 不同的是,使用 的时候,数据不是附在
后面传递的,而是要做为独立的行来传递,此时还
必须要发送一个 5F 标题,以标明数据
长度,随后一个空白行,然后就是实际传送的数据。网
页的表单通常是用 来传送的。
表 单 中 get
与
post
提 交 方 法 的 区 别 ?
2

-- LAMP 40 --
!F 是把参数数据队列加到提交表单的 3
属性所指的 中,值和表单内各个字段一一对应,
在 中可以看到。 是通过 ! 机制,
将表单内各个字段与其内容放置在 !3 内
一起传送到 3 属性所指的 地址。用户看不
到这个过程。
! 对 于 F 方 式 , 服 务 器 端 用
:9P92F 获取变量的值,对于 方
式,服务器端用 :9J0 获取提交的数据。
*!F 传送的数据量较小,不能大于 4。
传送的数据量较大,一般被默认为不受限制。但理论上,
, 中最大量为 Q+4,- 中为 ++4。
F 安全性非常低, 安全性较高。
foo() 和 @foo() 之间有什么区别 ?(1
分 )
R<"#控制错误输出
线性表和顺序表的区别?
、线性表包括顺序表和链表。
、顺序表中的元素的地址是连续的,链表里面节
点的地址不是连续的,是通过指针连起来的。
什么是数据库索引,主键索引,唯一索引的区别,索引
的缺点是什么?
索引用来快速地寻找那些具有特定值的记录。
主键索引和唯一索引的区别:主键是一种唯一性索引,
但它必须指定为“ 3 STSU;每个表只能有一个主
键。唯一索引索引列的所有值都只能出现一次,即必须
唯一。
索引的缺点:
、创建索引和维护索引要耗费时间,这种时间随着数
据量的增加而增加。
、索引需要占用物理空间,除了数据表占数据空间之
外,每一个索引还要占一定的物理空间,如果要建立聚
簇索引,需要的空间就会更大。
*、当对表中 的数据进行增加、删除、修改的时候,索
引也要动态的维护,这样就降低了数据的维护速度。
浏览器
IE
和非
IE
浏览器的划分,区别是什么?
浏览器指的是使用 内核的浏览器,对一些 V*
标准的网页代码的支持不是很好。
非 浏览器指的是没有使用 内核的浏览器,对
V* 标准的网页代码有很好的支持。
数据库中的事务是什么 ?
事务()是作为一个单元的一组有序
的数据库操作。如果组中的所有操作都成功,则认为事
务成功,即使只有一个操作失败,事务也不成功。如果
所有操作 完成,事务则提交,其修改将作用于所有其
他数据库进程。如果一个操作失败,则事务将回滚,该
事务所有操作的影响都将取消。
解释 : 左连接 , 右连接 , 内连接 , 索引。
、內连接仅选出两张表中互相匹配的记录.因此,这
会导致有时我们需要的记录没有包含进来。内部连接是
两个表中都必须有连接字段的对应值的记录,数据才能
检索出来。
、左连接和右连接都是外部连接,也就是区别于内部
连接,它对不满足连接条件的行并不是象内部连接一样
将数据完全过滤掉,而是保留一部分数据,行数不会减
少。
*、左连接是只要左边表中有记录,数据就能检索出来,
而右边有的记录必要在左边表中有的记录才能被检索出
来
,、右连接是只要右边表中有记录,数据就能检索出来 ;
-、全连接则会回返回两个表中的所有记录
简述
0000000
中无限分类的实现原理。
、数据库分类表的设计:7 字段、父 7 字段、类名
称字段、 字段
、 字段存当前分类的路径,格式:+;父类 7;本
身 7
*、查询分类:5!W!<0!分类表 7!62!!
$
,、这样就查出来每个分类及其对应的子类。
能够使
html
和
php
分离开使用的模板?
02、05、5605、J05
使用那些工具进行版本控制?
5!
、/、/、/、<、、
0、
写出三种以上
MySQL
数据库存储引擎的名称(提示 :
不区分大小写)
23、4、44(452!
4)、F、02()、105、J
77、3、/、455、14!等
等十几个引擎
3

-- LAMP 40 --
什么是模板技术、能够使
HTML
和
PHP
分离开使用
的模板?
模板技术就是使程序的逻辑代码和界面分开的技术。
能够使 和 分开的模板有:
02、05、56!
05、J05
实现中文字串截取无乱码的方法
696"#$
用
PHP
写出显示客户端
IP
与服务器
IP
的代码
获取客户端 :F"L 3 U#$
获取服务器端 :% / &C / 3 C($
数据库索引有几类,分别是什么?什么时候该用索引?
普通索引、主键索引、唯一索引
并非所有的数据库都以相同的方式使用索引,作为通用
规则,只有当经常查询列中的数据时才需要在表上创建
索引。
写几个魔术方法并说明作用?
55"#当调用不存在的方法时会自动调用的方法
957"#在实例化一个尚未被定义的类是会自动
调用次方法来加载类文件
"#当给未定义的变量赋值时会自动调用的方法
F"#当获取未定义变量的值时会自动调用的方法
9"#构造方法,实例化类时自动调用的方法
72"#销毁对象时自动调用的方法
9"#当对一个未定义变量调用 9"#时自动调
用的方法
"#当对一个未定义变量调用 "#方法时自动
调用的方法
5"#克隆一个对象
F"#当输出一个对象时自动调用的方法
$_REQUEST 、 $_POST 、 $_GET 、 $_COOKIE 、
$_SESSION 、 $_FILE
的意思是什么?
它们都是 预定义变量
% P 用来获取 或 F 方式提交的值
% 用来获取 方式提交的值
%I 用来获取 F 方式提交的值
% 用来获取 存储的值
% 用来获取 存储的值
%J 用来获取上传文件表单的值
数组中下标最好是什么类型的,为什么?
数组的下标最好是数字类型的,数字类型的处理速度快。
++i
和
i++ 哪一个效率高,为什么?
@@ 效率比 @@的效率更高,因为@@ 少了一个返回
的过程。
magic_quotes_gpc() 、 magic_quotes_runti
me() 的意思是什么?
F:9F"#是 配置文件中的,如果设
置为 则会自动 ;I; 中的字符串进
行转义,在‘之前加X
F:990"#是 中的函数,如果参
数为 9 则会数据库中取出来的单引号、双引号、反
斜线自动加上反斜杠进行转义。
框架中什么是单一入口和多入口,单一入口的优缺点?
、多入口就是通过访问不同的文件来完成用户请求。
单一入口只 G6 程序所有的请求都指向一个脚本文件
的。
、单一入口更容易控制权限,方便对 请求可以
进行安全性检查。
缺点: 看起来不那么美观,特别是对搜索引擎来
说不友好。
你对
Memcach
的理解,优点有哪些?
0 是一种缓存技术,在一定的时间内将动态
网页经过解析之后保存到文件,下次访问时动态网页就
直接调用这个文件,而不必在重新访问数据库。使用
00 做缓存的好处是:提高网站的访问速度,
减轻高并发时服务器的压力。
0 的优点:稳定、配置简单、多机分布式存
储、速度快。
对关系型数据库而言,索引是相当重要的概念,请回答
有关索引几个问题:
a) 索引的目的是什么 ?
、快速访问数据表中的特定信息,提高检索速度
、创建唯一性索引,保证数据库表中每一行数据的唯
一性
*、加速表和表之间的连接
,、使用分组和排序子句进行数据检索时,可以显著减
少查询中分组和排序的时间
b) 索引对数据库系统的负面影响是什么 ?
负面影响:创建索引和维护索引需要耗费时间,这个时
间随着数据量的增加而增加;索引需要占用物理空间,
不光是表需要占用数据空间,每个索引也需要占用物理
4

-- LAMP 40 --
空间;当对表进行增、删、改的时候索引也要动态维护,
这样就降低了数据的维护速度。
c) 为数据表建立索引的原则有哪些 ?
、在最频繁使用的、用以缩小查询范围的字段上建立
索引
、在平频繁使用的、需要排序的字段上建立索引
d) 什么情况下不宜建立索引 ?
、对于查询中很少涉及的列或者重复值比较多的列,
不宜建立索引
、对于一些特殊的数据类型,不宜建立索引,比如文
本字段"1#等。
web
应用中 , 数据库的读取频率远高于写入频率 , 如何
优化
MySQL
而应对此种情景 ?
使用 00 缓存技术,将动态数据缓存到文件,
访问动态页面时直接调用缓存文件,而不必重新访问数
据库,这样就减少了查询数据库的次数。
如果网站的访问量很大,可以把数据库读写服务器分开,
使用多态服务器去处理数据库查 询,使用较少的服务
器去处理数据库的写入和修改。
如果是一个
Web
频繁访问的查询,上题的查询如何优
化?
使用 00 缓存技术,在一定时间内将动
态内容缓存到文件中,访问动态页面时,世界调用缓存
文件而不必重新查询数据库。
数据库设计时,常遇到的性能瓶颈有哪些,常有的解决
方案?
瓶颈主要有:
、磁盘搜索 优化方法是:将数据分布在多个磁盘上
、磁盘读B写 优化方法是:从多个磁盘并行读写。
*、 周期 优化方法:扩充内存
,、内存带宽
请举例说明在你的开发过程中用什么方法来加快页面的
加载速度
要用到服务器资源时才打开,及时关闭服务器资
源,数据库添加索引,页面可生成静态,图片等大文件
单独服务器。使用代码优化工具。
描述一下大流量高并发量网站的解决方案
!!!、确认服务器硬件是否足够支持当前的流量。
!!!、使用 00 缓存技术,将动态数据缓存到
内存中,动态网页直接调用这些文件,而不必在访问数
据库。
!!!*、禁止外部的盗链。
!!!,、外部网站的图片或者文件盗链往往会带来大量的
负载压力,因此应该严格限制外部对自身图片或者文件
盗链,目前可以简单的通过 < 来控制盗链,
自己就可以通过配置来禁止盗链。
!!!-、控制大文件的下载。
!!!大文件的下载会占用很大的流量,对于非 硬盘
来说会消耗,使得网站响应能力下降。
!!!N、使用不同的主机分流主要流量
!!!Y、使用流量统计软件。
!!在网站上安装一个流量统计软件,可以即时知道哪些
地方耗费了大量流量,哪些页面需要再进行优化。
!!!Q、分库分表。
!!!.、1 全文索引引擎。
对于大流量的网站 , 您采用什么样的方法来解决访问量
问题 ?
优化程序,优化数据库,如果程序和数据库已经最优化,
使用以下解决方法:
、确定当前服务器设备是否满足流量需求。
、使用 0 缓存技术,把动态内容缓存到文
件中,动态网页直接调用这些文件,而不必再访问数据
库。
*、禁止外部盗链,图片和文件外部盗链会给服务器带
来大量的负载压力,可以通过 < 来禁止外部盗链,
或者使用 来配置禁止盗链。
,、控制大文件的下载,大文件的下载对于非 硬
盘来说会占用大量的资源,导致服务器的响应能力下降。
-、使用不同的主机分流主要流量,使服务器均衡负载。
N、使用流量统计软件统计分析网站流量,可以知道哪
些地方耗费了大量的流量,哪些页面需要再进行优化。
如何设计或配置
Mysql ,才能达到高效使用的目的。
!!!、数据库设计方面,设计结构良好的数据库,允许
部分数据冗余。
!!!选取最适用的字段属性,尽可能把字段设置为
,这样在查询的时候,数据库不用去比较
值。
!!!、系统架构设计方面,表散列,把海量数据散列到
几个不同的表里面,集群,数据库查询和写入分开。
写高效 :5 语句,以提高效率。
使用连接"Z#来代替子查询
使用联合"9#来代替手动创建的临时表
所得皆必须,只从数据库取必须的数据。
5
剩余28页未读,继续阅读












安全验证
文档复制为VIP权益,开通VIP直接复制

评论1