前言
工作拧螺丝,面试造火箭。我想这是每个程序员比较头疼的事情吧!但是,又必须要经历一个面试流程,尤其是摸不清面试官问的问题,导致面试的时候不知道如何回答。
本文是工作7年Java程序员从几十次面试中挑选出来的面试几率比较大的一些题目,保证都是大家被问过的(就是这么自信),希望对大家找工作有所帮助。
下面的面试题只是我整理出来的一小部分常问的题目,另外本人整理并收藏了20年多家公司面试题知识点合集,以及各种Java核心知识点可以免费分享给大家,下方只是部分资料图展示。
需要的朋友可以 点击这里获取
一、JVM系列面试题
答:JVM 分为堆区和栈区,还有方法区,初始化的对象放在堆里面,引用放在栈里面,class 类信息
常量池(static 常量和 static 变量)等放在方法区
new:①方法区:主要是存储类信息,常量池(static 常量和 static 变量),编译后的代码(字节码)等数据
②堆:初始化的对象,成员变量 (那种非 static 的变量),所有的对象实例和数组都要在堆上分配
③栈:栈的结构是栈帧组成的,调用一个方法就压入一帧,帧上面存储局部变量表,操作数栈,方法出口等信息,局部变量表存放的是 8 大基础类型加上一个应用类型,所以还是一个指向地址指针
④ 本地方法栈:主要为 Native 方法服务
⑤ 程序计数器:记录当前线程执行的行号
2、GC 的两种判定方法:
3、SafePoint 是什么
4、GC 的三种收集方法:标记清除、标记整理、复制算法的原理与特点,分别用在什么地方,如果让你优化收集方法,有什么思路?
5、Minor GC 与 Full GC 分别在什么时候发生?
6、JVM 内存分哪几个区,每个区的作用是什么?
7、 如何判断一个对象是否存活?(或者 GC 对象的判定方法)
二、Redis系列面试题
1、Redis 与 memcached 相比有哪些优势?
2、Redis 支持哪几种数据类型?
3、Redis 有哪几种数据淘汰策略?
4、为什么 Redis 需要把所有数据放到内存中?
5、Redis 集群方案什么情况下会导致整个集群不可用?
6、MySQL 里有 2000w 数据,redis 中只存 20w 的数据,如何保证 redis 中的数据都是热点 数据?
7、Redis 和 Redisson 有什么关系?
三、 Mysql系列面试题
1、Mysql 的技术特点是什么?
2、在 Mysql 中 ENUM 的用法是什么?
3、与 Oracle 相比,Mysql 有什么优势?
4、列的字符串类型可以是什么?
5、请简洁描述 Mysql 中 InnoDB 支持的四种事务隔离级别名称,以及逐级之间的区别?
6、LIKE 声明中的%和_是什么意思?
7、MyISAM 表格将在哪里存储,并且还提供其存储格式?
四、Netty系列面试题
1、BIO、NIO 和 AIO 的区别?
答:BIO:一个连接一个线程,客户端有连接请求时服务器端就 需要启动一个线程进行处理。线程开销大。
伪异步 IO:将请求连接放入线程池,一对多,但线程还是很宝贵的资源。
NIO:一个请求一个线程,但客户端发送的连接请求都会注册到多路复用器上,多路复用
器轮询到连接有 I/O 请求时才启动一个线程进行处理。
AIO:一个有效请求一个线程,客户端的 I/O 请求都是由 OS 先完成了再通知服务器应用去启动线程进行处理,BIO 是面向流的,NIO 是面向缓冲区的;BIO 的各种流是阻塞的。而 NIO 是非阻塞的;BIO的 Stream 是单向的,而 NIO 的 channel 是双向的。
NIO 的特点:事件驱动模型、单线程处理多任务、非阻塞 I/O,I/O 读写不再阻塞,而是返回 0、基于 block 的传输比基于流的传输更高效、更高级的 IO 函数 zero-copy、IO 多路复用大大提高了 Java 网络应用的可伸缩性和实用性。基于 Reactor 线程模型。
在 Reactor 模式中,事件分发器等待某个事件或者可应用或个操作的状态发生,事件分发器就把这个事件传给事先注册的事件处理函数或者回调函数,由后者来做实际的读写操作。如在 Reactor 中实现读:注册读就绪事件和相应的事件处理器、事件分发器等待事件、事件到来,激活分发器,分发器调用事件对应的处理器、事件处理器完成实际的读操作,处理读到的数据,注册新的事件,然后返还控制权。
2、TCP 粘包/拆包的原因及解决方法?
3、了解哪几种序列化协议?
4、如何选择序列化协议?
5、Netty 的零拷贝实现?
6、.Netty 的高性能表现在哪些方面?
五、SQL优化系列面试题
1、Mysql 的技术特点是什么?
答:Mysql 数据库软件是一个客户端或服务器系统,其中包括:支持各种客户端程序和库的多线程 SQL 服务器、不同的后端、广泛的应用程序编程接口和管理工具。
2、Heap 表是什么?
3、Mysql 服务器默认端口是什么?
4、与 Oracle 相比,Mysql 有什么优势?
5、区分 CHAR_LENGTH 和 LENGTH?
6、Mysql 中使用什么存储引擎?
六、Duddo系列面试题
1、Dubbo 中 zookeeper 做注册中心,如果注册中心集群都挂掉,发布者和订阅者之间还能通信么?
2、dubbo 服务负载均衡策略?
3、Dubbo 在安全机制方面是如何解决的
4、dubbo 连接注册中心和直连的区别
5、dubbo 服务集群配置(集群容错模式)
6、dubbo 通信协议 dubbo 协议为什么要消费者比提供者个数多:
7、dubbo 通信协议 dubbo 协议适用范围和适用场景
七、设计模式系列面试题
1、请列举出在 JDK 中几个常用的设计模式?
答:单例模式(Singleton pattern)用于 Runtime,Calendar 和其他的一些类中。工厂模式(Factory pattern)被用于各种不可变的类如Boolean,像 Boolean.valueOf,观察者模式(Observer pattern)被用于 Swing 和很多的事件监听中。装饰器设计模式(Decoratordesign pattern)被用于多个 Java IO 类中。
2、什么是设计模式?你是否在你的代码里面使用过任何设计模式?
3、Java 中什么叫单例设计模式?请用 Java 写出线程安全的单例模式
4、在 Java 中,什么叫观察者设计模式(observer design pattern)?
5、使用工厂模式最主要的好处是什么?在哪里使用?
6、举一个用 Java 实现的装饰模式(decorator design pattern)?它是作用于对象层次还是类层次?
7、举例说明什么情况下会更倾向于使用抽象类而不是接口?
总结
针对以上面试题,我总结出了互联网公司Java程序员面试中,涉及到的绝大部分面试题(附答案详解)。编成了文档和PDF格式的资料,免费分享给大家。包括 Dubbo、Redis、Netty、Zookeeper、Spring Cloud、分布式、高并发等架构技术点核心资料),希望能帮助到您面试前的复习并且能找到一个心仪的工作。同时,也节省大家去网上搜索资料浪费的时间来学习,也可以关注我哟以后还会有更多干货分享哒