加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营 > 正文

PHP 高级面试115题汇总(含答案)

发布时间:2020-12-24 22:23:28 所属栏目:运营 来源:网络整理
导读:1、给你四个坐标点,判断它们能不能组成一个矩形,如判断 ([0,0],[0,1],[1,0]) 能组成一个矩形。 勾股定理,矩形是对角线相等的四边形。只要任意三点不在一条直线上,任选一点,求这一点到另外三点的长度的平方,两个短的之和如果等于最长的,那么这就是矩形

42、PHP 如何实现不用自带的 cookie 函数为客户端下发 cookie。对于分布式系统,如何来保存 session 值。
这个题有点绕。考的还是 COOKIE 和 SESSION 的基础知识。服务端通过 set-cookie 命令来通知客户端保存 cookie。

只要按照 domain path 过期时间等规则 用 header 函数就可以实现。

分布式系统 session,集中处理。按我们公司的架构,为了实现高可用和高容灾,提供一个分布式的验签服务。具体的可以看下 redis 的分布式服务架构。

43、请用 SHELL 统计 5 分钟内,nginx 日志里访问最多的 URL 地址,对应的 IP 是哪些?

44、写一段 shell 脚本实现备份 mysql 指定库(如 test) 到指定文件夹并打包,并删除 30 天前的备份,然后将新的备份推送到远端服务器,完成后送邮件通知。

45、mysql 数据库中 innodb 和 myisam 引擎的区别
区别主要在数据和索引的存储结构和存储方式上,以及对于事务的支持。

46、从用户在浏览器中输入网址并回车,到看到完整的见面,中间都经历了哪些过程。
入门问题。这个问题有一个很大的坑,面试官可能会从这个问题下手问你一大堆问题。

以 PHP 为例:通常最简单的回答,从用户的电脑找到最近的 DNS 服务,然后解析到对应的 IP 然后双方开始 HTTP 连接,然后发送请求信息,服务器拿到请求信息就开始准备回应的信息,中间要经过 nginx 转发到 frstCGI (PHP-FPM),然后 PHP 开始解析框架,解析请求头部,找到对应的 API,该查数据库查数据,该组装 HTML 组装 HTML,完事了就重新返回给用户。用户拿到返回数据,浏览器开始渲染页面,JS 开始加载。

47、如何分析一条 sql 语句的性能。
explain,具体的请百度。(基本很少用性能分析语句。MYSQL 的表设计上尽量冗余一部分字段,避免在 MYSQL 里处理大量的逻辑运算。我们是做 PHP 服务开发的,mysql 语句能简单尽量简单。逻辑运算的地方可以在 PHP 里做。)

48、ping 一个服务器 ping 不通,用哪个命令跟踪路由包?

linux:traceroute,windows:tracert

49、

$a=[0,3]; $b=[1,4,5]; $a+=$b; var_dump ($a) 等于多少?
基础问题。本质还是考 PHP 数组的结构和特点。

结果是 01235。PHP 用数字索引和 STRING 索引差别还是很大的

50.

$a=[1,3]; foreach ($a as &$v){} foreach ($a as $v){} var_dump ($a) 等于多少;
122
此处有一坑。foreach 完之后,$index,$value 并不会消失保留最后一次赋值。
这里的第一次 foreach 之后,数组中最后一个元素变成引用,引用变量 $v 继续存在且指向数组的最后一个元素。第二次遍历,因为遍历变量名是 $v,所以等于说每次遍历都将此次遍历的值修改成最后元素的值,直至到遍历最后一个元素(引用元素),因为此时数组的最后一个元素已被修改成上一个元素的值,最后一次赋值就是 自己 == 自己。 故最后一个等于倒数第二个

博客:【PHP - 雷】foreach 與 reference 的雷

51、数据库中的存放了用户 ID,扣费很多行,redis 中存放的是用户的钱包,现在要写一个脚本,将数据库中的扣费记录同步到 redis 中,每 5 分钟执行一次。请问要考虑哪些问题?
思路:生产者和消费者模式。这个问题也没有说其他的状态,比如数据库的数据会实时增加么?redis 中每个钱包是否有其他服务在读取或者写入啊。什么的。数据库和 REDIS 放一起,要么考数据一致性,要么考出现锁,导致效率降低。

52、MYSQL 主从服务器,如果主服务器是 innodb 引擎,从服务器是 myisam 引擎,在实际应用中,会遇到什么问题?
不知道,没用过,为什么这么设计?故意给自己找不愉快?

53、linux 中进程信号有哪些?
kill -l 很少用

54、redis 的底层实现
面试官这么样问你,你就反问他,你要的底层实现是字段的设计?内存分配管理?网络模型?数据同步?还是分布式的实现?(TIPS: 面试就是两个人的博弈。面试官给出一个描述不清晰的问题,我们没必要回答。让他把问题讲清楚再思考怎么回复)

这篇文章 要多读几遍。

55、异步模型
问清楚是 IO 异步模型。还是 AJAX 这类的异步请求模型。差别非常大的。

狗东某风控研发必考题。

56、10g 文件,用 php 查看它的行数
粗暴一点的方法 ini_set ('memory_limit','-1'); 先把当前内存限制解除了 然后直接逐行统计。时间会非常的久。

有更好的方法请留言。

57、有 10 亿条订单数据,属于 1000 个司机的,请取出订单量前 20 的司机
(TIPS)不要中招。不要用常用思路来处理,10 亿数据 你再怎么优化,全表求和,都是要死人的。

我们从设计上解决这个问题。只有一千个司机。我们可以做个简单哈希,分库分表,% 求余数。保证这一千个司机分在一千个表里,每个人有每个人的单独表。引擎用 MYSAIM,求表中数据的总数,效率飞快,遍历一千张表,求最大前二十即可。

58、设计一个微信红包的功能
没做过。其实题目表达不清楚。如果做过微信公众号开发,知道微信事件模型的 XML 数据结构,应该会好做一点。

59、根据 access.log 文件统计最近 5 秒的 qps,并以如下格式显示,01 1000(难点在 01 序号)

tail -f access.log | awk -F '[' '{print $2}' | awk '{print $1}' | uniq -c

60、php7 性能为什么提升这么高
不逼逼,直接参考:http://www.laruence.com/php-internal

鸟哥的文章要多读,多读。

61、遍历一个多维数组
递归。array_map 传入一个回调函数。

62、有这样一个字符串 abcdefgkbcdefab…… 随机长度,写一个函数来求 bcde 在这个字符串中出现的次数
substr_count();

63、有一个 1G 大小的一个文件,里面每一行是一个词,词的大小不超过 16 个字节,内存限制大小是 1M。返回频数最高的 100 个词
方法太多了,但是实现起来 各有各的问题。

我可能只会用 HASH 映射做。其他的,不会。

参考:第 64 题。

64、十道海量数据处理面试题与十个方法大总结

https://blog.csdn.net/v_JULY_v/article/details/6279498

65、php 进程模型,php 怎么支持多个并发
守护进程模型(需要知道 php-fpm 的各种配置了)

参考:https://www.jianshu.com/p/542935a3bfa8

66、nginx 的进程模型,怎么支持多个并发
这个三言两语说不清楚。

参考:https://www.zhihu.com/question/22062795

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读