Java互联网面试汇总和答案-互联网wiki

基础

java基础

  • String为何是final
  • java中的几种基本数据类型是什么_各自占用多少字节
  • string_stringbuffer_stringbuilder的区别★★★★★
  • Vector,ArrayList, LinkedList 的区别★★★
  • 讲讲类的实例化顺序
  • HashSet 和 HashMap 的比较
  • HashTable, TreeMap,HashMap,ConcurrentHashMap 区别★★★★★
  • HashMap有什么线程安全问题 ★★★
  • HashMap是怎么扩容的(扩容多少,已有元素怎么处理的)★★★
  • JAVA8 的 ConcurrentHashMap 为何放弃了分段锁
  • 有没有有顺序的Map实现类,若是有,他们是怎么保证有序的
  • 讲讲你理解的 nio,他和 bio 的区别是啥
  • Java NIO和IO的主要区别★★★
  • nio的底层实现原理 ★★★★★
  • 谈谈reactor反应堆模型★
  • 反射的原理
  • 反射建立类实例的三种方式是什么★★★
  • 反射中,Class.forName 和ClassLoader.loadClass()区别
  • 描述动态代理的几种实现方式,分别说出相应的优缺点
  • jdk动态代理与cglib实现的区别
  • 为何CGlib方式能够对接口实现代理
  • 如何在父类中为子类自动完成全部的 hashcode和equals实现?这么作有何优劣
  • 深拷贝和浅拷贝区别★★★
  • 数组和链表数据结构描述,各自的时间复杂度
  • error和exception的区别,CheckedException,RuntimeException的区别
  • 请列出 5 个运行时异常
  • 在本身的代码中,若是建立一个 java.lang.String 类,这个类是否能够被类加载器加载?
  • 说一说你对 java.lang.Object 对象中 hashCode 和 equals 方法的理解。在什么场景下须要从新实现这两个方法
  • 在jdk1.5中,引入了泛型,泛型的存在是用来解决什么问题
  • Switch可否用string作参数
  • 序列化和反序列化★★★
  • 写出三种单例模式实现
  • 有没有可能 2 个不相等的对象有相同的 hashcode
  • Java的四种引用类型,强弱软虚,用到的场景
  • Hashcode的做用★★★
  • object经常使用的方法
  • OverLoad 与 Override 的区别
  • static 方法能不能被 overload,override?
  • Collection 与 Collections 的区别
  • 了解哪些经常使用库?★★★
  • final 的用途
  • java8的新特性
  • java9的新特性
  • java10的新特性
  • 字符流和字节流的区别
  • Servlet是不是线程安全?若是不安全怎么处理 ?★★★
  • stringbuffer内部的数据结构在字符串变化时怎么操做★★★★★
  • new一个Object对象占用多少内存

JVM

  • 怎么理解内存泄漏和内存溢出?★★★
  • Java中会存在内存泄漏吗★
  • 内存泄露、溢出的异同★
  • 如何检测内存泄露?★
  • 如何避免内存泄露?★★★
  • 如何避免内存溢出?★★
  • 内存溢出的缘由是什么?★
  • 什么状况下会发生栈内存溢出?
  • 出现了内存溢出OOM,你怎么排错★
  • JVM的工做原理(内存模型)★★★★
  • Eden和Survivor比例
  • 常见JVM参数列表★★★★★
  • JVM内存为何要分红新生代,老年代,持久代。新生代中为何要分为Eden和Survivor?★
  • jvm中一次完整的 GC流程是怎样的?★★★
  • 你知道哪几种垃圾收集器,各自的优缺点,重点讲下 cms,包括原理,流程,优缺点★★★★★
  • JVM为何须要GC
  • 简单说说你了解的类加载器★★★
  • 能够打破双亲委派么,怎么打破
  • 常见垃圾回收算法★★★★★
  • 垃圾回收算法的实现原理
  • 大家线上应用的JVM参数有哪些?
  • 怎么打出线程栈信息
  • JVM崩溃缘由查找?(jvm内存镜像文件分析,经常使用jvm性能分析命令)
  • jvm内存哪些是线程共享,哪些是线程独享
  • 怎么打出线程栈信息
  • 如何使对象 GC 后再活一次
  • GC 如何判断对象失去引用

多线程

  • thread类经常使用方法 ★★★
  • Java 实现多线程的方式有哪些 ★★★
  • 什么是线程安全★★★
  • volatile的原理,做用,能代替锁么 ★★★
  • 画一个线程的生命周期状态图 ★★★
  • sleep和wait的区别
  • Lock与Synchronized的区别 ★★★★★
  • ReentrantLock 获取锁定的四种方式
  • 解释如下名词:重排序,自旋锁,偏向锁,轻量级锁,可重入锁,公平锁,非公平锁,乐观锁,悲观锁
  • 重排序
  • 用过哪些原子类,他们的原理是什么 ★★★★★
  • 线程池原理,并说说newCache和newFixed有什么区别,构造函数的各个参数的含义是什么 ★★★★★
  • 线程池的关闭方式有几种,各自的区别是什么
  • 假若有一个第三方接口,有不少个线程去调用获取数据,如今规定每秒钟最多有10个线程同时调用它,如何作到
  • spring的controller是单例仍是多例,怎么保证并发的安全
  • 用三个线程按顺序循环打印 abc 三个字母,好比 abcabcabc
  • ThreadLocal原理是什么,用的时候要注意什么 ★★★
  • AQS同步器的实现原理(AbstractQueuedSynchronizer)★★★
  • countdowlatch内部原理和用法(好比countdownlatch的await方法是怎么实现的)
  • cyclicbarrier 的内部原理和用法
  • Lock锁的实现原理
  • Synchronized对象锁和类锁的区别
  • synchronized的原理是什么 ★★★★★
  • 进程和线程的区别
  • 若是让你实现一个并发安全的链表,你会怎么作
  • 多线程若是线程挂住了怎么办
  • 简述ConcurrentLinkedQueue和LinkedBlockingQueue 的用处和不一样之处
  • Queue添加数据方法add()put()offer()不一样之处
  • 致使线程死锁的缘由?怎么解除线程死锁
  • 编写一段死锁代码
  • 用过读写锁吗,原理是什么,通常在什么场景下用
  • 两个进程可否共享内存空间
  • 锁的等级:方法锁、对象锁、类锁
  • 多线程模拟实现生产者/消费者模型
  • 开启多个线程,如何保证顺序执行,有哪几种实现方式,或者如何保证多个线程都执行完再拿到结果
  • 延迟队列的实现方式,delayQueue 和时间轮算法的异同
  • 很是多个线程(多是不一样机器)相互之间须要等待协调,才能完成某种工做,问怎么设计这种协调方案
  • 怎么实现分布式锁(redis+zookeeper) ★★★★★
  • 什么是锁升级降级
  • 线程池队列满的时候怎么处理 ★★★
  • java线程能被中断么,中断必定能成功么
  • 线程启动用 start 方法仍是 run★★★
  • 线程经常使用的并发类及关键字 ★★★★★
  • 有哪些无锁数据结构,无锁实现的原理是什么 ★★★★★
  • i++是否是线程安全,为何 ★★★

jdk1.7源码

  • HashMap的实现原理
  • HashSet的实现原理
  • Hashtable的实现原理
  • LinkedHashMap的实现原理
  • LinkedHashSet 的实现原理
  • ArrayList的实现原理
  • LinkedList的实现原理
  • ConcurrentHashMap的实现原理

开源框架与技术

tomcat

  • 简单讲讲 tomcat结构
  • tomcat启动流程
  • tomcat怎么处理请求,流程是怎样的
  • tomcat如何调优
  • maxThreads、maxConnections、acceptAccount区别
  • tomcat默认支持并发数,怎么修改?
  • tomcatNIO线程模型

spring

  • Spring加载流程(bean初始化)
  • Spring事务管理总结
  • spring的事务传播属性以及隔离级别
  • Springmvc中DispatcherServlet初始化过程
  • 为何要用Spring
  • 简述一下Spring结构
  • 什么是IOC
  • AOP的实现原理
  • Spring的生命周期
  • BeanFactory和ApplicationContext区别
  • Spring实例化Bean的方式
  • Spring各类事务实现及区别
  • Spring编程事务与声明事务的区别
  • SpringMVC的工做原理
  • Spring怎么配置事务(具体说出一些关键的xml元素)
  • springmvc用到的注解,做用是什么,原理
  • springboot启动机制
  • Spring循环依赖的处理(单例、多例状态下的处理,懒加载必定能处理掉循环依赖么?)

netty

  • netty的线程模型是什么?netty是如何基于reactor模型上实现的
  • netty的HashedWheelTimer 的用法,实现原理,是否出现过调用不够准时,怎么解决
  • netty的心跳处理在弱网下怎么办
  • netty的通信协议是什么样的
  • netty原理

dubbo

  • 说下Dubbo的架构图和组件★★★
  • Dubbo容错机制有哪些?分别适用那些场景?★★★
  • Dubbo线程模型★★★
  • Dubbo负载均衡策略与算法★★★
  • Dubbo结果缓存
  • dubbo怎么服务降级 ★★★
  • dubbo怎么优雅停机 ★★★
  • dubbo怎么自动dump线程池
  • Dubbo 的原理★★★
  • dubbo如何一条连接并发多个调用
  • Dubbo的网络协议是什么
  • 讲下Dubbo服务注册与发现的基本流程★
  • Dubbo有台节点挂了是怎么处理的★
  • dubbo的优缺点是什么
  • dubbo怎么修改失败重试次数,默认是多少
  • dubbo内部机制,数据怎么流转的
  • dubbo遇到那些坑
  • Dubbo运行时,忽然全部的zookeeper所有宕机,Dubbo是否还会继续提供服务
  • Dubbo源码
  • Dubbo使用zookeeper注册中心★★★
  • Dubbo怎么使用redis做为注册中心
  • Dubbo最佳实践
  • Dubbo调优经验★★★

zookeeper

  • Zookeeper的用途是什么
  • Zookeeper选举的原理
  • zookeeper原理
  • zookeeper的同步流程
  • zookeeper角色
  • zookeeper的Leader工做流程
  • zookeeper的Follower工做流程 Zookeeper Watch机制原理
  • zookeeper数据一致性
  • 什么是zab协议
  • zookeeper使用场景
  • 为何zookeeper不用paxos,而是用的zab算法

mybatis

  • Mybatis的底层实现原理
  • mapper接口调用的原理
  • hibernate和mybatis最本质的区别
  • Mybatis中#和$的区别
  • elasticsearch[编辑 | 编辑源代码]
  • 你对elasticsearch了解多少
  • 说说大家公司 es 的集群架构,索引数据大小,分片有多少
  • elasticsearch怎么调优
  • elasticsearch 的倒排索引是什么
  • elasticsearch 索引数据多了怎么办

kafka

  • kafka 吞吐量高的缘由
  • kafka生产数据时的分组策略
  • kafka如何保证数据的生产完成
  • kafka的broker如何保存数据
  • partition如何分布在不一样的broker上
  • 如何保证kafka消费者消费数据是全局有序的
  • kafka中segment的命名方式
  • kafka的message物理结构
  • kakka在partition中如何经过offset查找message
  • kafka和其余消息队列的区别
  • kafka的主从同步机制
  • 使用 kafka 有没有遇到什么问题,怎么解决的
  • kafka性能调优
  • kafka怎么保证消息可靠性
  • kafka常见问题

RabbitMq

  • rabbitmq 如何实现集群高可用

ActiveMQ

  • ActiveMQ的原理

nginx

  • nginx是作什么的
  • nginx怎么配置
  • nginx怎么调优

spring boot##

  • SpringBoot核心功能
  • SpringBoot优缺点
  • SpringBoot几个经常使用的注解
  • springboot启动机制
  • spring boot自动配置是怎么实现的
  • springboot知识点整理

spring cloud

  • 简单说下你对Spring Cloud的理解
  • spring cloud经常使用组件及其做用是什么

网络

http

  • HTTP/1.1与HTTP/1.0的区别
  • HTTPS的加密方式是什么,讲讲整个加密解密流程
  • HTTP请求报文和HTTP响应报文
  • 经常使用的http方法
  • 经常使用的http响应码详解
  • 如何避免浏览器缓存
  • 简述Http请求get和post的区别
  • 什么是HTTP2.0
  • Http 如何处理长链接
  • http和tcp的区别

TCP

  • 什么是TCP协议
  • TCP协议的三次握手和四次挥手
  • TIME_WAIT和CLOSE_WAIT的区别
  • TCP协议如何来保证传输的可靠性
  • 说说TCP头的结构
  • 什么是长链接?短链接?

架构

系统架构

  • 用java本身实现一个LRU
  • 设计一个秒杀系统
  • 设计一个订单系统,30分钟没付款就自动关闭交易
  • 如何使用 redis 和 zookeeper 实现分布式锁?有什么区别优缺点,会有什么问题,分别适用什么场景
  • 讲讲redlock算法实现,争议在哪里
  • 若是有人恶意建立非法链接,怎么解决
  • 一个在线文档系统,文档能够被编辑,如何防止多人同时对同一份文档进a行编辑更新
  • 线上系统忽然变得异常缓慢,你如何查找问题
  • 异步模式的用途和意义
  • 如何设计一套高并发支付方案,架构如何设计
  • 如何设计创建和保持 100w 的长链接
  • 设计一个社交网站中的“私信”功能,要求高并发、可扩展等等。 画一下架构图
  • 聊下曾经参与设计的服务器架构并画图,谈谈遇到的问题,怎么解决的
  • 应用服务器怎么监控性能,各类方式的区别
  • 如何实现负载均衡,有哪些算法能够实现
  • 设计一个能够控制缓存整体大小的自动适应的本地缓存
  • 后台系统怎么防止请求重复提交
  • 描述一个服务从发布到被消费的详细过程
  • 如何优化线程数

数据架构

  • 常见的缓存策略有哪些,如何作到缓存与 DB 里的数据一致性,大家项目中用到了什么缓存系统,如何设计的
  • 缓存数据过时后的更新如何设计
  • 如何防止缓存击穿和雪崩
  • 大家作过度表分库吗,怎么作的
  • 有一个订单系统,订单日增长1000万,怎么设计表
  • 分布式、高并发[编辑 | 编辑源代码]
  • 分布式集群下如何作到惟一序列号ID
  • 分布式事务的原理,优缺点,如何使用分布式事务
  • 什么是paxos算法
  • 什么是zab算法
  • 一次RPC请求的流程是什么
  • 本身实现过rpc么,原理能够简单讲讲,Rpc要解决什么问题
  • 请思考一个方案,实现分布式环境下的 countDownLatch
  • 如何作限流策略,令牌桶和漏斗算法的使用场景
  • 分布式服务调用方,不依赖服务提供方的话,怎么处理服务方挂掉后,大量无效资源请求的浪费,若是只是服务提供方吞吐不高的时候该怎么作,若是服务挂了,那么一会重启,该怎么作到最小的资源浪费,流量半开的实现机制是什么
  • 什么分布式锁? redis、zookeeper怎么实现分布式锁
  • 若是设计高可用高并发系统
  • 高并发下1个数频繁更改(更改频率1000次-10000次)应该怎么处理?
  • 分布式当中如何避免对同一条修改的冲突?
  • 接口限流怎么作

系统设计、设计模式

  • 常见设计原则
  • 编程中本身都怎么考虑一些设计原则的,好比开闭原则,以及在工做中的应用
  • OO 的设计原则
  • 请结合 OO 设计理念,谈谈访问修饰符 public、private、protected、default 在应用设计中的做用
  • 如何作到接口的幂等性
  • 说说你平时用到的设计模式
  • 工厂模式
  • 代理模式
  • 适配模式
  • 策略模式

性能优化

  • 线上系统忽然变得异常缓慢,你如何查找问题
  • 讲下你作过那些性能优化的措施

微服务

  • 讲下你理解的微服务?
  • 微服务与SOA的区别是什么?
  • 微服务的模块怎么划分?

消息队列

  • MQ的基本原理
  • MQ消息可靠性保证
  • MQ怎么解决幂等性
  • MQ系统的数据如何保证不丢失
  • 用过哪些 MQ,和其余 mq 比较有什么优缺点,MQ 的链接是线程安全的吗
  • 怎么利用 mq 实现最终一致性
  • MQ有可能发生重复消费,如何避免,如何作到幂等
  • MQ 的消息延迟了怎么处理,消息能够设置过时时间么,过时了大家通常怎么处理
  • 消息队列满了怎么处理
  • 如何本身设计一个消息中间件
  • kafka,activemq,rabbitmq本质区别是啥

数据库

关系型数据库

  • 数据库隔离级别有哪些,各自的含义是什么,MYSQL默认的隔离级别是是什么★★★
  • 不可重复读与幻读的区别
  • MYSQL有哪些存储引擎,各自优缺点,myisam与innodb区别★★★
  • 乐观锁和悲观锁是什么,以及各自的优略势
  • INNODB的标准行级锁有哪2种,解释其含义
  • SQL优化的通常步骤是什么★★★
  • 怎么看执行计划,如何理解其中各个字段的含义
  • 数据库会死锁吗,举一个死锁的例子,mysql怎么解决死锁★★★
  • MYsql的索引原理
  • MYsql的索引数据结构
  • MYsql多列索引(复合索引)的生效规则
  • 索引的类型有哪些,如何建立合理的索引,索引如何优化
  • 汇集索引和非汇集索引的区别,怎么存储的
  • select for update是什么含义,会锁表仍是锁行或是其余
  • Btree原理
  • Btree怎么分裂的,何时分裂,为何是平衡的
  • 数据库的ACID是什么★★★
  • 某个表有近千万数据,CRUD比较慢,如何优化
  • Mysql怎么优化tablescan
  • mysql中in和exists区别
  • 数据库自增主键可能的问题
  • MVCC的含义
  • 怎么解决MYSQL的主从同步延迟★★★
  • 你作过的项目里遇到分库分表了吗,怎么作的
  • sharding jdbc的原理知道么
  • sharding jdbc怎么生成惟一主键
  • sharding jdbc架构
  • 说下mysql架构是怎样的
  • 说下mysql内存分配
  • update语句的底层实现是怎样的
  • mysql行级锁必定会锁定指定行么
  • 说下JDBC 链接步骤
  • MySQL事务实现原理

非关系型数据库

  • Redis的数据结构都有哪些
  • redis的string结构相关的操做
  • redis的list结构相关的操做
  • redis的hash结构相关的操做
  • 讲讲持久化方式 ,aof和rdb的区别
  • redis2和redis3的区别
  • redis3内部通信机制
  • redis主键失效原理
  • redis集群有哪些玩法,各自优缺点,场景
  • Redis的Sentinel实现机制与原理
  • redis的集群怎么同步的数据的
  • redis的主从复制的原理
  • Redis集群怎么扩容
  • 什么是Redis集群的分库和分片
  • Redis的并发竞争问题如何解决,了解Redis事务的CAS操做吗
  • Redis的选举算法和流程是怎样的
  • 知道哪些redis的优化操做
  • redis常见性能问题和解决方案
  • Redis的底层原理
  • Redis的线程模型是什么
  • Redis为何使用单进程单线程方式也这么快
  • Redis的缓存策略和主键失效机制
  • Redis的回收策略
  • Redis相比memcached有哪些优点
  • Redis的回收策略
  • Memcache的原理,哪些数据适合放在缓存中
  • redis和memcached的区别
  • Redis 的七个原则
  • 分布式下,怎么保证redis和mysql数据一致性
  • Redis使用场景
  • 使用Redis遇到那些问题、故障

算法

  • 什么是一致性 hash算法?
  • 说说你知道的几种hash算法
  • 什么是paxos算法
  • 什么是zab算法
  • 什么是二叉树算法
  • 什么是红黑树算法
  • 二叉树和二叉查找树的区别是什么?
  • 手写各类排序算法,如冒泡、快速等
  • 算法的时间复杂度是什么?
  • 说出常见的负载均衡算法?
  • 写出常见排序算法(快排、冒泡)
  • 二分法查找

项目

项目开发

  • 大家项目是怎么打包部署
  • 项目出现乱码怎么解决
  • 大家是怎么管理分支的,出现冲突怎么解决
  • 项目中遇到那些难题挑战,怎么解决
  • 线上出了问题怎么排查,分析的过程和方法
  • 说说你最满意的一个项目的架构
  • 画出大家项目的架构图

业务问题

  • 分布式服务状况下,怎么保证一个新闻一天一个用户只能点赞一次
  • 微信红包怎么实现
相关文章
相关标签/搜索