叮当快药

一轮

  • 限流有哪几种底层算法

常用4种限流算法介绍及比较
面试官:你知道的限流算法有哪些?

  • 计数器(固定窗口)算法
    每个时间周期只允许固定次数的请求,超出拒绝,容易产生的问题是临界问题,
    比如3s内允许的最大请求量为1000,那么会出现2个极端:
    极端情况1:
      第1s请流量为10,
      第2s请流量为10,
      第3s请流量突然激增到980.这意味着在这一刻,有大量的请求蜂拥而至,假设服务每秒能处理的上线为800/1s,但是此刻却有超过这个量级的请求量,那么后果是不堪设想的.
    极端情况2:
      第1s请流量突然就达到990,
      留给后续第2s,3s的可请求数量就非常少了,可能会出现大量的拒绝请求

  • 滑动窗口算法
    滑动窗口算法是将时间周期分为N个小周期,分别记录每个小周期内访问次数,并且根据时间滑动删除过期的小周期。
    滑动窗口的格子划分的越多,那么滑动窗口的滚动就越平滑,限流的统计就会越精确。
    此算法可以很好的解决固定窗口算法的临界问题。

  • 漏桶算法
    漏桶算法是访问请求到达时直接放入漏桶,如当前容量已达到上限(限流值),则进行丢弃(触发限流策略)。漏桶以固定的速率进行释放访问请求(即请求通过),直到漏桶为空。
    实现:用队列保存请求,用ScheduledThreadPoolExecutor(支持定时任务的线程池)来定时从队列中取请求来执行

  • 令牌桶算法
    令牌桶算法可以说是对漏桶算法的改进。漏桶算法能限制请求的速率。而令牌桶算法在限制请求速率的同时还允许一定程度的突发调用
    算法过程:

    1. 一直放令牌,如果令牌桶达到上限则丢弃令牌,假设每秒放10个
    2. 可以应对一定程度的流量激增,如此时令牌桶有100个令牌,突然发生200次调用,则此时最开始的100次请求可以正常调用,后续的请求才会以10个/s的速率来调用

    实现:用队列保存令牌,用ScheduledThreadPoolExecutor来定时放令牌

拓展:Hystrix的原理和使用

  • Redis缓存的数据量大概有多少

  • Kafka使用过程中有没有遇到什么问题

自动提交可以发生的问题
  • Kafka 轮询删除日志,对高性能的读写有影响吗 零拷贝

  • Kafka 使用ZK 选举,写入主broker,副本怎样同步,同步机制有哪些

    ZK在Kafka中的作用
    Zookeeper 在 Kafka 中的作用

    1. broker注册
    2. topic注册
    3. 生产者负载均衡
    4. 消费者负载均衡
      5.消费者注册

ZK数据同步方式



在初始化阶段,zk 的 learner会优先初始化以全量同步方式来同步数据
learner先向leader注册,上报peerLastZxid

  • ZK 很多机器都往zk写入数据的话 会有什么问题

  • NG 负载均衡的配置 NG会开发一些脚本吗

  • CAP有了解吗 ZK 是哪种

zk是CP系统
不能保证可用性 也就是在极端环境下,ZooKeeper可能会丢弃一些请求,消费者程序需要重新请求才能获得结果

  • ZK主从选举保证的什么

zk初始化选举和崩溃选举

2
  • Java的多线程用过吗

  • 定时的线程池,线程是一开始初始化好的,还是新来任务之后陆续初始化的?

  • 如果想new出现线程池之后直接初始化好所有的核心线程数,怎么实现

  • 用过ThreadLocal 吗 什么场景?内存泄漏的风险

  • 强引用,弱引用,虚引用

在Java中,我们的垃圾回收机制回收垃圾的时候就会根据对象的引用,判断对象是否可以被垃圾回收,这里有两种:

  1. 引用计数法:为每个对象添加一个引用计数器,每当有一个引用指向它时,计数器就加一,当引用失效时,计数器减一,当计数器为0时,则认为该对象可以被回收。
  2. 可达性分析算法(GC roots)从一个被称为GC roots的对象开始往下搜索,如果一个对象到GC roots没有任何引用链相连,则说明此对象不可用。

对象的引用被划分为4种级别,从而使程序能更加灵活地控制对象的生命周期。这4种级别由高到低依次为:强引用、软引用、弱引用和虚引用。

  • k8s有了解吗

二轮

  • sonar会开发规则吗

  • 代码扫描有什么收获

  • 快排的思路 是稳定的吗?

  • 堆排序

  • 链表怎么判断有环

  • 二叉树的镜像

  • ThreadLocal的原理 key是什么

key是ThreadLocal类的实例对象,value为用户的值

  • stream group是什么意思

  • 多线程中 join yeild

wait()方法的作用是将当前运行的线程挂起(即让其进入阻塞状态),直到notify或notifyAll方法来唤醒线程.

有了对wait方法原理的理解,notify方法和notifyAll方法就很容易理解了。既然wait方式是通过对象的monitor对象来实现的,所以只要在同一对象上去调用notify/notifyAll方法,就可以唤醒对应对象monitor上等待的线程了。notify和notifyAll的区别在于前者只能唤醒monitor上的一个线程,对其他线程没有影响,而notifyAll则唤醒所有的线程

sleep方法的作用是让当前线程暂停指定的时间(毫秒),sleep方法是最简单的方法,在上述的例子中也用到过,比较容易理解。唯一需要注意的是其与wait方法的区别。最简单的区别是,wait方法依赖于同步,而sleep方法可以直接调用。而更深层次的区别在于sleep方法只是暂时让出CPU的执行权,并不释放锁。而wait方法则需要释放锁。

yield方法的作用是暂停当前线程,以便其他线程有机会执行,不过不能指定暂停的时间,并且也不能保证当前线程马上停止。yield方法只是将Running状态转变为Runnable状态。

join方法的作用是父线程等待子线程执行完成后再执行,换句话说就是将异步执行的线程合并为同步的线程。

  • volitile 内存可见性的底层原理

  • Kafka看过源码吗?

三轮

  • 研发效能平台为什么能提高效率?

  • kafka 为什么快

零拷贝技术,
两种零拷贝方案 MMap sendfile
MMap三次拷贝 sendfile两次拷贝,多出的一次是CPU拷贝 从内核拷贝到用户进程
rocketMQ使用MMAP Kafka使用sendfile 所以rocketmq能达到十万级别,kafka能达到百万级别
但为什么rocketmq不适用sendfile 因为rocketmq可以处理消息的顺序,消息的过滤
Kafka不能完成,因为sendfile压根就没有到达数据应用层,内核中无法处理这些操作。

  • 消息队列怎么保证不丢消息

  • filebeat如果采集过,怎么再采集一次 配置在哪里

  • list里学生对象,根据学生年龄排序

  • HashMap与hashtable的区别

  • synchronize修饰一个方法,这个方法如果是静态的和非静态的有什么区别

    使用synchronized修饰静态方法和非静态方法有什么区别
  • Java默认有哪些线程池,

  • spring中事务底层是怎样实现的,

  • 如果让你实现一个事务,该怎么来做

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,458评论 4 363
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,454评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,171评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,062评论 0 207
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,440评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,661评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,906评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,609评论 0 200
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,379评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,600评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,085评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,409评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,072评论 3 237
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,088评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,860评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,704评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,608评论 2 270

推荐阅读更多精彩内容

  • sidebarDepth: 0 常见题 [[toc]] 基本题 java集合 1、List,Set区别 List1...
    小陌上花开阅读 449评论 0 2
  • 1、hashcode相等两个类一定相等吗?equals呢?相反呢? 结论:equals 相等的 hashcode一...
    编程鸭阅读 1,287评论 0 0
  • 1.java基础 1.1 说一说java有哪些集合 答:分层次记忆:第一层:Collection;第二层:List...
    java_飞阅读 2,401评论 5 40
  • 我是黑夜里大雨纷飞的人啊 1 “又到一年六月,有人笑有人哭,有人欢乐有人忧愁,有人惊喜有人失落,有的觉得收获满满有...
    陌忘宇阅读 8,471评论 28 53
  • 信任包括信任自己和信任他人 很多时候,很多事情,失败、遗憾、错过,源于不自信,不信任他人 觉得自己做不成,别人做不...
    吴氵晃阅读 6,133评论 4 8