当前位置: 首页 > 后端技术 > PHP

史上最难的PHP笔试题答案

时间:2023-03-30 05:45:26 PHP

1.关于PHP字符串的说法是错误的:CA。如果脚本的编码是ISO-8859-1,那么其中的字符串也会被编码为ISO-8859-1。B.PHP字符串内部是一个字节数组,用花括号访问或修改字符串对于多字节字符集是不安全的。C、substr()、strpos()、strlen()、htmlentities()在处理字符串时都是基于相同的编码方式。D、布尔值true转换为字符串“1”,false转换为空字符串。//substr多字节字符会乱码2.Linux下Shell命令下列说法不正确的是:DA,crontabjob:"05,6,7/home/www/test.sh"表示第一天一天5、6、7小时执行脚本。B、"find./-typef-name".php"-print0|xargs-0wc-l"可以统计当前目录下PHP代码的总行数。C、在Shell下执行命令“:(){:|:&};:”,系统没有反应,只能重启。D、“$@”将函数中的所有参数视为一个字符串,而“$*”将函数的所有参数视为一个数组。//取所有参数,前者存入列表,后者作为字符串使用3.下面的正则表达式是错误的:CA和POSIX兼容的正则没有修饰符,PERL兼容的正则可以使用更正符号。B.{n,},n为非负整数,表示至少匹配n次;?相当于匹配长度{0,1}。C.PERL-style正则化的默认非贪婪模式尽可能少地匹配搜索到的字符串。D、从执行效率上来说,preg_match比ereg略快。//逆向4.关于PHP数组的说法是错误的:BA,处理PHP数组,foreach比for效率高很多,因为foreach使用的是链表遍历。B、PHP数组底层使用循环链表,非常方便正反方向遍历数组。C、无论是array(1,2,3)还是array(1=>2,2=>4)等,本质上都是hash_table。D、PHP数组插入删除操作的时间复杂度为O(1)。//双向链表5、关于PHP引用的说法是错误的:BA,unsetareference,只是打破了变量名和变量内容的绑定,并不代表变量内容被销毁。B.PHP引用的本质是一个指针,可以在函数调用的范围内绑定到其他变量。C.在对象方法中,$this始终是对调用它的对象的引用。D.一个变量可以通过引用传递给一个函数,这样函数就可以修改它的参数值。//引用只是值内存块的一个别名,而指针是一个实体,存储的值内存地址需要额外分配内存空间。6、下列关于PHP命名空间的说法是错误的:BA,要访问任何全局类、函数或常量,可以使用完全限定名,例如strlen()或Exception或INI_ALL。B、关键字namespace可以用来显式访问当前命名空间或子命名空间中的元素,相当于类中的this操作符。C.任何合法的PHP代码都可以包含在命名空间中,但只有三种代码会受到命名空间的影响:类、函数和常量。D.常量NAMESPACE的值是当前命名空间名称的字符串。在全局代码中,不包含在任何命名空间中,它是一个空字符串。//namespace就是声明命名空间7.下面PHP相关的说法是错误的:DA和PHP官方推荐使用Apache的prefork模式。这种模式下,推荐使用NonThreadSafe版本。B、在FastCGI下选择NonThreadSafe版本;在ISAPI下选择线程安全版本。C.可以通过PHP彩蛋大致获取PHP的版本。PHP中隐藏了4个复活节彩蛋。D、官方不推荐在生产环境使用NonThreadSafe,所以我们选择ThreadSafe版本的PHP来使用。//fastcgi需要ntsversion8.关于JavaScript的说法不正确:AA,语句“alert(1==true);”和语句“alert(2==true);”都是真的。B、JS数组其实就是对象,数组的所有属性都可以用for...in语句遍历。C和JS中的对象通过引用传递,它们从不被复制。D.JS中的函数是对象,所以它们可以像任何其他值一样使用。//alert(2==true)isfalse9.关于PHP面向对象的说法是错误的:CA,要实现一个接口,使用implements运算符,类必须实现接口中定义的所有方法,否则会报告一个致命错误。B、类名可以是任何非PHP保留字的合法标示,中文也可以作为PHP的类名。C、如果在PHP的子类中定义了构造函数,则在创建子类的对象时,会隐式调用其父类的构造函数。D、序列化一个对象会保存该对象的所有变量,但不会保存该对象的方法,只保存类名。//必须显式调用parent::__construct();10、以下PHP的高级特性是正确的:BA.我们可以定义一个类来实现预定义接口Iterator,然后我们就可以像访问数组创建的对象一样访问这个类。B.splautoloadregister()提供了更灵活的方式来实现类的自动加载,不再推荐使用autoload()函数。C、当PHP调用对象中不可访问的方法时,会自动调用invoke()方法。D、匿名函数也叫闭包函数,常作为回调函数参数的取值,但不能作为变量的取值。//A:应该是ArrayAccessC:__callD:匿名函数可以赋值给变量11、下列关于HTTP协议的说法错误的是:BA。如果本地启用了cookies,每次打开一个URL,HTTP请求都会发送相应的cookie传递给web服务器。B、HTTP响应的状态码为301,表示内容暂时转移到新的URL,但旧的URL还没有废除。C.HTTP是一种基于请求-响应的无状态应用层协议。大多数Web开发都基于HTTP协议。D.绝大部分的web开发都离不开cookies。如果禁用cookie导致会话失败,您可以通过URL传递会话ID。//301表示永久重定向12、下列关于PHP文件处理的说法正确的是:CA.filegetcontents()函数可以用来抓取网页数据,但是没有办法设置超时时间。B、file()函数既可以读取文本文件也可以读取二进制文件,但是读取二进制文件可能会带来安全问题。C.如果表单中没有选择上传文件,则PHP变量的值为NULL。D、fsockopen()和fputs()组合可以发送邮件,也可以用来抓取网页内容,下载ftp文件等//A:可以通过context参数设置B:fputs是写的并且只能用于上传13.关于Mysql索引,错误的是:CA,500万数据的用户表user在性别字段sex上建立了索引,语句“select*fromuserwheresex=1”会速度不快。B、一般情况下,不鼓励使用like操作,索引中可以使用类似“like”abc%“”。C、唯一索引允许空值,而主键索引不允许空值,否则是一样的。D、对于需要写入数据的操作,如DELETE、UPDATE、INSERT操作,索引会减慢它们的速度。//primary不允许空值,unique允许14.下列关于数据结构的说法是错误的:AA、直选、二分法、冒泡、基数等排序方式都是稳定排序方式。B、无序元素有5000个,希望尽快选出最大的前50个元素。最好使用堆排序。C、栈和队列都只允许在端点插入和删除元素。D.深度优先遍历是一种递归算法。在遍历过程中,首先访问的点被压入栈底。//不稳定:简单选择排序、希尔排序、快速排序、堆排序、冒泡//稳定:直接插入排序、归并排序、基数排序15.下列关于NOSQL的说法错误的是:BA、MongoDB支持CAP中的AP定理,MySQL支持CAP中的CA,不可能全部支持。B、Redis支持字符串、哈希、列表、集合、有序集合等数据结构。目前,Redis不支持事务。C.Memcache同时支持TCP协议和UDP协议。我们可以将PHPSession存储在Memcache中。D.MongoDB可以直接插入数据,无需先创建Collection结构。目前,MongoDB不支持事务。16、关于设计模式,错误是:AA,在观察者模式下,观察者可以改变被观察者的状态,然后被观察者会通知所有观察者根据被观察者的状态进行。B、MVC模型的基本工作原理是基于观察者模式,实现基于命令模式。C、设计模式的核心原则是:“Open-Closed”原则:对扩展开放,对修改封闭。D.创建模型的根本意图是分离对象创建和使用分离的责任,从而降低系统的耦合度。//不能改17、以下关于常见的PHP开源系统的说法是错误的:BA和Laravel要求PHP版本>=5.3,语法表达能力更强,文档质量高,扩展包丰富。它是一个“掌握PHP开发框架”。B.Discuz采用单入口设计模式,在权限控制和URL重写方面具有优势。C、HDWiki插件分为挂钩型、前台应用型和后台应用型三种。HDWiki插件可以在后台在线安装。D.WordPress的博客程序定位、简单的数据库层等注定无法适应大数据。//discuzismulti-entry18.下面对“表驱动法”的描述是错误的:BA和表驱动法可以作为复杂继承结构的替代。困难在于一个深思熟虑的查找表。B.表驱动方式是一种编程模式——不使用逻辑语句从数据库表中查找信息。C、凡是逻辑可以选择的,查表就可以选择。D.表驱动法是使用阶梯访问查找不规则分布数据的最佳方法。19、下列关于全文搜索技术的说法错误的是:BA和Sphinx是基于SQL的全文搜索引擎,可以与MySQL结合进行全文搜索。它可以提供比数据库本身更专业的搜索功能。B.Solr是新一代的全文搜索组件,比Lucene效率高很多,支持HTTP访问。PHP调用Solr也很方便。C、在MySQL中为某个字段创建FULLTEXT索引,实现全文检索。目前,MyISAM和InnoDB表都支持FULLTEXT索引。D.Lucene附带的二进制分词分析器CJKAnalyzer分词速度快,可以满足一般全文检索的需要。20、下列关于大型网站的说法正确的是:BA,大型网站程序出现异常后,程序员可以根据服务器日志信息定位错误,然后在服务器上使用vim来修正错误。B、大型网站开发和小型网站在很多细节上存在巨大差异,比如“浏览量”,小型网站使用数据库记录,而大型网站往往使用NoSQL来存储。C、大型网站选择开发语言很重要。PHP只适合开发中小型网站,不适合开发大型网站。D、虚拟机技术不能用在大型网站上,因为虚拟机性能差,大型网站访问压力太大,采用后服务器可能宕机。