昨日PHP中高级面试重点回顾

由于疫情的原因,是视频面试,甲方阵容 hr主管一人,产品经理一人,
本次面试直接负责人技术总监A,另外两人好像是同岗位不同部门负责人(B和C)(嗯,年龄都是35+)。

话不多说直接上题。 (有些想用冒号分隔的,奈何键盘的冒号键和tab好像坏了)

开场时, hr介绍了本次参与面试的各成员即职位,然后了解他的疑问,产品经理询问了本辞职的原因和想要了解的问题。

接下来正戏开始了。

总监A: 看你对MySQL掌握的很熟练,说说MySQL的隔离级别。。
我: MySQL事务的隔离级别从第到高分别是 读未提交,读已提交,可重复读,串行化,MySQL默认的隔离级别是 可重复读,事务并发可能引发的问题是 脏读,不可重复读,幻读,然后分别阐述了引发这几种状况的操作即解决方案。

总监A: 你在实际场景中是更具怎样的策略来修改隔离级别的。
我: …. (这里省略号意思是我胡诌一些场景,其实是有点懵的,因为我只处理过千万级别的访问量数据,但是不是高并发,所以并未涉及修改隔离界别,还是平时思考的深度不够啊)

总监A: innodb的索引有哪些,它是怎么实现的。
我: 主键 唯一 普通 联合索引,有B 树、B+树、hash的实现的。

总监A: 这几中实现有什么区别,你平时设计索引时是更具是什么策略来选择它们的。
我: B树和B+树是在数据在叶子结点上不一样,在树的深度上不一样,相同的检索,B树要比B+树多一次的IO。 根据实际业务场景来选择不一样索引算法,如果是读多写少,我就会选择B+树(实际上内心没底,因为忘了)

总监A: MySQL锁的分类,作用,你在实际工作的中使用场景。
我: (此时内心有些打鼓,因为之前面试都是由浅入深)… 然后简述我的理解,但是实际上答案并不满意。因为B和C也插入其他问题。

总监B: 分布式熟悉吗,分布式锁怎么实现,了解过etcd吗。
我: 可以使用redis 的 setnx 结合过期时间实现,因为这块我之前在业务中实现过,etcd,这个没了解过(心里就没有这个概念),还,,(被打断)

总监C: 时间有限,我们继续其他问题,看你做过PHP优化,opcahche是怎么用的。
我: ( 冥思了一下),,操作码解析优化.
总监C: opcode呢
我: 这个 没印象了,(这个确实没印象了,因为之前基于业务场景,我从前端,cdn,服务器反向代理,数据库缓存,和程序逻辑代码的优化,项目就有了一个质的提升,但就是唯独没有这个opchache和opcode的东西接触,失误啊)

总监C: 简述一下url发生的过程,说重点就行
我 浏览器输入url之后解析成IP,然后请求发送到web服务器,如果是nginx就会通过cgi发送给PHP-FPM,然后等待PHP脚本解析,处理逻辑,响应数据。
总监C: cgi是什么东西,用来干嘛的
我: cgi是一个协议,是类似于PHP这样的语言和web服务器通信一个协议。

总监B: PHP-FPM是什么架构模式的,你怎么优化过它。
我: 它是一个master(主)-worker(工作进程)的架构模式,正真处理请求的是work进程,master主要是管理和回收子进程,优化的话,曾经有更改过它的进程数的配置,我大概简述一下: 由于之前配置的静态模式,默认的200个进程数,后来有了一定的并发,我就该改成“第三种”配置模式,配置指定数量的进程数,有个最小值和最大值(最大值这里其实是忘了,就是想这肯定不能没有限制,毕竟硬件资源就是天花板呢),然后根据实际的请求数,然后动态的增加进程数量。
总监B: 还有其他优化吗
我: (沉默了会儿,其实当时修改时还是做了其他修改的,但是确实忘了,感觉此次面试拉跨了),当时确实还做了其他优化来的,,但是想不起来了。

总监B: 说说你使用到的rabbitmq和你对他的理解。
我 : (简述了rabbitmq的架构)以及我的使用场景和业务。
总监B: 说说你用到的topic模式
我: ( 简述了topic的使用流程,算是过关了)。

总监A: 说说redis分片。
我: 分片 就是将key分割到多个redis实例的处理过程,利用的是多台计算机的内存,cpu的处理能力,提高,,,,
总监A: 怎么样实现排行榜
我: 可以使用 redis 的有序集合,因为它有个分数,,,
总监A: 用那个函数取值的
我: (回忆了下,确实想不起来了) 这个忘记了,什么member的函数。

总监A: 说说AOP的,使用过吗
我: aop切面编程,就是使用动态代理等技术使功能模块的统一维护,有点像laravel的facade(心里没底,想内比来的,失败)。

总监A: 说说hyperf的特点
我: 基于swoole,插件化的高性能、高灵活的协程框架,它是依赖注入的容器化,aop模式,注解模式,事件模式,,,
总监A: 说说协程池和协程状态管理
我: (这里实际上没有答上来,实际上后来思考了下还是能回答部分的,至少协程状态管理是可以解答的)
总监A: 如果会go,这个问题很简单

总监A: 说说laravel
我: (这里算是我的强项了,就不一一简述了)

总监B: 说说Linux吧和shell脚本
我: (简述了Linux以及常用命令和vi),shell的表达式和变量定义、使用都是有区别于PHP语言的。

总监C: 看你使用map reduce对数据批处理,说说它吧
我 基于monogo的map redcue 对数据处理,,,(被打断)
总监C: 我还以为使hadoop的 map reduce

总监A: 说说你对未来的规划吧
我: …

以上是我本次视频面试的100%还原,后来细细回想,其实很多都是能有解决方案的,但是为什么本次面试的效果如此拉跨呢,,,节奏,,对就是节奏。就是面试官以来就给了“深”东西,打乱了我的节奏。

本作品采用《CC 协议》,转载必须注明作者和本文链接
本帖由系统于 4年前 自动加精
Image
讨论数量: 34
巴啦啦

老哥面的多少的岗位

4年前 评论
Image 向大佬们学习 4年前
Image 小码农2021 4年前
Image 熬夜数豆豆 (楼主) 4年前
Image 熬夜数豆豆 (楼主) 4年前
Image keke324 4年前
Image 一念沧海一念桑田 4年前
Image xiayimiaozhongjianni 4年前
Image xiayimiaozhongjianni 4年前

卧槽,12-16就面这么深入 :flushed:

4年前 评论
Image 熬夜数豆豆 (楼主) 4年前

哪里啊 12-16 我怕了

4年前 评论
Image 熬夜数豆豆 (楼主) 4年前
Image Mr_Guo (作者) 4年前

12-16要求这么高?

4年前 评论
Image 熬夜数豆豆 (楼主) 4年前

这面试太吓人了。

4年前 评论
Image 熬夜数豆豆 (楼主) 4年前

之前面试我只觉得造原子弹,现在面试是特么要造质子吖,看来离造二向箔不远了

4年前 评论
Image partcoes 3年前

老哥,什么学历啊,这面试题目不止16的水平啊

4年前 评论

--我今天也视频面了---大概难度也和差不多甚至还要高点--TM才给我13---坐标成都

4年前 评论

成都工资水平是不是也一般啊 :flushed:

4年前 评论
giao哥

其实还好,多准备多储备回答不难的

4年前 评论

所以面试问的东西,贵公司有用到1%吗?

4年前 评论

你这面试是不是叫你造中子 , 不是说好造原子弹的吗?

4年前 评论

说实话这些知识点不认真准备一下真答不上来,面试就是让你造飞机,进去就是修轮胎。。

4年前 评论

只想八卦下 楼主去这个公司了吗

4年前 评论
aa24615

问这样的最少20-30了

4年前 评论

成都工资有点低,可以来上海试试

4年前 评论

这问题有点吓人啊

4年前 评论

面试的哪家公司呀?

4年前 评论

nb,我太菜了,一小部分都答不出来。 :joy:

4年前 评论
Junwind

这些问题如果能很好的回答出90%,中小公司当主管还是能行的

4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!