从3月13号开始第一家到现在历经15天,一共面了也有差不多十几公司,尤其这一周每天2家,面试下来,非常的累。到现在拿到还算满意的 offer,新公司那边的技术栈和未来的规划和个人想法非常的一致。那么简单列举一下遇到的还不错的面试题:
面试题
- 画一下你遇到的最有挑战的业务的架构图
- 设计一个系统:一百万人抢一个100块十个红包,如何保证能有10个人抢到这个10个红包
- 对于转账系统中如何保证请求的重入(重复发送)和篡改请求? 假设这个请求是你的离职同事做的,【这个问题我至今搞不明白】
- 简述 https 和 http 的区别
- 简单实现一下 laravel 的 container机制。
- nginx 负载均衡有哪些策略,请简述各种 nginx 负载均衡算法的实现方案
- nginx 是如何实现高并发的,(epoll),那你简单介绍一下 epoll 是怎么实现IO 的多路复用的。
- redis 分布式锁了解吗?那 redis 中 setnx 有什么问题,怎么解决
- redis 中的布隆过滤器了解吗?使用场景是什么?
- redis 的内存满了,那内存淘汰使用什么算法? LRU 算法主要采用哪些数据结构(LRU 算法的实现)
- 简单描述一下 redis 有序集合的实现原理,(这里采用跳表,也就简单描述一下跳表的实现原理)
- 如何实现一个线性表(数组和 linkedlist)
- 了解 rabbmitmq 吗?那这些 mq 采用什么协议(amqp 我还是知道的。。。) (rabbmitmq我没怎么看过,可以去看看)
- 手画一下一致性 hash 算法,在加减机器时候的表现。
- MySQL 的索引怎么用?B+树的特性是什么?
- 了解 MySQL 最左前缀匹配规则的原理吗?
- MySQL 的行锁在四种隔离级别下的不同表现,(意思是在什么时候加锁的?)
- 如何优化 MySQL 行锁,怎么才能降低 MySQL 行锁的影响?
以上问题都不是很难,参考一下吧。总体来说呢,很多小公司的面试注重一些我认为边角的问题,很容易在一些死角上刁难你(可能本身呢我对 php 语言的积累比比较少,也关注的少)。大公司更加注重基础,注重系统底层的数据结构和算法原理,关注你对系统的理解和问题的解决。