PHP的相关面试题有哪些

发布时间:2021-12-17 10:17:02 作者:iii
来源:亿速云 阅读:118

这篇文章主要讲解了“PHP的相关面试题有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“PHP的相关面试题有哪些”吧!

1. 看你简历里也有用过 Go,Go 和 PHP 在运行的时候有什么区别和优势?

答:PHP 每个请求进来时都会创建 fpm-worker 进程,从而导致系统并发高时 CPU 会产生频繁创建进程的开销,而 Go 不会。

2. 你刚刚说到 PHP 那既然是多进程,那怎么共享数据?

答:PHP 既然是多进程,进程资源的地址和 PCB 空间都是独立的,没办法共享数据吧。

3. 那我如果要在 Go 里实现共享数据,有什么方式?

答:我在项目里使用过协程,可以用 channel

4. 那 channel 的本质和底层是什么?

答:这个知识点有点模糊,我想想,如果没记错,我记得就是 linux 的管道吧

5. 那 linux 的管道有什么特性?

答:管道的特性应该是只能等一边写完,另一边才能读,不知道我回答的对不对?

6. 对你说得没错,那你觉得管道是用什么实现的?

答:不好意思,这题我不会

7. 其实管道就是文件,那对文件操作就是加锁

答:对对对,我想起来了,其实这里涉及到资源的抢占,那系统对资源的抢占肯定就是加锁实现。

8. 既然刚刚你也提到协程,可以描述下 Go 的协程原理吗?

答:Go 的协程是基于 CSP 并发模型的 GPM 调度机制,M 可以理解为处理机 CPU,P 就是 Go 底层用来管理 Goroutine 协程的。

9.(这个时候面试官拿了一张白纸过来)写一个二分查找的算法看看吧,用 PHP 或 Go 都可以

答:好,那我用 PHP 写吧(PS: 这里我用的是递归法,要注意二分查找的临界问题)

10. 嗯,算法没问题,问一点网络的吧,socket 用过吗?

答:websocket 用过,在做直播聊天室的时候会用到长连接

11. 那你觉得 websocket 是基于什么协议?

答:是基于 TCP 协议的

12.TCP 客户端和服务端是怎么建立连接通信的?

答:(ps:一开始答错了,我说是 ack 吧,面试官纠正是 syn)然后我恍然大悟接着说,第一步是客户端发送 syn,第二步是服务器应答 syn+ack, 第三步是客户端回复 ack

13. 那 TCP 握手是几次,断开是几次?

答:握手是三次,断开是四次(ps: 有些面试官会问为什么断开要四次,这里涉及到半连接等待关闭,幸好没问)

14. 假设我们现在要做一对一视频聊天,每日 DAU 可能达到几十万以上,后端怎么实现一对一匹配的算法?还有,怎么实现快速的匹配服务器不会有压力问题?

答:我想一下。用户登录的时候,如果未开始匹配,可以把用户放到 redis 里的 set 集合里,通过 SRANDMEMBER 命令随机抽取人出来就好了 ,至于 redis 的 value 最大可以保持 512m 数据,也就是理论上我们承载可以达到上千万上亿用户都不是问题,至于要保持 redis 的高可用,可以用 rdb 或 aof 做数据持久化,另外,redis 也有哨兵模式,主 redis 挂了也可以选举抽取空闲的 redis 服务器顶上

15.mysql 主从的时候有没有遇到过主从延迟同步的情况?是怎么解决的?

答:emmmmm,这个情况我还没遇到过。

16. 你也知道我们是做社交 APP 的,如果我们要做一些兴趣推荐的内容或者人,你会怎样实现?

答:可以用 ElasticSearch,我以前的项目有配合 ik 中文分词使用,缺点是比较吃机器内存。

感谢各位的阅读,以上就是“PHP的相关面试题有哪些”的内容了,经过本文的学习后,相信大家对PHP的相关面试题有哪些这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!

推荐阅读:
  1. springboot相关面试题有哪些
  2. mysql相关的面试题有哪些

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

php

上一篇:如何实现基于ceph-rbd的文件共享

下一篇:python匿名函数怎么创建

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》