面试前多看看公司的面试资料,对后面的面试会有很大的帮助。今天给大家整理PHP高级工程师面试题(仿试卷),有一定的参考价值,现分享给大家,希望对大家有所帮助! 1。哪个函数可以用来将错误转化为异常处理? A:set_error_handler B:error_reporting C:error2exception D:catch 正确答案:A 答案分析:set_error_handler()可以指定一个回调函数,当发生错误时,会通过指定的回调函数自动处理。只需在回调函数中抛出一个新异常即可。 2。以下哪项对shell函数的描述是正确的? A:shell函数可以先调用再定义 B:shell函数需要使用关键字function来定义 C:shell函数中的变量可以声明为部分变量 D:shell函数只能通过return返回一个值,1代表成功,0代表失败 正确答案:C 答案分析:shell函数必须在调用前定义;声明时,不需要使用关键字;函数中的一些变量可以通过local来定义;shell函数的返回值,0表示成功,非0表示错误,其他选项正确 3.下列关于全文搜索技术的说法错误的是:答:Solr是新一代的全文搜索组件。在搜索上比Lucene效率高很多,而且还可以支持HTTP访问。PHP调用Solr也很方便。 B:在MySQL的字段上设置FULLTEXT索引可以实现全文检索。目前,MyISAM和InnoDB表都支持FULLTEXT索引。 C:Sphinx是一个基于SQL的全文搜索引擎,可以结合MySQL进行全文搜索。它可以提供比数据库本身更专业的搜索功能。 D:CJKAnalyzer,Lucene附带的二进制分词分析器,分词速度很快,可以满足普通全文检索的需要。网站建设 正确答案:A 答案解析:Solr是新一代的全文搜索组件,它是基于Lucene的,所以说它比Lucene快是废话:) 4.关于单例形式,错了吗? A:单例形式的目的是保证在全局环境下,一个类的实例只能存在一个 B:单利益形式通常将结构函数设置为private C:只需要将结构函数设置为private即可保证全世界只有一个实例private只能保证不能通过new创建新的实例,但是通过clone、反序列化等方式仍然可以创建多个实例。 5.哪个正则引擎表达式是错误的? 一个正则引擎主要分为两类:一类是DFA,一类是NFA。 B一般来说,NFA引擎搜索速度更快。但是DFA以表达式为主,更容易控制,所以普通程序员更喜欢DFA引擎! CNFA表达式主导,DFA文本主导。 D可以通过是否支持忽略优先量词和组捕获来判断引擎类型:支持NFA,不支持DFA 正确答案:B 答案分析:正确的说法应该是:一般来说,DFA引擎搜索速度更快。但是NFA以表达式为主,更容易控制,所以普通程序员更喜欢NFA引擎! 6。方框内的正则表达式可以匹配以下哪些选项? /.123d/ A.**123 B.**1234 C.1234 D.123 正确答案:B 答案解析:本题重点是理解这个正则表达式的含义——从左到右,首先是零个或多个任意字符(.),然后是星号(.),然后是123,最后是数字。所以答案是B。 7。下列关于数据库的说法错误的是? A:为了效率,数据库可以有多个reader B:数据库可以使用master-slave作为热备 C:数据库不能提供多主多从架构日志同步 正确答案:C 答案解析:数据库可以提供多主多从架构。 8.以下哪项不是XSS漏洞的修复方法? A:对参数进行htmlspecialchas过滤 B:对参数使用白名单过滤 C:不允许在浏览器上显示输入内容 D:禁止在js标签中输入用户输入内容 正确答案:A 答案分析:这种过滤可以处理尖括号中的xss,但是不能处理js标签中的xss 9.以下哪项不是PHPSAPI的形式? A.ISAPI B.CGI C.FastCGI D.RESTFULAPi 正确答案:D 答案解析:A~C是最常用的形式,D是a界面是如何组织的。 10。逐行遍历一个大文件,下面哪种方法性能更高? A:写一个实现了IteratorAggregate接口的类,用foreach遍历这个类。 B:使用file_get_contents将文件内容一次性加载到内存中,然后逐行遍历。 C:通过exec函数,调用shell工具遍历 D:使用别人写的类库 正确答案:A 答案分析:使用IteratorAggregate打开文件,移动pointer逐行遍历,不受文件大小影响。使用file_get_contents处理大文件容易导致PHP内存溢出;调用exec会产生额外的进程,影响性能;别人写的类库质量可能不高。 11。以下哪个选项不是设计形式应遵循的准则? A:组合优于继承 B:接口编程 C:尽可能减少耦合 D:尽量使用高性能语法 正确答案:D 答案分析:设计表单的重点是代码的可维护性和复用性,选项D不是设计表单的重点。 12。下列关于回溯的表述错误的是? Aab.lmn匹配abcdeflmnghijklmn Bab。结果应该是abcdeflmnghijklmn。可以参考:https://zzzjtd.com 13。如果函数中使用了trycatchfinally语法结构,return应该写在Where? A:在finally中 B:在try中 C:在catch中 D:任意位置 正确答案:A 答案分析:finally在try中return后会继续执行,如果finally中也有return,那么最后的返回值就是finally中return的值。 14。以下关于NOSQL的说法错误的是: 答:Redis支持字符串、哈希、列表、合流、有序合流等数据结构。目前,Redis不支持事务。 B:MongoDB支持CAP定理中的AP,MySQL支持CAP中的CA。支持所有这些是不可能的。 C:MongoDB可以直接插入数据,无需先创建Collection结构。目前,MongoDB不支持事务。 D:Memcache同时支持TCP协议和UDP协议。我们可以将PHPSession存储在Memcache中。 正确答案:A 答案分析:Redis支持事务。 15。Innodb的锁机制有什么问题? A:Innodb提供表锁和行锁两种锁机制 B:Innodb的表锁会在表发生变化时触发,加排他锁,创建镜像副本。此时停止select,查询镜像副本的数据正确答案:A 16。以下哪项是创建一个crontab命令,每周三的01:00到04:00每3分钟执行一次? A:1,43/bin/bash/home/sijiaomao/ok.sh B:/31,43/bin/bash/home/sijiaomao/ok.sh C:/31-43/bin/bash/home/sijiaomao/ok.sh D:/31-4*/bin/bash/home/sijiaomao/ok.sh 正确答案:C 答案分析:A:每每周三1点4分每分钟执行一次B:每周三1点4分每3分钟执行一次C:满足请求D:每天1点4分每3分钟执行一次 17、拆分前,系统中很多列表、详情页需要的数据,都可以通过sqljoin来完成。拆分之后,数据库可能分布在不同的实例和不同的主机上,加入会变得很麻烦。以下哪项不是解决此问题的有效方法? 一个全局表,系统中所有模块可能依赖的一些表保存在每个库中。 B字段是冗余的,而“订单表”中存储的是“卖家Id”,卖家的“姓名”字段也是冗余的,这样在查询订单详情时,就不需要查询“卖家”用户表”。 C主从复制,数据库的读写分离。 D数据同步,定时关联A库中的tbl_a表和B库中的tbl_b表,可以主从定时同步指定表。 正确答案:C 答案解析:主从复制,数据库读写分离。只能扩大读并发,不能缓解跨库join的问题。 18.关于网络IO模型,下列哪项是正确的? A.select比epoll快 B.nginx使用select模型 C.Apache支持select和epoll的切换 D.epoll可以支持更大的并发性 正确答案:D 答案分析:Aepoll更快。Bnginx使用epoll模型。Capache只支持select 19。PHP在执行时,有如下执行过程:扫描(Lexing)-编译-执行-解析,其含义为: A:将PHP代码转换成语言片段(Tokens),ConvertTokensintosimpleandmeaningfulexpressions,compileexpressionsintoOpocdes,andexecuteOpcodes B:将PHP代码转换为语音片段(Tokens),将Tokens转换为简单有意义的表达式,依次执行Opcodes,将表达式编译为Opocdes C:转换PHP代码转化为语音片段(Tokens),将表达式编译成Opocdes,依次执行Opcodes,将Tokens转化为简单有意义的表达式 D:将PHP代码转化为语言片段(Tokens),将表达式编译成Opocdes,将Tokens转化为简单有意义有意义的表达式,依次执行Opcodes 正确答案:C 答案分析:正确答案为C,正确顺序为:Scanning(Lexing)、Parsing、Compilation、Execution
