争怎路由网:是一个主要分享无线路由器安装设置经验的网站,汇总WiFi常见问题的解决方法。

2018PHP面试真题最新总结(附答案)

时间:2024/3/25作者:未知来源:争怎路由网人气:

网页的本质就是超级文本标记语言,通过结合使用其他的Web技术(如:脚本语言、公共网关接口、组件等),可以创造出功能强大的网页。因而,超级文本标记语言是万维网(Web)编程的基础,也就是说万维网是建立在超文本基础之上的。超级文本标记语言之所以称为超文本标记语言,是因为文本中包含了所谓“超级链接”点。
本篇文章给大家带来的内容是关于2018PHP面试真题最新总结(附答案),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

一、PHP常考基础

1、PHP与ASP、JSP有什么区别?

ASP全名Active Server Pages,是一个基于Windows平台的Web服务器端的开发环境,利用它可以产生和运行动态的、交互的、高性能的Web服务应用程序,它只能在微软平台上使用,移植性不好。ASP采用脚本语言VB Script、JScript(JavaScript)作为自己的开发语言。国内早期大部分网站都用它来开发。但因微软全面转向,ASP.NET放弃了ASP的Web开发模式,所以现在已经被淘汰使用。
PHP是一种跨平台的服务器端的嵌入式脚本语言。它大量地借用C、Java和Perl语言的语法,并耦合PHP自己的特性,使Web开发者能够快速地写出动态生成页面。它可嵌入HTML中,非常适合Web开发,而且它支持目前绝大多数数据库。除此以外,PHP是完全免费的,不用花钱,开发人员就可以从PHP官方站点(http://www.php.net)自由下载。而且开发人员可以不受限制地获得源码,甚至可以从中加入自己需要的特色,开发效率高,成本低。
JSP是Sun公司推出的一种网络编程语言,跨平台运行,安全性高,运行效率也高。它的开发语言主要基于Java。
ASP、JSP、PHP三者都提供在 HTML 代码中混合某种程序代码、由语言引擎解释执行,但JSP代码被编译成 Servlet并由Java虚拟机解释执行,这种编译操作仅在对JSP页面的第一次请求时发生。在ASP、PHP、JSP环境下,HTML代码主要负责描述信息的显示样式,而程序代码则用来描述处理逻辑。普通的HTML页面只依赖于Web服务器,而ASP、PHP、JSP页面需要附加的语言引擎分析和执行程序代码。程序代码的执行结果被重新嵌入HTML代码中,然后一起发送给浏览器。ASP、PHP、JSP三者都是面向 Web 服务器的技术,客户端浏览器不需要任何附加的软件支持。

2、在PHP中,单引号和双引号所包围的字符串的区别是( )。

A.单引号解析其中rt等转义字符,而双引号不解析
B.双引号速度快,单引号速度慢
C.单引号速度快,双引号速度慢
D.双引号解析其中以$开头的变量,而单引号不解析
参考答案:D。
分析:双引号是可以解析$符开头的变量和转义字符的,而单引号不解析也不转义字符。所以,选项A错误,选项D正确。
对于选项B和选项C,由于题目中明确说了引号内包含的是字符串,因此不需要对变量进行解析,在这种情况下双引号和单引号的效率是相同的。选项B和选项C都是错误的。

3、面向对象与面向过程有什么区别?

面向对象是当今软件开发方法的主流方法之一,它是把数据及对数据的操作方法放在一起,作为一个相互依存的整体,即对象。对同类对象抽象出其共性,即类,类中的大多数数据,只能被本类的方法进行处理。类通过一个简单的外部接口与外界发生关系,对象与对象之间通过消息进行通信。程序流程由用户在使用中决定。例如,站在抽象的角度,人类具有身高、体重、年龄、血型等一些特称,人类会劳动、会直立行走、会吃饭、会用自己的头脑去创造工具等这些方法,人类仅仅只是一个抽象的概念,它是不存在的实体,但是所有具备人类这个群体的属性与方法的对象都称为人,这个对象人是实际存在的实体,每个人都是人这个群体的一个对象。
而面向过程是一种以事件为中心的开发方法,就是自顶向下顺序执行,逐步求精,其程序结构是按功能划分为若干个基本模块,这些模块形成一个树状结构,各模块之间的关系也比较简单,在功能上相对独立,每一模块内部一般都是由顺序、选择和循环三种基本结构组成,其模块化实现的具体方法是使用子程序,而程序流程在写程序时就已经决定。例如五子棋,面向过程的设计思路就是首先分析问题的步骤:第一步,开始游戏;第二步,黑子先走;第三步,绘制画面;第四步,判断输赢;第五步,轮到白子;第六步,绘制画面;第七步,判断输赢;第八步,返回步骤二;第九步,输出最后结果。把上面每个步骤用分别的函数来实现,就是一个面向过程的开发方法。
具体而言,二者主要有以下几个方面的不同之处。
1)出发点不同。面向对象是用符合常规思维方式来处理客观世界的问题,强调把问题域的要领直接映射到对象及对象之间的接口上。而面向过程方法则不然,它强调的是过程的抽象化与模块化,它是以过程为中心构造或处理客观世界问题的。
2)层次逻辑关系不同。面向对象方法则是用计算机逻辑来模拟客观世界中的物理存在,以对象的集合类作为处理问题的基本单位,尽可能地使计算机世界向客观世界靠拢,以使问题的处理更清晰直接,面向对象方法是用类的层次结构来体现类之间的继承和发展。面向过程方法处理问题的基本单位是能清晰准确地表达过程的模块,用模块的层次结构概括模块或模块间的关系与功能,把客观世界的问题抽象成计算机可以处理的过程。
3)数据处理方式与控制程序方式不同。面向对象方法将数据与对应的代码封装成一个整体,原则上其他对象不能直接修改其数据,即对象的修改只能由自身的成员函数完成,控制程序方式上是通过“事件驱动”来激活和运行程序。而面向过程方法是直接通过程序来处理数据,处理完毕后即可显示处理结果,在控制程序方式上是按照设计调用或返回程序,不能自由导航,各模块之间存在着控制与被控制、调用与被调用。
4)分析设计与编码转换方式不同。面向对象方法贯穿软件生命周期的分析、设计及编码之间是一种平滑过程,从分析到设计再到编码是采用一致性的模型表示,即实现的是一种无缝连接。而面向过程方法强调分析、设计及编码之间按规则进行转换,贯穿软件生命周期的分析、设计及编码之间,实现的是一种有缝的连接。

4、在PHP中,自定义一个类的方式是( )。

A.<?php default class Class_Name(){ //...... } ?>
B.<?php class Class_Name{ //......} ?>
C.<?php public function Class_Name(){//......}?>
D.<?php function Class_Name{//......}?>
参考答案:B。
分析:定义一个类是使用class关键字加类名来定义的,定义格式为:class 类名{}。实例化一个类的格式为:$object=new 类名();。
【真题11】 获得实例化对象所属类名字的函数是( )。
A.get_class() B.get_object_vars()
C.get_class_methods() D.get_classname()
参考答案:A。
分析:对于选项A,get_class()函数用于返回一个对象的类的名称。所以,选项A正确。
对于选项B,get_object_vars()函数用于得到给定对象的属性。所以,选项B错误。
对于选项C,get_class_methods()函数用于获取类方法的名字。所以,选项C错误。
对于选项D,PHP中没有该方法。所以,选项D错误。

5、以下有关PHP面向对象的说法中,不正确的是( )。

A.要实现一个接口,使用 implements操作符,类中必须实现接口中定义的所有方法,否则会报一个致命错误
B.类名可以是任何非 PHP保留字的合法标签,汉字也可以作为PHP的类名
C.如果PHP的子类中定义了构造函数,则创建子类的对象时,会隐式地调用其父类的构造函数
D.序列化一个对象将会保存对象的所有变量,但是不会保存对象的方法,只会保存类的名字
参考答案:C。
分析:子类定义的构造函数会覆盖父类的构造函数,如果要子类的构造函数执行,同时也执行父类的构造函数,那么必须显式地使用parent::__construct();去调用。所以,选项C错误。

6、下面关于PHP抽象类的描述中,错误的是( )。
A.PHP中抽象类使用abstract关键字定义
B.没有方法体的方法叫抽象方法,包含抽象方法的类必须是抽象类
C.抽象类中必须有抽象方法,否则不叫抽象类
D.抽象类不能实例化,也就是不可以new成对象
参考答案:C。
分析:抽象类可以是个空类,也就是不一定需要有抽象方法。但抽象方法只能存在抽象类中。所以,选项C错误。

7、什么是多态?
多态是面向对象程序设计中代码重用的一个重要机制,它表示当同一个操作作用在不同的对象的时候,会有不同的语义,从而会产生不同的结果。例如,同样是“+”操作,3+4用来实现整数相加,而“3”+“4”却实现了字符串的连接。一般而言,多态有两种实现方式:覆盖和重载。

8、 include与require有什么区别?
require和include有着相似的功能:将指定文件中的所有代码/文本/标记复制到使用require或include语句的文件中。通常被用在数据、文件或代码需要被共享的场景。通过把需要被共享的代码或数据放到一个单独PHP文件中,在需要使用的文件中通过require或include来引用。require()和include()也不是真正的函数,因此,require()和include()语句也可以不加圆括号而直接加参数。

9、下列代码的输出是( )。

<?php
    define("x","5"); 
    $x=x+10; 
    echo x; 
?>

A.Error B.5 C.10 D.15
参考答案:B。
分析:在PHP中,define函数用于定义一个常量,而常量的值在设定以后,是无法更改的。本题中,x的值始终为5。所以,选项B正确。

10、如何对变量进行引用?
可以在变量的前面加&符号对变量进行引用,变量的引用相当于给变量起了个别名,通过不同的名字访问同一个变量内容,所以改变其中一个变量的值,另一个变量也会跟着改变。

【真题54】 有如下代码:

<?php
    $a="hello";
    $b= &$a;
    unset($b);
    $b="world";
    echo $a;
?>

程序的运行结果为( )
A.hello B.world C.NULL D.unset
参考答案:A。
分析:这个代码的执行过程如下图所示。

1)首先执行$b= &$a后,a和b引用同一个字符串变量“hello”。
2)接着执行unset($b),这个函数可以断开这个引用关系。此时由于a仍然指向字符串“hello”,也就是说,这个字符串仍然被a使用,因此这个字符串不会被回收。
3)接着执行$b="world",此时,b指向一个新的字符串“world”,这并不会影响a的值。因此输出结果为hello。

2、PHP常考进阶
11、请写一个函数验证电子邮件的格式是否正确。
参考答案:

function checkEmail($email)
{
    $pregEmail= "/^([0-9A-Za-z\\-_\\.]+)@([0-9a-z]+\\.[a-z]{2,3}(\\.[a-z]{2})?)$/i";
    return preg_match($pregEmail,$email);  
}

分析:首尾两个斜杠/是正则表达式的限定符,这是Perl正则的标准,而PHP与Perl有相同的正则的规范。两个斜杠之间表示的是正则内容,后面的i表示忽略大小写。
这个正则表达式表示的含义如下:
1)必须以([0-9A-Za-z\-_\.]+)开头,也就是说,邮件地址以多个字母、数组、“-”或“.”开头。
2)紧接着是字符“@”。
3)然后接着是多个字母或数字的字符串,接着是一个字符“.”,接着是两个或三个字母;然后接下来一部分可有可无的:一个“.”后面跟着两个字母。
4)邮件的结束符是满足3)的字符串。

12、以下可以匹配中国居民身份证号码的正则表达式是( )。
A.d{15} B.d{18}
C.d D.(^d{15}$)

关键词:2018PHP面试真题最新总结(附答案)




Copyright © 2012-2018 争怎路由网(http://www.zhengzen.com) .All Rights Reserved 网站地图 友情链接

免责声明:本站资源均来自互联网收集 如有侵犯到您利益的地方请及时联系管理删除,敬请见谅!

QQ:1006262270   邮箱:kfyvi376850063@126.com   手机版