奇虎360PHP工程师2019年面试题和答案解析

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

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

a.php 的代码如下:

b.php的代码如下:

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.

2.php中单引号和双引号包含字符串的区别正确的是?

A、单引号速度快,双引号速度慢

B、双引号速度快,单引号速度慢

C、单引号里面可以解析转义字符

D、双引号里面可以解析变量

参考答案:D

答案解析:在PHP定义字符串的时候,单引号和双引号没有速度差别,但是单引号中的字符全部是原样输出,而双引号可以解析变量和转义字符。

3.在SQL语言中,子查询是?

A、选取单表中字段子集的查询语句

B、选取多表中字段子集的查询语句

C、返回单表中数据子集的查询语言

D、嵌入到另一个查询语句之中的查询语句

参考答案:D

答案解析:嵌套SELECT语句也叫子查询,一个 SELECT 语句的查询结果能够作为另一个语句的输入值。子查询不但能够出现在Where子句中,也能够出现在from子句中,作为一个临时表使用,也能够出现在select list中,作为一个字段值来返回。

4.mb_作为前缀的函数作用是?

A、按照字节获取长度

B、按照字符获取长度

C、按照厘米获取长度

D、按照公分获取长度

参考答案:B

答案解析:按照字符获取长度。

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

5.PHP的垃圾收集机制,说法错误的是?

A、PHP使用的回收算法是引用计数法,每个php变量存在一个叫"zval"的变量容器中。

B、一个zval变量容器,除了包含变量的类型和值,还包括两个字节的额外信息。第一个是"is_ref",是个bool值,用来标识这个变量是否是属于引用集合(reference set)。 第二个额外字节是"refcount",用以表示指向这个zval变量容器的变量(也称符号即symbol)个数。

C、把一个变量赋值给另一变量不会增加引用次数(refcount) 当任何关联到某个变量容器的变量离开它的作用域(比如:函数执行结束),或者对变量调用了函数 unset()时,"refcount"就会减1

D、变量容器在"refcount"变成0时就被销毁

参考答案:C

答案解析:把一个变量赋值给另一变量将增加引用次数(refcount)。

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

6.以下哪种病毒是通过操作系统漏洞传播的

A、QQ尾巴

B、传奇杀手

C、性感烤鸡

D、冲击波

参考答案:D

答案解析:暂无

7.假设某网站www.exploit.com存在文件上传漏洞,php语言编写,...

假设某网站www.exploit.com存在文件上传漏洞,php语言编写,根目录是C:\wwwroot,现构造文件名test.php上传到服务器目录C:\wwwroot\upload下,内容为,

请问下面的哪条url能够在服务器成功执行whoami命令?

A、http://www.exploit.com/upload/test.php?cmd=system(‘whoami‘);

B、http://www.exploit.com/test.php?cmd=system(‘whoami‘);

C、http://www.exploit.com/upload/test.php?cmd=whoami

D、http://www.exploit.com/upload/test.php?eval=system(‘whoami‘);

参考答案:A

8.关于数据库的读写分离,假设某数据库的工作负载为20%的写,80%的读,并有如下的前提: 1)读和写查询消耗同样的资源。 2)所有的服务器的配置相同。 3)可以把所有的读操作全都转移到从库。 那么如果一个服务器每秒可以支持1000的查询,那么需要增加多少从库才能将负载增加到2000?

A、1台

B、2台

C、3台

D、4台

参考答案:C

答案解析:此问题关键点在于增加的从库也是需要承担写操作的,因为需要通过binlog完成同步。所以每增加一台从库实际是只能承担600的读操作,因为留出400的写操作。那么2000的负载中有1600的写操作,需要3台才能完全消耗。

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

9.下面那个不是mysql存储引擎的锁类型?

A、表锁

B、页锁

C、行锁

D、无

参考答案:B

答案解析:mysql中myisam是有表锁,innodb是行锁,基于索引加锁,如果where条件没有索引,是所有行加锁;sql server才有页锁。

10.php中关于字符串处理函数以下说法正确的是?

A、implode( )方法可以将字符串拆解为数组

B、str_replace()可以替换指定位置的字符串

C、substr( )可以截取字符串

D、strlen( )不能取到字符串的长度

参考答案:C

答案解析:implode()方法是将数组连接为字符串,explode()方法是将字符串拆解为数组 str\_replace()是用指定字符替换原字符串中的某些字符,替换指定位置字符串的方法是 substr\_replace() substr()可以截取字符串,如果截取中文字符串可以用mb\_substr() 获取字符串长度的方法为strlen() 综上,C选项是正确的

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

11.在 bash 中, 在一条命令后加入 "1>&2" 意味着?

A、标准错误输出重定向到标准输入

B、标准输入重定向到标准错误输出

C、标准输出重定向到标准错误输出

D、标准输出重定向到标准输入

参考答案:C

答案解析:Linux 中有三个系统文件描述符: 0:标准输入; 1:标准输出; 2:标准错误输出。

 

12.下面的脚本运行以后,$array数组所包含的值是什么?

A、array (‘2’ , ‘2’)

B、array (‘1’ , ‘1’)

C、array (2 , 2)

D、array (Null , Null)

参考答案:B

答案解析:foreach循环并不能改变数组元素的值,如果要改变数组元素的值,需要使用引用类型。

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

13.以下不是PHP文件操作函数是?

A、file

B、fopen

C、fread

D、strcoll

参考答案:D

答案解析:file 按行读取文件 fopen 打开文件 fread 读取文件 strcoll 字符串比较,非二进制安全

14.在PHP面向对象中有一个通用方法__toString()方法,下面关于此方法描述或定义错误的是( ):

A、此方法是在直接输出对象引用时自动调用的方法。

B、如果对象中没有定义此方法时,直接使用echo输出此对象,会报如下错误:Catchable fatal error: Object of class A could not be converted to string.

C、此方法中一定要有一个字符串作为返回值。

D、此方法用于输出信息的,如下所示:public function __toString( ){ echo "This is Class ....";}

参考答案:D

答案解析:一定要有返回值,且返回值必须为字符串。

15.与 HTTP1.0 相比,HTTP1.1 的优点不包括( )

A、减少了 RTTs 数量

B、支持持久连接

C、减少了 TCP 慢启动次数

D、提高了安全性

参考答案:D

答案解析:HTTP 1.1优化了HTTP1.0的缺点,从而可以支持久连接,在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟即减少了 TCP 慢启动次数,同时允许客户端不用等待上一次请求结果返回,就可以发出下一次请求,减少了 RTTs 数量以及下载过程所需要的时间,HTTP 1.1还提供了与身份认证、状态管理和Cache缓存等机制相关的请求头和响应头。然而在安全性能并不是HTTP1.1的特点,不过使用HTTPS解决了HTTP的安全问题,即安全的超文本传输协议(SHTTP).

16.关于mysql的说法,下面那个是错误的

A、数据库实列才是用来真正操作数据库文件的

B、一个数据库可以对应多个实列

C、数据库是物理操作系统文件或其他形式文件类型的集合

D、数据库实列由数据库后台进程/线程及一个共享内存区组成

参考答案:B

答案解析:mysql数据中实列与数据库是一对一之间的关系

17.以下awk用法描述正确的是?

awk ‘{a[$1,"/t", $2] += $4} END {for (uin in a) printf("%s/t%d/n", uin, a[uin]) }‘ test

A、可以处理字符格式数据

B、可以处理三维数组逻辑

C、可以处理json格式数据

D、可以处理二维数组数据

参考答案:D

答案解析:通过for和[$1,"/t", $2]配合处理二维数组数据

18.以下inode不包含的是?

A、文件的读写权限

B、文件的位置

C、当前目录下的文件数

D、文件的时间戳

参考答案:C

答案解析:inode中存的是该文件种的信息,包含文件的字节数,uid和gid,读写执行权限,时间戳ctime、mtime、atime,链接数:有多少个文件名指向这个inode,文件数据block位置

19.php中处理xml,说法错误的是?

A、可以使用DOMDocument加载

B、SimpleXML扩展提供了一个非常直观的API,更容易将XML转换成对象和遍历元素。建议使用SimpleXML加载非常大的XML文件

C、SimpleXML和DOM扩展是属于基于树的解析器,把整个文档存储为树的数据结构中,需要把整个文档都加载到内存中才能工作,所以当处理大型XML文档的时候,性能会剧减

D、XMLReader是一个XML解析器,它通过在加载过程中遍历每个节点,在而不是在内存中加载整个文档

参考答案:B

答案解析:SimpleXML唯一的缺点就是在内存中加载整个文档或是非常大的XML文件,它的性能可能是一个问题,因为不建议加载非常大的XML文件

20.PHP单例模式使用场景描述错误的是?

A、一个应用中会存在大量的数据库操作,比如过数据库句柄来连接数据库这一行为, 是典型的单例模式

B、如果系统中需要有一个类来全局控制某些配置信息, 那么使用单例模式可以很方便的实现

C、需要curd时使用单例模式可以提高执行效率

D、Web配置项读取使用单例模式意义不大

参考答案:D

答案解析:由于web配置项属于共享资源,所以使用单例模式可以提高执行效率

21.关于Laravel路由,错误的是?

A、所有的 Laravel 路由都在 routes 目录中的路由文件中定义

B、web 中间件组,没有提供会话状态和 CSRF 保护

C、大多数的应用构建,都是以在 routes/web.php 文件定义路由开始的

D、routes/web.php 文件用于定义 web 界面的路由

参考答案:B

答案解析: 所有的 Laravel 路由都在 routes 目录中的路由文件中定义 routes/web.php 文件用于定义 web 界面的路由 大多数的应用构建,都是以在 routes/web.php 文件定义路由开始的

22.若文件存在,则用file()函数打开文件返回的数据类型是?

A、数组

B、字符串

C、整型

D、根据文件类型来定

参考答案:A

答案解析:file() 将文件作为一个数组返回。数组中的每个单元都是文件中相应的一行,包括换行符在内。如果失败,则返回 false。

23支持子程序调用的数据结构是

A、队列

B、二叉树

C、树

D、栈

参考答案:D

答案解析:栈用于支持子程序调用综上,正确答案为D。

24.是PHP魔术方法的是?

A、__function

B、__to

C、__line

D、__invoke

参考答案:D

答案解析:

__construct __destruct __call __callStatic __get __set __isset __clone __unset __sleep __wakeup __toString __invoke __set_state

25.用某排序方法对一元素序列进行非递减排序时,若该方法可保证在排序前后排序码相同者的相对位置不变,则称该排序方法是稳定的。简单选择排序法排序方法是不稳定的,(61)可以说明这个性质。

A、21 48 21* 63 17

B、17 21 21* 48 63

C、 63 21 48 21* 17

D、21* 17 48 63 21

参考答案:A

答案解析:本题考查数据结构基础知识。简单选择排序算法的思想是:首先在所有记录中选出码最小的记录,把它与第1个记录交换,然后在其余的记录内选出排序码最小的记录,与第2个记录交换…依次类推,直到所有记录排好序。直接选择排序的平均时间复杂度O(n2),是不稳定的排序。第一趟下来,第一个一定是最小的或者最大关键字。算法程序:

/*将数组data中n个整数按非递减有序的方式进行排序*/

void SelectSort(intdate[],intn)

{

inti,j,k,temp;

for(i=0;i

k=i;//data[k]表示当前找到的最小数

for(j=i+1;j

if(k!=i){temp=data[i];data[i]=data[k];data[k]=temp;}

}

}

根据以上算法,A选项的数序列经过4次排序,i=4,使用i值为4)不成立而退出整个排序算法。从最终结果看,21*排序之前位于21之后,而排序之后则位于21之前,故A选项可说明简单选择排序是不稳定的算法。同理B、C、D三个选项,排序结果中21*与21的先后顺序与排序前一样,本题选择A选项。

参考答案:(61)A

26.属于awk GNU版本的是?

A、awk

B、gawk

C、nawk

D、ngawk

参考答案:B

答案解析:gawk为awk的gnu版本

27.以下关于PHP字符串说法错误的是?

A、PHP字符串二进制安全的

B、PHP字符串最大为2G

C、PHP字符串可以被序列化

D、PHP字符串可以使用\0来结束

参考答案:D

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

28.PHP常量和常量类理解错误的是?

A、常量在定义的时候就需要赋值,在运行过程中就无法修改值

B、常量使用的时候需要引用

C、在类的内部可以用类名来访问自身的常量

D、const 关键字定义常量必须处于最顶端的作用区域

参考答案:B

答案解析:常量是全局使用的,不需要提前引用

29.Apache与Nginx大访问下性能描述正确的是?

A、Apache所采用的epoll网络I/O模型非常高效

B、Nginx使用了最新的kqueue和select网络I/O模型

C、Apache进程执行PHP、输出HTML都得干,占用的资源多

D、nginx不可以做反向代理服务器

参考答案:C

答案解析:1、Apache所采用的select网络I/O模型非常低效 2、Nginx使用了最新的epoll(Linux 2.6内核)和kqueue(freebsd)网络I/O模型 3、Apache进程干的事情多:执行PHP、输出HTML都得干,占用的资源就多(CPU、内存)

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

1如果需要开发一个标准 php 的扩展,必须包含那些文件?

A、config.m4

B、config.w32

C、php_counter.h

D、counter.c

E、package.xml

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

答案解析:参考:PHP扩展开发--编写一个helloWorld扩展

https://www.cnblogs.com/boystar/p/6904795.htmlhttp...

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

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

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

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

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

原文地址:https://www.cnblogs.com/993089249a/p/11613099.html

时间: 2024-08-30 03:20:23

奇虎360PHP工程师2019年面试题和答案解析的相关文章

PHP程序员搜狐2019年面试题和答案解析

一.单选题(共27题,每题5分) 1.阅读下面PHP代码,并选择输出结果( ) A.0 B.1 C.2 D.3 参考答案:D 答案解析:static属性常驻内存 2.PHP单例模式操作描述错误的是? A.单例模式第一次实例会被建立以后执行可以直接使用 B.需要一个保存类的唯一实例的静态成员变量 C.构造函数和克隆函数必须声明为私有的 D.必须提供一个访问这个实例的公共的静态方法 参考答案:A 答案解析:PHP中,所有的变量无论是全局变量还是类的静态成员,都是页面级的,每次页面被执行时, 都会重新

PHP面试题及答案解析(8)—PHP综合应用题

1.写出下列服务的用途和默认端口. ftp.ssh.http.telnet.https ftp:File Transfer Protocol,文件传输协议,是应用层的协议,它基于传输层,为用户服务,它们负责进行文件的传输,其默认端口是21. ssh:Secure Shell,安全外壳协议,建立在应用层和传输层基础上的安全协议.SSH是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议,其默端口是22. http:hypertext transport protocol,超文本传送协议,是

2017年11月11日软考网络工程师案例分析真题及答案解析

[徐朋出品,必属精品]软考徐朋老师全网最先发布2017年11月11日软考网络工程师案例分析真题及答案解析,是全网最清新版本.详细讲解了2017年11月11日最新开考的软考网络工程师案例分析真题及答案.课件中对每一道真题都进行了详细的解析讲解,考后几周是学员记忆答案的最关键时间点,第一时间发布真题及答案帮助广大考生准确评估自己的考试结果及对未来参加考试的学员展示最新的考试趋势等.下载地址:http://down.51cto.com/data/2340424

小米2019年PHP工程师面试题和答案解析

一.单选题(共29题,每题5分) 1.PHP面向对象方法重写描述错误的是? A.子类必须继承父类 B.子类可以重写父类已有方法 C.重写之后子类会调用父类方法 D.子类也可以具有与父类同名的属性,进行属性覆盖 参考答案:C 答案解析:重写之后子类不会再去调用父类的方法,而是直接调用自身的方法. 2.php选项/信息函数作用错误的是? A.phpinfo() 输出关于 PHP 配置的信息 B.php_sapi_name() 返回 web 服务器和 PHP 之间的接口类型 C.ini_set() 为

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

一.单选题(共26题,每题5分) 1.在进行金融业务系统的网络设计时,应该优先考虑() 原则. A.先进性 B.开放性 C.经济性 D.高可用性 参考答案:D 答案解析: 网络设计一般要遵循一些原则,包括:先进性:建设一个现代化的网络系统,应尽可能采用先进而成熟的技术,应在一段时间内保证其主流地位,但是太新的技术,也有不足之处:意识有可能不成熟:而是标准可能还不晚辈.不统一:三是价格高:四是技术支持力量可能不够.开放性:采用国际通用的标准和技术获得良好的开放性,是网络互连互通的基础经济型:在满足

100多道经典的JAVA面试题及答案解析

面向对象编程(OOP) Java是一个支持并发.基于类和面向对象的计算机编程语言.下面列出了面向对象软件开发的优点: 代码开发模块化,更易维护和修改. 代码复用. 增强代码的可靠性和灵活性. 增加代码的可理解性. 面向对象编程有很多重要的特性,比如:封装,继承,多态和抽象.下面的章节我们会逐个分析这些特性. 封装 封装给对象提供了隐藏内部特性和行为的能力.对象提供一些能被其他对象访问的方法来改变它内部的数据.在Java当中,有3种修饰符:public,private和protected.每一种修

100+经典Java面试题及答案解析

面向对象编程(OOP) Java是一个支持并发.基于类和面向对象的计算机编程语言.下面列出了面向对象软件开发的优点: 代码开发模块化,更易维护和修改. 代码复用. 增强代码的可靠性和灵活性. 增加代码的可理解性. 面向对象编程有很多重要的特性,比如:封装,继承,多态和抽象.下面的章节我们会逐个分析这些特性. 封装 封装给对象提供了隐藏内部特性和行为的能力.对象提供一些能被其他对象访问的方法来改变它内部的数据.在Java当中,有3种修饰符:public,private和protected.每一种修

怎么理解分布式、高并发、多线程?(含面试题和答案解析)

看到分布式.高并发.多线程这三个词的时候,很多人是不是都认为分布式=高并发=多线程?当面试官问到高并发系统可以采用哪些手段来解决,或者被问到分布式系统如何解决一致性的问题,是不是一脸懵逼?确实,在一开始接触的时候,不少人都会分布式.高并发.多线程将三者混淆,误以为所谓的分布式高并发的系统就是能同时供海量用户访问,而采用多线程手段不就是可以提供系统的并发能力吗?实际上,他们三个总是相伴而生,但侧重点又有不同. 接下来我就看看分布式.高并发.多线程这三者之间到底有什么区别? 什么是分布式? 分布式更

【2015年奇虎360|绿盟科技|唯品会|4399秋招岗位分析及内推】一大波网络|安全|运维岗位来袭~

2015年华为网申截止提醒 ①华为的网申页面:http://career.huawei.com/recruitment/campus.html,之前说明是9月3号截止网申,这两天上去看,发布时间又更新为9月1号,不管怎样,建议大家还是先投递吧.按照拼客科技这边的经验(内部已经有3枚学员入职华为),我们前两年投递的岗位是:技术服务工程师和销售解决方案经理,都是大家学习网络和安全这块的,比较匹配的岗位. ②今年主要是技术服务工程师.网络安全工程师,如果打算走销售方向,也可以投递他们的营销工程师.产品