爱奇艺后台开发岗社招面经

------------------------------------------------------------------------------
Nginx 相关 

1.nginx 有哪些模块？你比较熟悉哪个？ 
2.proxy_cache 你是怎么配置的？缓存是存在哪里？具体是怎么命中缓存的？ 
简历里有写nginx，结果问得几个问题我都没答好，面试官就没再多问了，囧～ 

-------------------------------------------------------------------------------
数据库相关 
1.mysql 索引是怎么实现的？b+树有哪些特点？真实的数据存在哪里？ 
2.哪些情况下建索引？解释下最左匹配原则？ 
现在一个表有三列a b c，组合索引(a,b,c)查询的时候 where a like ? and b=? and c=?能用到 
这个组合索引吗？为什么？ 
3.explain 执行计划看过没有？其中 type 字段都有哪些值？分别代表什么？ 
4.你有哪些 sql 调优经验？ 

----------------------------------------------------------------------------
Redis 相关 

1.redis 有哪几种数据结构？给你一个 key 怎么知道是用的哪种结构？ 
2.怎么查看所有的 key？redis 怎么切换库？怎么清数据？ 
3.描述下 redis 淘汰策略？如果没有数据可以淘汰活着没有配置淘汰策略读请求可以正常执 
行吗？ 
4.你们项目里 Redis 是单节点的吗？如果多节点怎么同步？ 
5.项目里用Redis存哪些数据？为什么用 Redis？和 jetty 本地缓存有什么区别？ 

------------------------------------------------------------------------------
Linux 相关 
1.怎么查看某个进程中的线程？ 
2.怎么批量替换一个文件夹下所有文件中的一个字符？（sed 命令） 
3.有没有用过 jps jmap jstack jstat 命令，分别说下有哪些常用参数，知道多少就说多少。 
我这里结合自己用jmap jstack 定位到线上问题的经验说的，答完后感觉面试官挺满意的， 
所以说实践很重要啊～ 

情景模拟&其他 
1.设计一个系统，每天有 100 亿条数据，需要在后台做实时展示和查找。 
我当时回答的大体思路是nginx 负载均衡，消息队列存储，多线程读取，批量插入，数据库 
分库分表。 
面试官根据我的回答又衍生出了很多问题，如消息队列存满了怎么办？（也就是消费跟不上 
生产）批量插入时某一条失败了有什么影响？怎么解决？分库分表应该怎么分？怎么解决数 
据迁移的问题？ 
2.用代码实现 cat 1.log |grep a |sort |uniq -c |sort -rn 的功能。 
3.手撕代码。
4.如果现在有一台服务器突然变得很慢，怎么去定位问题？
