当前位置: 首页 > 后端技术 > PHP

2020最新大厂PHP内部高级工程师面试题汇总(二)

时间:2023-03-29 16:18:13 PHP

2020最新大厂PHP内部高级工程师面试题汇总(一)51.用户ID存入数据库,多行是扣除。就是用户的钱包,现在我们需要写一个脚本,将数据库中的扣款记录同步到redis,每5分钟执行一次。应该考虑哪些问题?思路:生产者消费者模型。这个问题没有提到其他状态,比如数据库中的数据会不会实时增加?redis中的每个钱包是否有其他读或写的服务?什么。将数据库和REDIS放在一起,要么测试数据一致性,要么加锁,导致效率降低。52、MYSQL主从服务器,如果主服务器是innodb引擎,从服务器是myisam引擎,在实际应用中会遇到什么问题?53.linux中的进程信号有哪些?54、当面试官问你redis的底层实现时,你可以问他,你要的底层实现是字段设计?内存分配管理?网络模型?数据同步?还是分布式实现?(TIPS:面试是两个人的游戏,面试官提的问题没有描述清楚,我们不需要回答,让他把问题解释清楚再考虑怎么回答。)55.异步model问清楚是IO异步模型。或者像AJAX这样的异步请求模型。差别很大。56.对于10g的文件,用php查看行数ini_set('memory_limit','-1');先去掉当前内存限制,然后直接逐行统计。时间会很长。如果有更好的方法欢迎留言。57.如果有10亿个订单数据属于1000个司机,请取出前20名司机(TIPS)以免被中招。不要用常识来应对。10亿条数据不管你怎么优化,整张表总结起来会要了你的命。我们通过设计来解决这个问题。只有一千名司机。我们可以做一个简单的hash,把数据库分表,%求余数。保证千人司机分千表,每个人一人一表。引擎使用MYSAIM查找表中的数据总数,效率非常快。遍历一千张表,找到前20名就够了。58、设计一个微信红包的功能,一直没做过。其实标题并不清楚。如果你做过微信公众号开发,知道微信事件模型的XML数据结构,做起来应该会比较容易。59、根据access.log文件统计最近5秒的qps,显示格式如下,011000(难点在于01的序号)tail-faccess.log|awk-F'[''{print$2}'|awk'{print$1}'|为什么uniq-c60和php7的性能提升那么高?请参考:http://www.laruence.com/php-internal。61.递归遍历一个多维数组。array_map被传递了一个回调函数。62、有这样一个字符串abcdefgkbcdefab...随机长度,写一个函数计算bcde在这个字符串中出现的次数substr_count();63、有一个1G大小的文件,里面每一行都是一个Word,一个Word的大小不超过16字节,内存限制为1M。返回出现频率最高的100个词的方法太多了,但是在实现上各有各的问题。我可能只用哈希图来做。其他人,没有。参考:第64题64.海量数据处理十道面试题和十法总结https://blog.csdn.net/v_JULY_...65.PHP进程模型,PHP如何支持多并发daemon进程模型(需要了解php-fpm各种配置)参考:https://www.jianshu.com/p/542935a3bfa866,nginx的进程模型,如何支持多并发三言两语说不清楚。参考:https://www.zhihu.com/question/2206279567。php-fpm的配置含义。fpm的daemonize模式下php-fpm的配置不多,常用的就更少了。参考:http://www.4wei.cn/archives/1002061static-子进程数量固定(pm.max_children)ondemand-有需求时产生进程(有请求时,与dynamic相反,pm.start_servers在服务启动时动态启动——子进程数是根据以下配置动态设置的:pm.max_children、pm.start_servers、pm.min_spare_servers、pm.max_spare_servers68,让你实现一个简单的架构并保持高可用性,二接口怎么设计,一个上传一段文字,一个获取上传的内容?避免单机房故障,同时让代码级别不敏感。69.两台mysql服务器,一台ofwhichdown了,如何让业务结束如果不是核心业务,先停止写入,拉起备机,查看两台机器的日志,进行数据补偿,开始写入。如果是核心业务,现在都写操作erations在正常状态机上。拉起这台好机器的备机,充当主机。以上均为应急操作。事实上,数据库的容灾设计要复杂得多。如果面试官问你,备机数据不一致怎么办?你要勇敢地回去告诉我你每秒有多少写操作。按照百万级表,1000/秒的写效率正常设计是分布在两台机器上,每台500。使用这种级别的数据同步,出现差异的可能性可以忽略不计。如果一个人有问题,另一个人也可以抵制它。(正常操作,先停止写入,等数据一致,切换,开始写入我们公司在凌晨4点左右搞这些切换,核心业务每秒写操作只有十几次。延迟前后小于20秒)。70、http协议的具体定义很难回答。.太宽泛了,我们已经不再在采访中问这样的问题了。71.什么是锁,如何解决锁问题?计算机原理、生产者消费者模型、银行家模型都可以解决锁的问题。72、rand和mt_rand的区别我在实习的时候遇到过这个坑。据说mt_rand比rand快4倍。在随机数范围不大的情况下,效率差别不大。但是重复数字的概率,rand需要比mt_rand高很多。73、mysql的事务隔离是如何通过各种行锁、表锁、各种乐观锁、悲观锁、排他锁来实现的?74.如何实现mysql锁https://blog.csdn.net/alexdam...https://www.cnblogs.com/luyuc...https://blog.csdn.net/tangkun...75.对称加密和非对称加密的方法对称加密:我们双方共享一个秘钥,你加密我解密。非对称加密:我给你一个公钥,你加密后,我仍然可以有我的私钥来解密密文。但是你没有我的私钥。扩展:椭圆加密算法。76、有10瓶水,其中一瓶是有毒的,老鼠喝了毒水24小时后就会死。问:至少24小时后,用多少只老鼠可以找出哪瓶水有毒。四个二进制问题。薛定谔的老鼠。一只老鼠有死和活两种状态,对应01。假设老鼠的数量为A,则有2^A>=10;A=4;思路很简单,十瓶药的数量:0,1,10,11....1001;0不要喝。第一只老鼠喝个位数:13579,第二只老鼠喝十位数一,第三只老鼠喝百位数,第四只老鼠喝千位一。24小时后,死亡为1,存活为0。老老实实按照老鼠的顺序站起来。。。如果第一个和第三个死了,那么就是0101,也就是5有问题。77.redis如何同步,同步方式,怎么办同步回滚,数据异常怎么办。同时会询问MYSQL的同步方式及相关异常情况。Redis集群主从同步的简单原理  Redis的复制功能是基于内存快照的持久化策略,也就是说不管你的持久化策略是什么,只要Redis的复制功能使用,肯定会有内存快照。  当Slave启动并连接到Master时,会主动发送一个SYNC命令(首先Master会启动一个后台进程将数据快照保存到一个文件[rdb文件]Master会向Slave发送一个Ping命令来判断SlaveMasteralive时,会将数据文件发送给Slave,并将所有写命令发送给Slave)。  Slave会先将数据文件保存到本地,然后将数据加载到内存中。  首次连接或失败重连时,会先判断Slave的存活状态并同步所有数据,然后只同步Master的写操作(向Slave发送命令)。问题:  当Master同步数据的时候,如果数据量很大,而Master本身只会开启一个后台进程来同步多个Slave,Master压力太大,Slave的恢复时间会很慢!redis主从复制的优点:(1)在一个Redis集群中,master负责写请求,slave负责读请求。一方面,这通过将读请求分发到其他机器上,大大减轻了主服务器的压力。另一方面,Slave专注于提供读取服务,以提高响应速度和读取速度。(2)在一个Redis集群中,如果master宕机了,slave可以介入并代替master,所以它不会无法为整个Redis服务提供服务,这使得整个Redis服务足够安全。(3)横向添加Slave机器可以提高性能78.如何解决跨域JSONP添加响应头并允许跨域代理79.json和xml的区别,优缺点是什么(1)可读性:基本上同样,XML的可读性比较好;(2)在可扩展性方面:都具有很好的可扩展性;(3)编码难度方面:相对来说,JSON编码相对容易一些;(4)解码难度:JSON解码难度基本为零,XML需要考虑子节点和父节点;(5)在数据量方面:与XML相比,JSON的数据量更小,传输速度更快;(6)在数据交互方面:JSON和javascript的交互更方便。方便,更容易分析和处理,更好的数据交互;(7)数据描述:XML更适合数据描述;(8)传输速度:JSON比XML快很多。80.Trait优先级在trait继承中,优先级的顺序是:当前类的成员覆盖trait的方法,trait覆盖继承的方法。更多学习内容可以访问【班鼎工厂】优秀的PHP架构师教程目录完整,只要能看完保证你的薪水更上一层楼(持续更新中),以上内容希望大家帮助大家。很多PHPer在进阶的时候总会遇到一些问题和瓶颈。他们写了太多的业务代码,没有方向感,不知道从哪里开始改进,整理了一些资料,包括但不限于:分布式架构,高扩展,高性能,高并发,服务器性能调优,TP6,laravel,YII2,Redis,Swoole,Swoft、Kafka、Mysql优化、shell脚本、Docker、微服务、Nginx等知识点,需要进阶干货的可以免费分享给你,点击链接获取进阶PHP月薪30k>>>架构教师成长路线【免费获取视频和访谈资料】