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

2019年京东PHP工程师面试题和答案解析

程序员文章站 2022-04-10 22:13:54
一、单选题(共28题,每题5分) 1.Apache与Nginx大访问下性能描述正确的是? A、Apache所采用的epoll网络I/O模型非常高效 B、Nginx使用了最新的kqueue和select网络I/O模型 C、Apache进程执行PHP、输出HTML都得干,占用的资源多 D、nginx不可 ......

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

1.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、内存)

 

2.下列哪种php运行模式在php5.3之后不再支持?

a、cgi

b、fastcig

c、isipa

d、cli

参考答案:c

答案解析:在php5.3以后,php不再有isapi模式,安装后也不再有php5isapi.dll这个文件。要在iis6上使用高版本php,必须安装fastcgi扩展,然后使iis6支持fastcgi。

3.yii小部件描述错误的是?

a、小部件是面向对象方式来重用视图代码

b、创建小部件时仍需要遵循 mvc 模式,通常逻辑代码在小部件类,展示内容在视图中

c、小部件设计时应不是独立的,也就是说使用一个小部件时候,不可以直接丢弃它而不需要额外的处理

d、当小部件需要外部资源如 css, javascript图片等会比较棘手幸运的时候 yii 提供资源包来解决这个问题。

参考答案:c

答案解析:小部件设计时应是独立的,也就是说使用一个小部件时候,可以直接丢弃它而不需要额外的处理。

 

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

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

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

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

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

参考答案:b

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

 

5是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

 

6.substr函数的作用是?

a、查找字符串

b、替换字符串

c、截取字串

d、截取长度

参考答案:c

答案解析:截取字符串的部分字符串。

 

7.以下的哪一个数据库产品是采用了 purexml技术的数据服务器:

a、sql server

b、db2

c、mysql

d、json

参考答案:b

答案解析:暂无

 

8.作为一个管理员,你希望在每一个新用户的目录下放一个文件.bashrc, 那么你应该在哪个目录下放这个文件,以便于新用户创建主目录时自动将这个文件复制到自己的目录下。

a、/etc/skel/

b、/etc/default/

c、/etc/defaults/

d、/etc/profile.d/

参考答案:a

答案解析:/etc/skel/目录是用来存放新用户配置文件的目录,当我们添加新用户的时候,这个目录下的所有文件会自动被复制到新添加的用户的家目录下。 这个目录下的所有文件都是隐藏文件(以.点开头的文件)。

 

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

a、create database

b、create table

c、create databases

d、create db

参考答案:a

答案解析:

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

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

c和d选项语法错误。

 

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

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

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

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

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

参考答案:d

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

 

11.在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索引。

 

12.关于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可以使任何类型.。

 

13.以下代码有什么漏洞?
2019年京东PHP工程师面试题和答案解析

 

 

 

a、没有漏洞

b、适当用规则可删除服务器全部文件

c、适当用规则可获取想要的任何文件内容

d、适当用规则可以更改管理员密码

参考答案:c

答案解析:如果我们提交 demo.php?dir=| cat /etc/passwd 则可以获取服务器上所有管理员的账户信息。

 

14.以下shell代码描述正确的是?

read -p "please input ip:" ipping $ip -w &> /dev/null && echo $ip is up || echo $ip is down

a、查询本机ip

b、查找访问该服务器的ip

c、通过ip查找访问文件

d、通过输入ip判断主机是否关机

参考答案:d

答案解析:read -p "please input ip:" ip 提示输入要判断主机的ip ping $ip -w &> /dev/null && echo $ip is up || echo $ip is down :ping 该ip判断是否已关机。

 

15.以下哪个模式是利用一个对象,快速地生成一批对象?

a、抽象工厂(abstract factory)模式

b、合成(composite)模式

c、原型(prototype)模式

d、桥接(bridge)模式

参考答案:c

答案解析:原型模式:利用原型实例来“克隆”创建新的对象。

 

16.一个汉字在计算机内部保存的编码是?

a、区位码

b、国标码

c、机内码

d、机器码

参考答案:c

答案解析:机内码是一个汉字在计算机内部保存的编码。

 

17.一下哪个不是php的运行模式?

a、cgi

b、fastcgi

c、apache2handler

d、apache

参考答案:d。答案解析:前三个是常用的运行模式,apache是web服务器软件。

 

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

a、i 大小写不敏感匹配

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

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

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

参考答案:b

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

 

19.挑出来一个与众不同的命令

a、vi

b、vim

c、ll

d、nano

参考答案:c

答案解析:vi,vim和 nano都是编辑器,用于编辑文档,而ll是显示目录下的文件信息。

 

20.以下哪个函数不是php的文件指针操作?

a、ftell()

b、fseek()

c、file()

d、feof()

参考答案:c

答案解析:ftell() 返回文件指针位置 fseek() 在文件指针中定位 feof() 测试文件指针是否在结尾。

 

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 题6.3个不同元素依次进栈,有()不同的出栈序列

a、a、4

b、b、5

c、c、6

d、d、7

参考答案:b

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

 

23.与 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).

 

24.下面有关内核线程和用户线程说法错误的是?

a、用户线程因<br>i/o 而处于等待状态时,整个进程就会被调度程序切换为等待状态,其他线程得不到运行的机会

b、内核线程只运行在内核态,不受用户态上下文的影响

c、用户线程和内核线程的调度都需要经过内核态

d、内核线程有利于发挥多处理器的并发优势,但却占用了更多的系统开支

参考答案:c

答案解析:用户线程不需要,不然golang就没有存在的意义了。

 

 

 

25.以下关于引用说法错误的是?

a、引用不是c的指针

b、引用不允许用两个变量来指向同一个内容

c、用引用可以传递变量

d、可以将一个变量通过引用传递给函数,这样该函数就可以修改其参数的值。

参考答案:b

答案解析:引用是允许用两个变量来指向同一个内容的。

 

26.以下代码输出的结果是?
2019年京东PHP工程师面试题和答案解析

 

 

 

a、1

b、2

c、3

d、4

参考答案:a

答案解析:考察运算符优先级, 题目$a=(2>2)?2:3?++$a:--$a; 相当于$a=(2>2)?2:(3?++$a:--$a); 先计算括号内的运算 得出结果1.

27.以下代码执行结果是?

2019年京东PHP工程师面试题和答案解析

 

 

 

a、0

b、1

c、2

d、3

参考答案:b

答案解析:如果你回答 2 ,恭喜,你掉入陷阱了。 其实这道题主要考两点,第一点是static静态类型。这种的值永远都是静态的,第一次调用声明等于0,并且自增等于1。第二次调用,1再自增就等于2。但其实这里还有一道陷阱,那就是++a与a++的区别,前++是先自增,后++是先返回值再自增,所以结果等于 1。

 

28.php执行的时候有如下执行过程:scanning(lexing) - compilation - execution - parsing,其含义分别为:

a、将php代码转换为语言片段(tokens)、将tokens转换成简单而有意义的表达式、顺次执行opcodes、将表达式编译成opocdes

b、将php代码转换为语言片段(tokens)、将表达式编译成opocdes、顺次执行opcodes、将tokens转换成简单而有意义的表达式

c、将php代码转换为语言片段(tokens)、将tokens转换成简单而有意义的表达式、将表达式编译成opocdes、顺次执行opcodes

d、将php代码转换为语言片段(tokens)、将表达式编译成opocdes、将tokens转换成简单而有意义的表达式、顺次执行opcodes

参考答案:c

答案解析:

正确答案为c

1.scanning(lexing) ,将php代码转换为语言片段(tokens)

2.parsing, 将tokens转换成简单而有意义的表达式

3.compilation, 将表达式编译成opocdes

4.execution, 顺次执行opcodes,每次一条,从而实现php脚本的功能。

 

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

1.在mysql中,关于hash索引,下列描述正确的是?

a、如果将一个myisam表改为hash索引的memory表,不会影响查询的执行效率

b、只用于使用=或者<=>操作符的等式比较

c、优化器不能使用hash索引来加速order by操作

d、只能使用整个关键字来搜索一行

参考答案:b,c,d

答案解析:

a 效率会降低。 简单地说,哈希索引就是采用一定的哈希算法,把键值换算成新的哈希值,检索时不需要类似b+树那样从根节点到叶子节点逐级查找,只需一次哈希算法即可立刻定位到相应的位置,速度非常快。 b+树索引和哈希索引的明显区别是: 如果是等值查询,那么哈希索引明显有绝对优势,因为只需要经过一次算法即可找到相应的键值;当然了,这个前提是,键值都是唯一的。如果键值不是唯一的,就需要先找到该键所在位置,然后再根据链表往后扫描,直到找到相应的数据; 从示意图中也能看到,如果是范围查询检索,这时候哈希索引就毫无用武之地了,因为原先是有序的键值,经过哈希算法后,有可能变成不连续的了,就没办法再利用索引完成范围查询检索; 同理,哈希索引也没办法利用索引完成排序,以及like ‘xxx%’ 这样的部分模糊查询(这种部分模糊查询,其实本质上也是范围查询); 哈希索引也不支持多列联合索引的最左匹配规则; b+树索引的关键字检索效率比较平均,不像b树那样波动幅度大,在有大量重复键值情况下,哈希索引的效率也是极低的,因为存在所谓的哈希碰撞问题。 参考:2019年京东PHP工程师面试题和答案解析