Java 杂谈javaJava技术问答

Java面试题总结

2019-03-12  本文已影响1人  Java机械师

一 前言

年后的这段时间一直都没有更新,主要是因为在准备简历和面试。今天主要说一下这次面试过程中遇到的一些问题,不分公司。

这次面试遇到的问题我把它们归类为五大类,分别是:项目相关、Java基础、数据库、框架、中间件和分布式。

二 项目相关

简单介绍一下目前在做的项目

项目中有遇到哪些问题,最后怎么解决的

项目中用到了哪些技术点

项目中用到了哪些设计模式

说一说哪个项目对你的成长起到了很大的帮助

三 Java基础

sleep和wait的区别

都用过哪些map类

HashMap、HashTable、ConcurrentHashMap比较

String,StringBuffer与StringBuilder的区别

对象的深浅复制

CountDownLatch的await方法是否安全,怎么改造

线程池都有哪些配置参数

线程池工作原理

ThreadLocal原理

servlet是否线程安全,如何改造

session与cookie的区别

get和post区别

tcp3次握手

文件上传用post还是get

分布式session的设计

如何防止表单重复提交

jvm工具,jps,jinfo,jmap...使用

有哪些方式创建线程

有两个线程,怎么有序的执行

怎么实现多个线程先执行完的等待其他未执行完的线程

对JVM的了解

Java都有哪些类加载器

可以自己定义String类吗

删除ArrayList<String>中值为“A”的字符串

JVM的dump文件都有哪些信息

线上cpu占比过高怎么排查

BIO、NIO、AIO讲解

JVM堆外内存都有哪些

JVM堆外内存怎么回收

cms回收时有哪几个步骤

cms哪个步骤会应用不可用

jdk和cglib代理的区别

双检锁单例模式

aqs的实现

都有哪些内存泄露的例子

httponly啥作用

HTTPS 和 HTTP 有什么区别

ssl加密算法

ReentrantLock默认是公平锁还是非公平锁

hashcode的使用场景

怎么实现hashcode

四 数据库

SQL的优化方式都有哪些

MySQL深度分页查询limit 100000, 10过慢优化

MySQL的innoDB的特性有哪些

innodb的bTree的树的深度有限制吗

索性失效的场景

最左原则

锁的类型,行级表级

数据库事务隔离级别

悲观乐观锁

数据库事物

MySQL数据库的主键索引和非主键索引的区别(区分存储引擎)

MySQL的索引有几种

联合索引,用一个查询参数会走索引吗

数据库的表设计

五 框架

spring给我们带来了什么优势

ioc原理

aop原理

ioc初始化流程

springmvc的流程

spring怎么实现事务隔离的

spring的controller是单例还是原型

spring的controller是单例的话,其中注入的httpRequest对象是怎么做到线程安全的

spring的事务,同一个类中,方法a没有@Transcationnal注解,方法b有,在方法a内调用方法b会有事务吗

mybatis怎么将查询结果集和返回类型映射的

mybatis怎么将接口和xml映射的

dubbo的分组

dubbo的负载策略在哪块做的

dubbo的负载算法有哪些

dubbo怎么实现接口实例化的

zk 挂掉后对dubbo有影响吗

zk 挂了,dubbo服务提供者也挂了一个,消费端会删除这个提供者吗

dubbo如何实现优雅的停止服务

dubbo协议都有哪些,项目中使用的是哪个

六 中间件和分布式

CAP原理

都有哪些分布式锁的实现方式

分布式事务

Redis的数据类型

Redis集群的搭建方式

Redis zset的排序实现原理

Redis的持久化方式

Redis缓存穿透,如何解决

Redis缓存雪崩,何如解决

Redis的io模型

Redis的高可用

Redis是单线程还是多线程

zookeeper的节点类型

zookeeper的通知机制

zookeeper对节点的watch监听通知是永久的吗

zookeeper满足了CAP的哪些特性

zookeeper集群最少要几台机器

zookeeper集群中的机器角色都有哪些

zookeeper集群选举过程

zookeeper整个集群挂掉会不会影响在运行的dubbo服务

kafka判断一个节点是否还活着有那两个条件

kafka的数据传输的事务定义

kafka consumer是否可以消费指定分区消息

kafka消息是采用Pull模式,还是Push模式

kafka其他MQ的区别

kafka新建的分区会在哪个目录下创建

kafka消费者负载均衡策略

kafka数据有序消费

kafaka生产数据时数据的分组策略

elasticsearch数据类型

elasticsearch集群

netty的线程模型

小编根据以上的java面试题总结整理出一套需要掌握的技术点以及学习线路和录制了一些相关视频,分享给大家,供大家参考。

利用业余时间学习,提升技术

需要相关资料可以关注+转发+私信我(面试)就能获取

1. 高性能架构专题

1.1. 分布式架构思维

1.1.1. 大型互联网架构演进过程

1.1.2. 架构师应具备的分布式知识

1.1.3. 主流分布式架构设计详解

1.2. Zookeeper分布式环境指挥官

1.2.1. zookeeper基础

1.2.3. zk的使用举例

1.3. Nginx高并发分流进阶实战

1.3.1. Nginx模块简介

1.3.2. Nginx工作原理及安装配置

1.3.3. Nginx常用命令管理及升级

1.3.4. Nginx配置文件精讲

1.3.5. 实战线上Nginx多站点配置

1.3.6. Nginx配置优化及深入剖析

1.3.7. Nginx Rewrite规则剖析

1.3.8. Nginx日志分析及脚本编写

1.3.9. Nginx日志切割案例讲解

1.3.10.Nginx防盗链案例配置

1.3.11.Nginx日常运维及故障解决

1.3.12.Nginx构建安全HTTPS架构实战

1.3.13.企业实战Nginx+Tomcat动静分离架构实战

1.3.14.Nginx+Keepalived集群架构实战

1.3.15.Nginx+Keepalived双主架构案例实战

1.4. ActiveMq消息中间件

1.4.1. 消息中间件(ActiveMQ、RabbitMQ、Kafka)简介及对比

1.4.2. 软件下载、安装及部署

1.4.3. P2P、PUB\SUB模型详解

1.4.4. 消息确认及重发机制

1.4.5. 企业级高可用集群部署方案

1.4.6. ActiveMQ基于Spring完成分布式消息队列实战

1.5. RabbitMq消息中间件

1.5.1. RabbitMQ及高可用集群部署

1.5.2. 深入学习RabbitMQ消息分发机制及主题消息分发

1.5.3. RabbitMQ消息路由机制分析

1.5.4. RabbitMQ消息确认机制分析

1.5.5. RabbitMQ基于Spring完成分布式消息队列实战

1.5.6. 安装配置

1.5.7. 集群化与镜像队列

1.6. Kafka百万级吞实战

1.6.1. 基于ZooKeeper搭建高可用集群实战

1.6.2. Kafka消息处理过程解析

1.6.3. 基于Java语言实现Kafka生产者与消费者实例

1.6.4. Kafka副本机制及选举原理窥探

1.6.5. 使用Kafka实现日志实时上报统计分析实战

1.7. Memcached进阶实战

1.7.1. 概述

1.7.2. 开发基础

1.8. Redis高性能缓存数据库

1.8.1. Redis初入门及介绍

1.8.2. Redis主从模式

1.8.3. Redis常用命令及应用场景

1.8.4. Redis客户端

1.8.5. Redis持久化

1.8.6. 哨兵核心机制

1.8.7. 高可用集群

1.8.8. 原子性

1.8.9. 应用场景代码开发与设计分析实战

1.9. MongoDB进阶实战

1.9.1. mongodb入门

1.9.2. mongodb进阶

1.9.3. mongodb高级知识

1.9.4. 最佳实践与注意事项

1.10. 高性能缓存开发实战

1.10.1.缓存雪崩解决方案实战

1.10.2.缓存粒度控制实战

1.10.3.缓存击穿实战

1.10.4.缓存热点KEY重建优化实战

1.10.5.缓存同步实战

1.10.6.Spring-Cache开发实战

1.11. Mysql高性能存储实战

1.11.1.Mysql

1.11.2.Mycat

1.12. FastDFS分布式文件存储实战

1.12.1.文件存储实战

1.12.2.文件同步实战

1.12.3.文件查询实战

1.12.4.分布式部署实战

1.13. 高并发场景分布式解决方案实战

1.13.1.分布式主键生成方案

1.13.2.Session跨域共享实战

1.13.3.分布式事务解决方案实战

1.13.4.分布式锁解决方案实战

1.13.5.分布式单点登录 SSO实战

1.13.6.分布式调度任务实战

1.13.7.分布式配置中心

2. 微服务架构专题

2.1. 服务的前世今生

2.2. 基于分布式思想下的RPC解决方案

2.3. Dubbo应用及源码解读

2.3.1. Dubbo简介及初入门

2.3.2. Dubbo管理中心及监控系统安装部署

2.3.3. 领域驱动之如何正确划分Dubbo分布式服务

2.3.4. 通讯协议TCP、UDP、HTTP分析

2.3.5. Dubbo负载均衡机制探析

2.3.6. 如何完成Dubbo服务只订阅及只注册模式

2.3.7. 架构师必备技术之如何设计Dubbo服务接口

2.3.8. Dubbo设计原理及源码分析

2.3.9. Dubbo容错机制及高扩展性分析

2.3.10.Dubbo服务与Docker虚拟化技术集成实战

2.4. SpringBoot

2.4.1. SpringBoot与微服务的区别与联系

2.4.2. 快速构建SpringBoot工程

2.4.3. SpringBoot核心组件start、actuator等剖析

2.4.4. 快速集成Mybatis实战

2.4.5. 快速集成Dubbo及案例实战

2.4.6. 快速集成redis及案例实战

2.4.7. 构建Swagger插件实现API管理及接口测试体系

2.5. SpringCloud应用及源码解读

2.5.1. Zuul路由网关详解及源码探析

2.5.2. Ribbon客户端负载均衡原理与算法详解,与服务端负载均衡区别

2.5.3. Feign声明式服务调用方式实现

2.5.4. Hystrix服务熔断及服务降级实战

2.5.5. Eureka注册中心构件及源码分析

2.5.6. Config配置服务中心与svn、git快速集成

2.5.7. Sleuth调用链路跟踪

2.5.8. BUS消息总线技术

2.5.9. Stream 消息驱动的微服务

2.6. Docker虚拟化技术

2.6.1. Docker介绍、安装与使用

2.6.2. Docker组成

2.6.3. Docker Compose部署脚本

2.6.4. Docker Service 服务编排

2.6.5. Docker Redis分布式集群部署

2.6.6. Docker File构建

2.6.7. 通过Maven插件打包Docker镜像

2.6.8. Docker部署及运行应用程序

2.6.9. Kubernetes编配

2.6.10.基于Docker构建Mysql集群实战

2.6.11.高可用SpringCloud微服务与Docker集成实现动态扩容实战

3. 开源框架解析专题

3.1. spring5概述

3.2. Spring5 Framework体系结构

3.3. Spring5环境搭建

3.4. IOC源码解析

3.4.1. 容器基本实现和组成

3.4.2. 装配Bean的方式

3.4.3. BeanFactory源码分析

3.4.4. BeanDefinition源码分析

3.4.5. Bean生命同期

3.4.6. 依赖实现

3.5. AOP源码解析

3.5.1. 面向切面的基础

3.5.2. AOP源码分析

3.5.3. Transaction事务分析

3.5.4. Spring Cache框架源码分析

3.6. Spring MVC

3.6.1. Spring MVC的使用与流程解析

3.6.2. SpringMVC组成

3.6.3. Spring MVC的高级技术

3.6.4. 手写SpringMVC框架

3.7. Mybatis

3.7.1. Mybatis组成

3.7.2. 核心源码分析

3.7.3. 手写Mybatis框架

4. 架构师筑基专题

4.1. JVM性能调优

4.1.1. 性能优化如何理解

4.1.2. JVM内存管理机制

4.1.3. JVM执行子系统

4.1.4. 程序编译与代码优化

4.1.5. 实战调优案例与解决方法

4.2. Java程序性能优化

4.2.1. 优雅的创建对象

4.2.2. 注意对象的通用方法

4.2.3. 类的设计陷阱

4.2.4. 泛型需要注意的问题

4.2.5. Java方法的那些坑

4.2.6. 程序设计的通用规则

4.3. Tomcat

4.3.1. Tomcat线程模型分析

4.3.2. Tomcat生产环境配置

4.3.3. Tomcat运行机制及框架

4.3.4. Tomcat针对并发优化

4.3.5. Tomcat针对内存优化

4.3.6. 手写Tomcat实战

4.4. 并发编程进阶

4.4.1. 线程基础

4.4.2. 原子操作类和CAS

4.4.3. Lock、Condition和显示锁

4.4.4. AbstractQueuedSynchronizer分析

4.4.5. 并发工具类和并发容器

4.4.6. 线程池和Executor框架

4.4.7. 实现原理和Java内存模型

4.4.8. 线程安全

4.4.9. 并发项目实战

4.5. Mysql

4.5.1. 探析BTree机制

4.5.2. 执行计划深入分析

4.5.3. Mysql索引优化详解

4.5.4. 慢查询分析与SQL优化

4.6. 高性能Netty框架

4.6.1. Netty简介

4.6.2. I/O 演进之路及NIO 入门

4.6.3. Netty 开发环境搭建安装

4.6.4. TCP 粘包/拆包问题的解决之道

4.6.5. 分隔符和定长解码器的应用

4.6.6. Netty 多协议开发和应用

4.6.7. WebSocket 协议开发

4.6.8. Netty源码分析

4.7. Linux基础与进阶

4.7.1. Linux入门安装

4.7.2. Linux注意事项

4.7.3. Linux基础指令

4.7.4. Linux Jdk1.8环境安装及操作指令

4.7.5. Linux Tomcat安装与停启

4.7.6. Linux下Docker进阶讲解

4.7.7. Linux下Docker与Tomcat集成实战

5. 团队协作开发专题

5.1. Git

5.1.1. Git基本工作原理

5.1.2. Git常用操作及问题处理

5.2. Maven

5.2.1. Maven重要指令(clean、complie、test、package、install、deploy)

5.2.2. 私服-Nexus

5.2.3. Maven流行插件实战、手写自己的插件

5.2.4. 架构师如何理解Scope\Lifecycle\Phase\Goal

5.3. Jenkins

5.3.1. Jenkins服务部署

5.3.2. Jenkins持续集成

5.4. Sonar

5.4.1. 静态代码检查,代码更健壮

5.4.2. 代码走查

6. B2C商城项目实战

6.1. 系统设计

6.1.1. 架构设计

6.1.2. 数据库设计

6.1.3. 部署设计

6.1.4. 基础开发框架讲解

6.2. 用户管理子系统

6.2.1. 用户注册 登录(二维码技术)

6.2.2. 权限控制(shiro)

6.2.3. 单点登录(session统一缓存、sso)

6.3. 商品管理子系统

6.3.1. 商品管理(mongodb)

6.3.2. 商品分类(mongodb)

6.3.3. 商品发布(nosql与mysql数据同步)

6.3.4. 热卖商品排行(redis)

6.4. 搜索子系统

6.4.1. 基于ElasticSearch搜索引擎的全文检索

6.4.2. 检索需求分析

6.4.3. 检索策略

6.4.4. 索引设置

6.4.5. 分词算法

6.4.6. 命中率优化

6.4.7. 订单实时统计

6.5. 订单子系统

6.5.1. 分布式环境生成唯一编号(ZooKeeper)

6.5.2. 下单业务流程(消息中间件)

6.5.3. 订单可靠性

6.5.4. 秒杀功能(Redis)

6.5.5. 订单管理

6.5.6. 购物车功能(MongoDB)

6.6. 支付系统

6.6.1. 微信支付对接

6.6.2. 支付宝对接

6.6.3. 银联对接开发

6.7. 分布式调度系统

6.7.1. 数据统计

6.7.2. 数据同步

6.7.3. 任务调度配置

6.8. 后台系统

6.8.1. 日常管理

6.8.2. 在线IM系统 (WebSocket NIO)

6.8.3. 用户行为分析

6.8.4. 报表大数据查询优化

七 总结

以上就是这次面试遇到的相关问题,当然还有一些未整理在上面的算法相关问题。

总结下来和以往面试的不同之处,这次更多的是分布式相关问题,Java基础的部分相对少了,这也许就是以后重点学习的方向。

欢迎工作一到五年的Java程序员朋友们加入Java架构交流:810589193

本群提供免费的学习指导 架构资料 以及免费的解答

不懂得问题都可以在本群提出来 之后还会有职业生涯规划以及面试指导

上一篇下一篇

猜你喜欢

热点阅读