问题

  1. 博客项目中的mq是用来干什么的
  2. AOP的切入点类型
  3. 通知类型
  4. 手写通知com.alibaba包下public类
  5. 方法计时怎么做
  6. redis限流怎么做的
  7. 滑动窗口(相关的其他的限流算法)
  8. 抖音的功能模块
  9. 抖音的视频表设计
  10. 手写近一个月每一天的第一条视频
  11. docker镜像的构建
  12. dockerfile的组成
  13. 进入docker容器的命令
  14. MySQL有那些索引
  15. 事务隔离级别,并发问题
  16. 什么叫脏读,怎么产生的
  17. 什么是幻读,怎么解决
  18. mvcc原理
  19. jvm的内存分区
  20. 垃圾清理的算法
  21. 手写单例模式
  22. 为什么要进行第二个判断

个人答案

  1. 使用mq主要是用来异步解耦使用的,在正常业务流程中,比较耗时而且不需要即时返回结果的操作。将这些操作可以做为异步处理,这样可以大大的加快请求的响应时间。再用户注册之后,需要发送注册短信、邮件通知,以告知相关信息。正常做法,是要经过三大步处理:用户信息处理、发送邮件、发送短信,等这三步全部都完成之后,才返回前端,告诉你注册成功了。使用MQ,只需要在处理完用户信息之后,给MQ发送两个消息即可,邮件服务、短信服务监听MQ的任务消息,根据消息进行发送即可。

  2. 常用的就是指定方法和指定注解。

    • execution(* com.itheima.*.*Service.find*(..)) 将项目中所有业务层方法的以find开头的方法匹配

    • @annotation(com.yangzhang.blog.annotation.OptLog)

  3. 前置,后置,环绕,返回,异常

  4. execution (public com.alibaba..*(..))

  5. 首先定义好切点,使用AOP的环绕通知,在开始前后使用System.currentTimeMillis计算方法耗时。

  6. 使用的是redis+AOP,指定注解下的方法会采用redis的string来根据ip+method name记录访问次数,每次访问加一,当访问的次数大于注解中指定的次数时,返回失败。

  7. redis(zset)+lua实现滑动窗口简单的说了以下,令牌桶,漏桶

  8. 官方提供的接口,用户模块,视频模块,点赞,评论模块

  9. id,userid,play_url,favorite_count,comment_count,create_time,update_time,title,cover。

  10. 不会

  11. 一是通过容器commit docker commit -a "runoob.com" -m "my apache" a404c6c174a2 mymysql:v1 。二是build+dockerfile docker build -f /path/to/a/Dockerfile .注意后面的.代表dockerfile的上下文。

  12. 不熟悉,Dockerfile 文件结构、docker镜像构建过程详细介绍_open in new window

  13. docker exec -it /bin/bash

  14. 不会,MySQL有哪些索引,及如何创建索引?_mysql创建索引open in new window

  15. 读未提交,读以提交,不可重复读,串行化。

上次更新:
Contributors: YangZhang