值得一看:PHP程序员面试经常考的题目

发布时间:2018-01-13 18:07:18编辑:丝画阁阅读(740)

1、什么事面向对象?主要特征是什么?

面向对象是程序的一种设计方式,它利于提高程序的重用性,使程序结构更加清晰。主要特征:封装、继承、多态。

2、SESSION 与 COOKIE 的区别是什么,请从协议,产生的原因与作用说明?

http 无状态协议,不能区分用户是否是从同一个网站上来的,同一个用户请求不同的页面不能看做是同一个用户。

SESSION 存储在服务器端,COOKIE 保存在客户端。Session 比较安全,cookie 用某些手段可以修改,不安全。Session 依赖于 cookie 进行传递。

禁用 cookie 后,session 不能正常使用。Session 的缺点:保存在服务器端,每次读取都从服务器进行读取,对服务器有资源消耗。Session 保存在服务器端的文件或数据库中,默认保存在文件中,文件路径由 php 配置文件的 session.save_path 指定。Session 文件是公有的。

3、不使用 cookie 向客户端发送一个 cookie.

理解:session_start()开启时,生成一个常量SID,当 COOKIE 开启时,这个常量为空,当 COOKIE 关闭时,这个常量中存储了 PHPSESSID 的值。通过在 URL 后加一个 SID 参数来传递 SESSIONID 的值,从而使客户端页面可以使用SESSION里面的值。当客户端开启COOKIE和服务器端开启 SESSION 时。浏览器第一次请求,服务器会向浏览器端发送一个 COOKIE 里面存储 SESSIONID. 当浏览器第二次请求时,会把已存在的 COOKIE 一起提交到服务器端。

4、HTTP 状态中 302、403、 500、200、404、502 代码含义?

一二三四五原则: 一. 消息系列 二. 成功系列三. 重定向系列 四. 请求错误系列 五. 服务器

端错误系列 302:临时转移成功,请求的内容已转移到新位置 403:禁止访问 500:服务器内部错误 401 代表未授权。 200 是请求成功,404 是文件未找到,502 是服务器内部错误。

5、请写出数据类型(int char varchar datetime text)的意思;请问 varchar 和 char 有什么区别?

char 是固定长度的字符类型,分配多少空间,就占用多长空间。 Varchar 是可变长度的字符类型,内容有多大就占用多大的空间,能有效节省空间。Varchar是变长,节省存储空间,char 是固定长度。查找效率要 char 型快,因为 varchar 是非定长,必须先查找长度,然后进行数据的提取,比 char 定长类型多了一个步骤,所以效率低一些

6、表单中 get 与 post 提交方法的区别?

1. get 是把参数数据队列加到提交表单的 ACTION 属性所指的 URL 中,值和表单内各个字段一一对应,在 URL 中可以看到。post 是通过 HTTP post 机制,将表单内各个字段与其内容放置在 HTML HEADER 内一起传送到 ACTION 属性所指的 URL 地址。用户看不到这个过程。

2.对 于 get 方 式 , 服 务 器 端 用Request.QueryString 获取变量的值,对于 post 方式,服务器端用 Request.Form 获取提交的数据。

3. get 传送的数据量较小,不能大于2KB。post 传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB。 get 安全性非常低,post 安全性较高。

7、include 与 require 的区别?

1.include()在执行文件时每次都要进行读取和评估,require()文件只处理一次(实际上文件内容替换了 require()语句)

2.require()通常放在 PHP 脚本程序的最前面,include()的使用和require()一样,一般放在流程控制的处理区段中,PHP 脚本文件读到 include()语句时,才将它包含的文件读进来,这种方式,可以把程序执行时的流程简单化

3,require()和 include()语句是语言结构,不是真正的函数,可以像 PHP 的其他语言结构一样

4,include_once()和 require_once()语句也是在脚本执行期间包括并运行指定文件,与include()require()唯一的区别是如果文件中的代码已经被包括了,则不会再次包括.

5,require()包含文件失败,停止执行,给出错误(致命的),include()常用于动态包含,通常是自动加载的文件,即使加载出错,整个程序还是继续执行,一个页面声明,另一个页面调用,包函文件失败,继续向下执行,返回一条警告

8、请说明 PHP 中传值与传引用的区别。什么时候传值什么时候传引用?

按值传递:函数范围内对值的任何改变在函数外部都会被忽略

按引用传递:函数范围内对值的任何改变在函数外部也能反映出这些修改

优缺点:按值传递时,php 必须复制值。特别是对于大型的字符串和对象来说,这将会是一个代价很大的操作。按引用传递则不需要复制值,对于性能提高很有好处。

9、什么是数据库索引,主键索引,唯一索引的区别,索引的缺点是什么?

索引用来快速地寻找那些具有特定值的记录。

主键索引和唯一索引的区别:主键是一种唯一性索引,但它必须指定为“PRIMARY KEY”,每个表只能有一个主键。唯一索引索引列的所有值都只能出现一次,即必须唯一。

索引的缺点:1、创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加。

2、索引需要占用物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果要建立聚簇索引,需要的空间就会更大。

3、当对表中 的数据进行增加、删除、修改的时候,索引也要动态的维护,这样就降低了数据的维护速度。

10、web 应用中,数据库的读取频率远高于写入频率, 如何优化 MySQL 而应对此种情景?

使用 memcache 缓存技术,将动态数据缓存到文件,访问动态页面时直接调用缓存文件,而不必重新访问数据库,这样就减少了查询数据库的次数。

库读写服务器分开,使用多态服务器去处理数据库查询,使用较少的服务器去处理数据库的写入和修改。

11、浏览器 IE 和非 IE 浏览器的划分,区别是什么?

IE 浏览器指的是使用 IE 内核的浏览器,对一些 W3C 标准的网页代码的支持不是很好。

非 IE 浏览器指的是没有使用 IE 内核的浏览器,对 W3C 标准的网页代码有很好的支持。

12、PHP 字符串中单引号与双引号的区别?

单引号不能解释变量,而双引号可以解释变量。

单引号不能转义字符,在双引号中可以转义字符。

13、MyISAM 和 InnoDB 的基本区别?索引结构如何实现?

MyISAM 类型不支持事务处理等高级处理,而InnoDB 类型支持。MyISAM 类型的表强调的是性能,其执行速度比 InnoDB 类型更快,但是不提供事务支持,而 InnoDB 提供事务支持以及外部键等高级数据库功能。

创建索引:alert table tablename add index (` 字段名`)

14、数据库设计时,常遇到的性能瓶颈有哪些,常有的解决方案?

瓶颈主要有:1、磁盘搜索 优化方法是:将数据分布在多个磁盘上2、磁盘读/写 优化方法是:从多个磁盘并行读写。3、CPU 周期 优化方法:扩充内存4、内存带宽

15、了解 XSS 攻击吗? 如何防止 ?

XSS 是跨站脚本攻击,首先是利用跨站脚本漏洞以一个特权模式去执行攻击者构造的脚本,然后利用不安全的 Activex 控件执行恶意的行为。

使用 htmlspecialchars()函数对提交的内容进行过滤,使字符串里面的特殊符号实体化。

关键字