欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

java面试知识体系

程序员文章站 2022-06-23 22:18:01
JAVA基础java中有几种基本类型?Java的基本类型有8种:四种基本类型(byte,short, int, long)。两种浮点类型(float,double)。一种字符类型(char),一种布尔类型(boolean)String能被继承吗?不可以,因为String类有final修饰符,而final修饰的类是不能被继承的。String,StringBuffer, StringBuilder的区别两种维度来说:第一个维度:可变与不可变。String字符串因为被final修......

 

  • JAVA基础

  • java中有几种基本类型

Java的基本类型有8种:四种基本类型(byte,short, int, long)。两种浮点类型(float,double)。一种字符类型(char),一种布尔类型(boolean)

  • String能被继承吗

不可以,因为String类有final修饰符,而final修饰的类是不能被继承的。

  • String,StringBuffer, StringBuilder的区别

两种维度来说:第一个维度:可变与不可变。String字符串因为被final修饰,所以他是不可变对象。StringBuffer,StringBuilder都继承AbstractStringBuilder,这两种对象都是可变的。第二个维度:是否线程安全。String的对象是不可变的,可以理解为常量,显然是线程安全的。StringBuffer字符串常量也是线程安全的,他也是final类别的,synchronized修饰。

StringBuilder 线程不安全,并没有对方法进行加同步锁。

  • ArrayList和LinkedList的区别

首先,ArrayList和LinkedList都实现了list接口,它们有以下不同点: ArrayList是基于索引的数据接口,它的底层是数组,而LinkedList是以元素列表的形式存储数据的,linkedList的插入、添加、删除操作速度更快。LinkedList比ArrayList更占内存。

  • HashMap和HashTable区别

hashMap不是线程安全的,它允许null key和null value ,而HashTable不允许,所以它是线程安全的,从执行效率上来看,因为hashMap允许null key,null value,要高于HashTable。

  • BIO和NIO的区别

BIO(IO)是面向流的,NIO是面向缓冲区的。

BIO: 同步阻塞式IO,就是我们平时使用的传统IO, 它的特点是模式简单,使用方便,并发处理能力低。

NIO: 同步非阻塞Io, 是传统IO的升级,客户端和服务器端通过channel(通道)通讯,实现了多路复用。

  • java中的IO流分为几种?

按功能来分:分为输入流(input)输出流(outPut)

按类型来分:字节流和字符流

字节流和字符流的区别:字节流按8位传输字节为单元输入输出数据,字符流按16位传输以字符为单位输入输出数据。


  • 多线程应用


  • JVM知识

  • 什么情况下会发生栈内存溢出

如果线程请求的栈深度大于虚拟机所允许的深度,将抛出*Error异常。如果虚拟机在动态扩展栈时,无法申请到足够的内存空间。则抛出OutOfMemoryError异常。

  • JVM原理

Jvm是java的核心和基础,在java编译器和OS平台之间的虚拟处理器,他可以在上面执行java的字节码程序,java编译器只要面向JVM,生成JVM能理解的代码或字节码文件。Java源码文件经编译后成字节码程序,通过JVM将每一条指令翻译成不同平台的机器码,通过特定平台运行。

  • JVM体系结构

类加载器:加载class文件;执行引擎:执行字节码或者本地方法。运行时数据区:包括方法区,堆,java栈,pc寄存器,本地方法栈。

  • 垃圾收集算法

标记清除算法,复制算法,标记整理算法。

  • JVM调优

调优手段主要是通过控制堆内存的各个部分的比例和GC策略来实现。

-Xms: 初始堆大小

-Xmx: 最大堆大小

-XX:NewSize=n:设置年轻代大小


  • 数据库调优

  • Mysql定位慢sql

Show variables like ‘%query%’

在要执行的sql前加上explain


  • 微服务架构

  • Spring Cloud全家桶组件

Spring cloud Netflix Eureka: 服务注册与发现:我们将自己定义的API接口注册到spring cloud Eureka上,Eureka负责服务的注册与发现。

Spring cloud Netflix Ribbon: 客户端负载均衡(简单轮询负载均衡,加权响应时间负载均衡,随机负载均衡)

Spring cloud Netflix Hystrix: 断路器

Spring cloud Netflix Zuul: 服务网关

Spring cloud Config: 分布式配置


  • Redis

  • 缓存雪崩

设置失效时间时,再加上一个随机的时间数,避免在同一个时间点去查询数据库

  • 缓存穿透

布隆过滤器可解决


  • Kafka


  • 高并发

  •   什么是高并发

高并发是互联网分布式架构设计中必须考虑的因素之一,它通常是指,通过设计保证系统能够同时并行处理很多请求。

高并发相关常用一些指标有:响应时间,吞吐量,每秒查询率QPS,并发用户数

  • 如何提升系统的并发能力?

垂直扩展:如果预算不是问题的话,通过“增强单机硬件性能”的方式来提升系统的并发能力。

水平扩展:


  • 分布式


本文地址:https://blog.csdn.net/jackethans/article/details/109610861