PHP经典笔试题1.echo(),print(),print_r()的区别答:echo可以一次输出多个值,多个值以逗号分隔。echo是一种语言构造,而不是真正的函数,因此它不能用作表达式的一部分。echo是php的内部命令,不是函数,没有返回值。print():函数print()打印一个值(它的参数),如果字符串显示成功则返回true,否则返回false。它只能打印出简单类型变量(如int、string)的值,并且有一个返回值printf():它是从C语言中的printf()派生出来的。该函数输出格式化的字符串。print_r()和var_dump()print_r()可以简单地打印字符串和数字,而数组显示为包含键和值的列表,并以Array开头。但是print_r()输出Boolean和NULL的结果是没有意义的,因为都是打印“n”。所以使用var_dump()函数更适合调试。print_r是一个函数,可以打印出比较复杂的变量(比如数组,对象),并且有一个返回值var_dump()来判断变量的类型和长度,输出变量的值。如果变量有值,则变量的值是输出和返回类型的数据。此函数显示有关一个或多个表达式的结构信息,包括表达式的类型和值。数组将递归扩展值,通过缩进显示其结构。2.说说单引号和双引号?答:①单引号内的变量不会执行,双引号内的会执行。②单引号的解析速度比双引号快。③单引号只能解析部分特殊字符,双引号可以解析所有特殊字符。3.索引的优缺点答:1.优点:a)可以保证数据库表中每一行数据的唯一性b)可以大大加快数据的索引速度c)可以加快表与表之间的连接,尤其是在实现数据的引用完整性方面特别有意义d)当使用分组和排序子句进行数据检索时,也可以显着减少查询中分组和排序的时间f)通过使用索引,可以使用优化hider提高系统性能2.缺点:a)创建和维护索引需要时间,这个时间随着数据量的增加而增加b)索引需要占用物理空间,数据空间除外数据表占用的同时,每个索引也占用一定的物理空间。如果需要建立聚簇索引,需要的空间会更大。c)对表中的数据进行增删改查时,索引也要动态维护这样会降低整数的维护速度d)建立索引的原理e)在经常需要查找的列上,查找速度可以f)在用作主键的列上,强制列的唯一性和表中数据的组织结构g)在经常连接使用的列上,这些列主要是外键,可以加快连接速度h)在经常需要按范围查找的列上创建索引,因为索引已经排序,其指定的范围是连续的i)在经常需要排序的列上,索引已经排好了,这样井底可以利用索引的排序,加快排序时间j)在where子句中经常用到的列上,加快条件的判断速度4.区别之间get和post答:1、get是从服务器获取数据,post是向服务器传输数据。get是将参数数据队列添加到提交表单的ACTION属性指向的URL中。该值对应于表单中的每个字段,可以在URL中看到。post是将表单中的各个字段及其在HTMLHEADER中的内容通过HTTPpost机制发送到ACTION属性所指示的URL地址。用户看不到这个过程。get传输的数据量很小,不能超过2KB。post传输的数据量比较大,一般默认为无限制。4.get的安全性很低,post的安全性比较高。但执行效率优于Post方式。5.封装了一个简单的框架Answer;封装了一个简单的MVC框架,主要分为3层,控制器层和模型层视图层,以及路由分发和入口文件,模板引擎,单例模式,工厂模式,引入第三方类库等。6.接口和抽象类有什么区别?答:抽象类是不能实例化的类,只能作为其他类的父类。抽象类使用关键字abstract声明。抽象类与普通类的相似之处在于它包含成员变量和成员方法。两者的区别在于一个抽象类必须至少包含一个抽象方法。抽象方法没有方法体。该方法本质上是由子类重写的。抽象方法的格式为:abstractfunctionabstractMethod();接口是通过interface关键字声明的,接口中的成员常量和方法都是public的,方法可以不写关键字public,接口中的方法也没有方法体。接口中的方法本身也是由子类实现的。抽象类和接口实现的功能非常相似。最大的区别是接口可以实现多重继承。应用程序中抽象类或接口的选择取决于具体的实现。子类使用extends继承抽象类,子类使用implements实现接口。7.什么是队列?独占锁,如何解决Myisam死锁?答:默认情况下,MYisam是表级锁,所以同时操作单个表的多个动作只能在一个队列中执行;排他锁,也称为写锁,是在SQL执行过程中为排除其他请求而写的锁,执行完成后会自动释放;死锁解决方法:先找到死锁的线程号,然后kill线程ID8。谈谈对MVC的理解答:核心思想是:视图和用户的交互通过事件引起控制器改变控件一个控制器改变导致模型改变或者一个控制器同时改变两者。模型更改会导致视图更改,或者视图更改可能会从模型中获取参数以更改自身。他的优点是界面和业务逻辑可以分离。模型(model)是程序的主体部分,主要包括业务数据和业务逻辑。在模型层,还涉及到用户发布的服务,其中业务模型中的数据会根据不同的业务需求进行更新。View(视图)是程序呈现给用户的部分,是用户与程序交互的界面。用户会根据具体的业务需求,在View视图层中输入自己特定的业务数据,并通过接口的事件交互,将相应的输入参数提交给后台controller进行处理。Contorller(控制器),Contorller用于处理用户输入的数据,更新了业务模型的部分。控制器接收用户与界面交互时传递过来的数据,根据数据业务逻辑执行服务调用,更新业务模型的数据和状态。更多技术资料请关注:gzitcast
