PHP经典 面试题
夯实
PHP 中传值和传引用的区别
传 值:将变量的值拷贝一份赋值给另一个变量,改变任何一个变量的值都不会影响另一个。
传引用:将变量的值的内存地址传给另一个变量,新变量简单的引用了原始变量,两个变量指向同一个值,改动会相互影响。
对于较大的数据,传引用比较好,可以节省内存的开销。
PHP 在服务端进行页面重定向所使用的函数
header()
SESSION 与 COOKIE 的区别是什么
1、cookie数据存放在客户的浏览器上,session数据放在服务器上。
2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗
考虑到安全应当使用session。
3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能
考虑到减轻服务器性能方面,应当使用COOKIE。
4、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。
include 和 require 都能把另外一个文件包含到当前文件中,他们有什么区别?
二者区别只有一个,那就是对包含文件的需求程度,include 就是包含,如果被包含的文件不存在的话,那么则会提示一个错误,但是程序会继续执行下去。
而 require 意思是需要,如果被包含文件不存在或者无法打开的时候,则会提示错误,并且会终止程序的执行。
用 PHP 写出显示客户端 IP 与服务器 IP 的代码。
客户端 IP:$_SERVER[“REMOTE_ADDR”]
服务器端 IP:$_SERVER[“SERVER_ADDR”]\
GET和POST两种基本请求方法的区别
- GET在浏览器回退时是无害的,而POST会再次提交请求。
- GET产生的URL地址可以被Bookmark,而POST不可以。
- GET请求会被浏览器主动cache,而POST不会,除非手动设置。
- GET请求只能进行url编码,而POST支持多种编码方式。
- GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。
- GET请求在URL中传送的参数是有长度限制的,而POST么有。
- 对参数的数据类型,GET只接受ASCII字符,而POST没有限制。
- GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。
- GET参数通过URL传递,POST放在Request body中。
什么是面向对象?主要特征是什么?
面向对象是程序的一种设计方式,它利于提高程序的重用性,使程序结构更加清晰。主要特征:封装、继承、多态。
进阶
谈谈对面向对象的理解
面向对象简称OOP,对象就是人对各种具体事物抽象之后的概念。人们每天都在跟各种对象打交道,就比如:
一台电脑而对象有很多特性:内存,宽度,颜色…这些就是属性,
而对象还有很多功能:听歌,看视频,打电话…这些就是方法,可以看成是一个函数
但是对象不是独立的,还有继承性。在编程的过程中,我们可以把所有问题都看成是一个对象,
但对象实际上就是一组数据的集合,并且都已经被命名,这些数据的根据就是对象的属性,可以被访问。
但是如果要访问一个外部的对象我们就必须要先将它引进来。
http协议状态码
- 100-199 消息系列。
- 200-299 成功系列。
- 300-399 重定向系列。
- 400-499 请求错误系列。
- 500-599 服务器端错误系列。
谈谈你对 PHP 命名空间的理解
命名空间是一种封装事物的抽象方法,定义的空间是虚拟的,不是真实存在的。主要是用来解决类、函数、常量名字的冲突问题。
请谈谈您对 MVC 的理解?
MVC 是一个设计模式,它强制性的使应用程序的输入、处理和输出分开。
由模型(model),视图(view),控制器(controller) 完成的应用程序
视图是用户看到并与之交互的界面,模型表示企业数据和业务规则,控制器接受用户的输入并调用模型和视图去完成用户的需求。
网站高并发,大流量访问的处理及解决方法
网站优化:
代码: 代码优化,
数据库的优化:
表结构优化;SQL优化;冷热数据的优化;nosql;分表分库
文件优化:
文件打包压缩 ;CDN ;OSS
服务器优化:
负载均衡;主从复制