🍎面试题文末自取🍎
建议关注收藏 不然下次找不到哟~
前言
前段时间有个学了半年java的学弟说,他面试了好几家公司,hr都没给过,他学历虽然是普通本科,但是一直都很努力学,技术扎实。经过询问发现他的主要问题是面试准备不够充分,于是我把手里花了大半个月分类整理的全套面试题分享给了他,还指导了面试技巧。之后他准备了一周去面试,终于成功拿到了月薪15k的offer。
如果说有什么方法能够快速提升自己,有机会通过阿里、腾讯、字节跳动、京东等互联网大厂的面试,我觉得短时间提升自己最快的手段就是背面试题,而且要是全面、分类整理好的。现在我把这套面试题分享给大家,希望大家都能圆梦大厂。
面试题内容:
内容涵盖:Java、MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、 Redis、MySQL、Spring、Spring Boot、Spring Cloud、RabbitMQ、Kafka、 Linux 等技术栈
🍎内容太多,需要全套面试题请在文章末尾查看获取方式,附部分内容:
Java面试题
6、Java 有没有 goto?
答:
goto 是 Java 中的保留字,在目前版本的 Java 中没有使用。(根据 James Gosling(Java 之父) 编写的《The Java Programming Language》一书的附录中给出了一个Java 关键字列表,其中有 goto 和 const,但是这两个是目前无法使用的关键字,因此有些地方将其称之为保留字,其实保留字这个词应该有更广泛的意义,因为熟悉 C 语言的程序员都知道,在系统类库中使用过的有特殊意义的单词或单词的组合都被视为保留字)
14、在 Java 中,如何跳出当前的多重嵌套循环?
答:
在最外层循环前加一个标记如 A, 然后用 break A;可以跳出多重循环。(Java 中支持带标签的 break 和 continue 语句, 作用有点类似于 C 和 C++中的 goto 语句,但是就像要避免使用 goto 一样,应该避免使用带标签的 break 和 continue, 因为它不会让你的程序变得更优雅,很多时候甚至有相反的作用, 所以这种语法其实不知道更好)
33、一个”.java”源文件中是否可以包含多个类(不是内部类)?有什么限制?
答:
可以, 但一个源文件中最多只能有一个公开类(public class) 而且文件名必须和公开类的类名完全保持一致。
MyBatis面试题
7、MyBaits 的优点:
1、基于 SQL 语句编程,相当灵活,不会对应用程序或者数据库的现有设计造成任何影响,SQL 写在 XML 里,解除sql与程序代码的耦合,便于统一管理;提供 XML 标签,支持编写动态 SQL 语句, 并可重用。
2、与 JDBC 相比,减少了 50% 以上的代码量,消除了 JDBC 大量冗余的代码,不需要手动开关连接;
3、很好的与各种数据库兼容(因为 MyBatis 使用 JDBC 来连接数据库,所以只要JDBC支持的数据库 MyBatis 都支持)。
4、能够与 Spring 很好的集成;
5、提供映射标签, 支持对象与数据库的 ORM 字段关系映射; 提供对象关系映射标签, 支持对象关系组件维护。
13、MyBatis 框架的缺点:
1、SQL 语句的编写工作量较大, 尤其当字段多、关联表多时, 对开发人员编写SQL
语句的功底有一定要求。
2、SQL 语句依赖于数据库, 导致数据库移植性差, 不能随意更换数据库。
ZooKeeper面试题
2、ZooKeeper 提供了什么?
1、文件系统
2、通知机制
5、Zookeeper 文件系统
Zookeeper 提供一个多层级的节点命名空间(节点称为 znode)。与文件系统不同的是,这些节点都可以设置关联的数据,而文件系统中只有文件节点可以存放数据而目录节点不行。Zookeeper 为了保证高吞吐和低延迟,在内存中维护了这个树状的目录结构,这种特性使得Zookeeper不能用于存放大量的数据,每个节点的存放数据上限为1M。
12、ZAB 协议?
ZAB 协议是为分布式协调服务 Zookeeper 专门设计的一种支持崩溃恢复的原子广播协议。ZAB 协议包括两种基本的模式:崩溃恢复和消息广播。当整个 zookeeper 集群刚刚启动或者 Leader 服务器宕机、重启或者网络故障导致不存在过半的服务器与 Leader 服务器保持正常通信时,所有进程(服务器)进入崩溃恢复模式,首先选举产生新的 Leader 服务器,然后集群中 Follower 服务器开始与新的 Leader 服务器进行数据同步,当集群中超过半数机器与该 Leader服务器完成数据同步之后,退出恢复模式进入消息广播模式,Leader服务器开始接收客户端的事务请求生成事物提案来进行事务请求处理。
MySQL面试题
4、MySQL 中有哪几种锁?
1、表级锁: 开销小, 加锁快; 不会出现死锁; 锁定粒度大, 发生锁冲突的概率最高,
并发度最低。
2、行级锁: 开销大, 加锁慢; 会出现死锁; 锁定粒度最小, 发生锁冲突的概率最低,
并发度也最高。
3、页面锁: 开销和加锁时间界于表锁和行锁之间; 会出现死锁; 锁定粒度界于表锁和
行锁之间, 并发度一般。
7、MySQL 中有哪些不同的表格?
共有 5 种类型的表格:
1、MyISAM
2、Heap
3、Merge
4、INNODB
5、ISAM
22、简述在MySQL 数据库中 MyISAM 和InnoDB 的区别
MyISAM:
不支持事务,但是每次查询都是原子的;支持表级锁,即每次操作是对整个表加锁;存储表的总行数;一个 MYISAM 表有三个文件:索引文件、表结构文件、数据文件;采用菲聚集索引,索引文件的数据域存储指向数据文件的指针。辅索引与主索引基本一致,但是辅索引不用保证唯一性。
InnoDb:
支持 ACID 的事务,支持事务的四种隔离级别;支持行级锁及外键约束:因此可以支持写并发; 不存
储总行数:
一个 InnoDb 引擎存储在一个文件空间(共享表空间, 表大小不受操作系统控制, 一个表可能分布在多个文件里),也有可能为多个(设置为独立表空, 表大小受操作系统文件大小限制, 一般为 2G),受操作系统文件大小的限制;主键索引采用聚集索引(索引的数据域存储数据文件本身),辅索引的数据域存储主键的值;因此从辅索引查找数据,需要先通过辅索引找到主键值, 再访问辅索引;最好使用自增主键,防止插入数据时,为维持 B+树结构,文件的大调整。
Spring面试题
2.2、spring 中有多少种 IOC 容器?
BeanFactory - BeanFactory 就像一个包含 bean 集合的工厂类。它会在客户端要求时实例化bean。
ApplicationContext - ApplicationContext 接口扩展了 BeanFactory 接口。它在BeanFactory 基础上提供了一些额外的功能。
2.5、区分 BeanFactory 和 ApplicationContext。
BeanFactory | ApplicationContext |
它使用懒加载 | 它使用即时加载 |
它使用语法显式提供资源对象 | 它自己创建和管理资源对象 |
不支持国际化 | 支持国际化 |
不支持基于依赖的注解 | 支持基于依赖的注解 |
3.1、列举 IoC 的一些好处。
IoC 的一些好处是:
- 它将最小化应用程序中的代码量。
- 它将使您的应用程序易于测试,因为它不需要单元测试用例中的任何单例或 JNDI 查找机制。
- 它以最小的影响和最少的侵入机制促进松耦合。
- 它支持即时的实例化和延迟加载服务。