PHP面试题

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

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

SESSION 与 COOKIE的产生的原因是什么?区别和联系?

  • 原因: http无状态协议,不能区分用户是否是从同一个网站上来的,同一个用户请求不同的页面不能看做是同一个用户。
  • 区别:
    1. 存放位置: SESSION存储在服务器端,COOKIE保存在客户端。
    2. 存放的形式: Session 是以对象的形式,Cookie 以字符串的形式。
    3. 用途:Cookies 适合做保存用户的个人设置,爱好等,Session 适合做客户的身份验证
    4. 路径:Session 不能区分路径,同一个用户在访问一个网站期间,所有的 Session 在任何一个地方都可以访问到。而 Cookie 中如果设置了路径参数,那么同一个网站中不同路径下的 Cookie 互相是访问不到的。
    5. 安全性:Cookie 不是很安全,别人可以分析存放在本地的 COOKIE 并进行 COOKIE 欺骗,考虑到安全应当使用 session。
    6. 大小以及数量限制:每个域名所包含的 cookie 数:IE7/8,FireFox:50 个,Opera30 个; Cookie 总大小:Firefox 和 Safari 允许 cookie 多达 4097 个字节,Opera 允许 cookie 多达 4096 个字 节,InternetExplorer 允许 cookie 多达 4095 个字节;一般认为 Session 没有大小和数量限制。

MyISAM和 InnoDB 的基本区别?

  • MyISAM类型不支持事务,表锁,易产生碎片,要经常优化,读写速度较快,适合用于频繁查询的应用。
  • InnoDB类型支持事务,行锁,有崩溃恢复能力,读写速度比MyISAM慢,适合于插入和更新操作比较多的应用,空间占用大,不支持全文索引等。

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

  • 按值传递: 函数范围内对值的任何改变在函数外部都会被忽略。
  • 按引用传递: 函数范围内对值的任何改变在函数外部也能反映出这些修改。
  • 优缺点: 按值传递时,php必须复制值。特别是对于大型的字符串和对象来说,这将会是一个代价很大的操作。按引用传递则不需要复制值,对于性能提高很有好处。

什么是 CSRF 攻击 ?XSS 攻击?如何防范?

  • CSRF: 跨站请求伪造,攻击方伪装用户身份发送请求从而窃取信息或者破坏系统。防范
    • 合理规范api请求方式,GET,POST。
    • 对POST请求加token令牌验证,生成一个随机码并存入session,表单中带上这个随机码,提交的时候服务端进行验证随机码是否相同。
  • XSS: 跨站脚本攻击。防范: 不相信任何输入,过滤输入。

简述高并发网站解决方案

  • 前端优化(CND加速、建立独立图片服务器)
  • 服务端优化(页面静态化、并发处理[异步|多线程]、队列处理)
  • 数据库优化(数据库缓存[Memcachaed|Redis]、读写分离、分库分表、分区)
  • Web服务器优化(负载均衡、反向代理)

对于大流量的网站,您采用什么样的方法来解决各页面访问量统计问题

  • 确认服务器是否能支撑当前访问量;
  • 优化数据库访问;
  • 禁止外部访问链接(盗链), 比如图片防盗链;
  • 控制文件下载,尤其是大文件;
  • 使用不同主机分流(负载均衡);
  • 使用浏览统计软件,了解访问量,有针对性的进行优化。

PHP 设计模式

在软件工程中,设计模式(Design Pattern)是对软件设计中普遍存在(反复出现)的各种问题,所提出的解决方案。

  • 简单工厂模式: 又称为静态工厂方法(Static Factory Method)模式,它属于类创建型模式。在简单工厂模式中,可以根据参数的不同返回不同类的实例。简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。
  • 静态工厂模式: 使用一个静态方法来创建一组相关或依赖的对象。
  • 工厂方法模式: 通过定义一个抽象的核心工厂类,并定义创建产品对象的接口,创建具体产品实例的工作延迟到其工厂子类去完成。
  • 抽象工厂模式: 提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。
  • 单例模式: 在整个应用程序的生命周期中,任何一个时刻,单例类的实例都只存在一个,同时这个类还必须提供一个访问该类的全局访问点。

HTTP 协议详解、应用

http(超文本传输协议)是一个基于请求与响应模式的、无状态的、短连接、灵活、应用层的协议,常基于 TCP 的连接方式。

HTTP 响应状态码

  • 1xx: 成功 -- 表示请求已被成功接收、理解、接受
  • 2xx:成功 -- 表示请求已被成功接收、理解、接受
  • 3xx:重定向 -- 要完成请求必须进行更进一步的操作
  • 4xx:客户端错误 -- 请求有语法错误或请求无法实现
  • 5xx:服务器端错误 -- 服务器未能实现合法的请求

常见状态代码、状态描述、说明

  • 200 OK -- 客户端请求成功
  • 400 Bad Request -- 客户端请求有语法错误,不能被服务器所理解
  • 403 Forbidden -- 服务器收到请求,但是拒绝提供服务
  • 404 Not Found -- 请求资源不存在
  • 500 Internal Server Error -- 服务器发生错误
  • 502 Bad Gateway -- 服务器网关错误
  • 503 Server Unavailable -- 服务器超时

posted @ 2020-10-31 10:43  coding在路上~  阅读(150)  评论(0编辑  收藏  举报