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

《2019年小米春季上海 PHP 实习生招聘面试题》部分答案解析

发布时间:2020-12-24 22:24:39 所属栏目:运营 来源:网络整理
导读:1 丶 Nginx 怎么实现负载均衡 这个还是比较简单 1.轮询 这种是默认的策略,把每个请求按顺序逐一分配到不同的 server,如果 server 挂掉,能自动剔除。 ? ? 2.最少连接 把请求分配到连接数最少的 server ? ? 3.权重 使用 weight 来指定 server 访问比率,wei
副标题[/!--empirenews.page--]

1 丶 Nginx 怎么实现负载均衡

这个还是比较简单

1.轮询

这种是默认的策略,把每个请求按顺序逐一分配到不同的 server,如果 server 挂掉,能自动剔除。

《2019年小米春季上海 PHP 实习生招聘面试题》部分答案解析

?

?

2.最少连接

把请求分配到连接数最少的 server

《2019年小米春季上海 PHP 实习生招聘面试题》部分答案解析

?

?

3.权重

使用 weight 来指定 server 访问比率,weight 默认是 1。以下配置会是 server2 访问的比例是 server1 的两倍。

《2019年小米春季上海 PHP 实习生招聘面试题》部分答案解析

?

?

4.ip_hash

每个请求会按照访问 ip 的 hash 值分配,这样同一客户端连续的 Web 请求都会被分发到同一 server 进行处理,可以解决 session 的问题。如果 server 挂掉,能自动剔除。

《2019年小米春季上海 PHP 实习生招聘面试题》部分答案解析

?

?

ip_hash 可以和 weight 结合使用。

2 丶 Linux 常用的命令

这个就不多说了

3 丶微信小程序常用的组件

view 丶 text 丶 button 丶 navigator 丶 scroll-view...... 等等

4 丶 Nginx 怎么配置虚拟主机

恩 2333333

5 丶 TP5 和 Laravel 框架差异

恩 2333333

6 丶 TP5 和 Laravel 框架中的数据迁移

这个本社区就有文档的

7 丶 RBAC 模型的讲解

什么是 RBAC

RBAC (基于角色的访问控制):英文名称 Rose base Access Controller 。本博客介绍这种模型的权限系统设计。取消了用户和权限的直接关联,改为通过用户关联角色、角色关联权限的方法来间接地赋予用户权限。从而实现了解耦。RBAC 在发展过程中分为以下几个版本。RBAC0、RBAC1、RBAC2、RBAC3。

8 丶订单模块的流程

9 丶订单支付成功后的操作

10 丶设置邮箱激活连接过期时间

在把激活码写入数据库的同时写入时间戳 + 过期时间

11 丶 Redis 与 Mongodb 的区别

1.性能

都比较高,性能对我们来说应该都不是瓶颈。

总体来讲,TPS 方面 redis 和 memcache 差不多。

2.操作的便利性

redis 在 2.0 版本后增加了自己的 VM 特性,突破物理内存的限制;可以对 key value 设置过期时间(类似 memcache)。

mongoDB 适合大数据量的存储,依赖操作系统 VM 做内存管理,吃内存也比较厉害,服务不要和别的服务在一起。

4、可用性(单点问题)

对于单点问题:

redis,依赖客户端来实现分布式读写;主从复制时,每次从节点重新连接主节点都要依赖整个快照,无增量复制,因性能和效率问题,所以单点问题比较复杂;不支持自动 sharding,需要依赖程序设定一致 hash 机制。

一种替代方案是,不用 redis 本身的复制机制,采用自己做主动复制(多份存储),或者改成增量复制的方式(需要自己实现),一致性问题和性能的权衡。

mongoDB 支持 master-slave,replicaset (内部采用 paxos 选举算法,自动故障恢复),auto sharding 机制,对客户端屏蔽了故障转移和切分机制。

5.可靠性(持久化)

对于数据持久化和数据恢复,redis 支持(快照、AOF):依赖快照进行持久化,aof 增强了可靠性的同时,对性能有所影响,MongoDB 从 1.8 版本开始采用 binlog 方式支持持久化的可靠性。

6.数据一致性(事务支持)

redis 事务支持比较弱,只能保证事务中的每个操作连续执行,mongoDB 不支持事务。

7.应用场景

redis:数据量较小的更性能操作和运算上

MongoDB: 主要解决海量数据的访问效率问题

12 丶 redis 和 memcached 的区别

13 丶 redis 中的队列

关于 redis 队列的实现方式有两种:

1.生产者消费者模式。

普通版本:

比如一个队列里面,生产者 A push 了一个数据进去,消费者 B pop 了这个数据,那个这个队列依旧为空。所以是一对一的。

至于是先进先出还是先进后出等,可以依照函数 lpush (从队列左边,也就是队首 push 一个数据) rpush (从队列右边也就是队尾 push 一个数据) lpop (同理) rpop 等来控制。

阻塞版本:

但是上面的命令都是立即返回的,无论数据有无,关于取数据 lpop 有个增强版本,blpop (block left pop) 阻塞版本,

使用方法:blpop key1 key2 ... keyn 10

同时预获取多个 key 的值,并设置超时时间为 10s,如果所有 key,有些 key 有 value 就立即返回,如果所有 key 都没有 value 就阻塞 10 秒返回

2.发布者订阅者模式。

概念:

三个用户 A,B,C 同时都订阅了一个 channel 名字叫 msg,然后发布者往 msg 的 channel 里面发布了一个数据,那么 A,C 三个用户都会收到该数据。

注意点:

很明显,三个用户 ABC 需要阻塞。怎么收到订阅的数据呢,肯定是依靠注册在 redis 里面的回调函数。

发布的数据不会在 redis 里面复现,意思就是发布了以后,A,C 由于种种原因没收到就没收到。

14 丶 redis 中的数据类型

Redis 支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及 zset (sorted set:有序集合)。

15 丶 TP 框架中的事件

16 丶 TP 框架的依赖注入

和 Laravel 没什么区别

17 丶 MySQL 的读写分离操作

什么主从复制,什么 bin log,胡说了一大堆

18 丶数据库 varchar 和 char 的区别

varchar 会回收未使用的空间

19 丶 MyIsam 与 InnoDB 的区别

1、MyISAM:默认表类型,它是基于传统的 ISAM 类型,ISAM 是 Indexed Sequential Access Method (有索引的顺序访问方法) 的缩写,它是存储记录和文件的标准方法。不是事务安全的,而且不支持外键,如果执行大量的 select,insert MyISAM 比较适合。

2、InnoDB:支持事务安全的引擎,支持外键、行锁、事务是他的最大特点。如果有大量的 update 和 insert,建议使用 InnoDB,特别是针对多个并发和 QPS 较高的情况。

一、表锁差异

MyISAM:

(编辑:核心网)

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

热点阅读