又是一年结尾,这一年你产生过多少次跳槽走人的念头?新的一年你有“新年新开始”的跳槽计划吗?来看看同你一样有一颗蠢蠢欲动跳槽之心的人们准备怎么做。 如今,跳槽已成为职场人晋升加薪的常见方式之一,可过于频繁的跳槽却容易被面试官认为你是一个职业方向不明确、缺乏稳定性的员工。其实在今年会有一个明显的感受:今年的面试,无论一面二面还是三面,都很考验Java程序员的技术功底。但是跳槽需谨慎,一定不要从一个坑跳到另一个坑!
对于面试,能给大家的帮助不多;大道理没意思,所以我把最近花了两年半时间整理的一些面试题分享给大家吧。包含面试必问知识点:MySQL篇、Redis篇、MongoDB篇、Zookeeper篇、Nginx篇、算法篇、内存篇、CPU篇、磁盘篇、网络通信篇、安全篇、并发篇等等。原预计花几个月零碎时间整理,没想到最后花了将近两年半年的时间才完成。由于文章篇幅限制,下面分享出来的将是以面试题或图片形式展现出来,希望对各位同仁接下来的面试已经自身知识体系理解有一定的帮助。
一. Java面试专题分享
MySQL面试专题
- 主键超键候选键外键
- 数据库事务的四个特性及含义
- 视图的作用,视图可以更改么?
- drop,delete与truncate的区别
- 索引的工作原理及其种类
- 连接的种类
- 数据库范式
- 数据库优化的思路
- 存储过程与触发器的区别
- 解释SQL的left join和right join
Redis面试专题
- 使用Redis有哪些好处?
- redis相比memcached有哪些优势?
- redis常见性能问题和解决方案
- MySQL里有2000w数据, redis中只存20w的数据,如何保证redis中的数据都是热点数据
- zookeeper的四种类型的znode
- Memcache-与Redis的区别都有哪些?
- Redis常见的性能问题都有哪些?如何解决?
- redis最适合的场景
- Redis的同步机制了解么?
- 是否使用过Redis集群,集群的原理是什么?
MongoDB面试专题
- 什么是MongoDB ?
- MongoDB是由那种语言写的?
- MongoDB的优势有哪些?
- 什么是数据库?
- 什么是集合?
- 什么是文档?
- MongoDB和关系型数据库术语对比图
- 什么是"mongod" ?
- "mongod"参数有什么?
- 什么是"mongo" ?
- MongoDB哪个命令可以切换数据库?
- 什么是非关系型数据库?
- 非关系型数据库有哪些类型?
- 为什么用MOngoDB ?
- 在哪些场景使用MongoDB ?
- MongoDB中的命名空间是什么意思
- 哪些语言支持MongoDB
- 在MongoDB中如何创建一个 新的数据库?
- 在MongoDB中如何查看数据库列表?
- MongoDB中的分片是什么意思?
- 如何查看使用MongoDB的连接?
- 什么是复制?
- 在MongoDB中如何在集合中插入一个文档?
- 在MongoDB中如何除去- -个数据库 ?
- 在MongoDB中如何创建一个集合 ?
- 在MongoDB中如何查看一个已经创建的集合 ?
Zookeeper面试专题
- zookeeper是什么?
- zookeeper提供了什么?
- zookeeper文件系统
- zookeeper的四种类型的znode
- zookeeper通知机制
- zookeeper有哪些应用场景?
- zk的命名服务
- zk的配置管理服务
- zk的集群管理
- zk的分布式锁
- zk队列管理
- zk数据复制
- zk中zab的工作原理
- zk是如何保证事物的顺序一致性
- zk集群下server工作状态
- zk是如何选举Leader的?
- zk同步流程
- 分布式通知和协调
- zk的session机制
二. Java面试题[含答案]
MySQL面试专题
1. 一张表,里面有ID自增主键,当insert了17条记录之后,删除了第15,16,17条记录,再把Mysql重启,再insert一条记录,这条记录的ID是18还是15?
答:
- 如果表的类型是MyISAM,那么是18.因为MyISAM会把自己增主键的最大ID记录到数据文件里,重启MySQL自增主键的最大ID也不会丢失。
- 如果表的类型是InnoDB,那么是15.InnoDB表只是把自增主键的最大ID记录到内存中,所以重启数据库或者是对表进行OPTIMIZE操作,都会导致最大ID丢失。
2. Mysql的技术特点是什么?
答:Mysql数据库软件是一个客户端或服务器系统,其中包括:支持各种客户端程序和库的多线程SQL服务器、不同的后端、广泛的应用程序编程接口和管理工具。
3. Mysql服务器默认端口是什么?
答:Mysql服务器的默认端口是3306。
4. 如何区分FLOAT和DOUBLE?
答:以下是FLOAT和DOUBLE的区别:
- 浮点数以8位精度存储在FLOAT中,并且有四个字节。
- 浮点数存储在DOUBLE中,精度为18位,有八个字节。
5. CHAR和VARCHAR的区别?
答:以下是CHAR和VARCHAR的区别:
- CHAR和VARCHAR类型在存储和检索方面有所不同
- CHAR列长度固定为创建表时声明的长度,长度值范围是1到255
- 当CHAR值被存储时,它们被用空格填充到特定长度,检索CHAR值时需删除尾随空格。
Redis面试专题
1. Redis相比memcached有哪些优势?
答:
- memcached所有的值均是简单的字符串,redis作为其替代者,支持更为丰富的数据类型
- redis的速度比memcached快很多
- redis可以持久化其数据
2. Redis支持哪几种数据类型?
答:String、List、Set、Sorted Set、hashes
3. 为什么Redis需要把所有数据放到内存中?
答:Redis为了达到最快的读写速度将数据都读到内存中,并通过异步的方式将数据写入磁盘。所以redis具有快速和数据持久化的特征。如果不将数据放在内存中,磁盘I/O速度为严重影响redis的性能。在内存越来越便宜的今天,redis将会越来越受欢迎。
4. Redis集群方案什么情况下会导致整个集群不可用?
答:有A,B,C三个节点的集群,在没有复制模型的情况下,如果节点B失败了,那么整个集群就会以为缺少5501-11000这个范围的槽而不可用。
5. Jedis与Redisson对比有什么优缺点?
答:Jedis是Redis的Java实现的客户端,其API提供了比较全面的Redis命令的支持;Redisson实现了分布式和可扩展的Java数据结构,和Jedis相比,功能较为简单,不支持字符串操作,不支持排序、事务、管道、分区等Redis特性。Redisson的宗旨是促进使用者对Redis的关注分离,从而让使用者能够将精力更集中地放在处理业务逻辑上。
Spring面试专题
1. 什么是spring?
答:Spring 是个java企业级应用的开源开发框架。Spring主要用来开发Java应用,但是有些扩展是针对构建J2EE平台的web应用。Spring 框架目标是简化Java企业级应用开发,并通过POJO为基础的编程模型促进良好的编程习惯。
2. 解释AOP模块
答:AOP模块用于发给我们的Spring应用做面向切面的开发, 很多支持由AOP联盟提供,这样就确保了Spring和其他AOP框架的共通性。这个模块将元数据编程引入Spring。
3. 解释JDBC抽象和DAO模块。
答:通过使用JDBC抽象和DAO模块,保证数据库代码的简洁,并能避免数据库资源错误关闭导致的问题,它在各种不同的数据库的错误信息之上,提供了一个统一的异常访问层。它还利用Spring的AOP 模块给Spring应用中的对象提供事务管理服务。
4. 为什么说Spring是一个容器?
答:spring容器是整个spring框架的核心,通常我们说的spring容器就是bean工厂,bean工厂负责创建和初始化bean、装配bean并且管理应用程序中的bean.spring中提供了两个核心接口:BeanFactory和ApplicationContext,ApplicationContext是BeanFactory子接口,它提供了比BeanFactory更完善的功能
5. IOC的优点是什么?
答:IOC 或 依赖注入把应用的代码量降到最低。它使应用容易测试,单元测试不再需要单例和JNDI查找机制。最小的代价和最小的侵入性使松散耦合得以实现。IOC容器支持加载服务时的饿汉式初始化和懒加载。
更多的就不贴出来了,不然这篇文章篇幅就太大了下面以图片形式展现还请谅解。本文所有资料分享地址请点击下方传送门获取地址,会有甄别审核,审核过后才能获取,资料整理花费了两年半的零碎时间,希望能对大家今后有所帮助
传送门
三. 其他面试题
spring面试专题
MySQL面试专题
Redis面试专题
MongoDB面试专题
Zookeeper面试专题
本文所涉及到的所有的学习资料、面试题请点击下方传送门获取地址;会有甄别审核,通过后方可获取学习资料,整套面试题整理花费了不少时间,希望能对大家今后在面试过程中有所帮助!
传送门
- 感谢阅读
- 感谢点赞
- 提前祝大家都能够拿到心仪的offer