问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

PHP面试都会问什么?

发布网友 发布时间:2022-04-21 04:10

我来回答

1个回答

热心网友 时间:2023-07-04 16:49

一、写一段代码判断单向链表中有没有形成环,如果形成环,请找出环的入口处,即 P 点

二、从扑克牌中随机抽出 5 张牌,判断是不是一个顺子,即这5张牌是连续的

这个问题有个关键点,扑克牌,1-13 不能再多了。这就很简单了。用PHP来做,定义一个数组分别存着1到13, 拿出一个,置空一个,最后看下这五个置空的 是不是连续的。这种情况不考虑抽出的顺序。

三、说一下 PHP 的(内存)垃圾回收机制

每一个变量对应一个 zval 数据结构,在该结构内还有一个 val 结构体,该结构体内有一个引用计数(php7 而言,对于 php5,这个引用计数是保存在 zval 结构中的),标识该对象的引用数,当对象的引用计数为 0 时代表这个对象可被回收。

对象的 refcount 减少的时机:修改变量、函数返回(释放局部变量)、unset 变量

对于数组和对象而言,可能存在变量中的成员引用变量本身的情况,也就是循环引用,这样会造成这个变量永远不会被内存回收,而成为垃圾。

PHP 里对于这种情况给出了垃圾回收机制:如果数组、对象的引用计数减少而且不为零,则认为他们可能是垃圾,把他们放到垃圾收集器里。等垃圾收集器到了一定的数量之后,进行垃圾处理:对所有可能的垃圾 refcount 减 1,如果为 1,说明是垃圾,则进行内存回收;如果不为 1,说明还有其他变量在使用,refcount 重新加 1;这种对象复用以及垃圾回收机制在其他语言中也有体现:redis 中也使用了引用计数表示每个对象的引用数量。

四、简述一下PHP短信验证码如何防刷?

1、时间*:60 秒后才能再次发送

从发送验证码开始,前端(客户端)会进行一个 60 秒的倒数,在这一分钟之内,用户是无法提交多次发送信息的请求的。这种方法虽然使用得比较普遍,但是却不是非常有用,技术稍微好点的人完全可以绕过这个*,直接发送短信验证码。

2、手机号*:同一个手机号,24 小时之内不能够超过 5 条

对使用同一个手机号码进行注册或者其他发送短信验证码的操作的时候,系统可以对这个手机号码进行*,例如,24 小时只能发送 5 条短信验证码,超出*则进行报错(如:系统繁忙,请稍后再试)。然而,这也只能够避免人工手动刷短信而已,对于批量使用不同手机号码来刷短信的机器,这种方法也是无可奈何的。

3、短信验证码*:30 分钟之内发送同一个验证码

网上还有一种方法说:30 分钟之内,所有的请求,所发送的短信验证码都是同一个验证码。第一次请求短信接口,然后缓存短信验证码结果,30 分钟之内再次请求,则直接返回缓存的内容。对于这种方式,不是很清楚短信接口商会不会对发送缓存信息收取费用,如果有兴趣可以了解了解。

4、前后端校验:提交 Token 参数校验

这种方式比较少人说到,个人觉得可以这种方法值得一试。前端(客户端)在请求发送短信的时候,同时向服务端提交一个 Token 参数,服务端对这个 Token 参数进行校验,校验通过之后,再向请求发送短信的接口向用户手机发送短信。

5、唯一性*:微信产品,*同一个微信 ID 用户的请求数量

如果是微信的产品的话,可以通过微信 ID 来进行识别,然后对同一个微信 ID 的用户*,24 小时之内最多只能够发送一定量的短信。

6、产品流程*:分步骤进行

例如注册的短信验证码使用场景,我们将注册的步骤分成 2 步,用户在输入手机号码并设置了密码之后,下一步才进入验证码的验证步骤。

7、图形验证码*:图形验证通过后再请求接口

用户输入图形验证码并通过之后,再请求短信接口获取验证码。为了有更好的用户体验,也可以设计成:一开始不需要输入图形验证码,在操作达到一定量之后,才需要输入图形验证码。具体情况请根据具体场景来进行设计。

8、IP 及 Cookie *:*相同的 IP/Cookie 信息最大数量

使用 Cookie 或者 IP,能够简单识别同一个用户,然后对相同的用户进行*(如:24 小时内最多只能够发送 20 条短信)。然而,Cookie 能够清理、IP 能够模拟,而且 IP 还会出现局域网相同 IP 的情况,因此,在使用此方法的时候,应该根据具体情况来思考。

9、短信预警机制,做好出问题之后的防护

以上的方法并不一定能够完全杜绝短信被刷,因此,我们也应该做好短信的预警机制,即当短信的使用量达到一定量之后,向管理员发送预警信息,管理员可以立刻对短信的接口情况进行监控和防护。

五、mySQL 里有 2000w 数据,redis 中只存 20w 的数据,如何保证 redis 中的数据都是热点数据

相关知识:redis 内存数据集大小上升到一定大小的时候,就会施行数据淘汰策略(回收策略)。redis 提供 6 种数据淘汰策略:

volatile-lru:从已设置过期时间的数据集(server.db [i].expires)中挑选最近最少使用的数据淘汰

volatile-ttl:从已设置过期时间的数据集(server.db [i].expires)中挑选将要过期的数据淘汰

volatile-random:从已设置过期时间的数据集(server.db [i].expires)中任意选择数据淘汰

allkeys-lru:从数据集(server.db [i].dict)中挑选最近最少使用的数据淘汰

allkeys-random:从数据集(server.db [i].dict)中任意选择数据淘汰

no-enviction(驱逐):禁止驱逐数据

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
PCR有哪些分类? 不鸣则已 一鸣惊人的三个星座 电动车加装蓝牙音箱怎么接线 怎么把QQ同步助手卸载掉?简直就是垃圾,什么没操作就直接给安装上了,怎... 怎么把QQ同步助手卸载掉?简直就是流氓软件。什么东西没经过我点‘’同 ... excel表如何将相间隔的不同两行组合在一起,成为一行? excel工作表如何对行各自组合 考科目一自己去还是驾校统一去 科目一是自己考还是在驾校 社保转移后,新单位没要转移单,只要了身份证,是不是就可以办理了 什么是社保转移 无查看文件列表权限 怎么解决 (急 急 急!!!) 什么是acl。什么是控制列表 什么是操作员的权限,出纳权限包括哪些 读取应用列表权限有什么用 三星手机禁止软件读取应用列表权限在哪里 如何在Linux下设置访问控制列表来控制用户的权限 权限由哪些字段组成 一加的应用权限管理,怎么样关闭读取应用列表的权限 逻辑打印机的安全权限列表中,有哪几种权限 内部控制都有哪些一般方法? 内控权限指引表,下划线是啥含义 教师节是阳历9月l0号吗? mysql有关权限的表都有哪几个 如何操作权限控制,有什么方法? 九链对接含义 B端产品权限设计(一)基本知识 教师节为什么是9月10日? 财政部内控指引18项都有什么 原来教师节在九月九日? 企业内控标准的企业内控标准的审批权限 PHP面试的内容一般有哪些?一般会问那些问题?有什么技巧吗? PHP面试需要注意什么 php技术面试一般都是什么问题 如果你是php面试官你会提哪些面试的问题! 面试php程序员的时候会被问哪些问题? PHP面试中你要问面试官的问题有哪些 PHP面试官们你们面试实习生会提什么问题 PHP面试一般会问些什么问题 php面试项目经验怎么说 如何面试PHP程序员 404 Not Found PHP面试问题,完全迷糊 php面试题解答 win10怎么添加快捷方式到桌面 怎样把快捷方式添加到开始菜单里 怎样把快捷方式创建到开始菜单中 怎样将桌面上的快捷方式弄到开始菜单里呢?谢谢 怎么把电脑程序快捷方式添加到开始菜单 怎么把快捷方式添加的开始菜单里 windows10怎么添加快捷方式到开始菜单