2020最新PHP阿里面试和答案解析

4次阅读

共计 6857 个字符,预计需要花费 18 分钟才能阅读完成。

一、单选题(共 27 题,每题 5 分)

1.Memcache 与 Redis 的比较错误的是?

A、Memcache 过期后,不删除缓存,会导致下次取数据数据的问题,Redis 有专门线程,清除缓存数据;

B、Memcache 和 redis 都是只支持单线程;CPU 利用方面 Memcache 和 redis 部分伯仲

C、Memcache 只支持 key value 存储方式,Redis 支持更多的数据类型,比如 Key value,hash,list,set,zset;

D、Memcache 自身不支持持久化,Redis 支持持久化;

参考答案:B

答案解析:

Memcache 支持多线程,redis 支持单线程;CPU 利用方面 Memcache 优于 redis

2.mysql5.7 中关于 json 类型的说明,不对的是那个

A、JSON 数据可以做有效性检查

B、json 数据中,还是需要遍历所有字符串才能找到数据

C、JSON 使得查询性能提升

D、JSON 支持部分属性索引,通过虚拟列的功能可以对 JSON 中的部分数据进行索引

参考答案:B

答案解析:

原生的 JSON 优势如下:1. 存储上类似 text, 可以存非常大的数据。2. JSON 有效性检查:插入的数据必须是 JSON 类型的字符串才行。3. 相比于传统形式,不需要遍历所有字符串才能找到数据。4. 支持索引:通过虚拟列的功能可以对 JSON 中部分的数据进行索引

3.执行下面代码 $x 会变成什么值呢?

$x=NULL;

if(‘0xFF’==255){

$x=(int)’0xFF’;}

PHP

A、NULL

B、255

C、0

D、false

参考答案:C

答案解析:

正确答案:C 答案解析:oxFF 是一个十六进制数,这时不会转整型比较,会先将 16 进制数字转换成 10 进制数字,再做比较。使用 int 函数,PHP 会使用 is_numeric_string 判断字符串是否包含十六进制数字然后进行转换。发现 0xff 的 0 后面无数字,故为 0.

4.大数据的数据库(NoSQL)与关系型数据库的区别:

A、水平扩展与垂直扩展

B、是否支持事务的 ACID

C、应用中两种数据库互相补充

D、以上都是

参考答案:D

答案解析:无

5.关于判断文件类型,以下说法正确的是?

A、根据文件的扩展名可以正确判断文件的类型

B、根据文件的特征值可以正确判断文件类型

C、根据文件的大小及特征值可以正确判断文件类型

D、通过任何方法也无法 100% 确定文件类型

参考答案:D

答案解析:任何方式都可以伪造,所以我们只能通过方法无限接近,而无法完全保证可以判断正确。

6.以下命令描述争取的是?

ps -aux –sort -pcpu,+pmem | head -n 10

A、查询 CPU 使用排名前十的程序

B、查询访问 CPU 十次以上的程序

C、查询 cpu 和缓存访问前十的程序

D、查询 cpu 和内存前十的记录

参考答案:D

答案解析:ps -aux –sort -pcpu,+pmem | head -n 10 通过 aux 命令查询 cup 和内存前十的记录

7.关于 json 说法错误的是:

A、json_encode 只能处理 utf- 8 编码的数据

B、可以用 sprintf 组装或解析 json 字符串

C、json_encode 只能编码数组

D、json_decode 可以将 json 字符串解码成对象

参考答案:C

答案解析:json\_encode 可以编码成数组和对象

8.以下关于进程和程序的区别的说法,错误的是?

A、程序没有状态,而进程是有状态的

B、程序是一组有序的静态指令,进程是一次程序的执行过程

C、程序可以长期保存,进程是暂时的

D、程序只能在前台运行,而进程可以在前台或后台运行

参考答案:D

答案解析:程序是一段可执行的代码文件,在 linux 上就是文件。程序运行时就被称为进程,即进程是运行状态的程序。

9.PHP 面向对象原则理解错误的是?

A、接口分离原则

B、依赖原则

C、替换原则

D、多项职责原则

参考答案:D

答案解析:五大基本原则 单一职责原则 SRP(Single Responsibility Principle) 是指一个类的功能要单一,不能包罗万象。如同一个人一样,分配的工作不能太多,否则一天到晚虽然忙忙碌碌的,但效率却高不起来。开放封闭原则 OCP(Open-Close Principle) 一个模块在扩展性方面应该是开放的而在更改性方面应该是封闭的。比如:一个网络模块,原来只服务端功能,而现在要加入客户端功能,那么应当在不用修改服务端功能代码的前提下,就能够增加客户端功能的实现代码,这要求在设计之初,就应当将服务端和客户端分开,公共部分抽象出来。替换原则(the Liskov Substitution Principle LSP) 子类应当可以替换父类并出现在父类能够出现的任何地方。比如:公司搞年度晚会,所有员工可以参加抽奖,那么不管是老员工还是新员工,也不管是总部员工还是外派员工,都应当可以参加抽奖,否则这公司就不和谐了。依赖原则(the Dependency Inversion Principle DIP) 具体依赖抽象,上层依赖下层。假设 B 是较 A 低的模块,但 B 需要使用到 A 的功能,这个时候,B 不应当直接使用 A 中的具体类:而应当由 B 定义一抽象接口,并由 A 来实现这个抽象接口,B 只使用这个抽象接口:这样就达到 了依赖倒置的目的,B 也解除了对 A 的依赖,反过来是 A 依赖于 B 定义的抽象接口。通过上层模块难以避免依赖下层模块,假如 B 也直接依赖 A 的实现,那么就可能造成循环依赖。一个常见的问题就是编译 A 模块时需要直接包含到 B 模块的 cpp 文件,而编译 B 时同样要直接包含到 A 的 cpp 文件。接口分离原则(the Interface Segregation Principle ISP) 模块间要通过抽象接口隔离开,而不是通过具体的类强耦合起来。

10.三个人独立地破译一份密码,已知各人能译出的概率分别为 1/5,1/4,1/3,则密码能被破译的概率为 ?

A、1/60

B、3/5

C、59/60

D、13/30

参考答案:B

答案解析:题目中,至少有一人能破译密码和三人都不能破译密码是对立事件。所以至少有一人能译出的概率 =1-三人都没译出的概率 =1-(1-1/5)(1-1/3)(1-1/4)=1-2/5=3/5。

11.PHP 数组类型与其他类型转换,以下错误的是?

A、int,float,string,boolean,resource 类型(array)$a 等同于 array($a)

B、(array)object 键名是对象成员变量名,键值是对象成员属性

C、array(false)=[] 空数组

D、(array)null = [] 空数组 参考答案:C

答案解析:int,float,string,boolean,resource 类型(array)$a 等同于 array($a) (array)object 键名是对象成员变量名,键值是对象成员属性 (array)null = \[\] 空数组。

12.以下关于结构型模式说法错误的是?

A、结构型模式可以在不破坏类封装性的基础上,实现新的功能

B、结构型模式主要用于创建一组对象

C、结构型模式可以创建一组类的统一访问接口

D、结构型模式可以在不破坏类封装性的基础上,使得类可以同不曾估计到的系统进行交互

参考答案:B

答案解析:结构型(structural):处理类或对象间的组合。

_13_小王的部门领导给下达了一个任务:由于网站某个栏目访问量很大,因此需要专门给网站的某个 url 请求做负载均衡,那么该通过什么集群软件实现呢?

A、LVS 集群软件

B、oneproxy 集群软件

C、haproxy 集群软件

D、keepalived 集群软件

参考答案:C

答案解析:略。

14.以下文件被称为纯文本文件或 ASCII 文件的是()。

A、以.EXE 为扩展名的文件

B、以.TXT 为扩展名的文件

C、以 BMP 为扩展名的文件

D、以.DOC 为扩展名的文件

参考答案:B

答案解析:纯文本文件或 ASCII 文件一般以 txt 为扩展名。

15.以下能够删除一列的是

A、alter table emp remove addcolumn

B、alter table emp drop column addcolumn

C、alter table emp delete column addcolumn

D、alter table emp delete addcolumn

参考答案:B

答案解析:drop 删除列 表 delete 删除行

16.以下哪个后缀的文件类型不是文本文件?

A、word

B、Excel

C、txt

D、pdf

参考答案:D

答案解析:pdf 是二进制文件。

17以下代码 a.php 输出的结果是?

a.php 的代码如下:

<?php

functionfoo() {    

echo’foo in a’;

    }

include’b.php’;

foo();

b.php 的代码如下:

<?php

return;

functionfoo() {    

echo’foo in b’;

    }

A、foo in a

B、什么也不输出

C、报错

D、foo in b

参考答案:C

答案解析:答案是 C 想让大家思考的是、为什么在 b 里边使用了 return、依然可以找到 foo 函数的定义、并且报错 Cannot redeclare foo() ? 因为 php 是在运行之前先解释执行、为避免表述不精确、附上文档原文:Note that because PHP processes the file before running it, any functions defined in an included file will still be available, even if the file is not executed.

18.以下关于非对称加密的说法错误的是

A、加密速度慢

B、安全性高

C、双方需要同步密钥

D、可以进行数字签名

参考答案:C

答案解析:非对称加密即加密解密不是同一把密钥,目的就是提高安全性,自然速度可能会降低。数字签名是非对称加密的典型应用。

19.关于 Laravel 中间件错误的是?

A、运行 Artisan 命令 make:middleware 创建新的中间件

B、可定义前置 & 后置中间件

C、中间件是代理模式

D、中间件是中介模式

参考答案:C

答案解析:运行 Artisan 命令 make:middleware 创建新的中间件 可定义前置 & 后置中间件

20.以下可以将 PHP 变量序列化并且保存到文件中的是?

A、serialize()

B、json_encode()

C、var_export()

D、以上都可以

参考答案:C

答案解析:var_export()第二个参数为 TRUE,可以返回变量的表示。

21.关于 php 配置选项错误的是

A、开启 short_open_tag 允许使用 PHP 代码开始标志的缩写形式(<? ?>)

B、如果启用了 magic_quotes_runtime,大多数返回任何形式外部数据的函数,包括数据库和文本段将会用反斜线转义引号

C、因为可以在运行时使用 ini_set 对配置选项进行设置,所以 display_errors 可以一直开启

D、PHP 的安全模式是为了试图解决共享服务器(shared-server)安全问题而设立的

参考答案:C

答案解析:尽管 display\_errors 也可以在运行时设置 (使用 ini\_set()),但是脚本出现致命错误时任何运行时的设置都是无效的。因为在这种情况下预期运行的操作不会被执行。这样将会暴露敏感信息。

22.关于 PHP 数组 Bucket 结构体,说法错误的是?

A、void *pData 指向 value

B、void *pKey 指向 key

C、void *pDataPtr 指向 value 的指针

D、struct bucket *pLast 存放同一个 Bucket 内的上一个元素

参考答案:B

答案解析:void \*pData 指向 value void \*pDataPtr 指向 value 的指针 struct bucket \*pNext 存放同一个 Bucket 内的下一个元素 struct bucket \*pLast 存放同一个 Bucket 内的上一个元素。

23.设计性能较优的关系模式称为规范化,规范化主要的理论依据是()。

A、关系规范化理论

B、关系运算理论

C、关系代数理论

D、数理逻辑

参考答案:A

答案解析:A。

24.从用户在浏览器中输入网址并回车,到看到完整的页面,中间都经历了哪些过程?

A、浏览器 ->url->dns->ip->port->nginx->tcp->server name->php-fpm/fast cgi->php

B、浏览器 ->url->dns->ip->tcp->port->nginx->server name->php-fpm/fast cgi->php

C、浏览器 ->url->dns->ip->port->tcp->nginx->server name->php->php-fpm/fast cgi

D、浏览器 ->url->dns->ip->port->tcp->nginx->server name->php-fpm/fast cgi->php

参考答案:D

答案解析:一个 PHP 的 Web 请求:

00001. 浏览器发送一个 URL 请求 2.DNS 开始解析域名 3. 获取到 IP 后开始访问 IP 和 Port 4. 开发发送 TCP 请求到 Nginx 5.Nginx 解析 server name,然后发送到 php-fpm 管理进程 6.php-fpm 把具体的请求交给 PHP 最后执行。

25.阅读下面 PHP 代码,并选择输出结果()

classA{publicstatic$num=0;publicfunction\_\_construct(){self::$num++;}}newA();newA();newA();echoA::$num;

A、0

B、1

C、2

D、3

参考答案:D

答案解析:static 属性常驻内存。

26.以下哪条不是 PHP 语言的特性?

A、开源

B、免费

C、基于客户端

D、便捷高效

参考答案:C

答案解析:PHP 语言的特性为:开源、免费和便捷高效。

27.关于 PHP 数组 key 和 value 的限制条件,说法正确的是?

A、key 只能是 int 或 string 类型,value 可以使任何类型

B、key 可以是任何类型,value 可以是任何类型

C、key 可以是任何类型,value 只能是 int 或 string 类型

D、key 只能是 int 或 string 类型,value 只能是 int 或 string 类型

参考答案:A

答案解析:key 只能是 int 或 string 类型,value 可以使任何类型

二、多选题(共 3 题,每题 5 分)

1.假设当前屏幕分别率为 1024×768,定义一个居中的占屏幕一半大小的表格的语句是

A、<TABLE ALIGN=”CENTER”WIDTH=”50%”></TABLE>

B、<TABLE ALIGN=”CENTER”WIDTH=”512″></TABLE>

C、<DIV ALIGN=”CENTER”><TABLE WIDTH=”512″></TABLE></DIV>

D、<CENTER><TABLE WIDTH=”50%”></TABLE></CENTER>

参考答案:A,B,C,D

答案解析:center 标签 HTML5 不推荐使用了 … 这种没有语义的纯样式标签是不符合 w3c 规范的,MDN 上也有相关说明。

2.下列正则表达式不能匹配”www.innotechx.com”的是:

下列正则表达式不能匹配”www.innotechx.com”的是:

A、^w+.w+.w+$

B、[w]{0,3}.[a-z]*.[a-z]+

C、^w.*com$

D、[w]{3}.[a-z]{11}.[a-z]

参考答案:A,D

答案解析:首先来看 A 选项,^ 表示匹配字符串的开始,而 w 和 . 是没有特殊意义的,千万不要看错成是“\w(匹配字母或数字或下划线或汉字)”了,+ 表示重复一次或者多次,$ 是匹配字符串的结束。所以该选项会匹配 [www.www.www](http://www.www.www)(其中 w 可重复一次以上)。

B 选项,[w]{0,3}限定符,表示将 w 重复 0 到 3 次,“.”无特殊意义,* 表示重复任意次,包括零次,[a-z]表示匹配 a 到 z 的字母,所以就是匹配 a 到 z 中的某一字母任意次重复。后面这个相同意思,就是 + 号是重复一次以上。连起来看,是可以匹配选项的。

C 选项,与上述选项相同,^ 先匹配字符串开始,然后包含一个 w,和 ” . “ 重复任意次,最后以 com 结尾。这个正则会匹配包含了“wcom”的字符串,但是 w 要是开头,com 要是结尾,所以可以匹配选项,大家可以自己试试看。

D 选项,重复三次 w,然后一个 ” . “, 但是后面这里要重复 11 次 a 到 z 中的某一字母,数了下题目中选项只有 9 个字母,后面就不要看啦,已经错啦~

废话 有点多吼,有说错了请指出,刚学也不怎么懂~。

3为什么大型网站要使用消息队列?

A、解耦

B、异步

C、削峰

D、大数据处理

参考答案:A,B,C

答案解析:消息队列常见的使用场景有很多,但是比较核心的有 3 个:解耦、异步、削峰 大数据处理,有相应的处理办法,和消息队列关系不大。

正文完
 0