欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

2019年滴滴出行PHP工程师面试题和答案解析

程序员文章站 2022-04-19 10:26:26
一、单选题(共30题,每题5分) 1.下列关于PHP垃圾回收的说法,错误的是? A、开启/关闭垃圾回收机制可以通过修改php配置实现 B、可以在程序中使用gc_enable() 和 gc_disable()开启和关闭。 C、PHP中的垃圾回收机制,会大幅度提升系统性能。 D、开启垃圾回收机制后,针对 ......

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

1.下列关于php垃圾回收的说法,错误的是?

a、开启/关闭垃圾回收机制可以通过修改php配置实现

b、可以在程序中使用gc_enable() 和 gc_disable()开启和关闭。

c、php中的垃圾回收机制,会大幅度提升系统性能。

d、开启垃圾回收机制后,针对内存泄露的情况,可以节省大量的内存空间,但是由于垃圾回收算法运行耗费时间,开启垃圾回收算法会增加脚本的执行时间。

参考答案:c

答案解析:php中的垃圾回收机制,仅仅在循环回收算法确实运行时会有时间消耗上的增加。但是在平常的(更小的)脚本中应根本就没有性能影响。

(加入群677079770获取更多面试题答案。)

 

2.树结构分为?

a、二叉树和完全二叉树

b、满二叉树和二叉树

c、有序树和无序树

d、btree和搜索树

参考答案:c

答案解析:有序树和无序树。

 

3.数据项与数据元素关系说法错误的是?

a、数据元素是数据的基本单位

b、一个数据项可由若干个数据元素组成

c、数据项是数据的不可分割的最小单位

d、数据对象是性质相同的数据元素的集合

参考答案:b

答案解析:

数据元素:是数据的基本单位,在程序中通常作为一个整体来进行考虑和处理。一个数据元素可由若干个数据项组成。数据项是数据的不可分割的最小单位。数据项是对客观事物某一方面特性的数据描述。 数据对象:是性质相同的数据元素的集合,是数据的一个子集。如字符集合c={‘a’,’b’,’c,…}

 

4.在http 1.1中,状态码 404 的含义是(),如果返回“找不到文件”的提示,则可用 header 函数,其语句为()

a、拒绝执行,header("location: http://www.sijiaomao.com/404.php");

b、未授权,header("http/1.1 404 not found");

c、拒绝执行,header("http/1.1 404 not found");

d、未授权,header("location: http://www.sijiaomao.com/404.php");

参考答案:b

答案解析:拒绝执行状态码是403 ,header("location:xxxx")默认是做302状态的跳转,所以答案为b。

 

5.在mysql中用a,b,c三个字段建立一个复合索引a_b_c,请问以下哪个查询效率最差?

a、select * from test where a=10 and b>50

b、select * from test where a=10 and b>10 order by c

c、select * from test where a=10 and b=10 order by a

d、select * from test where a=10 and b = 10 order by c

参考答案:b

答案解析:最左匹配原则:该复合索引包含a,a_b,a_b_c。 复合索引只有在前面的字段为精确查询时,才会用上后面的复合索引,一旦出现不精确查询,则不会使用复合索引。 a选项中,使用a_b索引。 b选项中,使用了a_b索引,且有order by c故效率最差。 c选项中,使用a_b索引。 d选项中,使用a_b_c索引。

 

6.一条sql语句从执行到返回结果中间花费时间最长的环节是哪步

a、从php到mysql的网络层

b、mysql解析语句 ,优化,生成执行计划

c、执行

d、返回结果

参考答案:d

答案解析:查询结果的数据量越大返回时间越长,远远超过其他环节的占用时间。

(加入群677079770获取更多面试题答案。)

 

7.关于设计模式遵循的原则,说法错误的是?

a、组合优于继承

b、针对实现编程

c、对扩展开放,对修改关闭

d、降低对象之间的耦合

参考答案:b。答案解析:设计模式(面向对象)有七大原则,分别是: 1.开放-封闭原则 2.单一职责原则 3.依赖倒转原则 4.迪米特法则(也称为最小知识原则) 5.接口隔离原则 6.合成/聚合复用原则 7.里氏代换原则

 

8.一个网站用过lvs+keepalived做了集群,负载均衡算法是rr,但是网站后台登陆的时候,一直提示登录超时,无法使用,请问如何解决这个问题?

a、将网站后台请求不做负载均衡

b、修改负载均衡算法为wlc

c、设置lvs参数,添加persistence_timeout参数

d、修改负载均衡算法为ip hash</p><p><br/>

参考答案:c

答案解析:略

 

9.csrf攻击描述错误的是?

a、csrf需要有javascript代码

b、csrf攻击恶意代码位于第三方站点上

c、过滤用户的输入可以防止恶意代码注入到某个站点,但是它无阻止法恶意代码在第三方站点上运行

d、csrf符合同源策略

参考答案:a

答案解析:xss攻击需要javascript代码,csrf攻击不需要javascript代码。

 

10.关于php模式修饰符说法错误的是?

a、i 大小写不敏感匹配

b、m ^将只匹配字符串的开头

c、x 空白和#注释将被忽略

d、将替换后的字符串作为php代码评估执行

参考答案:b

答案解析:m为增强的行锚点模式,\\n的前后也会被认为结束和开始

 

11 6.3个不同元素依次进栈,有()不同的出栈序列

a、a、4

b、b、5

c、c、6

d、d、7

参考答案:b

答案解析:对于n个不同的元素进栈,出栈序列的个数为6\*5\*4/4\*3\*2\*1为5,也就是卡特兰数

(加入群677079770获取更多面试题答案。)

12.多个线程可同时操作一个数据,为了保证该数据的准确性,可将操作该数据的部分改为()

a、只写

b、只读

c、异步

d、同步

参考答案:d

答案解析:数据只读的话那还怎么操作。

 

13.http协议如何工作?

a、解析域名->通过dns拿到ip->建立tcp连接->向服务器拿到请求->返回信息

b、通过dns拿到ip->建立tcp连接->向服务器拿到请求->返回信息

c、解析域名->通过dns拿到ip->向服务器拿到请求->建立tcp连接->返回信息

d、解析域名->向服务器拿到请求->通过dns拿到ip->建立tcp连接->返回信息

参考答案:a

答案解析:解析域名->通过dns拿到ip->建立tcp连接->向服务器拿到请求->返回信息。

 

14.以下关于http method 的说法,错误的是?

a、一台服务器要与http1.1兼容,只要为资源实现get和head方法即可

b、put让服务器用请求的主体部分来创建一个由所请求的url命名的新文档,或者,如果那个url已经存在的话,就用干这个主体替代它

c、post起初是用来向服务器输入数据的。实际上,通常会用它来支持html的表单。表单中填好的数据通常会被送给服务器,然后由服务器将其发送到要去的地方。

d、trace方法请求web服务器告知其支持的各种功能。可以查询服务器支持哪些方法或者对某些特殊资源支持哪些方法。

参考答案:d

答案解析:

http method
一台服务器要与http1.1兼容,只要为资源实现get和head方法即可
get是最常用的方法,通常用于请求服务器发送某个资源。
head与get类似,但服务器在响应中值返回首部,不返回实体的主体部分
put让服务器用请求的主体部分来创建一个由所请求的url命名的新文档,或者,如果那个url已经存在的话,就用干这个主体替代它
post起初是用来向服务器输入数据的。实际上,通常会用它来支持html的表单。表单中填好的数据通常会被送给服务器,然后由服务器将其发送到要去的地方。
trace会在目的服务器端发起一个环回诊断,最后一站的服务器会弹回一个trace响应并在响应主体中携带它收到的原始请求报文。trace方法主要用于诊断,用于验证请求是否如愿穿过了请求/响应链。
options方法请求web服务器告知其支持的各种功能。可以查询服务器支持哪些方法或者对某些特殊资源支持哪些方法。
delete请求服务器删除请求url指定的资源


15.以下javascript代码的运行结果是()

2019年滴滴出行PHP工程师面试题和答案解析

 

a、true

b、false

c、false 

d、true

参考答案:b

答案解析:略。

 

16.关于header请求头,说法错误的是

a、upgrade: http/2.0 切换协议版本

b、rang bytes=0-2000 请求一段内容,如0到2000字节,可用于断点下载

c、vary 使用缓存的版本,一般用于代理服务器

d、x-requested-with 异步请求

参考答案:d

答案解析:vary 使用缓存的版本,一般用于代理服务器 rang bytes=0-2000 请求一段内存,如0到2000字节,可用于断点下载 referer 来源地址 upgrade: http/2.0 切换协议版本 x-requested-with ajax请求。

 

17.关于php数组的大小正确的是

a、hash bucket的大小,最小为8,以2x增长。

b、初始数组不给元素分配空间

c、数组会谁元素的变动随时变化

d、扩容之后需要表不用做任何操作

参考答案:a

答案解析:hashtable的大小并不是固定不变的,当nnumofelements > ntablesize时,会对hashtable进行扩容,以便于容纳更多的元素。(所以可能加了一个值,但数组容量扩的很多:以2x增长)

18.在mysql中,可用于创建一个新数据库的sql语句为()

a、create database

b、create table

c、create databases

d、create db

参考答案:a

答案解析:

a选项正确,创建库语句为:create database 数据库名。

b选项create table,是创建表的语句。

c和d选项语法错误。

(加入群677079770获取更多面试题答案。)

19.大量在外部排序中使用的数据结构是()

a、hashtable

b、b+tree

c、rb-tree

d、skip list

参考答案:b

答案解析:外部排序指的是大文件的排序,即待排序的记录存储在外存储器上,待排序的文件无法一次装入内存,需要在内存和外部存储器之间进行多次数据交换,以达到排序整个文件的目的。外部排序最常用的算法是多路归并排序,即将原文件分解成多个能够一次性装人内存的部分,分别把每一部分调入内存完成排序。然后,对已经排序的子文件进行归并排序。 大规模数据存储中,实现索引查询这样一个实际背景下,树节点存储的元素数量是有限的(如果元素数量非常多的话,查找就退化成节点内部的线性查找了),这样导致二叉查找树结构由于树的深度过大而造成磁盘i/o读写过于频繁,进而导致查询效率低下,那么如何减少树的深度(当然是不能减少查询的数据量),一个基本的想法就是:采用多叉树结构(由于树节点元素数量是有限的,自然该节点的子树数量也就是有限的)。 这样我们就提出了一个新的查找树结构——多路查找树。根据平衡二叉树的启发,自然就想到平衡多路查找树结构,也就是b~tree(b树结构)。

 

20.以下关于php字符串说法错误的是?

a、php字符串二进制安全的

b、php字符串最大为2g

c、php字符串可以被序列化

d、php字符串可以使用\0来结束

参考答案:d

答案解析: 因为php字符串是二进制安全的 与c语言不同 所以不识别\0

 

21.下列数据结构中,能用二分法进行查找的是(  )。

a、 顺序存储的有序线性表

b、 线性链表

c、 二叉链表

d、 有序线性链表

参考答案:a

答案解析:暂无

 

22.is_numberic()函数的含义?

a、判断传入值是不是数值

b、将传入值转换为整数

c、将传入值转换为数值

d、判断传入值是不是小数

参考答案:a

答案解析:is\_numeric — 检测变量是否为数字或数字字符串

 

23.哪项不是yii入口脚本主要工作?

a、定义全局常量

b、包含 [[yii]] 类文件

c、加载应用配置

d、加载过滤器

参考答案:d

答案解析:入口文件主要工作如下: 定义全局常量; 注册 composer 自动加载器; 包含
\[yii
\[yii
\] 类文件; 加载应用配置; 创建一个应用实例并配置; 调用
\[yiibaseapplication::run()
\[yiibaseapplication::run()
\] 来处理请求。

24.以下代码将会调用display_result() ?

2019年滴滴出行PHP工程师面试题和答案解析

 

a、错误

b、正确

c、编译错误

d、无答案

参考答案:c

答案解析:$x="display"; $x.'\_result'.'()'; function display\_result(){ echo 'ok'; } 这样子才不报错

 

25.php的三个模块不包括哪个?

a、内核

b、zend引擎

c、扩展层

d、解析层

参考答案:d

答案解析:php总共三个模块:内核、zend引擎、以及扩展层

 

26.下面关于opcode的说法错误的是?

a、opcode 是php的扩展模块

b、用apc 或者xcache 缓存可以缓存php的opcode

c、opcode 是php脚本语言编译后的中间语言。

d、缓存opcode 后 可以加快网站的运行速度

参考答案:a

答案解析:opcode 是php脚本编译后的中间码。

(加入群677079770获取更多面试题答案。)

 

27.关于php运行机制错误的是:

a、php总共有三个模块:内核、zend引擎、扩展层

b、php通过sapi和apache相连

c、zend引擎可以将源文件转换成二进制文件运行

d、操作mysql的功能没有包含在php内核中

参考答案:c

答案解析:zend引擎将源文件转换成opcode代码,然后在虚拟机上运行

 

28.黑客利用缓冲区溢出漏洞进行攻击时,对于这一威胁,最可靠的解决方案是( )

a、安装防火墙

b、安装用户身份认证系统

c、安装系统打补丁

d、安装防病毒软件

参考答案:c

答案解析:

c:安装系统打补丁

 

29.随着业务的增长,信息系统的访问量和数据流量快速增加,采用负载均衡(load balance)方法可避免由此导致的系统性能下降甚至崩溃。以下关于负载均衡的叙述中,错误的是()。

a、负载均衡通常由服务器端安装的附加软件来实现

b、负载均衡并不会增加系统的吞吐量

c、负载均衡可在不同地理位置、不同网络结构的服务器群之间进行

d、负载均衡可使用户只通过一个ip地址或域名就能访问相应的服务器

参考答案:b

答案解析:考核负载均衡方面的知识

 

30.smj二进制字节顺序正确的是?

a、0101 0011 0100 1010 0100 1101

b、0011 0101 0100 1101 0100 1010

c、0101 0011 0100 0100 1010 1101

d、0011 0100 0100 1010 0011 1101

参考答案:a。答案解析:smj转换二进制为 010100110100101001001101

 

 

不定期分享限时内容:(加入群677079770获取更多面试题答案和学习资料。)

 ★腾讯高级php工程师笔试题目 

 ★亿级pv高并发场景订单的处理 

 ★laravel开发天猫商城组件服务 

 ★战旗tv视频直播的架构项目实战 

2019年滴滴出行PHP工程师面试题和答案解析

 

 

2019年滴滴出行PHP工程师面试题和答案解析