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

PHP面试题2019年百度工程师面试题和答案解析

程序员文章站 2022-06-29 13:48:30
一、单选题(共10题,每题5分) 1.以下代码输出的结果是? ​​​ A、[0,1,2,3] B、[1,3,5,7,5] C、[1,2,3,4,5] D、[0,1,2,3,5] 参考答案:D 答案解析: 考的是数组+和array_merge的区别 当下标为数值时,array_merge()不会覆盖掉 ......

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

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

​​​PHP面试题2019年百度工程师面试题和答案解析

 

 

 a、[0,1,2,3]

b、[1,3,5,7,5]

c、[1,2,3,4,5]

d、[0,1,2,3,5]

参考答案:d

答案解析:

考的是数组+和array_merge的区别 当下标为数值时,array_merge()不会覆盖掉原来的值,但array+array合并数组则会把最先出现的值作为最终结果返回,而把后面的数组拥有相同键名的那些值“抛弃”掉(不是覆盖). 当下标为字符时,array+array仍然把最先出现的值作为最终结果返回,而把后面的数组拥有相同键名的那些值“抛弃”掉,但array_merge()此时会覆盖掉前面相同键名的值.

 

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

PHP面试题2019年百度工程师面试题和答案解析
 

a、0

b、1

c、2

d、3

参考答案:b

答案解析:

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

 

3.以下php代码执行的结果是?

PHP面试题2019年百度工程师面试题和答案解析
 

a、[1,2,3]

b、[1,2,2]

c、[1,1,2]

d、[1,3,2]

参考答案:b

答案解析:

在 php 中,foreach 结束后,循环中的索引值(index)及內容(value)並不会被重置。 所以最后的 $v还指向最后一个元素,再次循环,就会把最后个元素的值修改掉了。

解决的办法是,循环完毕之后,用unset($v); https://www.php.net/manual/en/control-structures.foreach.php

 

4.php执行过程的顺序正确的是?

a、扫描->解析->编译->执行->输出

b、扫描->解析->执行->编译->输出

c、扫描->编译->解析->执行->输出

d、扫描->执行->编译->解析->输出

参考答案:a

答案解析:

php简化执行过程: 1.扫描(scanning) ,将index.php内容变成一个个语言片段(token) 2.解析(parsing) , 将一个个语言片段变成有意义的表达式 3.编译(complication),将表达式编译成中间码(opcode) 4.执行(execution),将中间码一条一条的执行 5.输出(output buffer),将要输出的内容输出到缓冲区

(加入群677079770获取更多面试题答案和学习资料。)

 

5.php垃圾回收机制的说法错误的是?

a、在一个垃圾周期中,通过检查引用计数是否减1,并且检查哪些变量容器的引用次数是零,来发现哪部分是垃圾

b、可以通过调用gc_enable() 和 gc_disable()函数来打开和关闭垃圾回收机制

c、通过清理未被使用的变量来节省内存的占用

d、php代码执行完毕后会自动执行垃圾回收,所以不需要手动执行垃圾回收

参考答案:d

答案解析:

php一段代码有可能要长时间执行,但若此期间有未引用的变量的话,就会占用内存的空间,导致运行缓慢等问题

 

6.关于xss防御,错误的是?

a、禁止字符

b、限制字符(reg_match)

c、过滤(preg_replace)

d、转义标签(htmlspecialchars)

参考答案:a

答案解析:

转义标签(htmlspecialchars) 限制字符(reg\_match) 过滤(preg\_replace) http only 模板引擎

 

7.有一个文件ip.txt,每行一条ip记录,共若干行,下面哪个命令可以实现“统计出现次数最多的前3个ip及其次数”?( )

a、uniq -c ip.txt

b、sort -nr ip.txt | uniq -c | sort -nr | head -n 3

c、cat ip.txt | count -n | sort -rn | head -n 3

d、cat ip.txt | count -n

参考答案:b

答案解析:

本题利用管道符"|"组合多个命令,uniq -c filename用于去除冗余并统计每一行出现的次数。 sort -r指逆序排序,-n指按数字字符串大小排序 head指定数量。 剩下的二选一交给运气。

正确的命令应该为: sort -nr ip.txt | uniq -c | sort -nr | head -n 3 第一次排序,把ip按顺序排列,因为第二个uniq只会合并相邻项 第二次排序,才是把ip按出现次序大小从大到小排列 最后取前三项结果。

 

8.mysql索引使用的b-tree描述错误的是?

a、每个非叶子结点由n-1个key和n个指针组成,其中d<=n<=2d;

b、每个叶子结点至少包含一个key和两个指针

c、所有叶结点都在同一层,深度等于树高h.

d、一个结点中的key从左至右递减排列

参考答案:d

答案解析:

b-tree是满足条件: d>=2,即b-tree的度; h为b-tree的高; 每个非叶子结点由n-1个key和n个指针组成,其中d

 

9.下列哪个是创建一个每周三01:00~04:00每3分钟执行执行一次的crontab指令?

a、* 1,4 * * 3 /bin/bash /home/sijiaomao/ok.sh

b、*/3 1,4 * * 3 /bin/bash /home/sijiaomao/ok.sh

c、*/3 1-4 * * 3 /bin/bash /home/sijiaomao/ok.sh

d、*/3 1-4 * * * /bin/bash /home/sijiaomao/ok.sh

参考答案:c

答案解析:

a:每周三的1时4时每分钟执行一次 b:每周三的1时4时每3分钟执行一次 c:满足要求 d:每天的1时4时每3分钟执行一次

 

10.正则的引擎表述错误的是?

a、正则引擎主要可以分为两大类:一种是dfa,一种是nfa。

b、一般而论,nfa引擎则搜索更快一些。但是dfa以表达式为主导,更容易操纵,因此一般程序员更偏爱dfa引擎!

c、nfa表达式主导,dfa文本主导.

d、可以使用是否支持忽略优先量词和分组捕获来判断引擎类型:支持 nfa,不支持 dfa

 

 

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

1.http中get与post的区别有哪些?

a、get在浏览器回退时是无害的,而post会再次提交请求

b、get请求只能进行url编码,而post支持多种编码方式

c、get请求会被浏览器主动cache,而post不会,除非手动设置。

d、get产生一个tcp数据包,post产生两个tcp数据包。

 

2.mysql有一个复合索引:index(`a`, `b`, `c`),以下查询能用上索引的有?

a、select * from users where a = 1 and b = 2

b、select * from users where b = 2 and a = 1

c、select * from users where a = 2 and c = 1

d、select * from users where b = 2 and c = 1

(加入群677079770获取更多面试题答案和学习资料。)

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

a、解耦

b、异步

c、削峰

d、大数据处理

4.关于memcache与redis的说法正确的有?

a、memcache单个key(变量)存放的数据有2m的限制, redis单个key(变量)存放的数据有1gb的限制

b、memcache存储数据的类型都是string类型,redis数据类型比较丰富:string、list、set、sortedset、hash

c、memcache可以使用多核(多线程),而redis只是支持单线程

d、memcache服务器突然断电,则全部数据就会丢失; 而redis有持久化功能,可以把数据随时存储在磁盘上

 

5关于缓存雪崩的事前事中事后的解决方案正确的有?

a、事前:进行系统压力测试,在负载均衡层做限流处理,过载丢弃请求或者进入队列

b、事前:redis 高可用,主从+哨兵,redis cluster,避免全盘崩溃。

c、事中:本地 ehcache 缓存 + hystrix 限流&降级,避免 mysql 被打死。

d、事后:redis 持久化,一旦重启,自动从磁盘上加载数据,快速恢复缓存数据。

 

6.设计一个高并发系统,需要重点考虑的问题有?

a、系统拆分

b、缓存

c、mq

d、分库分表

e、读写分离

f、elasticsearch

 

7.关于php-fpm子进程数量说法正确的有?

a、php-fpm 子进程数量不能太多,太多了增加进程管理的开销以及上下文切换的开销

b、dynamic 方式下,最合适的子进程数量为 在 n + 20% 和 m / m 之间 (n 是 cpu 内核数量,m 是 php 能利用的内存数量,m 是每个 php 进程平均使用的内存数量)

c、static方式:m / (m * 1.2) (m 是 php 能利用的内存数量,m 是每个 php 进程平均使用的内存数量)

d、pm.max_requests 可以随便设置 ,但是为了预防内存泄漏的风险,还是设置一个合理的数比较好

 

8.关于kafka、activemq、rabbitmq、rocketmq说法正确的有?

a、activemq 基于 erlang 开发,并发能力很强,性能极好,延时很低

b、rocketmq topic 可以达到几百/几千的级别,吞吐量会有较小幅度的下降,在同等机器下,可以支撑大量的 topic

c、rabbitmq时效性是微秒级,这是 rabbitmq 的一大特点,延迟最低

d、kafka 单机吞吐量 10 万级,高吞吐,一般配合大数据类的系统来进行实时数据计算、日志采集等场景

 

9.分库分表之后,id 主键如何处理?

a、单库生成自增 id

b、设置数据库 sequence 或者表自增字段步长

c、uuid

d、snowflake 算法

 

10.redis 内存淘汰机制有哪些?

a、noeviction: 当内存不足以容纳新写入数据时,新写入操作会报错

b、allkeys-lru:当内存不足以容纳新写入数据时,在键空间中,移除最近最少使用的 key

c、volatile-lru:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,移除最近最少使用的 key

d、allkeys-random:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,随机移除某个 key。

 

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

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

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

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

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

​​​

PHP面试题2019年百度工程师面试题和答案解析
 

​​​PHP面试题2019年百度工程师面试题和答案解析

 

 

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

前端面试题2019年网易工程师面试题和答案解析

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

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

前端面试题2019年阿里巴巴工程师面试题和答案解析

前端面试题2019年腾讯工程师面试题和答案解析

php面试题2019年奇虎360面试题和答案解析

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

php面试题2019年新浪工程师面试题和答案解析

php面试题2019年搜狐工程师面试题和答案解析

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

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

php面试题2019年阿里巴巴面试题和答案解析

php面试题2019年腾讯工程师面试题和答案