Java面试题——2018

文章目录

  • java基础
    • JVM
      • jvm运行时内存分布
      • GC原理
      • 垃圾回收的算法有哪些
      • 内存溢出的情况
      • 类加载机制

    • OOP
      • 封装、继承、多态、抽象
      • 抽象类与接口的区别
      • 重载与重写的区别
      • 反射
      • 如何判断一个对象是否是某个类或者是它的子类的一个实例
      • 反射为啥效率低
      • 如何优化反射
      • 如何理解面向对象
      • 匿名对象原理
      • 自动装箱、拆箱原理
      • 重写equals为何要重写hashcode

    • Java语言特性
      • JDK8的特性
      • lambda表达式原理
      • Java常用关键字
      • Jdk的高级特性(参考核心卷2)
      • 如何写出高质量的java代码,需要注意什么
      • 编码规范
      • Java中final、finally、finalize的区别与用法
      • ==与equals 区别
      • 简单描述一下java中有哪些修饰符,以及不写时的区别
      • java中所有的基本数据类型,各占多少字节,int跟integer有什么区别

    • 数据结构与算法
      • 数组如何去重
      • 冒泡排序、快速排序

    • 集合
      • hashMap源码,存储原理
      • Hashmap原理,底层是什么数据结构
      • Hashmap与hashtable有啥区别
      • Hashtable为啥是同步的,Hashmap为啥是异步的
      • 谈hashmap 以及其与hashtable,currenthashmap区别
      • ConcurrentHashMap原理,为什么能进一步提高并发
      • ArrayList是线程安全的吗
      • 双向链表的数据结构工作原理
      • ArrayList,linklist,Hashmap底层原理

    • IO
      • String与stringbuffer,stringbuild用法区别
      • 如何做一个excel导入导出
      • 文件上传下载
      • String可以继承吗
      • String s=new String("xyz")究竟创建了几个String 对象

    • 并发编程
      • 线程池的原理
      • 同步与异步的区别?如何使用
      • 多线程的应用
      • 线程池的配置
      • 线程池内存队列
      • 如何用jsate ,jmap查看dump使用情况,内存使用
      • Java同步锁——lock与synchronized区别
      • Java中Volatile关键字理解
      • 多线程中wait(),sleep(),run(),start(),notify区别
      • 线程优先级
      • 线程安全问题
      • 线程池的种类,特点

    • 网络编程
      • Http协议三次握手是如何握手的
      • Http协议消息头有哪些
      • Http协议请求的标识
      • Http协议怎么用
      • http原理,http1.0,http2.0,http3.0有啥区别
      • HTTP与HTTPS的区别
      • socket
      • http协议、TCP/IP协议、AMQP协议

      • 设计原则、设计模式
      • 设计原则
      • 单例与多例的区别
      • 什么是单利模式、什么是多例模式

  • Web
    • 前端三大框架
      • Vue
      • Angular
      • React

    • 安全
      • 权限管理
      • Sql注入
      • 敏感信息泄漏
      • 文件下载
      • 文件上传
      • 垂直越权
      • 水平越权
      • Xss攻击
      • CSRF
      • 访问权限控制
      • 用户登陆认证
      • 数字签名
      • 安全随机数
      • 加密
      • 路径操作问题
      • System out输出日志
      • Cookie窜改

    • 其他
      • Ajax机制
      • Ajax如何跨域
      • Ajax异步请求如何知道请求成功了
      • Get请求与post请求的区别
      • json是什么,json原理
      • session失效的情况,怎么解决
      • Jsp有哪些域,怎么用
      • Session共享
      • Jquery选择器的层级顺序
      • 跨域
      • Cookie与session
      • Js闭包问题

  • 数据库
    • mysql底层索引原理
    • 索引失效
    • Mysql的索引存在哪里
    • 如何建立索引?索引的顺序如何?
    • mysql组合索引与字段顺序
    • 如何优化索引
    • jpa
    • 数据库设计规范
    • 分库分表
    • 分布式存储
    • 数据库的如何排查死锁
    • mysql常见关键字
    • 内连接与外连接的区别
    • 数据库表的设计
    • sql优化
    • 存储过程
    • 触发器
    • Sql的执行顺序
    • 数据库中如何找到重复的记录
    • 什么情况下用索引
    • 如何分库分表
    • 如何跨库查询
    • 菜单栏一级二级三级,如何设计数据库
    • 如何设计角色、权限
    • 模糊查询如何优化
    • SQL执行计划分析
    • 视图如何传变量
    • 如何优化limit分页数据量大的情况
    • Mysql事物的隔离有几种级别
    • 死锁的原因,如何排查,如何解决
    • Mysql,通过show engin innordb state查看死锁日志,关键字waiting
    • 数据库连接池
    • 如何封装jdbc
    • Mysql有哪些存储引擎
    • 那个存储引擎可以不支持事务
    • 数据库建模
    • 权限表设计
    • 存储过程传参
    • 聚合函数
    • 分区表
    • 数据仓库

  • Linux
    • 常用命令
    • java如何调脚本
    • 单体如何部署、maven如何部署、Docker如何部署
    • chomd 权限的配置分别代表什么意思
    • 在linux中如何启动tomcat用什么命令
    • maven的常用命令
    • shell脚本的变量怎么传

  • 架构

    • 源码
        • springIOC源码
        • springAOP源码
        • springMVC源码
        • springboot源码
        • tomcat源码
        • mybaits源码

    • Spring
        • Spring bean的生命周期
        • Spring 事物怎么配
        • Spring事务与mysql事务
        • Spring中@Controller和@RestController之间的区别
        • Spring注解@Component、@Repository、@Service、@Controller区别
        • Spring boot 注解有哪些
        • Spring mvc的注解有哪些
        • SpringMVC理解
        • Springmvc视图解析器有哪些
        • Spring分布式事物
        • springIOC与依赖注入
        • Sping AOP源码
        • Spring bean的生命周期
        • Spring动态代理有两种机制,分别是哪两种
        • Aop如何实现日志,监控,权限

    • Spring boot
        • springboot原理
        • springboot是如何取消web.xml?
        • springboot是如何内置tomcat的?

    • Spring cloud
        • Eureka原理是什么?为什么要用?怎么用?
        • Ribbon原理是什么?为什么要用?怎么用?
        • Hystrix原理是什么?为什么要用?怎么用?
        • Feign原理是什么?为什么要用?怎么用?
        • Zuul原理是什么?为什么要用?怎么用?
        • Config原理是什么?为什么要用?怎么用?
        • Stream原理是什么?为什么要用?怎么用?
        • Bus原理是什么?为什么要用?怎么用?
        • Sleuth原理是什么?为什么要用?怎么用?

    • Dubbo
        • Dubbox是什么?架构原理
        • Dubbo主要提供哪三大核心功能
        • Dubbo是如何实现RPC调用的
        • Dubbo是如何实现负载均衡的
        • Dubbo是如何实现服务注册与发现的?
        • Dubbo就是SOA服务治理方案的核心框架,什么是SOA

    • 消息中间件
        • RabbitMQ
        • MQ如何优化
        • Mq如何实现同步异步
        • Zookeeper
        • kafka

    • 缓存
        • Redis使用方案
        • redis集群架构
        • Redis中字符串类型的Value最多可以容纳的数据长度是多少
        • 为什要用mybatis
        • SSM每一层是干嘛的
        • Hibernate
        • Hibernate懒加载
        • Hibernate与MyBatis对比
        • Mybatis缓存怎么用,hibrate缓存怎么用
        • 如何从数据库层面解决并发问题
        • 阿里如何解决分布式事务
        • 分布式缓存
        • 为啥hibrate缓存比mybatis好

    • 分布式高并发
        • 分布式、高并发、高负载、高可用系统架构
        • 搜索、异步框架、集群与负载均衡
        • 如何做一个搜索
        • 单点登录
        • 如何考虑设计一个软件
        • 如何实现一次抢购活动,秒杀系统
        • 谈谈项目优化
        • 报表的框架
        • 如何调用支付宝或微信借口实现支付业务
        • 分布式事务
        • 读写分离

  • 性能调优
    • JVM调优
    • tomcat调优
    • 数据库调优

java基础

JVM

jvm运行时内存分布

GC原理

垃圾回收的算法有哪些

内存溢出的情况

类加载机制


OOP

封装、继承、多态、抽象

抽象类与接口的区别

重载与重写的区别

反射

如何判断一个对象是否是某个类或者是它的子类的一个实例

反射为啥效率低

如何优化反射

如何理解面向对象

匿名对象原理

自动装箱、拆箱原理

重写equals为何要重写hashcode


Java语言特性

JDK8的特性

lambda表达式原理

Java常用关键字

Jdk的高级特性(参考核心卷2)

如何写出高质量的java代码,需要注意什么

编码规范

Java中final、finally、finalize的区别与用法

==与equals 区别

简单描述一下java中有哪些修饰符,以及不写时的区别

java中所有的基本数据类型,各占多少字节,int跟integer有什么区别


数据结构与算法

数组如何去重

冒泡排序、快速排序


集合

hashMap源码,存储原理

Hashmap原理,底层是什么数据结构

Hashmap与hashtable有啥区别

Hashtable为啥是同步的,Hashmap为啥是异步的

谈hashmap 以及其与hashtable,currenthashmap区别

ConcurrentHashMap原理,为什么能进一步提高并发

ArrayList是线程安全的吗

双向链表的数据结构工作原理

ArrayList,linklist,Hashmap底层原理


IO

String与stringbuffer,stringbuild用法区别

如何做一个excel导入导出

文件上传下载

String可以继承吗

String s=new String(“xyz”)究竟创建了几个String 对象


并发编程

线程池的原理

同步与异步的区别?如何使用

多线程的应用

线程池的配置

线程池内存队列

如何用jsate ,jmap查看dump使用情况,内存使用

Java同步锁——lock与synchronized区别

Java中Volatile关键字理解

多线程中wait(),sleep(),run(),start(),notify区别

线程优先级

线程安全问题

线程池的种类,特点


网络编程

Http协议三次握手是如何握手的

Http协议消息头有哪些

Http协议请求的标识

Http协议怎么用

http原理,http1.0,http2.0,http3.0有啥区别

HTTP与HTTPS的区别

socket

http协议、TCP/IP协议、AMQP协议


设计原则、设计模式

设计原则

单例与多例的区别

什么是单利模式、什么是多例模式


Web

前端三大框架

Vue

Angular

React


安全

权限管理

Sql注入

敏感信息泄漏

文件下载

文件上传

垂直越权

水平越权

Xss攻击

CSRF

访问权限控制

用户登陆认证

数字签名

安全随机数

加密

路径操作问题

System out输出日志

Cookie窜改


其他

Ajax机制

Ajax如何跨域

Ajax异步请求如何知道请求成功了

Get请求与post请求的区别

json是什么,json原理

session失效的情况,怎么解决

Jsp有哪些域,怎么用

Session共享

Jquery选择器的层级顺序

跨域

Cookie与session

Js闭包问题


数据库

mysql底层索引原理

索引失效

Mysql的索引存在哪里

如何建立索引?索引的顺序如何?

mysql组合索引与字段顺序

如何优化索引

jpa

数据库设计规范

分库分表

分布式存储

数据库的如何排查死锁

mysql常见关键字

内连接与外连接的区别

数据库表的设计

sql优化

存储过程

触发器

Sql的执行顺序

数据库中如何找到重复的记录

什么情况下用索引

如何分库分表

如何跨库查询

菜单栏一级二级三级,如何设计数据库

如何设计角色、权限

模糊查询如何优化

SQL执行计划分析

视图如何传变量

如何优化limit分页数据量大的情况

Mysql事物的隔离有几种级别

死锁的原因,如何排查,如何解决

Mysql,通过show engin innordb state查看死锁日志,关键字waiting

数据库连接池

如何封装jdbc

Mysql有哪些存储引擎

那个存储引擎可以不支持事务

数据库建模

权限表设计

存储过程传参

聚合函数

分区表

数据仓库


Linux

常用命令

java如何调脚本

单体如何部署、maven如何部署、Docker如何部署

chomd 权限的配置分别代表什么意思

在linux中如何启动tomcat用什么命令

maven的常用命令

shell脚本的变量怎么传


架构


源码

springIOC源码

springAOP源码

springMVC源码

springboot源码

tomcat源码

mybaits源码


Spring

Spring bean的生命周期

Spring 事物怎么配

Spring事务与mysql事务

Spring中@Controller和@RestController之间的区别

Spring注解@Component、@Repository、@Service、@Controller区别

Spring boot 注解有哪些

Spring mvc的注解有哪些

SpringMVC理解

Springmvc视图解析器有哪些

Spring分布式事物

springIOC与依赖注入

Sping AOP源码

Spring bean的生命周期

Spring动态代理有两种机制,分别是哪两种

Aop如何实现日志,监控,权限


Spring boot

springboot原理

springboot是如何取消web.xml?

springboot是如何内置tomcat的?


Spring cloud

Eureka原理是什么?为什么要用?怎么用?

Ribbon原理是什么?为什么要用?怎么用?

Hystrix原理是什么?为什么要用?怎么用?

Feign原理是什么?为什么要用?怎么用?

Zuul原理是什么?为什么要用?怎么用?

Config原理是什么?为什么要用?怎么用?

Stream原理是什么?为什么要用?怎么用?

Bus原理是什么?为什么要用?怎么用?

Sleuth原理是什么?为什么要用?怎么用?


Dubbo

Dubbox是什么?架构原理

Dubbo主要提供哪三大核心功能

Dubbo是如何实现RPC调用的

Dubbo是如何实现负载均衡的

Dubbo是如何实现服务注册与发现的?

Dubbo就是SOA服务治理方案的核心框架,什么是SOA


消息中间件

RabbitMQ

MQ如何优化

Mq如何实现同步异步

Zookeeper

kafka


缓存

Redis使用方案

redis集群架构

Redis中字符串类型的Value最多可以容纳的数据长度是多少

为什要用mybatis

SSM每一层是干嘛的

Hibernate

Hibernate懒加载

Hibernate与MyBatis对比

Mybatis缓存怎么用,hibrate缓存怎么用

如何从数据库层面解决并发问题

阿里如何解决分布式事务

分布式缓存

为啥hibrate缓存比mybatis好


分布式高并发

分布式、高并发、高负载、高可用系统架构

搜索、异步框架、集群与负载均衡

如何做一个搜索

单点登录

如何考虑设计一个软件

如何实现一次抢购活动,秒杀系统

谈谈项目优化

报表的框架

如何调用支付宝或微信借口实现支付业务

分布式事务

读写分离


性能调优

JVM调优

tomcat调优

数据库调优

你可能感兴趣的:(面试)