[ Java面试题 ]Java 开发岗面试知识点解析 (10)

[ Java面试题 ]Java 开发岗面试知识点解析

04. 其他问题包括:重定向和转发的区别、动态代理和静态代理的区别等。

Mybatis 知识点

关于 MyBatis 主要考察占位符#和 $ 的区别,区别如下:

符号将传入的数据都当做一个字符串,会对自动传入的数据加一个双引号;

$ 符号将传入的数据直接显示生成 SQL 中;

符号存在预编译的过程,,对问号赋值,防止 SQL 注入;

$ 符号是直译的方式,一般用在 order by ${列名}语句中;

能用#号就不要用 $ 符号。

小结:限于作者水平,MVC 框架方面了解不是太多,实战能力欠缺。面试官偶尔问框架底层实现原理等都知之甚少,有能力的小伙伴可以多加学习。

大数据相关知识

大数据相关是因为我的简历上写了 KafKa 相关项目,所以面试官会进行提问 KafKa 相关知识点,我也进行了一些简单概念总结,深层次的实现原理因为并没有特别多的实战经验,所以并不了解。

以下概念总结供小伙伴参考。

01. KafKa 基本特性:

答:

快速持久化、支持批量读写消息、支持消息分区,提高了并发能力、支持在线增加分区、支持为每个分区创建多个副本。

扩展:为什么可以实现快速持久化?

答:

KafKa 将消息保存在磁盘中,并且读写磁盘的方式是顺序读写,避免了随机读写磁盘(寻道时间过长)导致的性能瓶颈;磁盘的顺序读写速度超过内存随机读写。

【Kafka 入门与实践】

02. 核心概念

答:

生产者(Producer): 生产消息,并且按照一定的规则推送到 Topic 的分区中。

消费者(Consumer): 从 Topic 中拉去消息,并且进行消费。

主题(Topic): 用于存储消息的逻辑概念,是一个消息集合。

分区(partition):

每个 Topic 可以划分为多个分区,每个消息在分区中都会有一个唯一编号 offset

kafka 通过 offset 保证消息在分区中的顺序

同一 Topic 的不同分区可以分配在不同的 Broker 上

partition 以文件的形式存储在文件系统中。

副本(replica):

KafKa 对消息进行了冗余备份,每个分区有多个副本,每个副本中包含的消息是 “一样” 的。

每个副本中都会选举出一个 Leader 副本,其余为 Follower 副本,Follower 副本仅仅将数据从 Leader 副本拉去到本地,然后同步到自己的 Log 中。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwxfyf.html