5一、数据库中的存放了用户 ID, 扣费不少行,redis 中存放的是用户的钱包,如今要写一个脚本,将数据库中的扣费记录同步到 redis 中,每 5 分钟执行一次。请问要考虑哪些问题?javascript
思路:生产者和消费者模式。这个问题也没有说其余的状态,好比数据库的数据会实时增长么?redis 中每一个钱包是否有其余服务在读取或者写入啊。什么的。数据库和 REDIS 放一块儿,要么考数据一致性,要么考出现锁,致使效率下降。php
5二、MYSQL 主从服务器,若是主服务器是 innodb 引擎,从服务器是 myisam 引擎,在实际应用中,会遇到什么问题?java
5三、linux 中进程信号有哪些?mysql
5四、redis 的底层实现linux
面试官这么样问你,你就反问他,你要的底层实现是字段的设计?内存分配管理?网络模型?数据同步?仍是分布式的实现?(TIPS: 面试就是两我的的博弈。面试官给出一个描述不清晰的问题,咱们不必回答。让他把问题讲清楚再思考怎么回复)nginx
5五、异步模型laravel
问清楚是 IO 异步模型。仍是 AJAX 这类的异步请求模型。差异很是大的。面试
5六、10g 文件,用 php 查看它的行数redis
粗暴一点的方法 ini_set ('memory_limit','-1'); 先把当前内存限制解除了 而后直接逐行统计。时间会很是的久。算法
有更好的方法请留言。
5七、有 10 亿条订单数据,属于 1000 个司机的,请取出订单量前 20 的司机
(TIPS)不要中招。不要用经常使用思路来处理,10 亿数据 你再怎么优化,全表求和,都是要死人的。
咱们从设计上解决这个问题。只有一千个司机。咱们能够作个简单哈希,分库分表,% 求余数。保证这一千个司机分在一千个表里,每一个人有每一个人的单独表。引擎用 MYSAIM,求表中数据的总数,效率飞快,遍历一千张表,求最大前二十便可。
5八、设计一个微信红包的功能
没作过。其实题目表达不清楚。若是作过微信公众号开发,知道微信事件模型的 XML 数据结构,应该会好作一点。
5九、根据 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
鸟哥的文章要多读,多读。
6一、遍历一个多维数组
递归。array_map 传入一个回调函数。
6二、有这样一个字符串 abcdefgkbcdefab...... 随机长度,写一个函数来求 bcde 在这个字符串中出现的次数
substr_count();
6三、有一个 1G 大小的一个文件,里面每一行是一个词,词的大小不超过 16 个字节,内存限制大小是 1M。返回频数最高的 100 个词
方法太多了,可是实现起来 各有各的问题。
我可能只会用 HASH 映射作。其余的,不会。
参考:第 64 题。
6四、十道海量数据处理面试题与十个方法大总结
6五、php 进程模型,php 怎么支持多个并发
守护进程模型(须要知道 php-fpm 的各类配置了)
参考:https://www.jianshu.com/p/542935a3bfa8
6六、nginx 的进程模型,怎么支持多个并发
这个三言两语说不清楚。
参考:https://www.zhihu.com/question/22062795
6七、php-fpm 各配置含义,fpm 的 daemonize 模式
php-fpm 的配置并很少,经常使用的就更少了。
参考:http://www.4wei.cn/archives/1002061
static - 子进程的数量是固定的(pm.max_children) ondemand - 进程在有需求时才产生(当请求时,与 dynamic 相反,pm.start_servers 在服务启动时即启动 dynamic - 子进程的数量在下面配置的基础上动态设置:pm.max_children,pm.start_servers,pm.min_spare_servers,pm.max_spare_servers
6八、让你实现一个简单的架构,并保持高可用,两个接口,一个上传一条文本,一个获取上传的内容,你怎么来设计?要避免单机房故障,同时要让代码层面无感。
6九、两台 mysql 服务器,其中一台挂了,怎么让业务端无感切换,并保证正常状况下讲台服务器的数据是一致的
不是核心业务的话,先停写,把备机拉起来,查看两台机器的日志,进行数据补偿,开写。
若是是核心业务的话,如今全部的写操做都在正常的状态机器上。把好的这台机器的备机拉起来,当主机。
以上全是应急操做。实际上数据库的容灾设计要复杂的多。
面试官要是问你,备机的数据不一致怎么办,你要勇敢怼回去,大家每秒多少写入操做。按照百万级表,每秒 1000 的写入效率,正常的设计是,分布在 2 台机器上每台 500。这个级别的数据同步,出现差别的几率 能够忽略不计的。有一台出现问题,另外一台也能够抗住。
(正常的操做,仍是先停写,等数据一致,切换,开写。咱们公司搞这些切换都是在凌晨 4.00 左右,核心业务的每秒写操做,只有十几个。先后耽搁不到 20 秒)。
70、http 协议具体的定义
这种题 有是很难回答的。太宽泛了,咱们面试早就不问这种问题了。
7一、什么是锁,怎么解决锁的问题
计算机原理学的,生产者消费者模型,银行家模型,均可以解决锁的问题。
7二、rand 与 mt_rand 的区别
我实习的时候遇到这个坑。
说是 mt_rand 比 rand 快 4 倍。
在随机数区间不大的状况下并无很大的效率差距。可是出现重复数的概率,rand 要比 mt_rand 高不少。
7三、mysql 事务隔离是怎么实现的
经过各类行锁表锁,各类乐观锁悲观锁,排他锁实现的呀。
7四、mysql 的锁怎么实现的
https://blog.csdn.net/alexdamiao/article/d...
https://www.cnblogs.com/luyucheng/p/629775...
https://blog.csdn.net/tangkund3218/article...
7五、对称加密和非对称加密的方式
对称加密:咱们俩共用一个秘钥,你加密,我解密。
非对称加密:我给你一个公钥,你加密完了,我还能有个人私钥把密文解开。可是你没有个人私钥。
扩展:椭圆加密算法。
7六、10 瓶水,其中一瓶有毒,小白鼠喝完有毒的水以后,会在 24 小时后死亡,问:最少用几只小白鼠能够在 24 小时后找到具体是哪一瓶水有毒。
四只
二进制问题。薛定谔的老鼠。
一只老鼠有两个状态,死活,对应 01。假设老鼠的个数为 A,则有 2^A>=10; A=4;
思路很简单,十瓶药编号:0,1,10,11....1001;
0 不喝。第一只老鼠喝全部个位是 1 的:13579,第二只喝十位是 1 的,第三只和百位是 1 的,第四只喝千位是 1 的。
24 小时后,看下死了的是 1,活着的是 0。按老鼠的顺序乖乖站好…… 假如第一只和第三只死了,那就是 0101,就是 5 有问题。
7七、redis 是如何进行同步的,同步的方式,同步回滚怎么办,数据异常怎么办,同时会问 MYSQL 的同步方式和相关异常状况
redis 集群主从同步的简单原理
Redis 的复制功能是基于内存快照的持久化策略基础上的,也就是说不管你的持久化策略选择的是什么,只要用到了 Redis 的复制功能,就必定会有内存快照发生。
当 Slave 启动并链接到 Master 以后,它将主动发送一个 SYNC 命令 (首先 Master 会启动一个后台进程,将数据快照保存到文件中 [rdb 文件] Master 会给 Slave 发送一个
Ping 命令来判断 Slave 的存活状态 当存活时 Master 会将数据文件发送给 Slave 并将全部写命令发送到 Slave )。
Slave 首先会将数据文件保存到本地 以后再将 数据 加载到内存中。
当第一次连接 或者是 故障后 从新链接 都会先判断 Slave 的存活状态 在作所有数据的同步 , 以后只会同步 Master 的写操做 (将命令发送给 Slave)
问题:
当 Master 同步数据时 若数据量较大 而 Master 自己只会启用一个后台进程 来对多个 Slave 进行同步 , 这样 Master 就会压力过大 , 并且 Slave 恢复的时间也会很慢!
(1)在一个Redis集群中,master负责写请求,slave负责读请求,这么作一方面经过将读请求分散到其余机器从而大大减小了master服务器的压力,另外一方面slave专一于提供
读服务从而提升了响应和读取速度。
(2) 在一个 Redis 集群中,若是 master 宕机,slave 能够介入并取代 master 的位置,所以对于整个 Redis 服务来讲不至于提供不了服务,这样使得整个 Redis 服务足够安全。
(3) 水平增长 Slave 机器能够提升性能
7八、怎么解决跨域
7九、json 和 xml 区别,各有什么优缺点
(1)可读性方面:基本相同,XML 的可读性比较好;
(2)可扩展性方面:都具备良好的扩展性;
(3)编码难度方面:相对而言,JSON 的编码比较容易;
(4)解码难度:JSON 的解码难度基本为零,XML 须要考虑子节点和父节点;
(5)数据体积方面:JSON 相对于 XML 来说,数据体积小,传递的速度比较快;
(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技术交流群953224940