2020-5-2 20:46:19
一、设计模式
二、基本算法 数据结构
冒泡排序、快速排序、
二分查找
三、swoole
四、框架 Laravel
五、其他
抽奖活动
微服务
rpc
缓存
消息队列
正则表达式
swoole底层
php语言底层
六、请简述一下Myslq的事务特性以及隔离级别
事务:ACID 一致性 隔离性 持久性 原子性
隔离级别:未提交度、提交读、重复读、串行化
mysql中默认级别是重复读
https://www.cnblogs.com/huanongying/p/7021555.html
Mysql有几种事务级别?Mysql默认事务级别是什么?
https://www.cnblogs.com/shoshana-kong/p/10516404.html
Mysql锁有几种?分别有什么区别
共享锁、排它锁、间隙锁、行锁、悲观锁、意向共享锁、意向排它锁 分别都是什么?
http://www.xiaosongit.com/index/detail/id/410.html
间隙锁:
https://www.jianshu.com/p/42e60848b3a6
https://blog.csdn.net/dhfzhishi/article/details/80277990
七、解释一下 Tcp 和 Udp 的特点
八、请描述下你对php的session机制的认识
当客户端请求服务器时,会生成一个sessionId,以后的每一次请求都会携带这个sessionId,session信息以文件的形式存储在服务器。(如果是集群服务器,请使用 IP hash 方式或者 其他缓存存储session)。
每一个sessionId都会对应一个文件。sessionId存储在客户端的cookie中。如果禁用了cookie,那么可以在url携带sessionId。
九、请写出Redis的基本数据结构,请列举你实际使用的场景。
(1)string 字符串 可用于常规缓存、计数 例如:用户地址、用户姓名的记录 粉丝数、关注数
(2)list 队列 可实现存储列表信息、如短信发送列表、类似消息队列 先进先出、双向队列
(3)hash 哈希 类似一个实例类,例如 用户类 有姓名、年龄、地址、浏览量
(4)set 集合 可用户存储用户标签类似功能,有交集、差集、并集,可用于分析相同标签的数据分类
(5)sortSet 有序集合 可按照score进行倒序、正序排序。排行榜
十、请简述下Tcp/Ip Tcp位于七层模型的哪一层?
七层模型:物理层、链路层、网络层、传输层、会话层、表示层、应用层
Tcp位于传输层,是面向连接的、可靠的、基于字节流的传输通讯协议。
Tcp协议的特点:
(1)Tcp的全称是Transmission control protocol
(2)传输层协议
(3)面向连接,即在客户端和服务器之间发送数据直接,必须先建立连接
(4)连接需要三次握手和四次挥手
(5)可靠的
Udp协议:
(1)Udp全称 User Datagram Protocol用户数据报协议
(2)传输层协议
(3)无连接的数据报协议
(4)不可靠的传递服务
TCP、UDP两者的区别
1、TCP是面向连接的(在客户端和服务器之间传输数据之前要先建立连接),UDP是无连接的(发送数据之前不需要先建立连接)
2、TCP提供可靠的服务(通过TCP传输的数据。无差错,不丢失,不重复,且按序到达);UDP提供面向事务的简单的不可靠的传输。
3、UDP具有较好的实时性,工作效率比TCP高,适用于对高速传输和实时性比较高的通讯或广播通信。随着网速的提高,UDP使用越来越多。
4、没一条TCP连接只能是点到点的,UDP支持一对一,一对多和多对多的交互通信。
5、TCP对系统资源要去比较多,UDP对系统资源要求比较少
6、UDP程序结构更加简单
7、TCP是流模式,UDP是数据报模式
十一、请简述Http协议和webSocket协议
Http协议是超文本传输协议,属于应用层、无状态
webSocket 是http协议的升级版本,支持双向通讯,持久化通讯
十二、请实现你最拿手的排序算法
$data = [1, 3, 8, 9, 2]; //从小打到排序 function dataSort($item) { if (empty($item) || !is_array($item)) { return $item; } $len = count($item); for ($i = 1; $i < $len; $i++) { for ($j = 0; $j < $len - $i; $j++) { if ($item[$j] > $item[$j + 1]) { $temp = $item[$j + 1]; $item[$j + 1] = $item[$j]; $item[$j] = $temp; } } } return $item; } $res = dataSort($data); var_export($res);
十三、php如何上传大文件
十四、请根据条件编写一个抽奖程序
1、奖项设置 一等奖 手机一部 二等奖、电饭煲 三等奖、行李箱 四等奖、牙刷一枚
2、中奖比例 一等奖 5% 二等奖 8% 三等奖 10% 四等奖 15% 其余的是 谢谢合作
防止用户重复抽奖
Redis方面
(1)Redis的应用场景
(2)Redis支持的数据类型(必考)
(3)zset跳表的数据结构(必考)
(4)Redis的数据过期策略(必考)
(5)Redis的LRU过期策略的具体实现
(6)如何解决Redis缓存雪崩,缓存穿透问题
(7)Redis的持久化机制(必考)
(8)Redis的管道pipeline
Mysql方面
(1)事务的基本要素
(2)事务隔离级别
(3)如何解决事务的并发问题(脏读,幻读)?
(4)MVCC多版本并发控制?
(5)binlog,redolog,undolog都是什么,起什么作用?
(6)InnoDB的行锁/表锁?
(7)myisam和innodb的区别,什么时候选择myisam?
(8)为什么选择B+树作为索引结构?
(9)索引B+树的叶子节点都可以存哪些东西?
(10)查询在什么时候不走(预期中的)索引?
(11)sql如何优化?
(12)explain是如何解析sql的?
(13)order by原理