首页 后端开发 PHP问题 2018年部分经典面试题

2018年部分经典面试题

Aug 19, 2019 pm 01:50 PM
面试

今天为大家搜集了一下面试题,希望对大家有所帮助,谢谢!

推荐PHP相关视频教程:https://www.php.cn/course/list/29/type/2.html

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

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

2、WEB开发中数据提交方式有几种?有什么区别?百度使用哪种方式?

Get与post两种方式

区别:

1. Get从服务器获取数据,post向服务器传送数据

2. Get传值在url中可见,post在url中不可见

3. Get传值一般在2KB以内,post传值大小可以在php.ini中进行设置

4. get安全性非低,post安全性较高,执行效率却比Post高

建议:

1、get式安全性较Post式要差些包含机密信息建议用Post数据提交式;

2、做数据查询建议用Get式;做数据添加、修改或删除建议用Post方式;

百度使用的get方式,因为可以从它的URL中看出

3、掌握PHP的哪些框架、模板引擎、系统等

框架:框架有很多,例如zendframe、CI、Yii等等,咱们学过的是thinkphp

模板引擎:也有很多,在课本中有,咱们学过的是smarty

系统:有很多,例如:康盛的产品(uchomesupesitediscuzX等),帝国系统、DEDE(织梦)、ecshop

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

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

5、AJAX的优势是什么?

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

6、安全对一套程序来说至关重要,请说说在开发中应该注意哪些安全机制?

①防远程提交;②防SQL注入,对特殊代码进行过滤;③防止注册机灌水,使用验证码;

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

①优化SQL语句,查询语句中尽量不使用select *,用哪个字段查哪个字段;少用子查询可用表连接代替;少用模糊查询;②数据表中创建索引;③对程序中经常用到的数据生成缓存;

8、PHP可否与其它的数据库搭配使用?

PHP与MYSQL数据库是最优搭配,当然PHP也可以去其它的数据库搭配使用,例如MSSQL等,PHP中预留了操作MSSQL的函数,只要开启就可以使用

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

MVC三层分别指:业务模型、视图、控制器,由控制器层调用模型处理数据,然后将数据映射到视图层进行显示,优点是:①可以实现代码的重用性,避免产生代码冗余;②M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式

10、对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格式

11、Print、echo、print_r有什么区别?

① echo和print都可以做输出,不同的是,echo不是函数,没有返回值,而print是一个函数有返回值,所以相对而言如果只是输出echo会更快,而print_r通常用于打印变量的相关信息,通常在调试中使用。

② print 是打印字符串

③ print_r 则是打印复合类型 如数组 对象

12、SESSION与COOKIE的区别?

①存储位置:session存储于服务器,cookie存储于浏览器

②安全性:session安全性比cookie高

③session为‘会话服务’,在使用时需要开启服务,cookie不需要开启,可以直接用

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

①array()创建数组;②count()返回数组中元素的数目;③array_push()将一个或多个元素插入数组的末尾(入栈);④array_column()返回输入数组中某个单一列的值;⑤array_combine()通过合并两个数组来创建一个新数组;⑥array_reverse()以相反的顺序返回数组;⑦array_unique()删除数组中的重复值;⑧in_array()检查数组中是否存在指定的值;

14、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()用来截中文与英文的函数

  15、PHP处理时间的常用函数?(重点看函数的‘参数’和‘返回值’)

  date_default_timezone_get()返回默认时区。

  date_default_timezone_set()设置默认时区。

  date()格式化本地时间/日期。

  getdate()返回日期/时间信息。

  gettimeofday()返回当前时间信息。

  microtime()返回当前时间的微秒数。

  mktime()返回一个日期的 Unix时间戳。

  strtotime()将任何英文文本的日期或时间描述解析为 Unix时间戳。

  time()返回当前时间的 Unix时间戳。

  16、PHP处理数据库的常用函数?(重点看函数的‘参数’和‘返回值’)

  请参照php手册,认真查看,此项非常重要

  17、PHP操作文件的常用函数?(重点看函数的‘参数’和‘返回值’)

  ①打开文件;②删除文件;③读取文件;④写入文件;⑤修改文件;⑥关闭文件;⑦创建文件等等,此项非常重要,在工作中经常用来生成缓存或者静态文件,请参照php手册,认真查看

  18、PHP操作目录(文件夹)的常用函数?(重点看函数的‘参数’和‘返回值’)

  ①打开目录;②删除目录;③读取目录;④创建目录;⑤修改目录;⑥关闭目录等等,此项非常重要,在工作中经常用来创建或者删除上传文件的目录,创建或者删除缓存、静态页面的目录,请参照php手册,认真查看

19、mvc是什么?相互间有什么关系?

答:mvc是一种开发模式,主要分为三部分:m(model),也就是模型,负责数据的操作;v(view),也就是视图,负责前后台的显示;c(controller),也就是控制器,负责业务逻辑

20、oop是什么?

答:oop是面向对象编程,面向对象编程是一种计算机编程架构,OOP 的一条基本原则是计算机程序是由单个能够起到子程序作用的单元或对象组合而成

21、OOP具有三大特点

1、封装性:也称为信息隐藏,就是将一个类的使用和实现分开,只保留部分接口和方法与外部联系,或者说只公开了一些供开发人员使用的方法。于是开发人员只 需要关注这个类如何使用,而不用去关心其具体的实现过程,这样就能实现MVC分工合作,也能有效避免程序间相互依赖,实现代码模块间松藕合。

2、继承性:就是子类自动继承其父级类中的属性和方法,并可以添加新的属性和方法或者对部分属性和方法进行重写。继承增加了代码的可重用性。PHP只支持单继承,也就是说一个子类只能有一个父类。

3、多态性:子类继承了来自父级类中的属性和方法,并对其中部分方法进行重写。于是多个子类中虽然都具有同一个方法,但是这些子类实例化的对象调用这些相同的方法后却可以获得完全不同的结果,这种技术就是多态性。多态性增强了软件的灵活性。

22、smarty是什么,有什么作用?

答:回答一:smarty是用php写出来的模板引擎,也是目前业界最著名的php模板引擎之一

它分离了逻辑代码和外在的显示,提供了一种易于管理和使用的方法,用来将混杂的php逻辑代码与html代码进行分离

回答二:smarty是php中最著名的引擎框架之一,我们公司使用的是TP框架,已经封装好了smarty模板,所以没有单独使用过

回答三: smarty是个模板引擎,最显著的地方就是有可以把模板缓存起来。一般模板来说,都是做一个静态页面,然后在里面把一些动态的部分用一切分隔符切开,然后在PHP里打开这个模板文件,把分隔符里面的值替换掉,然后输出来,你可以看下PHPLib里面的template部分。

23、TP框架有哪些优点?

答:TP框架是我们中国人自己开发的框架,各种资料比较齐全,国内用的比较多,比较简单和方便,而且是免费开源的

24、TP的特性有哪些?

答: 

1.多表查询非常方便,在model中几句代码就可以完成对多表的关联操作

2.融合了smarty模板,使前后台分离

3.支持多种缓存技术,尤其对memcache技术支持非常好

4.命名规范,模型,视图,控制器严格遵循命名规则,通过命名一一对应

5.支持多种url模式

6.内置ajax返回方法,包括xml,json,html等

7.支持应用扩展,类库扩展,驱动扩展等

24、TP框架中的大字母函数?

答: U:对url的组装

A:内部实例化控制器

S:缓存处理

R:调用某个控制器的操作方法

D:实例化自定义模型类

M:实例化基础模型类

I:获取参数

L:设置或者获取当前语言

C:设置或获取,保存配置

25、请介绍一下laravel框架?

答: laravel框架的设计思想比较先进,非常适合应用各种开发模式,作为一个框架,它为你准备好了一切,composer是php的未来,没有composer,php肯定要走向没落

laravel框架最大的特点和优秀之处就是集合了php比较新的特点,以及各种各样的设计模式,Ioc模式,依赖注入等

26、laravel有那些特点?

答:回答一: 

1.强大的rest router:用简单的回调函数就可以调用,快速绑定controller和router

2.artisan:命令行工具,很多手动的工作都自动化

3.可继承的模板,简化view的开发和管理

4.blade模板:渲染速度更快

5.ORM操作数据库

6.migration:管理数据库和版本控制

7.测试功能也很强大

8.composer也是亮点

回答二: laravel框架引入了门面,依赖注入,Ioc模式,以及各种各样的设计模式等

27、请简述一下数据库的优化?

答:数据库的优化可以从四个方面来优化:

1.从结构层: web服务器采用负载均衡服务器,mysql服务器采用主从复制,读写分离

2.从储存层: 采用合适的存储引擎,采用三范式

3.从设计层: 采用分区分表,索引,表的字段采用合适的字段属性,适当的采用逆范式,开启mysql缓存

4.sql语句层:结果一样的情况下,采用效率高,速度快节省资源的sql语句执行

28、如何解决异常处理?

答: 抛出异常:使用try…catch,异常的代码放在try代码块内,如果没有触发异常,则代码继续执行,如果异常被触发,就会 抛出一个异常。Catch代码块捕获异常,并创建一个包含异常信息的对象。$e->getMessage(),输出异常的错误信息。

目前购物车的实现主要是通过cookie、session或结合数据库的方式。下面分析一下它们的机制及作用。

1.cookie

2.cookie是由服务器产生,存储在客户端的一段信息。它定义了一种Web服务器在客户端存储和返回信息的机制,cookie文件它包含域、路径、生存期、和由服务器设置的变量值等内容。当用户以后访问同一个Web服务器时,浏览器会把cookie原样发送给服务器。通过让服务器读取原先保存到客户端的信息,网站能够为浏览者提供一系列的方便,例如在线交易过程中标识用户身份、安全要求不高的场合避免用户重复输入名字和密码、门户网站的主页定制、有针对性地投放广告等等。利用cookie的特性,大大扩展了WEB应用程序的功能,不仅可以建立服务器与客户机的联系,因为cookie可以由服务器定制,因此还可以将购物信息生成cookie值存放在客户端,从而实现购物车的功能。用基于cookie的方式实现服务器与浏览器之间的会话或购物车,有以下特点:

3、cookie存储在客户端,且占用很少的资源,浏览器允许存放300个cookie,每个cookie的大小为4KB,足以满足购物车的要求,同时也减轻了服务器的负荷;

4、cookie为浏览器所内置,使用方便。即使用户不小心关闭了浏览器窗口,只要在cookie定义的有效期内,购物车中的信息也不会丢失;

5、cookie不是可执行文件,所以不会以任何方式执行,因此也不会带来病毒或攻击用户的系统;

6、基于cookie的购物车要求用户浏览器必须支持并设置为启用cookie,否则购物车则失效;

7、存在着关于cookie侵犯访问者隐私权的争论,因此有些用户会禁止本机的cookie功能。

2、session

1、session是实现购物车的另一种方法。session提供了可以保存和跟踪用户的状态信息的功能,使当前用户在session中定义的变量和对象能在页面之间共享,但是不能为应用中其他用户所访问,它与cookie最重大的区别是,session将用户在会话期间的私有信息存储在服务器端,提高了安全性。在服务器生成session后,客户端会生成一个sessionid识别号保存在客户端,以保持和服务器的同步。这个sessionid是只读的,如果客户端禁止cookie功能,session会通过在URL中附加参数,或隐含在表单中提交等其他方式在页面间传送。因此利用session实施对用户的管理则更为安全、有效。

2、同样,利用session也能实现购物车,这种方式的特点是:

1、session用新的机制保持与客户端的同步,不依赖于客户端设置;

2、与cookie相比,session是存储在服务器端的信息,因此显得更为安全,因此可将身份标示,购物等信息存储在session中;

3、session会占用服务器资源,加大服务器端的负载,尤其当并发用户很多时,会生成大量的session,影响服务器的性能;

4、因为session存储的信息更敏感,而且是以文件形式保存在服务器中,因此仍然存在着安全隐患。

以上是搜集的面试题,希望对大家有所帮助。谢谢!

更多相关问题可以访问PHP中文网:https://www.php.cn/

以上是2018年部分经典面试题的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

聊聊如何选择一个最好的Node.js Docker镜像? 聊聊如何选择一个最好的Node.js Docker镜像? Dec 13, 2022 pm 08:00 PM

选择一个Node​的Docker镜像看起来像是一件小事,但是镜像的大小和潜在漏洞可能会对你的CI/CD流程和安全造成重大的影响。那我们如何选择一个最好Node.js Docker镜像呢?

如何解决跨域?常见解决方案浅析 如何解决跨域?常见解决方案浅析 Apr 25, 2023 pm 07:57 PM

跨域是开发中经常会遇到的一个场景,也是面试中经常会讨论的一个问题。掌握常见的跨域解决方案及其背后的原理,不仅可以提高我们的开发效率,还能在面试中表现的更加

golang框架面试题集锦 golang框架面试题集锦 Jun 02, 2024 pm 09:37 PM

Go框架是一组扩展Go内置库的组件,提供预制功能(例如Web开发和数据库操作)。流行的Go框架包括Gin(Web开发)、GORM(数据库操作)和RESTful(API管理)。中间件是HTTP请求处理链中的拦截器模式,用于在不修改处理程序的情况下添加身份验证或请求日志记录等功能。Session管理通过存储用户数据来保持会话状态,可以使用gorilla/sessions管理session。

一文理解JavaScript中的单例模式 一文理解JavaScript中的单例模式 Apr 25, 2023 pm 07:53 PM

JS 单例模式是一种常用的设计模式,它可以保证一个类只有一个实例。这种模式主要用于管理全局变量,避免命名冲突和重复加载,同时也可以减少内存占用,提高代码的可维护性和可扩展性。

JavaScript怎么判断数据类型?8 种方式分享 JavaScript怎么判断数据类型?8 种方式分享 Feb 16, 2023 pm 02:48 PM

JavaScript怎么判断数据类型?本篇文章给大家分享JS 判断数据类型的 8 种方式,有效帮助工作和面试,面试官看了微微一笑。

Java JPA 面试题精选:检验你的持久化框架掌握程度 Java JPA 面试题精选:检验你的持久化框架掌握程度 Feb 19, 2024 pm 09:12 PM

什么是JPA?它与JDBC有什么区别?JPA(JavaPersistenceapi)是一个用于对象关系映射(ORM)的标准接口,它允许Java开发者使用熟悉的Java对象来操作数据库,而无需编写直接针对数据库的sql查询。而JDBC(JavaDatabaseConnectivity)是Java用于连接数据库的标准API,它需要开发者使用SQL语句来操作数据库。JPA将JDBC封装起来,为对象-关系映射提供了更方便、更高级别的API,简化了数据访问操作。在JPA中,什么是实体(Entity)?实体

聊聊Node中的url模块和querystring模块 聊聊Node中的url模块和querystring模块 Feb 23, 2023 pm 07:39 PM

url模块和querystring模块是非常重要的两个URL处理模块。在做node服务端的开发时会经常用到。

“雇佣”ChatGPT编码,应如何进行面试? “雇佣”ChatGPT编码,应如何进行面试? Apr 12, 2023 pm 10:25 PM

​译者 | 朱先忠策划 | 徐杰承与开发人员信任的其他软件开发工具不同,AI工具在训练、构建、托管和使用方式等方面都存在一些独特的风险。 自2022年底ChatGPT发布以来,互联网上便充斥着对其几乎相同比例的支持和怀疑的论调。不管你是否喜欢它,AI正在逐步进入你的开发组织。即使你不打算开发人工智能产品,也不打算利用AI工具为你编写代码,它仍可能被集成到用于构建、测试和运行源代码的工具和平台中。AI工具存在一些较为特殊的风险,这些风险可能会使自动化任务所带来的生产力收益受到影响。而这些风险主要

See all articles