最全面试刷算法,这些api不可不知!(2),java面试大全上

Kafka实战笔记

关于这份笔记,为了不影响大家的阅读体验,我只能在文章中展示部分的章节内容和核心截图

image.png

  • Kafka入门
  • 为什么选择Kafka
  • Karka的安装、管理和配置

image.png

  • Kafka的集群
  • 第一个Kafka程序
  • image.png

afka的生产者

image.png

  • Kafka的消费者
  • 深入理解Kafka
  • 可靠的数据传递

image.png

image.png

  • Spring和Kalka的整合
  • Sprinboot和Kafka的整合
  • Kafka实战之削峰填谷
  • 数据管道和流式处理(了解即可)

image.png

  • Kafka实战之削峰填谷

image.png

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

peek(); // 查看栈顶元素, 返回值为栈顶元素e — O(1)

  • isEmpty

isEmpty() // 若栈空返回true, 否则返回false — O(1)

  • size

size() // 返回栈中元素个数 — O(1)

队列


队列s是一种先进先出的结构,在Java中的接口定义是Queue,具体实现还是我们的老朋友LinkedList

单向队列

  • 构造

Queue q = new LinkedList<>();

  • offer

offer(E e); // 队尾加入元素e。 若成功入队返回值true,否则返回false — O(1)

  • poll

poll(); // 出队头,返回出队元素e — O(1)

  • peek

peek(); // 查看队头元素, 返回值队首元素e — O(1)

  • isEmpty

isEmpty() // 若队空返回true, 否则返回false — O(1)

  • size

size() // 返回队中元素个数 — O(1)

双向队列


Queue有一个子接口Dueue,即双向队列,和单向队列不同,它的出队入队可以从两个方向。

双向队列

  • 构造

Dueue q = new LinkedList<>();

  • offFirst

offFirst(Object e) // 将指定元素添加到双端队列的头部 — O(1)

  • offLast

offLast(Object e) //将指定元素添加到双端队列的尾部 — O(1)

  • pollFirst

pollFirst() //获取并删除双端队列的第一个元素 — O(1)

  • pollLast

pollLast() //获取并删除双端队列的最后一个元素 — O(1)

  • peekFirst

peekFirst() //获取但不删除双端队列的第一个元素 — O(1)

  • peekLast

peekLast() //获取但不删除双端队列的最后一个元素 — O(1)

优先队列


优先队列是一种比较特殊的队列,保存队列元素的顺序不是按照元素添加的顺序来保存的,而是在添加元素的时候对元素的大小排序后再保存。

所以在队头的元素不是按照先后顺序,而是按照大小顺序。

在Java中的实现是PriorityQueue,底层是一棵树, 以小根堆为例。对于任意结点来说,该节点的值比其左右孩子的值都要小。 (就是最上面的结点最小)。 大根堆类似,最上面结点最大

  • 构造

  • 小根堆

Queue minH = new PriorityQueue<>(); // 小根堆,默认大小为11 相当于 new PriorityQueue<>(11)

Queue minH = new PriorityQueue<>(100); // 定义一个默认容量有100的小根堆。在当中增加元素会扩容,只是开始指定大小。不是size,是capacity

    • 大根堆

Queue maxH = new PriorityQueue<>((i1, i2) -> i2 - i1); // 大根堆,默认大小为11 相当于 new PriorityQueue<>(11, (i1, i2) -> i2 - i1)

Queue maxH = new PriorityQueue<>(100, (i1, i2) -> i2 - i1); // 定义一个默认容量有100的大根堆。在当中增加元素会扩容,只是开始指定大小

  • offer

offer(E e); // 在堆中加入元素e,并调整堆。若成功入堆返回值true,否则返回false — O(logN)

  • poll

poll(); // 弹出堆顶元素,并重新调整堆,返回出队元素e — O(logN)

  • peek

peek(); // 查看堆顶元素, 返回值堆顶元素e — O(1)

散列表


散列表示一种<key,value>型的数据结构,在Java中的实现是HashMap

  • 构造

Map<Characters, Integer> map = new HashMap<>();

  • put

put(K key, V value); // 在Map中加入键值对<key, value>。返回value值。如果Map中有key,则replace旧的value — O(1)

  • get

get(K key); // 返回Map中key对应的value。若Map中没有该key,则返回null — O(1)

  • getOrDefault

getOrDefault(K key, V defaultValue); // 返回Map中key对应的value。若Map中没有该key,则返回defaultValue — O(1)

// For example:

// Map<Character, Integer> map = new HashMap<>();

// if (…) // 如果发现k,则k在Map中的值加1。没一开始没有k,则从0开始加1。(相当于给了key在Map中的一个初试值)

map.put(‘k’, map.getOrDefault(‘k’, 0) + 1);

  • containsKey

containsKey(Key key); // 在Map中若存在key,则返回true,否则返回false — O(1)

get(x) == null // 可以代替改用法

  • keySet

keySet(); // 返回一个Set,这个Set中包含Map中所有的Key — O(1)

// For example:

// We want to get all keys in Map

// Map<Character, Integer> map = new HashMap<>();

for (Character key : map.keySet()) {

// Operate with each key

}

  • values

values(); // 返回一个Collection,里面全是对应的每一个value — O(1)

// For example:

// We want to get all values in Map

// Map<Character, Integer> map = new HashMap<>();

for (Integer value : map.values()) {

// Operate with each values

}

  • isEmpty

isEmpty() // 若Map为空返回true, 否则返回false — O(1)

  • size

.size() // 返回Map中中键值对<K, V>的个数 — O(1)

Set


Set是一种没有重复元素的集合,常用的实现是HashSet

  • 构造

Set set = new HashSet<>();

List list = new ArrayList<>…;

Set set = new HashSet<>(list);

  • add

.add(E e); // 在集合中添加元素E e, 若成功添加则返回true,若集合中有元素e则返回false — O(1)

  • remove

remove(E e); // 在集合中删除元素e,若删除成功返回true;若集合中没有元素e,返回false — O(1)

  • contains

contains(E e); // 若存在元素e,则返回true,否则返回false — O(1)

  • isEmpty

isEmpty() // 若集合为空返回true, 否则返回false — O(1)

  • size

size() // 返回集合中中元素个数 — O(1)

  • first

first() // 返回集合里的最小值(若给了比较器从大到小则是返回最大值)

  • last

last() // 返回集合里的最大值(若给了比较器从大到小则是返回最小值)

字符串


String

不可变量(相当于只读final修饰),每个位置元素是个char。

字符串

  • 初始化

字符串复制初始化

String s = "abc";

基于另外一个字符串

// s = "abc"String s2 = new String(s);

基于char[]

// s = “abc”;

// char[] c = s.toCharArray();

String s3 = new String©;

// 可以偏移

// public String(char value[], int offset, int count)

String s4 = new String(c, 1, 2); // [offset, offset + count) [)

// 把char[] 变成字符串

char[] ch = {‘a’, ‘b’, ‘c’};

String.valueOf(ch);

  • charAt

charAt(int index); // 返回index位置的char — O(1)

  • length

length(); // 返回字符串长度 — O(1)

  • substring

substring(int beginIndex, int endIndex); // 返回字符片段[beginIndex, endIndex) — O(n)

substring(int beginIndex); // 返回字符片段[beginIndex, end_of_String) 就是从beginIndex开始后面的 ---- O(n)

  • indexOf

indexOf(String str) // 返回str第一个出现的位置(int),没找到则返回-1。 — O(m * n) m为原串长度, n为str长度

// (假如要找一个字符char c,str可以表示成String.valueOf©,然后作为参数传进去.

s.indexOf(String str, int fromIndex); // 同上,但从fromIndex开始找 — O(m * n)

  • lastIndexOf

lastIndexOf(String str); // 返回str最后出现的位置(int),没找到则返回-1。 — O(m * n) m为原串长度, n为str长度

// (假如要找一个字符char c,str可以表示成String.valueOf©,然后作为参数传进去.

lastIndexOf(String str, int fromIndex); // 同上,

//但从fromIndex开始从后往前找 [0 <- fromIndex] — O(m * n)

  • replace

replace(char oldChar, char newChar); // 返回一个新字符串String,其oldChar全部变成newChar — O(n)

  • toCharArray

toCharArray(); // 返回char[] 数组。 把String编程字符数组 — O(n)

  • trim

trim(); // 返回去除前后空格的新字符串 — O(n)

  • split

split(String regex); // 返回 String[],以regex(正则表达式)分隔好的字符换数组。 ---- O(n)

// For example

// 从非"/“算起 若”/a/c" -> 会变成"" “a” “c”

String[] date = str.split(“/”); // date[0]:1995 date[1]:12 date[2]:18 — O(n)

  • toLowerCase, toUpperCase

s = s.toLowerCase(); // 返回一个新的字符串全部转成小写 — O(n)

s = s.toUpperCase(); // 返回一个新的字符串全部转成大写 — O(n)

StringBuilder

由于String是所谓的不可变类,使用 str+这种形式拼接字符串实际上,是JVM帮助循环创建StringBuilder来拼接,所以拼接字符串最好用StringBuilder。

  • 构造

最后

分享一些系统的面试题,大家可以拿去刷一刷,准备面试涨薪。

这些面试题相对应的技术点:

  • JVM
  • MySQL
  • Mybatis
  • MongoDB
  • Redis
  • Spring
  • Spring boot
  • Spring cloud
  • Kafka
  • RabbitMQ
  • Nginx

大类就是:

  • Java基础
  • 数据结构与算法
  • 并发编程
  • 数据库
  • 设计模式
  • 微服务
  • 消息中间件

程序员,每个月给你发多少工资,你才会想老板想的事?

程序员,每个月给你发多少工资,你才会想老板想的事?

程序员,每个月给你发多少工资,你才会想老板想的事?

程序员,每个月给你发多少工资,你才会想老板想的事?

程序员,每个月给你发多少工资,你才会想老板想的事?

程序员,每个月给你发多少工资,你才会想老板想的事?

程序员,每个月给你发多少工资,你才会想老板想的事?

程序员,每个月给你发多少工资,你才会想老板想的事?

程序员,每个月给你发多少工资,你才会想老板想的事?

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

`这种形式拼接字符串实际上,是JVM帮助循环创建StringBuilder来拼接,所以拼接字符串最好用StringBuilder。

  • 构造

最后

分享一些系统的面试题,大家可以拿去刷一刷,准备面试涨薪。

这些面试题相对应的技术点:

  • JVM
  • MySQL
  • Mybatis
  • MongoDB
  • Redis
  • Spring
  • Spring boot
  • Spring cloud
  • Kafka
  • RabbitMQ
  • Nginx

大类就是:

  • Java基础
  • 数据结构与算法
  • 并发编程
  • 数据库
  • 设计模式
  • 微服务
  • 消息中间件

[外链图片转存中…(img-BCYYoJNc-1715618179671)]

[外链图片转存中…(img-exKZpGDk-1715618179671)]

[外链图片转存中…(img-G7nClO7d-1715618179671)]

[外链图片转存中…(img-CXeIFbdy-1715618179671)]

[外链图片转存中…(img-di8RDfNs-1715618179672)]

[外链图片转存中…(img-VjGFYGLX-1715618179672)]

[外链图片转存中…(img-gaRwUOey-1715618179672)]

[外链图片转存中…(img-rS7NB16t-1715618179673)]

[外链图片转存中…(img-iA2wRRNJ-1715618179673)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

  • 14
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值