2019最新整理PHP面试题附答案

1、什么事面向对象?主要特征是什么?
面向对象是程序的一种设计方式,它利于提高程序的重用性,使程序结构更加清晰 。主要特征:封装、继承、多态 。
2、SESSION 与 COOKIE的区别是什么,请从协议,产生的原因与作用说明?
A、http无状态协议,不能区分用户是否是从同一个网站上来的,同一个用户请求不同的页面不能看做是同一个用户 。
B、SESSION存储在服务器端,COOKIE保存在客户端 。Session比较安全,cookie用某些手段可以修改,不安全 。Session依赖于cookie进行传递 。
禁用cookie后,session不能正常使用 。Session的缺点:保存在服务器端,每次读取都从服务器进行读取,对服务器有资源消耗 。Session保存在服务器端的文件或数据库中,默认保存在文件中,文件路径由php配置文件的session.save_path指定 。Session文件是公有的 。
3、HTTP 状态中302、403、 500代码含义?
一二三四五原则:(即一:消息系列;二:成功系列; 三:重定向系列;四:请求错误系列;五:服务器端错误系列 。)
302:临时转移成功,请求的内容已转移到新位置
403:禁止访问
500:服务器内部错误
401:代表未授权 。
4、请写出数据类型(int char varchar datetime text)的意思;请问 varchar 和 char有什么区别?
Int 整数char 定长字符 Varchar 变长字符 Datetime 日期时间型Text 文本型 Varchar与char的区别 char是固定长度的字符类型,分配多少空间,就占用多长空间 。Varchar是可变长度的字符类型,内容有多大就占用多大的空间,能有效节省空间 。由于varchar类型是可变的,所以在数据长度改变的时,服务器要进行额外的操作,所以效率比char类型低 。
5、MyISAM和 InnoDB 的基本区别?索引结构如何实现?
A、MyISAM类型不支持事务,表锁,易产生碎片,要经常优化,读写速度较快,适合用于频繁查询的应用;
B、InnoDB类型支持事务,行锁,有崩溃恢复能力,读写速度比MyISAM慢,适合于插入和更新操作比较多的应用,空间占用大,不支持全文索引等 。
创建索引:alert table tablename add index 索引名 (`字段名`)
6、isset() 和 empty() 区别
isset判断变量是否存在,可以传入多个变量,若其中一个变量不存在则返回假;empty判断变量是否为空为假,只可传一个变量,如果为空为假则返回真 。
7、请说明 PHP 中传值与传引用的区别 。什么时候传值什么时候传引用?
按值传递:函数范围内对值的任何改变在函数外部都会被忽略
按引用传递:函数范围内对值的任何改变在函数外部也能反映出这些修改
优缺点:按值传递时,php必须复制值 。特别是对于大型的字符串和对象来说,这将会是一个代价很大的操作 。按引用传递则不需要复制值,对于性能提高很有好处 。
8、在PHP中error_reporting这个函数有什么作用?
设置PHP的报错级别并返回当前级别 。
9、说说你对缓存技术的了解?
缓存技术是将动态内容缓存到文件中,在一定时间内访问动态页面直接调用缓存文件,而不必重新访问数据库 。
10、现在编程中经常采取MVC三层结构,请问MVC分别指哪三层,有什么优点?
MVC三层分别指:业务模型、视图、控制器,由控制器层调用模型处理数据,然后将数据映射到视图层进行显示,优点是:①可以实现代码的重用性,避免产生代码冗余;②M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式
11、AJAX的优势是什么?
ajax是异步传输技术,可以通过JAVAscript实现,也可以通过JQuery框架实现,实现局部刷新,减轻了服务器的压力,也提高了用户体验 。
12、在程序的开发中,如何提高程序的运行效率?
A、优化SQL语句,查询语句中尽量不使用select *,用哪个字段查哪个字段;少用子查询可用表连接代替;少用模糊查询;
B、数据表中创建索引;
C、对程序中经常用到的数据生成缓存 。
13、对于大流量的网站,您采用什么样的方法来解决访问量问题?
A、有效使用缓存,增加缓存命中率
B、使用负载均衡
C、对静态文件使用cdn进行存储和加速
D、想法减少数据库的使用
E、查看出现统计的瓶颈在哪里
F、反向代理
14、语句include和require的区别是什么?为避免多次包含同一文件,可用什么语句代替它们?
区别:
在失败的时候:
include产生一个warning,而require产生直接产生错误中断
require在运行前载入


推荐阅读