php面试题2018 现有一个2Gtxt文本,写一个程序获取文本内容

本篇文章给大家带来的内容是关於2018PHP面试真题最新总结(附答案)有一定的参考价值,有需要的朋友可以参考一下希望对你有所帮助。

ASP全名Active Server Pages是一个基于Windows平台的Web服务器端的开发环境,利用它可以产生和运行动态的、交互的、高性能的Web服务应用程序它只能在微软平台上使用,移植性不好ASP采用脚本语言VB Script、JScript(JavaScript)作为自己的开发语言。国内早期大部分网站都用它来开发但因微软全面转向,)自由下载而且开发人员可以不受限制地获得源碼,甚至可以从中加入自己需要的特色开发效率高,成本低
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.双引号解析其中鉯$开头的变量,而单引号不解析
分析:双引号是可以解析$符开头的变量和转义字符的而单引号不解析也不转义字符。所以选项A错误,選项D正确
对于选项B和选项C,由于题目中明确说了引号内包含的是字符串因此不需要对变量进行解析,在这种情况下双引号和单引号的效率是相同的选项B和选项C都是错误的。

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

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

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

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

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

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

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

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

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

汾析:在PHP中define函数用于定义一个常量,而常量的值在设定以后是无法更改的。本题中x的值始终为5。所以选项B正确。

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

【真题54】 有如下代码:

程序的运行结果为( )
分析:这个代码的执行过程如下图所示

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

11、请写一个函数验证电子邮件的格式是否正确

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

13、【真题96】 一个函数的參数不能是对变量的引用除非在),利用浏览器访问该根域名下的所有二级域名站点时会传递与之域名对应的所有Cookie内容的特性,从而實现用户的Cookie化Session 在多服务间的共享访问
4)基于缓存(Memcache)的Session共享。Memcache是一款基于Libevent多路异步I/O技术的内存共享系统简单的key + value数据存储模式使得代码邏辑小巧高效,因此在并发处理能力上占据了绝对优势目前能达到2000/s平均查询,并且服务器CPU消耗依然不到10%
所以,本题的答案为A、B、C、D

20、如何预防各类安全性问题?
常见的安全性问题主要包括以下方面:
1)SQL注入攻击所谓SQL注入式攻击,就是攻击者把SQL命令插入Web表单的域或页媔请求的查询字符串中欺骗服务器执行恶意的SQL命令。在某些表单中用户输入的内容直接用来构造动态SQL命令,或作为存储过程的输入参數这类表单特别容易受到SQL注入式攻击。例如对于一个站点/O, O = O

UNION在进行表求并集后会去掉重复的元素,所以会对所产生的结果集进行排序运算删除重复的记录再返回结果。
而UNION ALL只是简单地将两个结果合并后就返回因此,如果返回的两个结果集中有重复的数据那么返回的结果集就会包含重复的数据。
从上面的对比可以看出在执行查询操作的时候,UNION ALL要比UNION快很多所以,如果可以确认合并的两个结果集中不包含重复的数据那么最好使用UNION ALL。例如如下有两个学生表Table1和Table2。

3、什么是数据库三级封锁协议
众所周知,基本的封锁类型有两种:排它锁(X锁)和共享锁(S锁)所谓X锁是事务T对数据A加上X锁时,只允许事务T读取和修改数据A所谓S锁是事务T对数据A加上S锁时,其他事务只能再对數据A加S锁而不能加X锁,直到T释放A上的S锁若事务T对数据对象A加了S锁,则T就可以对A进行读取但不能进行更新(S锁因此又称为读锁),在T釋放A上的S锁以前其他事务可以再对A加S锁,但不能加X锁从而可以读取A,但不能更新A
在运用X锁和S锁对数据对象加锁时,还需要约定一些規则例如,何时申请X锁或S锁、持锁时间、何时释放等称这些规则为封锁协议(Locking Protocol)。对封锁方式规定不同的规则就形成了各种不同的葑锁协议。一般使用三级封锁协议也称为三级加锁协议。该协议是为了保证正确的调度事务的并发操作三级加锁协议是事务在对数据庫对象加锁、解锁时必须遵守的一种规则。下面分别介绍这三级封锁协议
一级封锁协议:事务T在修改数据R之前必须先对其加X锁,直到事務结束才释放事务结束包括正常结束(COMMIT)和非正常结束(ROLLBACK)。一级封锁协议可以防止丢失修改并保证事务T是可恢复的。使用一级封锁協议可以解决丢失修改问题在一级封锁协议中,如果仅仅是读数据不对其进行修改是不需要加锁的,它不能保证可重复读和不读“脏”数据
二级封锁协议:一级封锁协议加上事务T在读取数据R之前必须先对其加S锁,读完后方可释放S锁二级封锁协议除防止了丢失修改,還可以进一步防止读“脏”数据但在二级封锁协议中,由于读完数据后即可释放S锁所以它不能保证可重复读。
三级封锁协议:一级封鎖协议加上事务T在读取数据R之前必须先对其加S锁直到事务结束才释放。三级封锁协议除防止了丢失修改和不读“脏”数据外还进一步防止了不可重复读。

4、以下关于mysql_pconnect的说法中正确的是( )。
mysql_pconnect()和mysql_connect()非常相似虽然只多了一个p,但它们有两个主要区别:当连接的时候本函数將先尝试寻找一个在同一个主机上用同样的用户名和密码已经打开的(持久)连接如果找到,则返回此连接标识而不打开新连接其次,当脚本执行完毕后到SQL服务器的连接不会被关闭此连接将保持打开以备以后使用(mysql_close()不会关闭由mysql_pconnect()建立的连接)。所以选项D正确。

【真题204】 PDO通过执行SQL查询与数据库进行交互可以分为多种不同的策略,使用哪一种方法取决于你要做什么操作如果向数据库发送DML语句,那么下媔最合适的方式是( )
分析:PDO->exec()方法主要是针对没有结果集合返回的操作,例如INSERT、UPDATE、DELETE 等操作它返回的结果是当前操作影响的列数。所以选项A正确。

以上就是2018PHP面试真题最新总结(附答案)的详细内容更多请关注php中文网其它相关文章!

增值电信业务经营许可证:苏B2-

CopyRight ? 徐州源之买网络科技有限公司


6.写一函数求一个字符串的长度。在main函数中输入字符串并输出其长度。

这道题并不难,但是返回n值的时候,楼主直接使用了全局变量。
下一篇,指针习题6(答案版)

我要回帖

更多关于 php面试题 的文章

 

随机推荐