PHP面试准备

1.什么是mvc,mvc是什么?

mvc是一种设计模式,它是由模型【model】控制器【controller】视图【view】三部分组成。model层负责数据处理,controller层负责逻辑处理,view层负责数据展示。客户端在前台请求项目的控制器,这时遇到需要操作数据的,控制器就回去model请求数据,请求到数据之后,通过视图层展示给客户端

2.什么是面向对象,有哪些语言是支持面向对象

在面向对象的程序设计(英语:Object-oriented programming,缩写:OOP)中,对象是一个由信息及对信息进行处理的描述所组成的整体,是对现实世界的抽象。
oop(面向对象的编程)它能使其代码更加简洁易于维护并且具有更强的可重性
面向对象有三大特性封装·继承·多态

  • 封装
    将一个类的使用和实现分开,只保留部分接口和方法与外部联系,有效避免程序间相互依赖,实现代码模块间松藕合
  • 继承
    子类继承来自父类中的属性方法,也可以对父类中的方法进行重写,同时子类也可以新添加方法或者属性,它不会对父类产生影响。继承增加了代码的可重用性,php是只支持单继承,一个子类只能继承一个父类,通过extends关键字来声明。在php5.4之后Traits的出现,可以让我们同时使用几个‘父类’中的方法属性。
  • 多态
    子类继承了来自父级类中的属性和方法,并对其中部分方法进行重写。于是多个子类中虽然都具有同一个方法,但是这些子类实例化的对象调用这些相同的方法后却可以获得完全不同的结果,这种技术就是多态性。多态性增强了软件的灵活性
    oop易维护,质量高,效率高,易扩展

3.php中单引号和双引号的区别

  • 单引号的执行效率比双引号快
  • 单引号不能解析变量,双引号可以解析变量
  • 单引号只能解析部分特殊字符,双引号可以解析全部的特殊字符

4.echo print print_r var_dump 这些打印的区别

  • echo是语言结构,不是函数,没有返回值,它可以一次打印多个值,每个值用逗号隔开。
  • print() 是语言结构,只能打印一个值,而且只能打印简单的类型如int string.有返回值,成功返回1true,失败返回false
  • print_r() 是函数,可以输出格式化的字符串,什么都可以打印。print_r() 将把数组的指针移到最后边
  • var_dump()打印变量的相关信息。可以打印出变量的类型,长度,值,所以一般开发时可以用var_dump做调试
  • 注意:在TP框架可以使用dump(),在laravel框架可以用dd()做调试

5.session与cookie的区别

  • session与cookie相同:跨页面、不跨用户
  • session存放在服务端,cookie是在客户端,这样相比较而言,session是比cookie相对安全。
  • 单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。
  • session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能考虑到减轻服务器性能方面,应当使用COOKIE。
  • cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗
    考虑到安全应当使用session。
  • session可以存储任意类型的数据,但cookie只能存储字符串

    cookie的主要内容包括,【键】【值】【过期时间】【路劲和域】–也就是作用域。{cookie如果不设置过期时间,那么它的过期时间就是浏览器的会话时间,浏览器关闭,会话结束,这种cookie存放在内存里}{cookie设置 过期时间,那么在过期时间内,即使关闭浏览器,cookie也存在,下次打开浏览器还存在你上次浏览的页面,这种cookie存放在硬盘里}

6.表单提交get和post的区别

  • get从指定的资源请求数据。post向指定的资源提交要被处理的数据
  • get是发送请求HTTP协议通过url参数传递进行接收,而post是实体数据,可以通过表单提交大量信息
  • get请求可以被缓存,post不可以
  • get请求保存在浏览器的历史记录中
  • get请求可以在浏览器中收藏
  • get请求长度有限制,post可以提交大量的 数据
  • get不应该在请求敏感数据时使用
  • get应当在在拉取数据时使用
  • get数据是可见的,post是不可见的,相对安全
  • get数据类型只允许ASCII字符,post无限制,也可以是二进制数据
  • get编码类型application/x-www-form-urlencoded ,post编码类型application/x-www-form-urlencoded 或 multipart/form-data。为二进制数据使用多重编码

7.数据库中的事务操作

  • 在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务
  • 事务处理可以用来维护数据库的完整性,保证成批的 SQL 语句要么全部执行,要么全部不执行
  • 事务用来管理 insert,update,delete 语句
    一般来说,事务是必须满足4个条件(ACID)::原子性(Atomicity,或称不可分割性)、一致性(Consistency)、隔离性(Isolation,又称独立性)、持久性(Durability)
  • 原子性
    一个事务中的操作,要么全部执行完成,要么全部不完成,不会在中间的某个环节结束,事务在执行过程当中,如果出现错误,则会回滚到事务执行前的状态(未执行的状态)
  • 一致性
    在事务的开始之前和结束之后,数据库的完整性没有被破坏
  • 隔离性
    数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。事务隔离分为不同级别,包括读未提交(Read uncommitted)、读提交(read committed)、可重复读(repeatable read)和串行化(Serializable)
  • 持久性
    事务结束以后,对数据的修改是永久的,即使系统故障,数据也不会改变
    开始事务,事务回滚,结束事务提交

    8.HTTP与HTTPS的区别

  • http超文本传输协议是明文的,未加密的,https则是具有安全性的ssl加密传输协议

  • https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用
  • http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443
  • http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

    9.include与require的区别

  • include会在用到引入文件时加载,require是在一进来就加载
  • include在引入文件时,引入文件出错,那么主文件还会继续向下执行 | require在引入文件(出错),那么主文件就不会执行,会报一个致命错误
  • include和require都是语言结构
  • 程序处理不同,require相当于在程序运行之前就引入进来被执行,所以它不能出现在控制语句中,而include相当于函数,它在程序运行时才会被引入进来
  • include()执行时需要引用的文件每次都要进行读取和评估,require()执行时需要引用的文件只处理一次。所以require比include的效率高

    10.如何通俗地理解三个范式

  • 1NF是对属性的原子性约束,要求属性具有原子性,不可再分解

  • 2NF是对记录的惟一性约束,要求记录有惟一标识,即实体的惟一性
  • 3NF是对字段冗余性的约束,即任何字段不能由其他字段派生出来,它要求字段没有冗余

11.mysql的存储引擎【innodb】【myisam】

  • Myisam成熟 稳定 易于管理 快速读取 不支持事务 表级锁
  • Innodb支持事务,外键等特性,行级锁,空间占用大,不支持全文索引
  • MyISAM 是非事务的存储引擎;适合用于频繁查询的应用;表锁,不会出现死锁;不支持事务。适合小数据,小并发
  • innodb是支持事务的存储引擎;适合于插入和更新操作比较多的应用;设计合理的话是行锁(最大区别就在锁的级别上);适合大数据,大并发。

你可能感兴趣的:(PHP)