2019 面试题


1、GET与POST 请求的区别:

URL 方面:  

GET  url 的参数是显示在url上

   POST  url 的参数不是在url  请求body上

   缓存方面:

GET 请求被浏览器的自动缓存

POST 不会自动缓存

退回方面:

   GET 退回可以重新页面

POST 退回是重新提交

  安全方面:

GET 参数暴露在url

POST 参数隐藏

 

2、MySql 的引擎

a) 支持事务方面:Innodb 支持事务,Myisam 不支持事务

b) Innodb 支持行锁,Myisam 支持表锁

c) 储存文件类型:innodb数据文件不支持跨平台 Myisam数据支持跨平台

d) 全文类型索引:innodb 不支持 ,myisam支持

e) 查询效率 :innodb 慢,mysian 快

3、Redis 数据类型:

a) String 字符串

i. 适应场景:常规key-value缓存应用。常规计数: 微博数, 粉丝数。

b) Hash 字典

i. 适应场景:缓存

c) List 列表

i. 最新消息排行等功能(比如朋友圈的时间线)

ii. 消息队列 

d) Set 集合

i. 共同好友

ii. 利用唯一性,统计访问网站的所有独立ip

iii. 好友推荐时,根据tag求交集,大于某个阈值就可以推荐

e) Sorte Set 有序集合

i. 排行榜

ii. 带权重的消息队列

4、RabbitMQ 特点:

a) 可靠性:RabbitMQ使用一些机制来保证可靠性,持久化、传输确定及发布确认

b) 灵活的路由: 在消息进入列队之前,通过交换器来路由消息。对于典型的路由功能,RabbitMQ 已经提供了一些内置的交换器来实现。针对更复杂的路由功能,可以多个交换器绑定在一起,也可以通过插件机制来实现自己的交换器

c) 扩展性:多个RabbitMQ节点可以组成一个集群,也可以根据实际业务情况动态扩展集群的节点

d) 高可用性:列队可以在集群中的机器上设置镜像,使得在部分节点出现问题的情况下队仍然可

e) 多种协议:rabbitMQ除了原生支持AMQP协议,还支持STOMP,MQTT等多种消息中间件协议。

f) 多语言客户端:RabbitMQ几乎支持所有常用语言,比如Jav a、Python、Ruby、PHP、C#、JavaScript等。

g) 管理界面:RabbitMQ提供了一个易用的用户界面,使得用户可以监控和管理消息、集群中的节点等。

h) 插件机制:RabbitMQ提供了许多插件,以实现从多方面进行扩展,当然也可以编写自己的插件。

5、Laravel 优缺点:

优点:优雅,框架结构组织清晰(抽象了中间件,任务,服务等模块),提供的artisan开发工具开发效率高,社区活跃完善,并且提供了简化的轻量级框架lumen

缺点基于组件式的框架,所以比较臃肿

6、定义一个函数,查找一个N 维数组的中的key为 ‘test’ 的值, 输出格式为数组

function getValueArr($arr , $searhKey = 'test'){

$rs = $result = [];
    if ( is_array($arr) ) {
        foreach ( $arr as $key => $val ) {
            if ( count($val) > 1 || is_array($arr[ $key ]) ) {
                $result = getValueArr($arr[ $key ]);
                $rs = array_merge($rs , $result);
            } elseif ( $key == $searhKey ) {
                $rs[] = $arr[ $key ];
            }
        }
    }
    return $rs;
}

7、MySql的优化

a) Sql 语句优化

i. explain出来的各种item的意义;

ii. profile的意义以及使用场景

iii. 慢查询

b) 索引优化

8、MySql的“悲观锁”与“乐观锁”

悲观锁比较适合写入操作比较频繁的场景,如果出现大量的读取操作,每次读取的时候都会进行加锁,这样会增加大量的锁的开销,降低了系统的吞吐量。(一锁二查三更新)

乐观锁:比较适合读取操作比较频繁的场景,如果出现大量的写入操作,数据发生冲突的可能性就会增大,为了保证数据的一致性,应用层需要不断的重新获取数据,这样会增加大量的查询操作,降低了系统的吞吐量。

9、innodb引擎的4大特性

a) 插入缓冲(insert buffer)

b) 二次写(double write)

c) 自适应哈希索引(ahi)

d) 预读(read ahead)

 

10、数据库事务的四大特性:

a) 原子性

b) 一致性

c) 隔离性

d) 持久性

 

猜你喜欢

转载自www.cnblogs.com/costa92/p/10415549.html