2017最全的php面试题目及答案总结

时间:2024-03-21 09:38:14

  最近在网上看到很多的小伙伴们都在询问如何应对php面试,这个对于有工作经验和实战项目的小伙伴来说是没什么问题的,但是对于刚刚学习完php的小伙伴们、php面试却是一个很重要的一步,那么今天php中文网就给大家总结了一下php面试题,其中有很多题目都是很多程序员在面试的时候遇到的!希望可以帮助到你!

  第一部分:php基础面试题

  1.PHP语言的一大优势是跨平台,什么是跨平台?

  PHP的运行环境最优搭配为Apache+MySQL+PHP,此运行环境可以在不同操作系统(例如windows、Linux等)上配置,不受操作系统的限制,所以叫跨平台。

  2.说一下你所掌握的网页前端技术有哪些?

  熟练掌握DIV+CSS网页布局,JavaScript,jQuery框架、photoshop图片处理。

  3.现在编程中经常采取MVC三层结构,请问MVC分别指哪三层,有什么优点?

  MVC三层分别指:业务模型、视图、控制器,由控制器层调用模型处理数据,然后将数据映射到视图层进行显示。

  优点是:

  ①可以实现代码的重用性,避免产生代码冗余;

  ②M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式;

  4.对json数据格式的理解?

  JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,json数据格式固定,可以被多种语言用作数据的传递。

  PHP中处理json格式的函数为json_decode( string $json [, bool $assoc ] ) ,接受一个 JSON格式的字符串并且把它转换为PHP变量,参数json待解码的json string格式的字符串。assoc当该参数为TRUE时,将返回array而非object;

  Json_encode:将PHP变量转换成json格式。

  5. AJAX的优势是什么?

  ajax是异步传输技术,可以通过javascript实现,也可以通过JQuery框架实现,实现局部刷新,减轻了服务器的压力,也提高了用户体验。

  6.在程序的开发中,如何提高程序的运行效率?

  ①优化SQL语句,查询语句中尽量不使用select *,用哪个字段查哪个字段;少用子查询可用表连接代替;少用模糊查询;

  ②数据表中创建索引;

  ③对程序中经常用到的数据生成缓存;

  7.PHP处理数组的常用函数?(重点看函数的‘参数’和‘返回值’)

  ①array()创建数组;

  ②count()返回数组中元素的数目;

  ③array_push()将一个或多个元素插入数组的末尾(入栈);

  ④array_column()返回输入数组中某个单一列的值;

  ⑤array_combine()通过合并两个数组来创建一个新数组;

  ⑥array_reverse()以相反的顺序返回数组;

  ⑦array_unique()删除数组中的重复值;

  ⑧in_array()检查数组中是否存在指定的值;

  8.PHP处理字符串的常用函数?

  ①trim()移除字符串两侧的空白字符和其他字符;

  ②substr_replace()把字符串的一部分替换为另一个字符串;

  ③substr_count()计算子串在字符串中出现的次数;

  ④substr()返回字符串的一部分;

  ⑤strtolower()把字符串转换为小写字母;

  ⑥strtoupper()把字符串转换为大写字母;

  ⑦strtr()转换字符串中特定的字符;

  ⑧strrchr()查找字符串在另一个字符串中最后一次出现;

  ⑨strstr()查找字符串在另一字符串中的第一次出现(对大小写敏感);

  ⑩strrev()反转字符串;

  ⑪strlen()返回字符串的长度;

  ⑫str_replace()替换字符串中的一些字符(对大小写敏感);

  ⑬print()输出一个或多个字符串;

  ⑭explode()把字符串打散为数组;

  ⑮is_string()检测变量是否是字符串;

  ⑯strip_tags()从一个字符串中去除HTML标签;

  ⑰mb_substr()用来截中文与英文的函数

  第二部分:php面试题之数据库部分

  1. 常见的关系型数据库管理系统产品有?

  答:Oracle、SQL Server、MySQL、Sybase、DB2、Access等。

  2.什么是事务?及其特性?

  答:事务:是一系列的数据库操作,是数据库应用的基本逻辑单位。

  事务特性:

  (1)原子性:即不可分割性,事务要么全部被执行,要么就全部不被执行。

  (2)一致性或可串性。事务的执行使得数据库从一种正确状态转换成另一种正确状态

  (3)隔离性。在事务正确提交之前,不允许把该事务对数据的任何改变提供给任何其他事务,

  (4) 持久性。事务正确提交后,其结果将永久保存在数据库中,即使在事务提交后有了其他故障,事务的处理结果也会得到保存。

  或者这样理解:

  事务就是被绑定在一起作为一个逻辑工作单元的SQL语句分组,如果任何一个语句操作失败那么整个操作就被失败,以后操作就会回滚到操作前状态,或者是上有个节点。为了确保要么执行,要么不执行,就可以使用事务。要将有组语句作为事务考虑,就需要通过ACID测试,即原子性,一致性,隔离性和持久性。

  3.char和varchar的区别?

  答:char是一种固定长度的类型,varchar则是一种可变长度的类型,它们的区别是:

  char(M)类型的数据列里,每个值都占用M个字节,如果某个长度小于M,MySQL就会在它的右边用空格字符补足.(在检索操作中那些填补出来的空格字符将被去掉)在varchar(M)类型的数据列里,每个值只占用刚好够用的字节再加上一个用来记录其长度的字节(即总长度为L+1字节)。

  4.Mysql 的存储引擎,myisam和innodb的区别。

  答:简单的表达:

  MyISAM 是非事务的存储引擎;适合用于频繁查询的应用;表锁,不会出现死锁;适合小数据,小并发。

  innodb是支持事务的存储引擎;合于插入和更新操作比较多的应用;设计合理的话是行锁(最大区别就在锁的级别上);适合大数据,大并发。

  5.数据表类型有哪些

  答:MyISAM、InnoDB、HEAP、BOB,ARCHIVE,CSV等。

  MyISAM:成熟、稳定、易于管理,快速读取。一些功能不支持(事务等),表级锁。

  InnoDB:支持事务、外键等特性、数据行锁定。空间占用大,不支持全文索引等。

  第三部分:php面试题之面向对象

  1.什么是面向对象?(理解着回答)

  答:面向对象OO = 面向对象的分析OOA + 面向对象的设计OOD + 面向对象的编程OOP;通俗的解释就是“万物皆对象”,把所有的事物都看作一个个可以独立的对象(单元),它们可以自己完成自己的功能,而不是像C那样分成一个个函数。

  现在纯正的OO语言主要是Java和C#,PHP、C++也支持OO,C是面向过程的。

  2、简述 private、 protected、 public修饰符的访问权限。

  答:private : 私有成员, 在类的内部才可以访问。

  protected : 保护成员,该类内部和继承类中可以访问。

  public : 公共成员,完全公开,没有访问限制。

  3、堆和栈的区别?

  答:栈是编译期间就分配好的内存空间,因此你的代码中必须就栈的大小有明确的定义;

  堆是程序运行期间动态分配的内存空间,你可以根据程序的运行情况确定要分配的堆内存的大小。

  4、面向对象的特征有哪些方面?

  答:主要有封装,继承,多态。如果是4个方面则加上:抽象。

  5. 什么是构造函数,什么是析构函数,作用是什么?

  答:构造函数(方法)是对象创建完成后第一个被对象自动调用的方法。它存在于每个声明的类中,是一个特殊的成员方法。作用是执行一些初始化的任务。Php中使用construct()声明构造方法,并且只能声明一个。

  析构函数(方法)作用和构造方法正好相反,是对象被销毁之前最后一个被对象自动调用的方法。是PHP5中新添加的内容作用是用于实现在销毁一个对象之前执行一些特定的操作,诸如关闭文件和释放内存等。

  总结:

  php面试题目对于每家公司都是不一样的,这里我们为小伙伴们总结了一下在比较常遇到的php面试题目,但是也可以根据我们总结的php面试题进行自行拓展和延伸!